github.com/mitranim/gg@v0.1.17/ord_set_test.go (about) 1 package gg_test 2 3 import ( 4 "testing" 5 6 "github.com/mitranim/gg" 7 "github.com/mitranim/gg/gtest" 8 ) 9 10 func TestOrdSetOf(t *testing.T) { 11 defer gtest.Catch(t) 12 13 gtest.Zero(gg.OrdSetOf[int]()) 14 15 gtest.Equal( 16 gg.OrdSetOf(10, 30, 20, 20, 10), 17 gg.OrdSet[int]{ 18 Slice: []int{10, 30, 20}, 19 Index: gg.SetOf(10, 20, 30), 20 }, 21 ) 22 } 23 24 func TestOrdSetFrom(t *testing.T) { 25 defer gtest.Catch(t) 26 27 gtest.Zero(gg.OrdSetFrom[[]int, int]()) 28 29 gtest.Equal( 30 gg.OrdSetFrom([]int{10, 30}, []int{20, 20, 10}), 31 gg.OrdSet[int]{ 32 Slice: []int{10, 30, 20}, 33 Index: gg.SetOf(10, 20, 30), 34 }, 35 ) 36 } 37 38 func TestOrdSet(t *testing.T) { 39 defer gtest.Catch(t) 40 41 t.Run(`Has`, func(t *testing.T) { 42 defer gtest.Catch(t) 43 44 gtest.False(gg.OrdSetOf[int]().Has(0)) 45 gtest.False(gg.OrdSetOf[int]().Has(10)) 46 gtest.False(gg.OrdSetOf[int](10).Has(20)) 47 gtest.True(gg.OrdSetOf[int](10).Has(10)) 48 gtest.True(gg.OrdSetOf[int](10, 20).Has(10)) 49 gtest.True(gg.OrdSetOf[int](10, 20).Has(20)) 50 }) 51 52 t.Run(`Add`, func(t *testing.T) { 53 defer gtest.Catch(t) 54 55 var tar gg.OrdSet[int] 56 57 tar.Add(10) 58 gtest.Equal(tar, gg.OrdSetOf(10)) 59 60 tar.Add(20) 61 gtest.Equal(tar, gg.OrdSetOf(10, 20)) 62 63 tar.Add(10, 10) 64 gtest.Equal(tar, gg.OrdSetOf(10, 20)) 65 66 tar.Add(20, 20) 67 gtest.Equal(tar, gg.OrdSetOf(10, 20)) 68 69 tar.Add(40, 30) 70 gtest.Equal(tar, gg.OrdSetOf(10, 20, 40, 30)) 71 }) 72 73 t.Run(`Clear`, func(t *testing.T) { 74 defer gtest.Catch(t) 75 76 tar := gg.OrdSetOf(10, 20, 30) 77 gtest.NotZero(tar) 78 79 tar.Clear() 80 gtest.Zero(tar) 81 }) 82 83 t.Run(`MarshalJSON`, func(t *testing.T) { 84 defer gtest.Catch(t) 85 86 gtest.Eq(gg.JsonString(gg.OrdSet[int]{}), `null`) 87 88 gtest.Eq( 89 gg.JsonString(gg.OrdSetOf(20, 10, 30)), 90 `[20,10,30]`, 91 ) 92 }) 93 94 t.Run(`UnmarshalJSON`, func(t *testing.T) { 95 defer gtest.Catch(t) 96 97 gtest.Equal( 98 gg.JsonParseTo[gg.OrdSet[int]](`[20, 10, 30]`), 99 gg.OrdSetOf(20, 10, 30), 100 ) 101 }) 102 }