-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinterface_test.go
More file actions
65 lines (61 loc) · 2.15 KB
/
interface_test.go
File metadata and controls
65 lines (61 loc) · 2.15 KB
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
package law
import (
"testing"
)
func TestCheckList(t *testing.T) {
for _, one := range []struct {
List []int
Ok bool
Next int
}{
{[]int{3, 5, 7, 9, 11}, true, 13},
{[]int{2, 4, 8, 16, 32}, true, 64},
{[]int{2, 15, 41, 80}, true, 132},
{[]int{1, 2, 6, 15, 31}, true, 56},
{[]int{1, 1, 3, 15, 105, 945}, true, 10395},
{[]int{2, 14, 64, 202, 502, 1062, 2004}, true, 3474},
{[]int{1, 4, 9, 16}, true, 25},
{[]int{2, 3, 7, 16, 32}, true, 57},
{[]int{2, 4, 12, 84, 1344, 43008}, true, 2451456},
{[]int{}, false, 0},
{[]int{1, 5, 7, 33}, false, 0},
{[]int{2, 2, 4}, false, 0},
{[]int{1, 2, 3}, true, 4},
{[]int{2, -4, 8, -16, 32}, true, -64},
{[]int{11, 9, 7, 5, 3}, true, 1},
{[]int{4, 9, 25, 64, 144, 289}, true, 529},
{[]int{4, 9, 25, 64, 144, 288}, false, 0},
{[]int{0, 0, 0, 0, 0}, true, 0},
{[]int{8, 64, 512, 4096, 65536, 6291456}, true, 9059696640},
{[]int{36, 16, 4}, true, 0},
{[]int{}, false, 0},
{[]int{1, 2}, false, 0},
{[]int{0, 2, 2}, false, 0},
{[]int{3, 2, 2, 2, 2}, false, 0},
{[]int{9223372036854775805, 9223372036854775806, 9223372036854775807}, false, 0},
{[]int{2305843009213693951, 2305843009213693951 * 2, 2305843009213693951 * 4}, false, 0},
{[]int{3037000497 * 3037000497, 3037000498 * 3037000498, 3037000499 * 3037000499}, false, 0},
{[]int{6, 30, 180, 1080, 6480, 38880, 233280, 1399680, 8398080, 50388480, 302330880, 1813985280, 10883911680, 65303470080, 391820820480}, false, 0},
{[]int{1, 1, 2, 6}, true, 15},
{[]int{2, 2, 2, 2, 4, 48}, true, 8640},
} {
next, ok := checkList(one.List)
if ok == one.Ok && next == one.Next {
t.Log("correct", "input", one.List, "get", next, ok, "want", one.Next, one.Ok)
} else {
t.Error("wrong", "input", one.List, "get", next, ok, "want", one.Next, one.Ok)
}
}
}
func TestRandomDataCheckList(t *testing.T) {
items := BuildTestData(0)
t.Log(len(items))
for _, item := range items {
next, ok := checkList(item.test)
if ok == true && next == item.lastval {
t.Log("correct", "input", item.test, "get", next, ok, "want", item.lastval, true)
} else {
t.Error("wrong", "input", item.test, "get", next, ok, "want", item.lastval, true)
}
}
}