Add waddrmgr.IsError function.
This commit is contained in:
parent
9ee887823d
commit
39cab6087a
2 changed files with 52 additions and 0 deletions
|
@ -204,3 +204,10 @@ func managerError(c ErrorCode, desc string, err error) ManagerError {
|
||||||
// Break is a global err used to signal a break from the callback
|
// Break is a global err used to signal a break from the callback
|
||||||
// function by returning an error with the code ErrCallBackBreak
|
// function by returning an error with the code ErrCallBackBreak
|
||||||
var Break = managerError(ErrCallBackBreak, "callback break", nil)
|
var Break = managerError(ErrCallBackBreak, "callback break", nil)
|
||||||
|
|
||||||
|
// IsError returns whether the error is a MangerError with a matching error
|
||||||
|
// code.
|
||||||
|
func IsError(err error, code ErrorCode) bool {
|
||||||
|
e, ok := err.(ManagerError)
|
||||||
|
return ok && e.ErrorCode == code
|
||||||
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
package waddrmgr_test
|
package waddrmgr_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -120,3 +121,47 @@ func TestManagerError(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestIsError tests the IsError func.
|
||||||
|
func TestIsError(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
err error
|
||||||
|
code waddrmgr.ErrorCode
|
||||||
|
exp bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
err: waddrmgr.ManagerError{
|
||||||
|
ErrorCode: waddrmgr.ErrDatabase,
|
||||||
|
},
|
||||||
|
code: waddrmgr.ErrDatabase,
|
||||||
|
exp: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// package should never return *ManagerError
|
||||||
|
err: &waddrmgr.ManagerError{
|
||||||
|
ErrorCode: waddrmgr.ErrDatabase,
|
||||||
|
},
|
||||||
|
code: waddrmgr.ErrDatabase,
|
||||||
|
exp: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
err: waddrmgr.ManagerError{
|
||||||
|
ErrorCode: waddrmgr.ErrCrypto,
|
||||||
|
},
|
||||||
|
code: waddrmgr.ErrDatabase,
|
||||||
|
exp: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
err: errors.New("not a ManagerError"),
|
||||||
|
code: waddrmgr.ErrDatabase,
|
||||||
|
exp: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, test := range tests {
|
||||||
|
got := waddrmgr.IsError(test.err, test.code)
|
||||||
|
if got != test.exp {
|
||||||
|
t.Errorf("Test %d: got %v expected %v", i, got, test.exp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue