Skip to content

Commit

Permalink
up: errorx - update extend error types, add more unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
inhere committed Nov 18, 2022
1 parent dd9e08d commit 71fc27a
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 10 deletions.
37 changes: 27 additions & 10 deletions errorx/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ func (e *errorR) GoString() string {
return e.String()
}

// ErrMap type
// ErrMap multi error map
type ErrMap map[string]error

// Error string
Expand All @@ -87,6 +87,14 @@ func (e ErrMap) Error() string {
return sb.String()
}

// ErrorOrNil error
func (e ErrMap) ErrorOrNil() error {
if len(e) == 0 {
return nil
}
return e
}

// IsEmpty error
func (e ErrMap) IsEmpty() bool {
return len(e) == 0
Expand All @@ -100,28 +108,37 @@ func (e ErrMap) One() error {
return nil
}

// ErrList type
type ErrList []error
// Errors multi error list
type Errors []error
type ErrList = Errors

// Error string
func (el ErrList) Error() string {
func (es Errors) Error() string {
var sb strings.Builder
for _, err := range el {
for _, err := range es {
sb.WriteString(err.Error())
sb.WriteByte('\n')
}
return sb.String()
}

// ErrorOrNil error
func (es Errors) ErrorOrNil() error {
if len(es) == 0 {
return nil
}
return es
}

// IsEmpty error
func (el ErrList) IsEmpty() bool {
return len(el) == 0
func (es Errors) IsEmpty() bool {
return len(es) == 0
}

// First error
func (el ErrList) First() error {
if len(el) > 0 {
return el[0]
func (es Errors) First() error {
if len(es) > 0 {
return es[0]
}
return nil
}
28 changes: 28 additions & 0 deletions errorx/errors_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,32 @@ func TestErrorR_usage(t *testing.T) {
assert.Eq(t, 0, err.Code())
assert.True(t, err.IsSuc())
assert.False(t, err.IsFail())

err = errorx.Fail(1301, "fail")
assert.Eq(t, 1301, err.Code())
assert.False(t, err.IsSuc())
assert.True(t, err.IsFail())
assert.NotEmpty(t, err.String())
}

func TestErrMap_usage(t *testing.T) {
em := make(errorx.ErrMap)
assert.Nil(t, em.ErrorOrNil())
assert.Nil(t, em.One())
assert.True(t, em.IsEmpty())

em["err1"] = errorx.Raw("this is error1")
assert.False(t, em.IsEmpty())
assert.NotEmpty(t, em.Error())
}

func TestErrors_usage(t *testing.T) {
es := make(errorx.Errors, 0)
assert.Nil(t, es.First())
assert.Nil(t, es.ErrorOrNil())
assert.True(t, es.IsEmpty())

es = append(es, errorx.Raw("this is error1"))
assert.False(t, es.IsEmpty())
assert.NotEmpty(t, es.Error())
}

0 comments on commit 71fc27a

Please sign in to comment.