aboutsummaryrefslogtreecommitdiffstats
path: root/common/hexutil/json_test.go
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2017-03-08 06:19:27 +0800
committerFelix Lange <fjl@twurst.com>2017-03-23 22:58:42 +0800
commitb4547a560b861e2e5463bf6fed6d61958c4e9411 (patch)
tree9b7e2171f4e8b9671ee3b67c5c591b440a2c0a94 /common/hexutil/json_test.go
parent04fa6a374499dcefeb3f854c4cf6cfcdfb6c8c76 (diff)
downloaddexon-b4547a560b861e2e5463bf6fed6d61958c4e9411.tar.gz
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.go35
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)
+ }
+ }
+}