diff options
Diffstat (limited to 'data/abi/abi_json_test.go')
-rw-r--r-- | data/abi/abi_json_test.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/data/abi/abi_json_test.go b/data/abi/abi_json_test.go index b5290c9d5..49083fdea 100644 --- a/data/abi/abi_json_test.go +++ b/data/abi/abi_json_test.go @@ -17,12 +17,39 @@ package abi import ( + "crypto/rand" + "math/big" "testing" + "github.com/algorand/go-algorand/data/basics" "github.com/algorand/go-algorand/test/partitiontest" "github.com/stretchr/testify/require" ) +func TestRandomAddressEquality(t *testing.T) { + partitiontest.PartitionTest(t) + + upperLimit := new(big.Int).Lsh(big.NewInt(1), addressByteSize<<3) + var addrBasics basics.Address + var addrABI []byte = make([]byte, addressByteSize) + + for testCaseIndex := 0; testCaseIndex < addressTestCaseCount; testCaseIndex++ { + randomAddrInt, err := rand.Int(rand.Reader, upperLimit) + require.NoError(t, err, "cryptographic random int init fail") + + randomAddrInt.FillBytes(addrBasics[:]) + randomAddrInt.FillBytes(addrABI) + + checkSumBasics := addrBasics.GetChecksum() + checkSumABI, err := addressCheckSum(addrABI) + require.NoError(t, err, "ABI compute checksum for address slice failed") + + require.Equal(t, checkSumBasics, checkSumABI, + "basics.Address computed checksum %v not equal to data.abi computed checksum %v", + ) + } +} + func TestJSONtoInterfaceValid(t *testing.T) { partitiontest.PartitionTest(t) var testCases = []struct { |