1
2
3
4
5
6 package assert
7
8 import (
9 "strings"
10 "testing"
11
12 "github.com/google/go-cmp/cmp"
13
14 "cdr.dev/slog"
15 "cdr.dev/slog/internal/assert"
16 "cdr.dev/slog/sloggers/slogtest"
17 )
18
19
20
21
22
23
24
25 func Equal(t testing.TB, name string, exp, act interface{}, opts ...cmp.Option) {
26 slog.Helper()
27
28 if diff := assert.Diff(exp, act, opts...); diff != "" {
29 slogtest.Fatal(t, "unexpected value",
30 slog.F("name", name),
31 slog.F("diff", diff),
32 )
33 }
34 }
35
36
37 func Success(t testing.TB, name string, err error) {
38 slog.Helper()
39 if err != nil {
40 slogtest.Fatal(t, "unexpected error",
41 slog.F("name", name),
42 slog.Error(err),
43 )
44 }
45 }
46
47
48 func True(t testing.TB, name string, act bool) {
49 slog.Helper()
50 Equal(t, name, true, act)
51 }
52
53
54 func False(t testing.TB, name string, act bool) {
55 slog.Helper()
56 Equal(t, name, false, act)
57 }
58
59
60 func Error(t testing.TB, name string, err error) {
61 slog.Helper()
62 if err == nil {
63 slogtest.Fatal(t, "expected error",
64 slog.F("name", name),
65 )
66 }
67 }
68
69
70
71
72 func ErrorContains(t testing.TB, name string, err error, sub string) {
73 slog.Helper()
74
75 Error(t, name, err)
76
77 errs := err.Error()
78 if !stringContainsFold(errs, sub) {
79 slogtest.Fatal(t, "unexpected error string",
80 slog.F("name", name),
81 slog.F("error_string", errs),
82 slog.F("expected_contains", sub),
83 )
84 }
85 }
86
87 func stringContainsFold(errs, sub string) bool {
88 errs = strings.ToLower(errs)
89 sub = strings.ToLower(sub)
90
91 return strings.Contains(errs, sub)
92
93 }
94
View as plain text