-
Notifications
You must be signed in to change notification settings - Fork 4
/
error_test.go
103 lines (92 loc) · 2.01 KB
/
error_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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package numgo
import "testing"
func init() {
Debug(true)
}
func TestDebug(t *testing.T) {
Debug(true)
var nilp *Array64
nilp.Set(12, 1, 4, 0).AddC(2).DivC(6).At(1, 4, 0)
if !nilp.HasErr() {
t.FailNow()
err, debug, stack := nilp.GetDebug()
t.Log(err) // Prints generic error: "Nil pointer received."
t.Log(debug) // Prints debug info: "Nil pointer received by SetE()."
t.Log(stack)
t.Fail()
}
nilp = MinSet(Arange(10).Reshape(2, 5), Arange(10))
if err, debug, stack := nilp.GetDebug(); err != ShapeError {
t.Log(err)
t.Log(debug)
t.Log(stack)
t.Fail()
}
}
func TestEncodeDecode(t *testing.T) {
for _, v := range []error{
nil,
NilError,
ShapeError,
ReshapeError,
NegativeAxis,
IndexError,
InvIndexError,
InvIndexError,
FoldMapError,
} {
if e := decodeErr(encodeErr(v)); v != e {
t.Log("Failed:", v)
t.Log("Received:", e)
t.Fail()
}
}
if e := encodeErr(&ngError{"Not pkg error"}); e != -1 {
t.Log("Incorrect error returned: ", e)
t.Fail()
}
if e := decodeErr(-1); e.Error() != "Unknown error Unmarshaled: -1" {
t.Log("Incorrect error returned: ", e)
t.Fail()
}
}
func TestGetErr(t *testing.T) {
var a *Array64
var b *Arrayb
c, d := new(Array64), new(Arrayb)
if !a.HasErr() || !b.HasErr() {
t.Log("Bad error state", a.HasErr(), b.HasErr())
t.Fail()
}
if !c.HasErr() || !d.HasErr() {
t.Log("Bad error state (new) ", c.HasErr(), d.HasErr())
t.Fail()
}
switch {
case a.GetErr() != NilError:
t.Log("a failed", a.GetErr())
t.Fail()
case a.getErr() != NilError:
t.Log("a failed", a.GetErr())
t.Fail()
case b.GetErr() != NilError:
t.Log("b failed", b.GetErr())
t.Fail()
case c.GetErr() != NilError:
t.Log("c failed", c.GetErr())
t.Fail()
case d.GetErr() != NilError:
t.Log("d failed", d.GetErr())
t.Fail()
}
d.err = InvIndexError
if e := d.GetErr(); e != InvIndexError {
t.Log("Error storage failed", e)
t.Fail()
}
c.err = InvIndexError
if e := c.GetErr(); e != InvIndexError {
t.Log("Error storage failed", e)
t.Fail()
}
}