github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/util/bitfield/bitfield_test.go (about)

     1  package bitfield
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  )
     8  
     9  func TestFields(t *testing.T) {
    10  	a := New(128)
    11  	b := New(128)
    12  	a.Set(10)
    13  	b.Set(10)
    14  	a.Set(42)
    15  	b.Set(42)
    16  	a.Set(100)
    17  	b.Set(100)
    18  	require.True(t, a.IsSet(42))
    19  	require.False(t, b.IsSet(43))
    20  	require.True(t, a.IsSubset(b))
    21  
    22  	v := uint64(1<<10 | 1<<42)
    23  	require.Equal(t, v, a[0])
    24  	require.Equal(t, v, b[0])
    25  
    26  	require.True(t, a.Equals(b))
    27  
    28  	c := a.Copy()
    29  	require.True(t, c.Equals(b))
    30  
    31  	z := New(128)
    32  	require.True(t, z.IsSubset(c))
    33  	c.And(a)
    34  	require.True(t, c.Equals(b))
    35  	c.And(z)
    36  	require.True(t, c.Equals(z))
    37  
    38  	c = New(64)
    39  	require.False(t, z.IsSubset(c))
    40  	c[0] = a[0]
    41  	require.False(t, c.Equals(a))
    42  	require.True(t, c.IsSubset(a))
    43  
    44  	b.And(c)
    45  	require.False(t, b.Equals(a))
    46  }