@@ -3,36 +3,93 @@ import ( "strconv" "testing" ) -func TestSize(t *testing.T) { - sizes := []uint{0, 31, 32, 33, 61, 63, 64, 127, 128, 129} +var sizes []uint = []uint{0, 31, 32, 33, 61, 63, 64, 127, 128, 129} +func TestBitSize(t *testing.T) { for _, size := range sizes { - v := New(size) + v := NewBit(size) if v.Len() < size || v.Len() > size+strconv.IntSize { t.Error("Invalid length", v.Len(), "expected", size) } } } -func TestEmpty(t *testing.T) { +func TestBitEmpty(t *testing.T) { + var size uint = 128 + v := NewBit(size) + + // Check if it is empty by default + for i := uint(0); i < size; i++ { + if v.Peek(i) { + t.Error("Invalid raised bit at", i) + } + } +} + +func TestBitBasic(t *testing.T) { + var size uint = 128 + v := NewBit(size) + + // Raise and lower each position explicitly + for i := uint(0); i < size; i++ { + v.Poke(i, true) + if !v.Peek(i) { + t.Error("Invalid lowered bit at", i) + } + + v.Poke(i, false) + if v.Peek(i) { + t.Error("Invalid raised bit at", i) + } + } +} + +func TestBitFlip(t *testing.T) { + var size uint = 128 + v := NewBit(size) + + // Raise and lower each position by flipping + for i := uint(0); i < size; i++ { + v.Flip(i) + if !v.Peek(i) { + t.Error("Invalid lowered bit at", i) + } + + v.Flip(i) + if v.Peek(i) { + t.Error("Invalid raised bit at", i) + } + } +} + +func TestBoolSize(t *testing.T) { + for _, size := range sizes { + v := NewBool(size) + if v.Len() != size { + t.Error("Invalid length", v.Len(), "expected", size) + } + } +} + +func TestBoolEmpty(t *testing.T) { var size uint = 128 - v := New(size) + v := NewBool(size) // Check if it is empty by default for i := uint(0); i < size; i++ { if v.Peek(i) { t.Error("Invalid raised bit at", i) } } } -func TestBasic(t *testing.T) { +func TestBoolBasic(t *testing.T) { var size uint = 128 - v := New(size) + v := NewBool(size) // Raise and lower each position explicitly for i := uint(0); i < size; i++ { v.Poke(i, true) if !v.Peek(i) { @@ -44,13 +101,13 @@ t.Error("Invalid raised bit at", i) } } } -func TestFlip(t *testing.T) { +func TestBoolFlip(t *testing.T) { var size uint = 128 - v := New(size) + v := NewBool(size) // Raise and lower each position by flipping for i := uint(0); i < size; i++ { v.Flip(i) if !v.Peek(i) {