39 lines
767 B
Go
39 lines
767 B
Go
|
|
package errors
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestAppErrorBasics(t *testing.T) {
|
||
|
|
root := errors.New("root")
|
||
|
|
appErr := NewBadRequest("bad", root)
|
||
|
|
|
||
|
|
if appErr.Code != 400 || appErr.Message != "bad" {
|
||
|
|
t.Fatalf("unexpected appErr fields: %+v", appErr)
|
||
|
|
}
|
||
|
|
if got := appErr.Error(); got != "bad: root" {
|
||
|
|
t.Fatalf("unexpected Error(): %s", got)
|
||
|
|
}
|
||
|
|
if !Is(appErr, root) {
|
||
|
|
t.Fatalf("Is should match wrapped error")
|
||
|
|
}
|
||
|
|
var target *AppError
|
||
|
|
if !As(appErr, &target) {
|
||
|
|
t.Fatalf("As should succeed")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestWrap(t *testing.T) {
|
||
|
|
if Wrap(nil, "msg") != nil {
|
||
|
|
t.Fatalf("Wrap nil should return nil")
|
||
|
|
}
|
||
|
|
err := errors.New("base")
|
||
|
|
wrapped := Wrap(err, "ctx")
|
||
|
|
if wrapped.Error() != "ctx: base" {
|
||
|
|
t.Fatalf("wrap message mismatch: %v", wrapped)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|