github.com/MetalBlockchain/metalgo@v1.11.9/utils/set/bits_64_test.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package set 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestBits64(t *testing.T) { 13 require := require.New(t) 14 15 var bs1 Bits64 16 require.Empty(bs1) 17 18 bs1.Add(5) 19 require.Equal(1, bs1.Len()) 20 require.True(bs1.Contains(5)) 21 22 bs1.Add(10) 23 require.Equal(2, bs1.Len()) 24 require.True(bs1.Contains(5)) 25 require.True(bs1.Contains(10)) 26 27 bs1.Add(10) 28 require.Equal(2, bs1.Len()) 29 require.True(bs1.Contains(5)) 30 require.True(bs1.Contains(10)) 31 32 var bs2 Bits64 33 require.Empty(bs2) 34 35 bs2.Add(0) 36 require.Equal(1, bs2.Len()) 37 require.True(bs2.Contains(0)) 38 39 bs2.Union(bs1) 40 require.Equal(2, bs1.Len()) 41 require.True(bs1.Contains(5)) 42 require.True(bs1.Contains(10)) 43 require.Equal(3, bs2.Len()) 44 require.True(bs2.Contains(0)) 45 require.True(bs2.Contains(5)) 46 require.True(bs2.Contains(10)) 47 48 bs1.Clear() 49 require.Empty(bs1) 50 require.Equal(3, bs2.Len()) 51 require.True(bs2.Contains(0)) 52 require.True(bs2.Contains(5)) 53 require.True(bs2.Contains(10)) 54 55 bs1.Add(63) 56 require.Equal(1, bs1.Len()) 57 require.True(bs1.Contains(63)) 58 59 bs1.Add(1) 60 require.Equal(2, bs1.Len()) 61 require.True(bs1.Contains(1)) 62 require.True(bs1.Contains(63)) 63 64 bs1.Remove(63) 65 require.Equal(1, bs1.Len()) 66 require.True(bs1.Contains(1)) 67 68 var bs3 Bits64 69 require.Empty(bs3) 70 71 bs3.Add(0) 72 bs3.Add(2) 73 bs3.Add(5) 74 75 var bs4 Bits64 76 require.Empty(bs4) 77 78 bs4.Add(2) 79 bs4.Add(5) 80 81 bs3.Intersection(bs4) 82 83 require.Equal(2, bs3.Len()) 84 require.True(bs3.Contains(2)) 85 require.True(bs3.Contains(5)) 86 require.Equal(2, bs4.Len()) 87 require.True(bs4.Contains(2)) 88 require.True(bs4.Contains(5)) 89 90 var bs5 Bits64 91 require.Empty(bs5) 92 93 bs5.Add(7) 94 bs5.Add(11) 95 bs5.Add(9) 96 97 var bs6 Bits64 98 require.Empty(bs6) 99 100 bs6.Add(9) 101 bs6.Add(11) 102 103 bs5.Difference(bs6) 104 require.Equal(1, bs5.Len()) 105 require.True(bs5.Contains(7)) 106 require.Equal(2, bs6.Len()) 107 require.True(bs6.Contains(9)) 108 require.True(bs6.Contains(11)) 109 } 110 111 func TestBits64String(t *testing.T) { 112 var bs Bits64 113 114 bs.Add(17) 115 116 require.Equal(t, "0000000000020000", bs.String()) 117 }