From 1ad7d3c5ed8e4f8ddd9dcf97ec8a02a212699c0f Mon Sep 17 00:00:00 2001 From: Cameron Moore Date: Fri, 3 Mar 2017 15:11:16 -0600 Subject: [PATCH] Use single defined error for negatives --- caste.go | 73 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/caste.go b/caste.go index e4a25ec..569d852 100644 --- a/caste.go +++ b/caste.go @@ -6,6 +6,7 @@ package cast import ( + "errors" "fmt" "html/template" "reflect" @@ -14,6 +15,8 @@ import ( "time" ) +var errNegativeNotAllowed = errors.New("unable to cast negative value") + // ToTimeE casts an interface to a time.Time type. func ToTimeE(i interface{}) (tim time.Time, err error) { i = indirect(i) @@ -425,27 +428,27 @@ func ToUintE(i interface{}) (uint, error) { return 0, fmt.Errorf("unable to cast %#v to uint: %s", i, err) case int: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint") + return 0, errNegativeNotAllowed } return uint(s), nil case int64: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint") + return 0, errNegativeNotAllowed } return uint(s), nil case int32: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint") + return 0, errNegativeNotAllowed } return uint(s), nil case int16: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint") + return 0, errNegativeNotAllowed } return uint(s), nil case int8: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint") + return 0, errNegativeNotAllowed } return uint(s), nil case uint: @@ -460,12 +463,12 @@ func ToUintE(i interface{}) (uint, error) { return uint(s), nil case float64: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint") + return 0, errNegativeNotAllowed } return uint(s), nil case float32: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint") + return 0, errNegativeNotAllowed } return uint(s), nil case bool: @@ -493,27 +496,27 @@ func ToUint64E(i interface{}) (uint64, error) { return 0, fmt.Errorf("unable to cast %#v to uint64: %s", i, err) case int: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint64") + return 0, errNegativeNotAllowed } return uint64(s), nil case int64: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint64") + return 0, errNegativeNotAllowed } return uint64(s), nil case int32: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint64") + return 0, errNegativeNotAllowed } return uint64(s), nil case int16: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint64") + return 0, errNegativeNotAllowed } return uint64(s), nil case int8: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint64") + return 0, errNegativeNotAllowed } return uint64(s), nil case uint: @@ -528,12 +531,12 @@ func ToUint64E(i interface{}) (uint64, error) { return uint64(s), nil case float32: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint64") + return 0, errNegativeNotAllowed } return uint64(s), nil case float64: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint64") + return 0, errNegativeNotAllowed } return uint64(s), nil case bool: @@ -561,27 +564,27 @@ func ToUint32E(i interface{}) (uint32, error) { return 0, fmt.Errorf("unable to cast %#v to uint32: %s", i, err) case int: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint32") + return 0, errNegativeNotAllowed } return uint32(s), nil case int64: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint32") + return 0, errNegativeNotAllowed } return uint32(s), nil case int32: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint32") + return 0, errNegativeNotAllowed } return uint32(s), nil case int16: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint32") + return 0, errNegativeNotAllowed } return uint32(s), nil case int8: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint32") + return 0, errNegativeNotAllowed } return uint32(s), nil case uint: @@ -596,12 +599,12 @@ func ToUint32E(i interface{}) (uint32, error) { return uint32(s), nil case float64: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint32") + return 0, errNegativeNotAllowed } return uint32(s), nil case float32: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint32") + return 0, errNegativeNotAllowed } return uint32(s), nil case bool: @@ -629,27 +632,27 @@ func ToUint16E(i interface{}) (uint16, error) { return 0, fmt.Errorf("unable to cast %#v to uint16: %s", i, err) case int: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint16") + return 0, errNegativeNotAllowed } return uint16(s), nil case int64: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint16") + return 0, errNegativeNotAllowed } return uint16(s), nil case int32: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint16") + return 0, errNegativeNotAllowed } return uint16(s), nil case int16: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint16") + return 0, errNegativeNotAllowed } return uint16(s), nil case int8: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint16") + return 0, errNegativeNotAllowed } return uint16(s), nil case uint: @@ -664,12 +667,12 @@ func ToUint16E(i interface{}) (uint16, error) { return uint16(s), nil case float64: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint16") + return 0, errNegativeNotAllowed } return uint16(s), nil case float32: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint16") + return 0, errNegativeNotAllowed } return uint16(s), nil case bool: @@ -697,27 +700,27 @@ func ToUint8E(i interface{}) (uint8, error) { return 0, fmt.Errorf("unable to cast %#v to uint8: %s", i, err) case int: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint8") + return 0, errNegativeNotAllowed } return uint8(s), nil case int64: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint8") + return 0, errNegativeNotAllowed } return uint8(s), nil case int32: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint8") + return 0, errNegativeNotAllowed } return uint8(s), nil case int16: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint8") + return 0, errNegativeNotAllowed } return uint8(s), nil case int8: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint8") + return 0, errNegativeNotAllowed } return uint8(s), nil case uint: @@ -732,12 +735,12 @@ func ToUint8E(i interface{}) (uint8, error) { return s, nil case float64: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint8") + return 0, errNegativeNotAllowed } return uint8(s), nil case float32: if s < 0 { - return 0, fmt.Errorf("unable to cast negative value to uint8") + return 0, errNegativeNotAllowed } return uint8(s), nil case bool: