...

Source file src/github.com/launchdarkly/go-server-sdk/v6/subsystems/ldstoreimpl/big_segments_membership_test.go

Documentation: github.com/launchdarkly/go-server-sdk/v6/subsystems/ldstoreimpl

     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  	// key1 is included; key2 is included and excluded, therefore it's included; key3 is excluded
    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