73 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			73 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
|   | 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() | ||
|  | 	} | ||
|  | } |