github.com/cilium/cilium@v1.16.2/pkg/counter/counter_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package counter 5 6 import ( 7 "net/netip" 8 "testing" 9 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestCounter(t *testing.T) { 14 sc := make(Counter[string]) 15 require.True(t, sc.Add("foo")) 16 require.Equal(t, 1, len(sc)) 17 require.False(t, sc.Add("foo")) 18 require.Equal(t, 1, len(sc)) 19 require.True(t, sc.Add("bar")) 20 require.Equal(t, 2, len(sc)) 21 nsc := sc.DeepCopy() 22 require.Equal(t, nsc, sc) 23 require.False(t, sc.Delete("foo")) 24 require.Equal(t, 2, len(sc)) 25 require.True(t, sc.Delete("bar")) 26 require.Equal(t, 1, len(sc)) 27 require.True(t, sc.Delete("foo")) 28 require.Equal(t, 0, len(sc)) 29 require.True(t, sc.Add("foo")) 30 require.Equal(t, 1, len(sc)) 31 32 ic := make(Counter[int]) 33 require.True(t, ic.Add(42)) 34 require.Equal(t, 1, len(ic)) 35 require.False(t, ic.Add(42)) 36 require.Equal(t, 1, len(ic)) 37 require.True(t, ic.Add(100)) 38 require.Equal(t, 2, len(ic)) 39 nic := ic.DeepCopy() 40 require.Equal(t, nic, ic) 41 require.False(t, ic.Delete(42)) 42 require.Equal(t, 2, len(ic)) 43 require.True(t, ic.Delete(100)) 44 require.Equal(t, 1, len(ic)) 45 require.True(t, ic.Delete(42)) 46 require.Equal(t, 0, len(ic)) 47 require.True(t, ic.Add(100)) 48 require.Equal(t, 1, len(ic)) 49 50 ac := make(Counter[netip.Addr]) 51 require.True(t, ac.Add(netip.MustParseAddr("10.0.0.1"))) 52 require.Equal(t, 1, len(ac)) 53 require.False(t, ac.Add(netip.MustParseAddr("10.0.0.1"))) 54 require.Equal(t, 1, len(ac)) 55 require.True(t, ac.Add(netip.MustParseAddr("::1"))) 56 require.Equal(t, 2, len(ac)) 57 require.True(t, ac.Add(netip.MustParseAddr("192.168.0.1"))) 58 require.Equal(t, 3, len(ac)) 59 require.True(t, ac.Add(netip.MustParseAddr("::ffff:10.0.0.1"))) 60 require.Equal(t, 4, len(ac)) 61 nac := ac.DeepCopy() 62 require.Equal(t, nac, ac) 63 require.False(t, ac.Delete(netip.MustParseAddr("10.0.0.1"))) 64 require.Equal(t, 4, len(ac)) 65 require.True(t, ac.Delete(netip.MustParseAddr("10.0.0.1"))) 66 require.Equal(t, 3, len(ac)) 67 }