block&index args unmarshal plus test
This commit is contained in:
parent
5a9f712144
commit
c2181fdbf2
56
rpc/args.go
56
rpc/args.go
@ -227,11 +227,67 @@ type BlockNumIndexArgs struct {
|
|||||||
Index int64
|
Index int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (args *BlockNumIndexArgs) UnmarshalJSON(b []byte) (err error) {
|
||||||
|
var obj []interface{}
|
||||||
|
r := bytes.NewReader(b)
|
||||||
|
if err := json.NewDecoder(r).Decode(&obj); err != nil {
|
||||||
|
return errDecodeArgs
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(obj) < 1 {
|
||||||
|
return errArguments
|
||||||
|
}
|
||||||
|
|
||||||
|
arg0, ok := obj[0].(string)
|
||||||
|
if !ok {
|
||||||
|
return errDecodeArgs
|
||||||
|
}
|
||||||
|
args.BlockNumber = ethutil.Big(arg0).Int64()
|
||||||
|
|
||||||
|
if len(obj) > 1 {
|
||||||
|
arg1, ok := obj[1].(string)
|
||||||
|
if !ok {
|
||||||
|
return errDecodeArgs
|
||||||
|
}
|
||||||
|
args.Index = ethutil.Big(arg1).Int64()
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type HashIndexArgs struct {
|
type HashIndexArgs struct {
|
||||||
BlockHash string
|
BlockHash string
|
||||||
Index int64
|
Index int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (args *HashIndexArgs) UnmarshalJSON(b []byte) (err error) {
|
||||||
|
var obj []interface{}
|
||||||
|
r := bytes.NewReader(b)
|
||||||
|
if err := json.NewDecoder(r).Decode(&obj); err != nil {
|
||||||
|
return errDecodeArgs
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(obj) < 1 {
|
||||||
|
return errArguments
|
||||||
|
}
|
||||||
|
|
||||||
|
arg0, ok := obj[0].(string)
|
||||||
|
if !ok {
|
||||||
|
return errDecodeArgs
|
||||||
|
}
|
||||||
|
args.BlockHash = arg0
|
||||||
|
|
||||||
|
if len(obj) > 1 {
|
||||||
|
arg1, ok := obj[1].(string)
|
||||||
|
if !ok {
|
||||||
|
return errDecodeArgs
|
||||||
|
}
|
||||||
|
args.Index = ethutil.Big(arg1).Int64()
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type Sha3Args struct {
|
type Sha3Args struct {
|
||||||
Data string
|
Data string
|
||||||
}
|
}
|
||||||
|
@ -432,3 +432,43 @@ func TestWhisperIdentityArgs(t *testing.T) {
|
|||||||
t.Errorf("Identity shoud be %#v but is %#v", expected.Identity, args.Identity)
|
t.Errorf("Identity shoud be %#v but is %#v", expected.Identity, args.Identity)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBlockNumIndexArgs(t *testing.T) {
|
||||||
|
input := `["0x29a", "0x0"]`
|
||||||
|
expected := new(BlockNumIndexArgs)
|
||||||
|
expected.BlockNumber = 666
|
||||||
|
expected.Index = 0
|
||||||
|
|
||||||
|
args := new(BlockNumIndexArgs)
|
||||||
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if expected.BlockNumber != args.BlockNumber {
|
||||||
|
t.Errorf("BlockNumber shoud be %#v but is %#v", expected.BlockNumber, args.BlockNumber)
|
||||||
|
}
|
||||||
|
|
||||||
|
if expected.Index != args.Index {
|
||||||
|
t.Errorf("Index shoud be %#v but is %#v", expected.Index, args.Index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestHashIndexArgs(t *testing.T) {
|
||||||
|
input := `["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x1"]`
|
||||||
|
expected := new(HashIndexArgs)
|
||||||
|
expected.BlockHash = "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b"
|
||||||
|
expected.Index = 1
|
||||||
|
|
||||||
|
args := new(HashIndexArgs)
|
||||||
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if expected.BlockHash != args.BlockHash {
|
||||||
|
t.Errorf("BlockHash shoud be %#v but is %#v", expected.BlockHash, args.BlockHash)
|
||||||
|
}
|
||||||
|
|
||||||
|
if expected.Index != args.Index {
|
||||||
|
t.Errorf("Index shoud be %#v but is %#v", expected.Index, args.Index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user