diff options
author | Taylor Gerring <taylor.gerring@gmail.com> | 2015-03-26 20:57:41 +0800 |
---|---|---|
committer | Taylor Gerring <taylor.gerring@gmail.com> | 2015-03-26 20:57:41 +0800 |
commit | cb103c089a7c9238326e6a9bb336e375281ca622 (patch) | |
tree | 37c0e9e8ad443d20b093b4ae65bee87710f01eed | |
parent | cd6b3fd28a0624ac27cecf9f3e331a027b9c7e67 (diff) | |
download | dexon-cb103c089a7c9238326e6a9bb336e375281ca622.tar dexon-cb103c089a7c9238326e6a9bb336e375281ca622.tar.gz dexon-cb103c089a7c9238326e6a9bb336e375281ca622.tar.bz2 dexon-cb103c089a7c9238326e6a9bb336e375281ca622.tar.lz dexon-cb103c089a7c9238326e6a9bb336e375281ca622.tar.xz dexon-cb103c089a7c9238326e6a9bb336e375281ca622.tar.zst dexon-cb103c089a7c9238326e6a9bb336e375281ca622.zip |
BlockNumIndexArgs
-rw-r--r-- | rpc/args.go | 6 | ||||
-rw-r--r-- | rpc/args_test.go | 60 |
2 files changed, 62 insertions, 4 deletions
diff --git a/rpc/args.go b/rpc/args.go index 2b62811e3..34ed84fc2 100644 --- a/rpc/args.go +++ b/rpc/args.go @@ -326,11 +326,9 @@ func (args *BlockNumIndexArgs) UnmarshalJSON(b []byte) (err error) { return NewInsufficientParamsError(len(obj), 1) } - arg0, ok := obj[0].(string) - if !ok { - return NewInvalidTypeError("blockNumber", "not a string") + if err := blockHeight(obj[0], &args.BlockNumber); err != nil { + return err } - args.BlockNumber = common.Big(arg0).Int64() if len(obj) > 1 { arg1, ok := obj[1].(string) diff --git a/rpc/args_test.go b/rpc/args_test.go index b8df08413..82bdcd257 100644 --- a/rpc/args_test.go +++ b/rpc/args_test.go @@ -1076,6 +1076,66 @@ func TestBlockNumIndexArgs(t *testing.T) { } } +func TestBlockNumIndexArgsEmpty(t *testing.T) { + input := `[]` + + args := new(BlockNumIndexArgs) + err := json.Unmarshal([]byte(input), &args) + switch err.(type) { + case nil: + t.Error("Expected error but didn't get one") + case *InsufficientParamsError: + break + default: + t.Errorf("Expected *rpc.InsufficientParamsError but got %T with message `%s`", err, err.Error()) + } +} + +func TestBlockNumIndexArgsInvalid(t *testing.T) { + input := `"foo"` + + args := new(BlockNumIndexArgs) + err := json.Unmarshal([]byte(input), &args) + switch err.(type) { + case nil: + t.Error("Expected error but didn't get one") + case *DecodeParamError: + break + default: + t.Errorf("Expected *rpc.DecodeParamError but got %T with message `%s`", err, err.Error()) + } +} + +func TestBlockNumIndexArgsBlocknumInvalid(t *testing.T) { + input := `[{}, "0x1"]` + + args := new(BlockNumIndexArgs) + err := json.Unmarshal([]byte(input), &args) + switch err.(type) { + case nil: + t.Error("Expected error but didn't get one") + case *InvalidTypeError: + break + default: + t.Errorf("Expected *rpc.InvalidTypeError but got %T with message `%s`", err, err.Error()) + } +} + +func TestBlockNumIndexArgsIndexInvalid(t *testing.T) { + input := `["0x29a", 1]` + + args := new(BlockNumIndexArgs) + err := json.Unmarshal([]byte(input), &args) + switch err.(type) { + case nil: + t.Error("Expected error but didn't get one") + case *InvalidTypeError: + break + default: + t.Errorf("Expected *rpc.InvalidTypeError but got %T with message `%s`", err, err.Error()) + } +} + func TestHashIndexArgs(t *testing.T) { input := `["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x1"]` expected := new(HashIndexArgs) |