common: make Value encodable with package rlp
Value.{Encode,Decode} are gone. It implements rlp.Encoder and rlp.Decoder instead, so Value can be decoded into directly.
This commit is contained in:
@ -5,6 +5,8 @@ import (
|
||||
"math/big"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/ethereum/go-ethereum/rlp"
|
||||
)
|
||||
|
||||
func TestNonInterfaceSlice(t *testing.T) {
|
||||
@ -19,13 +21,16 @@ func TestNonInterfaceSlice(t *testing.T) {
|
||||
|
||||
func TestRlpValueEncoding(t *testing.T) {
|
||||
val := EmptyValue()
|
||||
val.AppendList().Append(1).Append(2).Append(3)
|
||||
val.Append("4").AppendList().Append(5)
|
||||
val.AppendList().Append(byte(1)).Append(byte(2)).Append(byte(3))
|
||||
val.Append("4").AppendList().Append(byte(5))
|
||||
|
||||
res := val.Encode()
|
||||
res, err := rlp.EncodeToBytes(val)
|
||||
if err != nil {
|
||||
t.Fatalf("encode error: %v", err)
|
||||
}
|
||||
exp := Encode([]interface{}{[]interface{}{1, 2, 3}, "4", []interface{}{5}})
|
||||
if bytes.Compare(res, exp) != 0 {
|
||||
t.Errorf("expected %q, got %q", res, exp)
|
||||
t.Errorf("expected %x, got %x", exp, res)
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,9 +62,7 @@ func TestValueSlice(t *testing.T) {
|
||||
func TestLargeData(t *testing.T) {
|
||||
data := make([]byte, 100000)
|
||||
enc := Encode(data)
|
||||
value := NewValue(enc)
|
||||
value.Decode()
|
||||
|
||||
value := NewValueFromBytes(enc)
|
||||
if value.Len() != len(data) {
|
||||
t.Error("Expected data to be", len(data), "got", value.Len())
|
||||
}
|
||||
@ -133,15 +136,16 @@ func TestEncodeDecodeBigInt(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestEncodeDecodeBytes(t *testing.T) {
|
||||
b := NewValue([]interface{}{[]byte{1, 2, 3, 4, 5}, byte(6)})
|
||||
val := NewValueFromBytes(b.Encode())
|
||||
if !b.Cmp(val) {
|
||||
t.Errorf("Expected %v, got %v", val, b)
|
||||
bv := NewValue([]interface{}{[]byte{1, 2, 3, 4, 5}, []byte{6}})
|
||||
b, _ := rlp.EncodeToBytes(bv)
|
||||
val := NewValueFromBytes(b)
|
||||
if !bv.Cmp(val) {
|
||||
t.Errorf("Expected %#v, got %#v", bv, val)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEncodeZero(t *testing.T) {
|
||||
b := NewValue(0).Encode()
|
||||
b, _ := rlp.EncodeToBytes(NewValue(0))
|
||||
exp := []byte{0xc0}
|
||||
if bytes.Compare(b, exp) == 0 {
|
||||
t.Error("Expected", exp, "got", b)
|
||||
|
Reference in New Issue
Block a user