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  }