From 1e61b75cbf0830a72b40d0eed8f924cb7bb61aa3 Mon Sep 17 00:00:00 2001
From: Taylor Gerring <taylor.gerring@gmail.com>
Date: Mon, 23 Mar 2015 17:33:01 +0100
Subject: [PATCH] tests + fixes

---
 rpc/args.go      |  9 ++++-----
 rpc/args_test.go | 35 +++++++++++++++++++++++++++++++++--
 2 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/rpc/args.go b/rpc/args.go
index 6e02b65ef..5b655024c 100644
--- a/rpc/args.go
+++ b/rpc/args.go
@@ -467,7 +467,7 @@ func (args *BlockFilterArgs) UnmarshalJSON(b []byte) (err error) {
 
 	switch fromstr {
 	case "latest":
-		args.Earliest = 0
+		args.Earliest = -1
 	default:
 		args.Earliest = int64(common.Big(obj[0].FromBlock.(string)).Int64())
 	}
@@ -479,9 +479,9 @@ func (args *BlockFilterArgs) UnmarshalJSON(b []byte) (err error) {
 
 	switch tostr {
 	case "latest":
-		args.Latest = 0
-	case "pending":
 		args.Latest = -1
+	case "pending":
+		args.Latest = -2
 	default:
 		args.Latest = int64(common.Big(obj[0].ToBlock.(string)).Int64())
 	}
@@ -775,8 +775,7 @@ func (args *SubmitWorkArgs) UnmarshalJSON(b []byte) (err error) {
 		return NewDecodeParamError("Nonce is not a string")
 	}
 
-	args.Nonce = common.BytesToNumber(common.Hex2Bytes(objstr))
-
+	args.Nonce = common.String2Big(objstr).Uint64()
 	if objstr, ok = obj[1].(string); !ok {
 		return NewDecodeParamError("Header is not a string")
 	}
diff --git a/rpc/args_test.go b/rpc/args_test.go
index 2ad53fba2..5cbafd4b2 100644
--- a/rpc/args_test.go
+++ b/rpc/args_test.go
@@ -5,6 +5,8 @@ import (
 	"encoding/json"
 	"math/big"
 	"testing"
+
+	"github.com/ethereum/go-ethereum/common"
 )
 
 func TestSha3(t *testing.T) {
@@ -440,8 +442,8 @@ func TestBlockFilterArgsWords(t *testing.T) {
   "toBlock": "pending"
   }]`
 	expected := new(BlockFilterArgs)
-	expected.Earliest = 0
-	expected.Latest = -1
+	expected.Earliest = -1
+	expected.Latest = -2
 
 	args := new(BlockFilterArgs)
 	if err := json.Unmarshal([]byte(input), &args); err != nil {
@@ -651,6 +653,10 @@ func TestFilterStringArgs(t *testing.T) {
 		t.Error(err)
 	}
 
+	if err := args.requirements(); err != nil {
+		t.Error(err)
+	}
+
 	if expected.Word != args.Word {
 		t.Errorf("Word shoud be %#v but is %#v", expected.Word, args.Word)
 	}
@@ -720,3 +726,28 @@ func TestHashIndexArgs(t *testing.T) {
 		t.Errorf("Index shoud be %#v but is %#v", expected.Index, args.Index)
 	}
 }
+
+func TestSubmitWorkArgs(t *testing.T) {
+	input := `["0x0000000000000001", "0x1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000"]`
+	expected := new(SubmitWorkArgs)
+	expected.Nonce = 1
+	expected.Header = common.HexToHash("0x1234567890abcdef1234567890abcdef")
+	expected.Digest = common.HexToHash("0xD1GE5700000000000000000000000000")
+
+	args := new(SubmitWorkArgs)
+	if err := json.Unmarshal([]byte(input), &args); err != nil {
+		t.Error(err)
+	}
+
+	if expected.Nonce != args.Nonce {
+		t.Errorf("Nonce shoud be %d but is %d", expected.Nonce, args.Nonce)
+	}
+
+	if expected.Header != args.Header {
+		t.Errorf("Header shoud be %#v but is %#v", expected.Header, args.Header)
+	}
+
+	if expected.Digest != args.Digest {
+		t.Errorf("Digest shoud be %#v but is %#v", expected.Digest, args.Digest)
+	}
+}
-- 
GitLab