Merge pull request #119 from unistack-org/errors
errors: add CodeIn helper func
This commit was merged in pull request #119.
	This commit is contained in:
		| @@ -233,6 +233,27 @@ func Equal(err1 error, err2 error) bool { | |||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // CodeIn return true if err has specified code | ||||||
|  | func CodeIn(err interface{}, codes ...int32) bool { | ||||||
|  | 	var code int32 | ||||||
|  | 	switch verr := err.(type) { | ||||||
|  | 	case *Error: | ||||||
|  | 		code = verr.Code | ||||||
|  | 	case int32: | ||||||
|  | 		code = verr | ||||||
|  | 	default: | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	for _, check := range codes { | ||||||
|  | 		if code == check { | ||||||
|  | 			return true | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return false | ||||||
|  | } | ||||||
|  |  | ||||||
| // FromError try to convert go error to *Error | // FromError try to convert go error to *Error | ||||||
| func FromError(err error) *Error { | func FromError(err error) *Error { | ||||||
| 	if verr, ok := err.(*Error); ok && verr != nil { | 	if verr, ok := err.(*Error); ok && verr != nil { | ||||||
|   | |||||||
| @@ -96,3 +96,20 @@ func TestErrors(t *testing.T) { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | func TestCodeIn(t *testing.T) { | ||||||
|  | 	err := InternalServerError("id", "%s", "msg") | ||||||
|  |  | ||||||
|  | 	if ok := CodeIn(err, 400, 500); !ok { | ||||||
|  | 		t.Fatalf("CodeIn not works: %v", err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if ok := CodeIn(err.(*Error).Code, 500); !ok { | ||||||
|  | 		t.Fatalf("CodeIn not works: %v", err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if ok := CodeIn(err, 100); ok { | ||||||
|  | 		t.Fatalf("CodeIn not works: %v", err) | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user