diff options
author | Felix Lange <fjl@twurst.com> | 2017-03-08 06:19:27 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2017-03-23 22:58:42 +0800 |
commit | b4547a560b861e2e5463bf6fed6d61958c4e9411 (patch) | |
tree | 9b7e2171f4e8b9671ee3b67c5c591b440a2c0a94 /common/hexutil/json_test.go | |
parent | 04fa6a374499dcefeb3f854c4cf6cfcdfb6c8c76 (diff) | |
download | dexon-b4547a560b861e2e5463bf6fed6d61958c4e9411.tar dexon-b4547a560b861e2e5463bf6fed6d61958c4e9411.tar.gz dexon-b4547a560b861e2e5463bf6fed6d61958c4e9411.tar.bz2 dexon-b4547a560b861e2e5463bf6fed6d61958c4e9411.tar.lz dexon-b4547a560b861e2e5463bf6fed6d61958c4e9411.tar.xz dexon-b4547a560b861e2e5463bf6fed6d61958c4e9411.tar.zst dexon-b4547a560b861e2e5463bf6fed6d61958c4e9411.zip |
common/hexutil: add UnmarshalFixedUnprefixedText
Diffstat (limited to 'common/hexutil/json_test.go')
-rw-r--r-- | common/hexutil/json_test.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/common/hexutil/json_test.go b/common/hexutil/json_test.go index af7f44915..e4e827491 100644 --- a/common/hexutil/json_test.go +++ b/common/hexutil/json_test.go @@ -337,3 +337,38 @@ func TestUnmarshalUint(t *testing.T) { } } } + +func TestUnmarshalFixedUnprefixedText(t *testing.T) { + tests := []struct { + input string + want []byte + wantErr error + }{ + {input: "0x2", wantErr: ErrOddLength}, + {input: "2", wantErr: ErrOddLength}, + {input: "4444", wantErr: errors.New("hex string has length 4, want 8 for x")}, + {input: "4444", wantErr: errors.New("hex string has length 4, want 8 for x")}, + // check that output is not modified for partially correct input + {input: "444444gg", wantErr: ErrSyntax, want: []byte{0, 0, 0, 0}}, + {input: "0x444444gg", wantErr: ErrSyntax, want: []byte{0, 0, 0, 0}}, + // valid inputs + {input: "44444444", want: []byte{0x44, 0x44, 0x44, 0x44}}, + {input: "0x44444444", want: []byte{0x44, 0x44, 0x44, 0x44}}, + } + + for _, test := range tests { + out := make([]byte, 4) + err := UnmarshalFixedUnprefixedText("x", []byte(test.input), out) + switch { + case err == nil && test.wantErr != nil: + t.Errorf("%q: got no error, expected %q", test.input, test.wantErr) + case err != nil && test.wantErr == nil: + t.Errorf("%q: unexpected error %q", test.input, err) + case err != nil && err.Error() != test.wantErr.Error(): + t.Errorf("%q: error mismatch: got %q, want %q", test.input, err, test.wantErr) + } + if test.want != nil && !bytes.Equal(out, test.want) { + t.Errorf("%q: output mismatch: got %x, want %x", test.input, out, test.want) + } + } +} |