overflow and float conversion tests
This commit is contained in:
parent
49b7edd3ac
commit
68a803260b
2 changed files with 26 additions and 1 deletions
|
@ -57,7 +57,6 @@ func TestUnmarshalInt(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestUnmarshalNonIntegerNumber(t *testing.T) {
|
||||
floatJSON = []byte(`123.45`)
|
||||
var i Int
|
||||
err := json.Unmarshal(floatJSON, &i)
|
||||
if err == nil {
|
||||
|
|
|
@ -2,6 +2,8 @@ package zero
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math"
|
||||
"strconv"
|
||||
"testing"
|
||||
)
|
||||
|
||||
|
@ -60,6 +62,30 @@ func TestUnmarshalInt(t *testing.T) {
|
|||
assertNullInt(t, badType, "wrong type json")
|
||||
}
|
||||
|
||||
func TestUnmarshalNonIntegerNumber(t *testing.T) {
|
||||
var i Int
|
||||
err := json.Unmarshal(floatJSON, &i)
|
||||
if err == nil {
|
||||
panic("err should be present; non-integer number coerced to int")
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnmarshalInt64Overflow(t *testing.T) {
|
||||
int64Overflow := uint64(math.MaxInt64)
|
||||
|
||||
// Max int64 should decode successfully
|
||||
var i Int
|
||||
err := json.Unmarshal([]byte(strconv.FormatUint(int64Overflow, 10)), &i)
|
||||
maybePanic(err)
|
||||
|
||||
// Attempt to overflow
|
||||
int64Overflow++
|
||||
err = json.Unmarshal([]byte(strconv.FormatUint(int64Overflow, 10)), &i)
|
||||
if err == nil {
|
||||
panic("err should be present; decoded value overflows int64")
|
||||
}
|
||||
}
|
||||
|
||||
func TestTextUnmarshalInt(t *testing.T) {
|
||||
var i Int
|
||||
err := i.UnmarshalText([]byte("12345"))
|
||||
|
|
Loading…
Reference in a new issue