Files
math/set/bits_64_test.go

118 lines
2.1 KiB
Go

// Copyright (C) 2019-2024, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package set
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestBits64(t *testing.T) {
require := require.New(t)
var bs1 Bits64
require.Empty(bs1)
bs1.Add(5)
require.Equal(1, bs1.Len())
require.True(bs1.Contains(5))
bs1.Add(10)
require.Equal(2, bs1.Len())
require.True(bs1.Contains(5))
require.True(bs1.Contains(10))
bs1.Add(10)
require.Equal(2, bs1.Len())
require.True(bs1.Contains(5))
require.True(bs1.Contains(10))
var bs2 Bits64
require.Empty(bs2)
bs2.Add(0)
require.Equal(1, bs2.Len())
require.True(bs2.Contains(0))
bs2.Union(bs1)
require.Equal(2, bs1.Len())
require.True(bs1.Contains(5))
require.True(bs1.Contains(10))
require.Equal(3, bs2.Len())
require.True(bs2.Contains(0))
require.True(bs2.Contains(5))
require.True(bs2.Contains(10))
bs1.Clear()
require.Empty(bs1)
require.Equal(3, bs2.Len())
require.True(bs2.Contains(0))
require.True(bs2.Contains(5))
require.True(bs2.Contains(10))
bs1.Add(63)
require.Equal(1, bs1.Len())
require.True(bs1.Contains(63))
bs1.Add(1)
require.Equal(2, bs1.Len())
require.True(bs1.Contains(1))
require.True(bs1.Contains(63))
bs1.Remove(63)
require.Equal(1, bs1.Len())
require.True(bs1.Contains(1))
var bs3 Bits64
require.Empty(bs3)
bs3.Add(0)
bs3.Add(2)
bs3.Add(5)
var bs4 Bits64
require.Empty(bs4)
bs4.Add(2)
bs4.Add(5)
bs3.Intersection(bs4)
require.Equal(2, bs3.Len())
require.True(bs3.Contains(2))
require.True(bs3.Contains(5))
require.Equal(2, bs4.Len())
require.True(bs4.Contains(2))
require.True(bs4.Contains(5))
var bs5 Bits64
require.Empty(bs5)
bs5.Add(7)
bs5.Add(11)
bs5.Add(9)
var bs6 Bits64
require.Empty(bs6)
bs6.Add(9)
bs6.Add(11)
bs5.Difference(bs6)
require.Equal(1, bs5.Len())
require.True(bs5.Contains(7))
require.Equal(2, bs6.Len())
require.True(bs6.Contains(9))
require.True(bs6.Contains(11))
}
func TestBits64String(t *testing.T) {
var bs Bits64
bs.Add(17)
require.Equal(t, "0000000000020000", bs.String())
}