--- /dev/null
+package bc
+
+import (
+ "testing"
+)
+
+func TestSetBits(t *testing.T) {
+ cases := []struct {
+ op map[int]bool
+ result []bool
+ }{
+ {
+ op: map[int]bool{
+ 0: true,
+ },
+ result: []bool{true},
+ },
+ {
+ op: map[int]bool{
+ 0: false,
+ },
+ result: []bool{false},
+ },
+ {
+ op: map[int]bool{
+ 0: false,
+ 1: true,
+ },
+ result: []bool{false, true},
+ },
+ {
+ op: map[int]bool{
+ 0: true,
+ 1: false,
+ },
+ result: []bool{true, false},
+ },
+ {
+ op: map[int]bool{
+ 0: true,
+ 1: false,
+ 2: false,
+ 3: true,
+ 4: true,
+ 5: true,
+ 6: false,
+ 7: true,
+ 8: false,
+ 9: true,
+ },
+ result: []bool{true, false, false, true, true, true, false, true, false, true},
+ },
+ }
+
+ for ci, c := range cases {
+ ts := NewTransactionStatus()
+ for i := 0; i < len(c.op); i++ {
+ if err := ts.SetStatus(i, c.op[i]); err != nil {
+ t.Errorf("test case #%d, %t", ci, err)
+ }
+ }
+
+ for i, v := range c.result {
+ result, err := ts.GetStatus(i)
+ if err != nil {
+ t.Errorf("test case #%d, %t", ci, err)
+ }
+ if result != v {
+ t.Errorf("bad result, %d want %t get %t", i, v, result)
+ }
+ }
+ }
+}