...

Source file src/edge-infra.dev/pkg/sds/lib/set/set_test.go

Documentation: edge-infra.dev/pkg/sds/lib/set

     1  package set
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestFromSlice(t *testing.T) {
    10  	slice := []string{"a", "b", "c"}
    11  	set := FromSlice(slice)
    12  
    13  	for item := range set {
    14  		assert.Contains(t, slice, item)
    15  	}
    16  }
    17  
    18  func TestFromMap(t *testing.T) {
    19  	stringMap := map[string]int{"a": 0, "b": 1, "c": 2}
    20  	set := FromMap(stringMap)
    21  
    22  	for item := range set {
    23  		assert.Contains(t, stringMap, item)
    24  	}
    25  }
    26  
    27  func TestToSlice(t *testing.T) {
    28  	set := Set[string]{"a": member, "b": member, "c": member}
    29  	expectedSliceElements := []string{"a", "b", "c"}
    30  
    31  	slice := set.ToSlice()
    32  	assert.ElementsMatch(t, expectedSliceElements, slice)
    33  }
    34  
    35  func TestAddToSet(t *testing.T) {
    36  	stringSet := Set[string]{}
    37  	stringSet.Add("item a")
    38  	stringSet.Add("item b")
    39  
    40  	_, ok := stringSet["item a"]
    41  	assert.True(t, ok)
    42  	_, ok = stringSet["item b"]
    43  	assert.True(t, ok)
    44  
    45  	intSet := Set[int]{}
    46  	intSet.Add(1)
    47  	intSet.Add(2)
    48  
    49  	_, ok = intSet[1]
    50  	assert.True(t, ok)
    51  	_, ok = intSet[2]
    52  	assert.True(t, ok)
    53  }
    54  
    55  func TestRemoveFromSet(t *testing.T) {
    56  	stringSet := Set[string]{"item a": member, "item b": member}
    57  	stringSet.Remove("item a")
    58  	stringSet.Remove("item b")
    59  
    60  	_, ok := stringSet["item a"]
    61  	assert.False(t, ok)
    62  	_, ok = stringSet["item b"]
    63  	assert.False(t, ok)
    64  
    65  	intSet := Set[int]{1: member, 2: member}
    66  	intSet.Remove(1)
    67  	intSet.Remove(2)
    68  
    69  	_, ok = intSet[1]
    70  	assert.False(t, ok)
    71  	_, ok = intSet[2]
    72  	assert.False(t, ok)
    73  }
    74  
    75  func TestSetHasMember(t *testing.T) {
    76  	stringSet := Set[string]{"item a": member, "item b": member}
    77  	assert.True(t, stringSet.HasMember("item a"))
    78  	assert.False(t, stringSet.HasMember("item c"))
    79  
    80  	intSet := Set[int]{1: member, 2: member}
    81  	assert.True(t, intSet.HasMember(1))
    82  	assert.False(t, intSet.HasMember(3))
    83  }
    84  
    85  func TestSetUnion(t *testing.T) {
    86  	left := Set[string]{"a": member, "b": member, "c": member}
    87  	right := Set[string]{"c": member, "d": member, "e": member}
    88  	expectedUnion := Set[string]{"a": member, "b": member, "c": member, "d": member, "e": member}
    89  
    90  	union := left.Union(right)
    91  	assert.Equal(t, expectedUnion, union)
    92  }
    93  
    94  func TestSetIntersection(t *testing.T) {
    95  	left := Set[string]{"a": member, "b": member, "c": member, "d": member}
    96  	right := Set[string]{"c": member, "d": member, "e": member}
    97  	expectedIntersection := Set[string]{"c": member, "d": member}
    98  
    99  	intersection := left.Intersection(right)
   100  	assert.Equal(t, expectedIntersection, intersection)
   101  }
   102  
   103  func TestSetDifference(t *testing.T) {
   104  	left := Set[string]{"a": member, "b": member, "c": member}
   105  	right := Set[string]{"c": member, "d": member, "e": member}
   106  	expectedDifference := Set[string]{"a": member, "b": member}
   107  
   108  	difference := left.Difference(right)
   109  	assert.Equal(t, expectedDifference, difference)
   110  }
   111  
   112  func TestSetSymmetricDifference(t *testing.T) {
   113  	left := Set[string]{"a": member, "b": member, "c": member}
   114  	right := Set[string]{"c": member, "d": member, "e": member}
   115  	expectedSymmetricDifference := Set[string]{"a": member, "b": member, "d": member, "e": member}
   116  
   117  	symmetricDifference := left.SymmetricDifference(right)
   118  	assert.Equal(t, expectedSymmetricDifference, symmetricDifference)
   119  }
   120  

View as plain text