...

Source file src/edge-infra.dev/pkg/sds/lib/set/orderedset_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 TestOrderedFromSet(t *testing.T) {
    10  	set := Set[int]{5: member, 2: member, 3: member, 7: member, 9: member}
    11  	orderedSet := OrderedFromSet(set)
    12  
    13  	expectedOrder := []int{2, 3, 5, 7, 9}
    14  	expectedSet := &OrderedSet[int]{
    15  		Set:   Set[int]{5: member, 2: member, 3: member, 7: member, 9: member},
    16  		order: expectedOrder,
    17  	}
    18  
    19  	assert.Equal(t, expectedSet, orderedSet)
    20  	assert.Equal(t, expectedOrder, orderedSet.ToSlice())
    21  }
    22  
    23  func TestOrderedFromSlice(t *testing.T) {
    24  	slice := []float32{3.5, 2.3, 8.3, 7.01, 9.999}
    25  	set := OrderedFromSlice(slice)
    26  
    27  	expectedOrder := []float32{2.3, 3.5, 7.01, 8.3, 9.999}
    28  	expectedSet := &OrderedSet[float32]{
    29  		Set:   Set[float32]{2.3: member, 3.5: member, 7.01: member, 8.3: member, 9.999: member},
    30  		order: expectedOrder,
    31  	}
    32  
    33  	assert.Equal(t, expectedSet, set)
    34  	assert.Equal(t, expectedOrder, set.ToSlice())
    35  }
    36  
    37  func TestOrderedFromMap(t *testing.T) {
    38  	m := map[string]int{"d": 0, "b": 1, "a": 2, "c": 3}
    39  	set := OrderedFromMap(m)
    40  
    41  	expectedOrder := []string{"a", "b", "c", "d"}
    42  	expectedSet := &OrderedSet[string]{
    43  		Set:   Set[string]{"d": member, "b": member, "a": member, "c": member},
    44  		order: expectedOrder,
    45  	}
    46  
    47  	assert.Equal(t, expectedSet, set)
    48  	assert.Equal(t, expectedOrder, set.ToSlice())
    49  }
    50  
    51  func TestOrderedToSet(t *testing.T) {
    52  	orderedSet := OrderedFromSlice([]int{5, 2, 3, 7, 9})
    53  	expectedSet := Set[int]{5: member, 2: member, 3: member, 7: member, 9: member}
    54  	set := orderedSet.ToSet()
    55  	assert.Equal(t, expectedSet, set)
    56  }
    57  
    58  func TestAddToOrderedSet(t *testing.T) {
    59  	set := OrderedFromSlice([]string{})
    60  
    61  	set.Add("c")
    62  	expectedOrder := []string{"c"}
    63  	assert.Equal(t, expectedOrder, set.ToSlice())
    64  
    65  	set.Add("e", "a")
    66  	expectedOrder = []string{"a", "c", "e"}
    67  	assert.Equal(t, expectedOrder, set.ToSlice())
    68  
    69  	set.Add("b", "a", "d", "c", "f")
    70  	expectedOrder = []string{"a", "b", "c", "d", "e", "f"}
    71  	assert.Equal(t, expectedOrder, set.ToSlice())
    72  }
    73  
    74  func TestRemoveFromOrderedSet(t *testing.T) {
    75  	set := OrderedFromSlice([]int{2, 3, 5, 7, 9})
    76  
    77  	set.Remove(2, 7)
    78  	expectedOrder := []int{3, 5, 9}
    79  	assert.Equal(t, expectedOrder, set.ToSlice())
    80  
    81  	set.Remove(3, 5, 9)
    82  	expectedOrder = []int{}
    83  	assert.Equal(t, expectedOrder, set.ToSlice())
    84  
    85  	set.Remove(1)
    86  	expectedOrder = []int{}
    87  	assert.Equal(t, expectedOrder, set.ToSlice())
    88  }
    89  

View as plain text