OSDN Git Service

new repo
[bytom/vapor.git] / protocol / bc / types / bytom / tx_status_test.go
1 package bytom
2
3 import (
4         "testing"
5 )
6
7 func TestSetBits(t *testing.T) {
8         cases := []struct {
9                 op     map[int]bool
10                 result []bool
11         }{
12                 {
13                         op: map[int]bool{
14                                 0: true,
15                         },
16                         result: []bool{true},
17                 },
18                 {
19                         op: map[int]bool{
20                                 0: false,
21                         },
22                         result: []bool{false},
23                 },
24                 {
25                         op: map[int]bool{
26                                 0: false,
27                                 1: true,
28                         },
29                         result: []bool{false, true},
30                 },
31                 {
32                         op: map[int]bool{
33                                 0: true,
34                                 1: false,
35                         },
36                         result: []bool{true, false},
37                 },
38                 {
39                         op: map[int]bool{
40                                 0: true,
41                                 1: false,
42                                 2: false,
43                                 3: true,
44                                 4: true,
45                                 5: true,
46                                 6: false,
47                                 7: true,
48                                 8: false,
49                                 9: true,
50                         },
51                         result: []bool{true, false, false, true, true, true, false, true, false, true},
52                 },
53         }
54
55         for ci, c := range cases {
56                 ts := NewTransactionStatus()
57                 for i := 0; i < len(c.op); i++ {
58                         if err := ts.SetStatus(i, c.op[i]); err != nil {
59                                 t.Errorf("test case #%d, %t", ci, err)
60                         }
61                 }
62
63                 for i, v := range c.result {
64                         result, err := ts.GetStatus(i)
65                         if err != nil {
66                                 t.Errorf("test case #%d, %t", ci, err)
67                         }
68                         if result != v {
69                                 t.Errorf("bad result, %d want %t get %t", i, v, result)
70                         }
71                 }
72         }
73 }