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  }