mirror of https://github.com/poanetwork/gecko.git
107 lines
2.0 KiB
Go
107 lines
2.0 KiB
Go
// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package ids
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestUniqueBag(t *testing.T) {
|
|
var ub1 UniqueBag
|
|
|
|
ub1.init()
|
|
|
|
if ub1 == nil {
|
|
t.Fatalf("Unique Bag still nil after initialized")
|
|
} else if len(ub1.List()) != 0 {
|
|
t.Fatalf("Unique Bag should be empty")
|
|
}
|
|
|
|
id1 := Empty.Prefix(1)
|
|
id2 := Empty.Prefix(2)
|
|
|
|
ub2 := make(UniqueBag)
|
|
ub2.Add(1, id1, id2)
|
|
|
|
if !ub2.GetSet(id1).Contains(1) {
|
|
t.Fatalf("Set missing element")
|
|
} else if !ub2.GetSet(id2).Contains(1) {
|
|
t.Fatalf("Set missing element")
|
|
}
|
|
|
|
var bs1 BitSet
|
|
bs1.Add(2)
|
|
bs1.Add(4)
|
|
|
|
ub3 := make(UniqueBag)
|
|
|
|
ub3.UnionSet(id1, bs1)
|
|
|
|
bs1.Clear()
|
|
bs1 = ub3.GetSet(id1)
|
|
if bs1.Len() != 2 {
|
|
t.Fatalf("Incorrect length of set")
|
|
} else if !bs1.Contains(2) {
|
|
t.Fatalf("Set missing element")
|
|
} else if !bs1.Contains(4) {
|
|
t.Fatalf("Set missing element")
|
|
}
|
|
|
|
// Difference test
|
|
bs1.Clear()
|
|
|
|
ub4 := make(UniqueBag)
|
|
ub4.Add(1, id1)
|
|
ub4.Add(2, id1)
|
|
ub4.Add(5, id2)
|
|
ub4.Add(8, id2)
|
|
|
|
ub5 := make(UniqueBag)
|
|
ub5.Add(5, id2)
|
|
ub5.Add(5, id1)
|
|
|
|
ub4.Difference(&ub5)
|
|
|
|
if len(ub5.List()) != 2 {
|
|
t.Fatalf("Incorrect number of ids in Unique Bag")
|
|
}
|
|
|
|
ub4id1 := ub4.GetSet(id1)
|
|
if ub4id1.Len() != 2 {
|
|
t.Fatalf("Set of Unique Bag has incorrect length")
|
|
} else if !ub4id1.Contains(1) {
|
|
t.Fatalf("Set of Unique Bag missing element")
|
|
} else if !ub4id1.Contains(2) {
|
|
t.Fatalf("Set of Unique Bag missing element")
|
|
}
|
|
|
|
ub4id2 := ub4.GetSet(id2)
|
|
if ub4id2.Len() != 1 {
|
|
t.Fatalf("Set of Unique Bag has incorrect length")
|
|
} else if !ub4id2.Contains(8) {
|
|
t.Fatalf("Set of Unique Bag missing element")
|
|
}
|
|
|
|
// DifferenceSet test
|
|
|
|
ub6 := make(UniqueBag)
|
|
ub6.Add(1, id1)
|
|
ub6.Add(2, id1)
|
|
ub6.Add(7, id1)
|
|
|
|
diffBitSet := BitSet(0)
|
|
diffBitSet.Add(1)
|
|
diffBitSet.Add(7)
|
|
|
|
ub6.DifferenceSet(id1, diffBitSet)
|
|
|
|
ub6id1 := ub6.GetSet(id1)
|
|
|
|
if ub6id1.Len() != 1 {
|
|
t.Fatalf("Set of Unique Bag missing element")
|
|
} else if !ub6id1.Contains(2) {
|
|
t.Fatalf("Set of Unique Bag missing element")
|
|
}
|
|
}
|