From b0ee7231d9b61a76cd3d30e9a2918486e2945e1f Mon Sep 17 00:00:00 2001 From: Konrad Kleine <193408+kwk@users.noreply.github.com> Date: Tue, 21 Aug 2018 13:05:15 +0200 Subject: [PATCH] Add id.Slice.Contains with tests (#2252) --- id/slice.go | 11 +++++++++++ id/slice_blackbox_test.go | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/id/slice.go b/id/slice.go index a886297c4e..eb4200323d 100644 --- a/id/slice.go +++ b/id/slice.go @@ -105,6 +105,17 @@ func (s Slice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } +// Contains returns true if the slice contains the given ID; otherwise false is +// returned. +func (s Slice) Contains(v uuid.UUID) bool { + for _, i := range s { + if i == v { + return true + } + } + return false +} + // Ensure Slice implements the sort.Interface var _ sort.Interface = Slice{} var _ sort.Interface = (*Slice)(nil) diff --git a/id/slice_blackbox_test.go b/id/slice_blackbox_test.go index 65730f1aae..4bd26d151d 100644 --- a/id/slice_blackbox_test.go +++ b/id/slice_blackbox_test.go @@ -178,3 +178,11 @@ func TestToStringSlice(t *testing.T) { s := id.Slice{a, b, c} require.Equal(t, []string{a.String(), b.String(), c.String()}, s.ToStringSlice()) } + +func TestSlice_Contains(t *testing.T) { + a := uuid.FromStringOrNil("cb4364bf-893c-4ac2-a35f-4ef74c212e88") + b := uuid.FromStringOrNil("d085a858-6b98-44ce-8777-b36d927b07dc") + require.True(t, id.Slice{a, b}.Contains(a)) + require.False(t, id.Slice{}.Contains(a)) + require.False(t, id.Slice{a}.Contains(b)) +}