|
|
@ -62,12 +62,12 @@ var errJSONEOF = errors.New("unexpected end of JSON input") |
|
|
|
var unmarshalBytesTests = []unmarshalTest{ |
|
|
|
var unmarshalBytesTests = []unmarshalTest{ |
|
|
|
// invalid encoding
|
|
|
|
// invalid encoding
|
|
|
|
{input: "", wantErr: errJSONEOF}, |
|
|
|
{input: "", wantErr: errJSONEOF}, |
|
|
|
{input: "null", wantErr: errNonString}, |
|
|
|
{input: "null", wantErr: errNonString(bytesT)}, |
|
|
|
{input: "10", wantErr: errNonString}, |
|
|
|
{input: "10", wantErr: errNonString(bytesT)}, |
|
|
|
{input: `"0"`, wantErr: ErrMissingPrefix}, |
|
|
|
{input: `"0"`, wantErr: wrapTypeError(ErrMissingPrefix, bytesT)}, |
|
|
|
{input: `"0x0"`, wantErr: ErrOddLength}, |
|
|
|
{input: `"0x0"`, wantErr: wrapTypeError(ErrOddLength, bytesT)}, |
|
|
|
{input: `"0xxx"`, wantErr: ErrSyntax}, |
|
|
|
{input: `"0xxx"`, wantErr: wrapTypeError(ErrSyntax, bytesT)}, |
|
|
|
{input: `"0x01zz01"`, wantErr: ErrSyntax}, |
|
|
|
{input: `"0x01zz01"`, wantErr: wrapTypeError(ErrSyntax, bytesT)}, |
|
|
|
|
|
|
|
|
|
|
|
// valid encoding
|
|
|
|
// valid encoding
|
|
|
|
{input: `""`, want: referenceBytes("")}, |
|
|
|
{input: `""`, want: referenceBytes("")}, |
|
|
@ -127,16 +127,16 @@ func TestMarshalBytes(t *testing.T) { |
|
|
|
var unmarshalBigTests = []unmarshalTest{ |
|
|
|
var unmarshalBigTests = []unmarshalTest{ |
|
|
|
// invalid encoding
|
|
|
|
// invalid encoding
|
|
|
|
{input: "", wantErr: errJSONEOF}, |
|
|
|
{input: "", wantErr: errJSONEOF}, |
|
|
|
{input: "null", wantErr: errNonString}, |
|
|
|
{input: "null", wantErr: errNonString(bigT)}, |
|
|
|
{input: "10", wantErr: errNonString}, |
|
|
|
{input: "10", wantErr: errNonString(bigT)}, |
|
|
|
{input: `"0"`, wantErr: ErrMissingPrefix}, |
|
|
|
{input: `"0"`, wantErr: wrapTypeError(ErrMissingPrefix, bigT)}, |
|
|
|
{input: `"0x"`, wantErr: ErrEmptyNumber}, |
|
|
|
{input: `"0x"`, wantErr: wrapTypeError(ErrEmptyNumber, bigT)}, |
|
|
|
{input: `"0x01"`, wantErr: ErrLeadingZero}, |
|
|
|
{input: `"0x01"`, wantErr: wrapTypeError(ErrLeadingZero, bigT)}, |
|
|
|
{input: `"0xx"`, wantErr: ErrSyntax}, |
|
|
|
{input: `"0xx"`, wantErr: wrapTypeError(ErrSyntax, bigT)}, |
|
|
|
{input: `"0x1zz01"`, wantErr: ErrSyntax}, |
|
|
|
{input: `"0x1zz01"`, wantErr: wrapTypeError(ErrSyntax, bigT)}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
input: `"0x10000000000000000000000000000000000000000000000000000000000000000"`, |
|
|
|
input: `"0x10000000000000000000000000000000000000000000000000000000000000000"`, |
|
|
|
wantErr: ErrBig256Range, |
|
|
|
wantErr: wrapTypeError(ErrBig256Range, bigT), |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// valid encoding
|
|
|
|
// valid encoding
|
|
|
@ -208,14 +208,14 @@ func TestMarshalBig(t *testing.T) { |
|
|
|
var unmarshalUint64Tests = []unmarshalTest{ |
|
|
|
var unmarshalUint64Tests = []unmarshalTest{ |
|
|
|
// invalid encoding
|
|
|
|
// invalid encoding
|
|
|
|
{input: "", wantErr: errJSONEOF}, |
|
|
|
{input: "", wantErr: errJSONEOF}, |
|
|
|
{input: "null", wantErr: errNonString}, |
|
|
|
{input: "null", wantErr: errNonString(uint64T)}, |
|
|
|
{input: "10", wantErr: errNonString}, |
|
|
|
{input: "10", wantErr: errNonString(uint64T)}, |
|
|
|
{input: `"0"`, wantErr: ErrMissingPrefix}, |
|
|
|
{input: `"0"`, wantErr: wrapTypeError(ErrMissingPrefix, uint64T)}, |
|
|
|
{input: `"0x"`, wantErr: ErrEmptyNumber}, |
|
|
|
{input: `"0x"`, wantErr: wrapTypeError(ErrEmptyNumber, uint64T)}, |
|
|
|
{input: `"0x01"`, wantErr: ErrLeadingZero}, |
|
|
|
{input: `"0x01"`, wantErr: wrapTypeError(ErrLeadingZero, uint64T)}, |
|
|
|
{input: `"0xfffffffffffffffff"`, wantErr: ErrUint64Range}, |
|
|
|
{input: `"0xfffffffffffffffff"`, wantErr: wrapTypeError(ErrUint64Range, uint64T)}, |
|
|
|
{input: `"0xx"`, wantErr: ErrSyntax}, |
|
|
|
{input: `"0xx"`, wantErr: wrapTypeError(ErrSyntax, uint64T)}, |
|
|
|
{input: `"0x1zz01"`, wantErr: ErrSyntax}, |
|
|
|
{input: `"0x1zz01"`, wantErr: wrapTypeError(ErrSyntax, uint64T)}, |
|
|
|
|
|
|
|
|
|
|
|
// valid encoding
|
|
|
|
// valid encoding
|
|
|
|
{input: `""`, want: uint64(0)}, |
|
|
|
{input: `""`, want: uint64(0)}, |
|
|
@ -298,15 +298,15 @@ var ( |
|
|
|
var unmarshalUintTests = []unmarshalTest{ |
|
|
|
var unmarshalUintTests = []unmarshalTest{ |
|
|
|
// invalid encoding
|
|
|
|
// invalid encoding
|
|
|
|
{input: "", wantErr: errJSONEOF}, |
|
|
|
{input: "", wantErr: errJSONEOF}, |
|
|
|
{input: "null", wantErr: errNonString}, |
|
|
|
{input: "null", wantErr: errNonString(uintT)}, |
|
|
|
{input: "10", wantErr: errNonString}, |
|
|
|
{input: "10", wantErr: errNonString(uintT)}, |
|
|
|
{input: `"0"`, wantErr: ErrMissingPrefix}, |
|
|
|
{input: `"0"`, wantErr: wrapTypeError(ErrMissingPrefix, uintT)}, |
|
|
|
{input: `"0x"`, wantErr: ErrEmptyNumber}, |
|
|
|
{input: `"0x"`, wantErr: wrapTypeError(ErrEmptyNumber, uintT)}, |
|
|
|
{input: `"0x01"`, wantErr: ErrLeadingZero}, |
|
|
|
{input: `"0x01"`, wantErr: wrapTypeError(ErrLeadingZero, uintT)}, |
|
|
|
{input: `"0x100000000"`, want: uint(maxUint33bits), wantErr32bit: ErrUintRange}, |
|
|
|
{input: `"0x100000000"`, want: uint(maxUint33bits), wantErr32bit: wrapTypeError(ErrUintRange, uintT)}, |
|
|
|
{input: `"0xfffffffffffffffff"`, wantErr: ErrUintRange}, |
|
|
|
{input: `"0xfffffffffffffffff"`, wantErr: wrapTypeError(ErrUintRange, uintT)}, |
|
|
|
{input: `"0xx"`, wantErr: ErrSyntax}, |
|
|
|
{input: `"0xx"`, wantErr: wrapTypeError(ErrSyntax, uintT)}, |
|
|
|
{input: `"0x1zz01"`, wantErr: ErrSyntax}, |
|
|
|
{input: `"0x1zz01"`, wantErr: wrapTypeError(ErrSyntax, uintT)}, |
|
|
|
|
|
|
|
|
|
|
|
// valid encoding
|
|
|
|
// valid encoding
|
|
|
|
{input: `""`, want: uint(0)}, |
|
|
|
{input: `""`, want: uint(0)}, |
|
|
@ -317,7 +317,7 @@ var unmarshalUintTests = []unmarshalTest{ |
|
|
|
{input: `"0x1122aaff"`, want: uint(0x1122aaff)}, |
|
|
|
{input: `"0x1122aaff"`, want: uint(0x1122aaff)}, |
|
|
|
{input: `"0xbbb"`, want: uint(0xbbb)}, |
|
|
|
{input: `"0xbbb"`, want: uint(0xbbb)}, |
|
|
|
{input: `"0xffffffff"`, want: uint(0xffffffff)}, |
|
|
|
{input: `"0xffffffff"`, want: uint(0xffffffff)}, |
|
|
|
{input: `"0xffffffffffffffff"`, want: uint(maxUint64bits), wantErr32bit: ErrUintRange}, |
|
|
|
{input: `"0xffffffffffffffff"`, want: uint(maxUint64bits), wantErr32bit: wrapTypeError(ErrUintRange, uintT)}, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func TestUnmarshalUint(t *testing.T) { |
|
|
|
func TestUnmarshalUint(t *testing.T) { |
|
|
|