1 package ldstoreimpl
2
3 import (
4 "testing"
5
6 "github.com/launchdarkly/go-sdk-common/v3/ldvalue"
7
8 "github.com/stretchr/testify/assert"
9 )
10
11 func TestMembershipWithNilKeys(t *testing.T) {
12 m := NewBigSegmentMembershipFromSegmentRefs(nil, nil)
13 assert.Equal(t, bigSegmentMembershipMapImpl(nil), m)
14 assert.Equal(t, ldvalue.OptionalBool{}, m.CheckMembership("key"))
15 }
16
17 func TestMembershipWithEmptySliceKeys(t *testing.T) {
18 m := NewBigSegmentMembershipFromSegmentRefs(nil, nil)
19 assert.Equal(t, bigSegmentMembershipMapImpl(nil), m)
20 assert.Equal(t, ldvalue.OptionalBool{}, m.CheckMembership("key"))
21 }
22
23 func TestMembershipWithSingleIncludedKey(t *testing.T) {
24 m := NewBigSegmentMembershipFromSegmentRefs([]string{"key1"}, nil)
25 assert.Equal(t, bigSegmentMembershipSingleInclude("key1"), m)
26 assert.Equal(t, ldvalue.NewOptionalBool(true), m.CheckMembership("key1"))
27 assert.Equal(t, ldvalue.OptionalBool{}, m.CheckMembership("key2"))
28 }
29
30 func TestMembershipWithSingleExcludedKey(t *testing.T) {
31 m := NewBigSegmentMembershipFromSegmentRefs(nil, []string{"key1"})
32 assert.Equal(t, bigSegmentMembershipSingleExclude("key1"), m)
33 assert.Equal(t, ldvalue.NewOptionalBool(false), m.CheckMembership("key1"))
34 assert.Equal(t, ldvalue.OptionalBool{}, m.CheckMembership("key2"))
35 }
36
37 func TestMembershipWithMultipleIncludedKeys(t *testing.T) {
38 m := NewBigSegmentMembershipFromSegmentRefs([]string{"key1", "key2"}, nil)
39 assert.Equal(t, bigSegmentMembershipMapImpl(map[string]bool{"key1": true, "key2": true}), m)
40 assert.Equal(t, ldvalue.NewOptionalBool(true), m.CheckMembership("key1"))
41 assert.Equal(t, ldvalue.NewOptionalBool(true), m.CheckMembership("key2"))
42 assert.Equal(t, ldvalue.OptionalBool{}, m.CheckMembership("key3"))
43 }
44
45 func TestMembershipWithMultipleExcludedKeys(t *testing.T) {
46 m := NewBigSegmentMembershipFromSegmentRefs(nil, []string{"key1", "key2"})
47 assert.Equal(t, bigSegmentMembershipMapImpl(map[string]bool{"key1": false, "key2": false}), m)
48 assert.Equal(t, ldvalue.NewOptionalBool(false), m.CheckMembership("key1"))
49 assert.Equal(t, ldvalue.NewOptionalBool(false), m.CheckMembership("key2"))
50 assert.Equal(t, ldvalue.OptionalBool{}, m.CheckMembership("key3"))
51 }
52
53 func TestMembershipWithIncludedAndExcludedKeys(t *testing.T) {
54 m := NewBigSegmentMembershipFromSegmentRefs([]string{"key1", "key2"}, []string{"key2", "key3"})
55
56 assert.Equal(t, bigSegmentMembershipMapImpl(map[string]bool{"key1": true, "key2": true, "key3": false}), m)
57 assert.Equal(t, ldvalue.NewOptionalBool(true), m.CheckMembership("key1"))
58 assert.Equal(t, ldvalue.NewOptionalBool(true), m.CheckMembership("key2"))
59 assert.Equal(t, ldvalue.NewOptionalBool(false), m.CheckMembership("key3"))
60 assert.Equal(t, ldvalue.OptionalBool{}, m.CheckMembership("key4"))
61 }
62
View as plain text