gecko/ids/bit_set_test.go

158 lines
3.1 KiB
Go

// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package ids
import "testing"
func TestBitSet(t *testing.T) {
var bs1 BitSet
if bs1.Len() != 0 {
t.Fatalf("Empty set's len should be 0")
}
bs1.Add(5)
if bs1.Len() != 1 {
t.Fatalf("Wrong set length")
} else if !bs1.Contains(5) {
t.Fatalf("Set should contain element")
}
bs1.Add(10)
if bs1.Len() != 2 {
t.Fatalf("Wrong set length")
} else if !bs1.Contains(5) {
t.Fatalf("Set should contain element")
} else if !bs1.Contains(10) {
t.Fatalf("Set should contain element")
}
bs1.Add(10)
if bs1.Len() != 2 {
t.Fatalf("Wrong set length")
} else if !bs1.Contains(5) {
t.Fatalf("Set should contain element")
} else if !bs1.Contains(10) {
t.Fatalf("Set should contain element")
}
var bs2 BitSet
bs2.Add(0)
if bs2.Len() != 1 {
t.Fatalf("Wrong set length")
} else if !bs2.Contains(0) {
t.Fatalf("Set should contain element")
}
bs2.Union(bs1)
if bs1.Len() != 2 {
t.Fatalf("Wrong set length")
} else if !bs1.Contains(5) {
t.Fatalf("Set should contain element")
} else if !bs1.Contains(10) {
t.Fatalf("Set should contain element")
} else if bs2.Len() != 3 {
t.Fatalf("Wrong set length")
} else if !bs2.Contains(0) {
t.Fatalf("Set should contain element")
} else if !bs2.Contains(5) {
t.Fatalf("Set should contain element")
} else if !bs2.Contains(10) {
t.Fatalf("Set should contain element")
}
bs1.Clear()
if bs1.Len() != 0 {
t.Fatalf("Wrong set length")
} else if bs2.Len() != 3 {
t.Fatalf("Wrong set length")
} else if !bs2.Contains(0) {
t.Fatalf("Set should contain element")
} else if !bs2.Contains(5) {
t.Fatalf("Set should contain element")
} else if !bs2.Contains(10) {
t.Fatalf("Set should contain element")
}
bs1.Add(63)
if bs1.Len() != 1 {
t.Fatalf("Wrong set length")
} else if !bs1.Contains(63) {
t.Fatalf("Set should contain element")
}
bs1.Add(1)
if bs1.Len() != 2 {
t.Fatalf("Wrong set length")
} else if !bs1.Contains(1) {
t.Fatalf("Set should contain element")
} else if !bs1.Contains(63) {
t.Fatalf("Set should contain element")
}
bs1.Remove(63)
if bs1.Len() != 1 {
t.Fatalf("Wrong set length")
} else if !bs1.Contains(1) {
t.Fatalf("Set should contain element")
}
var bs3 BitSet
bs3.Add(0)
bs3.Add(2)
bs3.Add(5)
var bs4 BitSet
bs4.Add(2)
bs4.Add(5)
bs3.Intersection(bs4)
if bs3.Len() != 2 {
t.Fatalf("Wrong set length")
} else if !bs3.Contains(2) {
t.Fatalf("Set should contain element")
} else if !bs3.Contains(5) {
t.Fatalf("Set should contain element")
} else if bs4.Len() != 2 {
t.Fatalf("Wrong set length")
}
var bs5 BitSet
bs5.Add(7)
bs5.Add(11)
bs5.Add(9)
var bs6 BitSet
bs6.Add(9)
bs6.Add(11)
bs5.Difference(bs6)
if bs5.Len() != 1 {
t.Fatalf("Wrong set length")
} else if !bs5.Contains(7) {
t.Fatalf("Set should contain element")
} else if bs6.Len() != 2 {
t.Fatalf("Wrong set length")
}
}
func TestBitSetString(t *testing.T) {
var bs BitSet
bs.Add(17)
expected := "0000000000020000"
if bsString := bs.String(); bsString != expected {
t.Fatalf("BitSet.String returned %s expected %s", bsString, expected)
}
}