-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathheader_test.go
77 lines (64 loc) · 2.4 KB
/
header_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package lists
import "github.com/feyeleanor/chain"
import "fmt"
import "testing"
func TestNewListNode(t *testing.T) {
l := NewListHeader(&chain.Cell{})
if n, ok := l.NewListNode(-1).(*chain.Cell); !ok {
t.Fatalf("node should be of type *chain.Cell")
} else if n.Content() != -1 {
t.Fatalf("node should be 0 but is %v", n.Content())
}
}
func TestEnforceBounds(t *testing.T) {
ConfirmEnforceBounds := func(l *LinearList, start, end, expected_start, expected_end int) {
title := fmt.Sprintf("%v.EnforcedBounds(%v, %v)", l, start, end)
ok := l.EnforceBounds(&start, &end)
switch {
case !ok: t.Fatalf("%v should be true", title)
case start != expected_start: t.Fatalf("%v start should be %v but is %v", title, expected_start, start)
case end != expected_end: t.Fatalf("%v end should be %v but is %v", title, expected_end, end)
}
}
RefuteEnforceBounds := func(l *LinearList, start, end int) {
title := fmt.Sprintf("%v.EnforcedBounds(%v, %v)", l, start, end)
ok := l.EnforceBounds(&start, &end)
if ok {
t.Fatalf("%v should be false", title)
}
}
RefuteEnforceBounds(List(), -1, -1)
RefuteEnforceBounds(List(), -1, 0)
RefuteEnforceBounds(List(), -1, 1)
RefuteEnforceBounds(List(), 0, -1)
RefuteEnforceBounds(List(), 0, 0)
RefuteEnforceBounds(List(), 0, 1)
RefuteEnforceBounds(List(), 1, -1)
RefuteEnforceBounds(List(), 1, 0)
RefuteEnforceBounds(List(), 1, 1)
RefuteEnforceBounds(List(0), -1, -1)
ConfirmEnforceBounds(List(0), -1, 0, 0, 0)
ConfirmEnforceBounds(List(0), -1, 1, 0, 0)
RefuteEnforceBounds(List(0), 0, -1)
ConfirmEnforceBounds(List(0), 0, 0, 0, 0)
ConfirmEnforceBounds(List(0), 0, 1, 0, 0)
RefuteEnforceBounds(List(0), 1, -1)
RefuteEnforceBounds(List(0), 1, 0)
RefuteEnforceBounds(List(0), 1, 1)
RefuteEnforceBounds(List(0, 1), -1, -1)
ConfirmEnforceBounds(List(0, 1), -1, 0, 0, 0)
ConfirmEnforceBounds(List(0, 1), -1, 1, 0, 1)
ConfirmEnforceBounds(List(0, 1), -1, 2, 0, 1)
RefuteEnforceBounds(List(0, 1), 0, -1)
ConfirmEnforceBounds(List(0, 1), 0, 0, 0, 0)
ConfirmEnforceBounds(List(0, 1), 0, 1, 0, 1)
ConfirmEnforceBounds(List(0, 1), 0, 2, 0, 1)
RefuteEnforceBounds(List(0, 1), 1, -1)
RefuteEnforceBounds(List(0, 1), 1, 0)
ConfirmEnforceBounds(List(0, 1), 1, 1, 1, 1)
ConfirmEnforceBounds(List(0, 1), 1, 2, 1, 1)
RefuteEnforceBounds(List(0, 1), 2, -1)
RefuteEnforceBounds(List(0, 1), 2, 0)
RefuteEnforceBounds(List(0, 1), 2, 1)
RefuteEnforceBounds(List(0, 1), 2, 2)
}