mirror of
https://github.com/luxfi/math.git
synced 2026-09-24 00:25:16 +00:00
118 lines
2.1 KiB
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())
|
|
}
|