-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathutil_test.go
90 lines (74 loc) · 3.16 KB
/
util_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
package failure_test
import (
"errors"
"fmt"
"testing"
failure "github.com/morikuni/failure/v2"
)
func TestValue(t *testing.T) {
err := errors.New("error")
err = failure.NewFailure(err, []failure.Field{failure.Message("1"), failure.Context{"a": "b"}})
err = fmt.Errorf("fmt: %w", err)
err = failure.NewFailure(err, []failure.Field{failure.Callers(0), failure.Message("2")})
equal(t, failure.Value(err, failure.KeyMessage), failure.Message("2"))
equal(t, failure.Value(err, failure.KeyContext), failure.Context{"a": "b"})
equal(t, failure.Value(err, failure.KeyCode), nil)
}
func TestCauseValue(t *testing.T) {
err := errors.New("error")
err = failure.NewFailure(err, []failure.Field{failure.Message("1"), failure.Context{"a": "b"}})
err = fmt.Errorf("fmt: %w", err)
err = failure.NewFailure(err, []failure.Field{failure.Callers(0), failure.Message("2")})
equal(t, failure.OriginValue(err, failure.KeyMessage), failure.Message("1"))
equal(t, failure.OriginValue(err, failure.KeyContext), failure.Context{"a": "b"})
equal(t, failure.OriginValue(err, failure.KeyCode), nil)
}
func TestIs(t *testing.T) {
err := errors.New("error")
err = failure.NewFailure(err, []failure.Field{failure.WithCode(1)})
err = fmt.Errorf("fmt: %w", err)
err = failure.NewFailure(err, []failure.Field{failure.WithCode(2)})
equal(t, failure.Is(err, 1), false)
equal(t, failure.Is(err, 2), true)
}
func TestCodeOf(t *testing.T) {
err1 := errors.New("error")
err2 := failure.NewFailure(err1, []failure.Field{failure.WithCode(1)})
err3 := failure.NewFailure(err2, []failure.Field{failure.WithCode(2)})
err4 := fmt.Errorf("fmt: %w", err3)
equal(t, failure.CodeOf(err1), nil)
equal(t, failure.CodeOf(err2), 1)
equal(t, failure.CodeOf(err3), 2)
equal(t, failure.CodeOf(err4), 2)
}
func TestMessageOf(t *testing.T) {
err1 := errors.New("error")
err2 := failure.NewFailure(err1, []failure.Field{failure.Message("1")})
err3 := failure.NewFailure(err2, []failure.Field{failure.Message("2")})
err4 := fmt.Errorf("fmt: %w", err3)
equal(t, failure.MessageOf(err1), failure.Message(""))
equal(t, failure.MessageOf(err2), failure.Message("1"))
equal(t, failure.MessageOf(err3), failure.Message("2"))
equal(t, failure.MessageOf(err4), failure.Message("2"))
}
func TestCallStackOf(t *testing.T) {
baseLine := failure.Callers(0).HeadFrame().Line()
err1 := errors.New("error")
err2 := failure.NewFailure(err1, []failure.Field{failure.Callers(0)})
err3 := failure.NewFailure(err2, []failure.Field{failure.Callers(0)})
err4 := fmt.Errorf("fmt: %w", err3)
equal(t, failure.CallStackOf(err1), failure.CallStack(nil))
equal(t, failure.CallStackOf(err2).HeadFrame().Line(), baseLine+2)
equal(t, failure.CallStackOf(err3).HeadFrame().Line(), baseLine+2)
equal(t, failure.CallStackOf(err4).HeadFrame().Line(), baseLine+2)
}
func TestCauseOf(t *testing.T) {
err1 := errors.New("error")
err2 := failure.NewFailure(err1, []failure.Field{failure.WithCode(1)})
err3 := failure.NewFailure(err2, []failure.Field{failure.WithCode(2)})
err4 := fmt.Errorf("fmt: %w", err3)
equal(t, failure.CauseOf(err1), err1)
equal(t, failure.CauseOf(err2), err1)
equal(t, failure.CauseOf(err3), err1)
equal(t, failure.CauseOf(err4), err1)
}