package rpc import ( "bytes" "encoding/json" "math/big" "testing" ) func TestSha3(t *testing.T) { input := `["0x68656c6c6f20776f726c64"]` expected := "0x68656c6c6f20776f726c64" args := new(Sha3Args) json.Unmarshal([]byte(input), &args) if args.Data != expected { t.Error("got %s expected %s", input, expected) } } func TestGetBalanceArgs(t *testing.T) { input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "0x1f"]` expected := new(GetBalanceArgs) expected.Address = "0x407d73d8a49eeb85d32cf465507dd71d507100c1" expected.BlockNumber = 31 args := new(GetBalanceArgs) if err := json.Unmarshal([]byte(input), &args); err != nil { t.Error(err) } if args.Address != expected.Address { t.Errorf("Address should be %v but is %v", expected.Address, args.Address) } if args.BlockNumber != expected.BlockNumber { t.Errorf("BlockNumber should be %v but is %v", expected.BlockNumber, args.BlockNumber) } } func TestGetBlockByHashArgs(t *testing.T) { input := `["0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", true]` expected := new(GetBlockByHashArgs) expected.BlockHash = "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" expected.Transactions = true args := new(GetBlockByHashArgs) if err := json.Unmarshal([]byte(input), &args); err != nil { t.Error(err) } if args.BlockHash != expected.BlockHash { t.Errorf("BlockHash should be %v but is %v", expected.BlockHash, args.BlockHash) } if args.Transactions != expected.Transactions { t.Errorf("Transactions should be %v but is %v", expected.Transactions, args.Transactions) } } func TestGetBlockByNumberArgs(t *testing.T) { input := `["0x1b4", false]` expected := new(GetBlockByNumberArgs) expected.BlockNumber = 436 expected.Transactions = false args := new(GetBlockByNumberArgs) if err := json.Unmarshal([]byte(input), &args); err != nil { t.Error(err) } if args.BlockNumber != expected.BlockNumber { t.Errorf("BlockHash should be %v but is %v", expected.BlockNumber, args.BlockNumber) } if args.Transactions != expected.Transactions { t.Errorf("Transactions should be %v but is %v", expected.Transactions, args.Transactions) } } func TestNewTxArgs(t *testing.T) { input := `[{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155", "to": "0xd46e8dd67c5d32be8058bb8eb970870f072445675", "gas": "0x76c0", "gasPrice": "0x9184e72a000", "value": "0x9184e72a000", "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}]` expected := new(NewTxArgs) expected.From = "0xb60e8dd61c5d32be8058bb8eb970870f07233155" expected.To = "0xd46e8dd67c5d32be8058bb8eb970870f072445675" expected.Gas = big.NewInt(30400) expected.GasPrice = big.NewInt(10000000000000) expected.Value = big.NewInt(10000000000000) expected.Data = "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675" args := new(NewTxArgs) if err := json.Unmarshal([]byte(input), &args); err != nil { t.Error(err) } if expected.From != args.From { t.Errorf("From shoud be %#v but is %#v", expected.From, args.From) } if expected.To != args.To { t.Errorf("To shoud be %#v but is %#v", expected.To, args.To) } if bytes.Compare(expected.Gas.Bytes(), args.Gas.Bytes()) != 0 { t.Errorf("Gas shoud be %#v but is %#v", expected.Gas.Bytes(), args.Gas.Bytes()) } if bytes.Compare(expected.GasPrice.Bytes(), args.GasPrice.Bytes()) != 0 { t.Errorf("GasPrice shoud be %#v but is %#v", expected.GasPrice, args.GasPrice) } if bytes.Compare(expected.Value.Bytes(), args.Value.Bytes()) != 0 { t.Errorf("Value shoud be %#v but is %#v", expected.Value, args.Value) } if expected.Data != args.Data { t.Errorf("Data shoud be %#v but is %#v", expected.Data, args.Data) } }