func testBits(tt testing2.TB, s *Bits, list []uint, empty bool) { for _, l := range list { s.Set(l) tt.True(s.IsSet(l)) s.Unset(l) tt.False(s.IsSet(l)) s.SetTo(l, true) tt.True(s.IsSet(l)) if empty { tt.True(s.Uint() == 1<<l) tt.True(s.Uint64() == 1<<l) } s.SetTo(l, false) tt.False(s.IsSet(l)) s.Flip(l) tt.True(s.IsSet(l)) s.FlipAll() tt.False(s.IsSet(l)) s.SetAll() tt.True(s.IsSet(l)) s.UnsetAll() tt.False(s.IsSet(l)) s.SetBefore(l) for i := uint(0); i < l; i++ { tt.True(s.IsSet(i)) } s.SetSince(l) for i := l; i < 64; i++ { tt.True(s.IsSet(uint(i))) } s.Unset(l) tt.True(s.BitCount() == 63) s.UnsetBefore(l) for i := uint(0); i < l; i++ { tt.False(s.IsSet(i)) } s.UnsetSince(l) for i := l; i < 64; i++ { tt.False(s.IsSet(i)) } } }
func testBitset(tt testing2.TB, s *Bitset, list []uint) { s.UnsetAll() for _, l := range list { s.Set(l) tt.True(s.IsSet(l)) s.Unset(l) tt.False(s.IsSet(l)) s.SetTo(l, true) tt.True(s.IsSet(l)) s.SetTo(l, false) tt.False(s.IsSet(l)) s.Flip(l) tt.True(s.IsSet(l)) s.FlipAll() tt.False(s.IsSet(l)) s.SetAll() tt.True(s.IsSet(l)) s.Unset(l) tt.Eq(s.BitCount(), int(s.Length(0)-1)) s.UnsetAll() tt.False(s.IsSet(l)) } tt.Eq(uint(64), s.UnitLen()) tt.Eq(uint(1), s.UnitCount()) s.UnsetAll() for _, l := range list { s.Set(l) } tt.DeepEq(s.Bits(), list) s.Flip(127) tt.Eq(uint(128), s.Length(0)) tt.True(s.Length(64) == 64) s.UnsetAll() s.Except(list...) for _, l := range list { tt.False(s.IsSet(l)) } cl := s.Clone() cl.Length(256) tt.True(cl.UnitCount() == 4) cl.Except(list...).Except(cl.Bits()...) s.Intersection(cl) tt.True(s.BitCount() == 0) s.Union(cl) tt.True(s.BitCount() == len(list)) s.Diff(cl) tt.True(s.BitCount() == 0) s.UnsetAll() cl.UnsetAll() cl.Intersection(s) tt.True(cl.BitCount() == 0) }