github.com/Finschia/finschia-sdk@v0.48.1/server/rosetta/lib/errors/errors_test.go (about) 1 package errors 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestRegisterError(t *testing.T) { 10 var error *Error 11 // this is the number of errors registered by default in errors.go 12 registeredErrorsCount := 16 13 assert.Equal(t, len(registry.list()), registeredErrorsCount) 14 assert.ElementsMatch(t, registry.list(), ListErrors()) 15 // add a new Error 16 error = RegisterError(69, "nice!", false, "nice!") 17 assert.NotNil(t, error) 18 // now we have a new error 19 registeredErrorsCount++ 20 assert.Equal(t, len(ListErrors()), registeredErrorsCount) 21 // re-register an error should not change anything 22 error = RegisterError(69, "nice!", false, "nice!") 23 assert.Equal(t, len(ListErrors()), registeredErrorsCount) 24 25 // test sealing 26 assert.Equal(t, registry.sealed, false) 27 errors := SealAndListErrors() 28 assert.Equal(t, registry.sealed, true) 29 assert.Equal(t, len(errors), registeredErrorsCount) 30 // add a new error on a sealed registry 31 error = RegisterError(1024, "bytes", false, "bytes") 32 assert.NotNil(t, error) 33 } 34 35 func TestError_Error(t *testing.T) { 36 var error *Error 37 // nil cases 38 assert.False(t, ErrOffline.Is(error)) 39 error = &Error{} 40 assert.False(t, ErrOffline.Is(error)) 41 // wrong type 42 assert.False(t, ErrOffline.Is(&MyError{})) 43 // test with wrapping an error 44 error = WrapError(ErrOffline, "offline") 45 assert.True(t, ErrOffline.Is(error)) 46 47 // test equality 48 assert.False(t, ErrOffline.Is(ErrBadGateway)) 49 assert.True(t, ErrBadGateway.Is(ErrBadGateway)) 50 } 51 52 func TestToRosetta(t *testing.T) { 53 var error *Error 54 // nil case 55 assert.NotNil(t, ToRosetta(error)) 56 // wrong type 57 assert.NotNil(t, ToRosetta(&MyError{})) 58 } 59 60 type MyError struct{} 61 62 func (e *MyError) Error() string { 63 return "" 64 } 65 66 func (e *MyError) Is(err error) bool { 67 return true 68 }