err_test.gno
1.90 Kb ยท 83 lines
1package pkgerr
2
3import (
4 "errors"
5 "strings"
6 "testing"
7)
8
9const pkgPath = "gno.land/r/leon/test"
10
11var prefix = strings.TrimPrefix(pkgPath, "gno.land/")
12
13func TestNew(t *testing.T) {
14 err := New("my error message")
15 if err == nil {
16 t.Fatal("Expected an error, got nil")
17 }
18
19 testing.SetRealm(testing.NewCodeRealm(pkgPath))
20
21 expected := prefix + ": my error message"
22
23 if err.Error() != expected {
24 t.Errorf("Expected error message %q, got %q", expected, err.Error())
25 }
26}
27
28func TestWrap(t *testing.T) {
29 testing.SetRealm(testing.NewCodeRealm(pkgPath))
30
31 originalErr := errors.New("original error")
32 wrappedErr := Wrap(originalErr)
33 if wrappedErr == nil {
34 t.Fatal("Expected an error, got nil")
35 }
36
37 expected := prefix + ": original error"
38 if wrappedErr.Error() != expected {
39 t.Errorf("Expected error message %q, got %q", expected, wrappedErr.Error())
40 }
41}
42
43func TestUnwrap(t *testing.T) {
44 testing.SetRealm(testing.NewCodeRealm(pkgPath))
45 originalErr := errors.New("original error")
46 wrappedErr := Wrap(originalErr)
47
48 unwrappedErr := wrappedErr.(*pkgErr).Unwrap()
49 if unwrappedErr != originalErr {
50 t.Errorf("Expected unwrapped error %v, got %v", originalErr, unwrappedErr)
51 }
52}
53
54func TestErrorMethod(t *testing.T) {
55 testing.SetRealm(testing.NewCodeRealm(pkgPath))
56 originalErr := errors.New("original error")
57 pkgErr := &pkgErr{originalErr: originalErr}
58
59 expected := prefix + ": original error"
60 if pkgErr.Error() != expected {
61 t.Errorf("Expected error message %q, got %q", expected, pkgErr.Error())
62 }
63}
64
65func TestWrapNilError(t *testing.T) {
66 err := Wrap(nil)
67 if err != nil {
68 t.Errorf("Expected nil error, got %v", err)
69 }
70}
71
72func TestNewWithEmptyMessage(t *testing.T) {
73 testing.SetRealm(testing.NewCodeRealm(pkgPath))
74 err := New("")
75 if err == nil {
76 t.Fatal("Expected an error, got nil")
77 }
78
79 expected := prefix + ": "
80 if err.Error() != expected {
81 t.Errorf("Expected error message %q, got %q", expected, err.Error())
82 }
83}