overflow and float conversion tests

This commit is contained in:
Gregory Roseberry 2014-09-17 10:12:28 +09:00
parent 49b7edd3ac
commit 68a803260b
2 changed files with 26 additions and 1 deletions

View file

@ -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 {

View file

@ -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"))