aboutsummaryrefslogtreecommitdiffstats
path: root/accounts/abi/numbers_test.go
diff options
context:
space:
mode:
authorEthan Buchman <ethan@coinculture.info>2015-02-18 08:25:18 +0800
committerEthan Buchman <ethan@coinculture.info>2015-02-18 08:25:18 +0800
commit2ba65f4fbaea49c1e0d99959b0331e09b153f931 (patch)
treeadd8cabb05cd7fbf0ba4b4bbaf9460dacfc2082d /accounts/abi/numbers_test.go
parent2da367a2bee84d74d1bb0ea1b42d4c22fae486dd (diff)
parent60318c96d03bcaaf731802b1080a3d87cb482124 (diff)
downloaddexon-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar
dexon-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar.gz
dexon-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar.bz2
dexon-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar.lz
dexon-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar.xz
dexon-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar.zst
dexon-2ba65f4fbaea49c1e0d99959b0331e09b153f931.zip
Merge branch 'develop' of https://github.com/ethereum/go-ethereum into develop
Diffstat (limited to 'accounts/abi/numbers_test.go')
-rw-r--r--accounts/abi/numbers_test.go72
1 files changed, 72 insertions, 0 deletions
diff --git a/accounts/abi/numbers_test.go b/accounts/abi/numbers_test.go
new file mode 100644
index 000000000..319d7fb51
--- /dev/null
+++ b/accounts/abi/numbers_test.go
@@ -0,0 +1,72 @@
+package abi
+
+import (
+ "bytes"
+ "math/big"
+ "reflect"
+ "testing"
+)
+
+func TestNumberTypes(t *testing.T) {
+ ubytes := make([]byte, 32)
+ ubytes[31] = 1
+ sbytesmin := []byte{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
+
+ unsigned := U256(big.NewInt(1))
+ if !bytes.Equal(unsigned, ubytes) {
+ t.Error("expected %x got %x", ubytes, unsigned)
+ }
+
+ signed := S256(big.NewInt(1))
+ if !bytes.Equal(signed, ubytes) {
+ t.Error("expected %x got %x", ubytes, unsigned)
+ }
+
+ signed = S256(big.NewInt(-1))
+ if !bytes.Equal(signed, sbytesmin) {
+ t.Error("expected %x got %x", ubytes, unsigned)
+ }
+}
+
+func TestPackNumber(t *testing.T) {
+ ubytes := make([]byte, 32)
+ ubytes[31] = 1
+ sbytesmin := []byte{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
+ maxunsigned := []byte{255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}
+
+ packed := packNum(reflect.ValueOf(1), IntTy)
+ if !bytes.Equal(packed, ubytes) {
+ t.Errorf("expected %x got %x", ubytes, packed)
+ }
+ packed = packNum(reflect.ValueOf(-1), IntTy)
+ if !bytes.Equal(packed, sbytesmin) {
+ t.Errorf("expected %x got %x", ubytes, packed)
+ }
+ packed = packNum(reflect.ValueOf(1), UintTy)
+ if !bytes.Equal(packed, ubytes) {
+ t.Errorf("expected %x got %x", ubytes, packed)
+ }
+ packed = packNum(reflect.ValueOf(-1), UintTy)
+ if !bytes.Equal(packed, maxunsigned) {
+ t.Errorf("expected %x got %x", maxunsigned, packed)
+ }
+
+ packed = packNum(reflect.ValueOf("string"), UintTy)
+ if packed != nil {
+ t.Errorf("expected 'string' to pack to nil. got %x instead", packed)
+ }
+}
+
+func TestSigned(t *testing.T) {
+ if isSigned(reflect.ValueOf(uint(10))) {
+ t.Error()
+ }
+
+ if !isSigned(reflect.ValueOf(int(10))) {
+ t.Error()
+ }
+
+ if !isSigned(reflect.ValueOf(big.NewInt(10))) {
+ t.Error()
+ }
+}