status-im/status-go

View on GitHub
abi-spec/utils_test.go

Summary

Maintainability
A
0 mins
Test Coverage
package abispec

import (
    "encoding/json"
    "testing"

    "github.com/stretchr/testify/require"
)

func TestHexToNumber(t *testing.T) {
    //hex number is less than 53 bits, it returns a number
    num := HexToNumber("9")
    bytes, err := json.Marshal(num)
    require.NoError(t, err)
    require.JSONEq(t, `"9"`, string(bytes))

    num = HexToNumber("99999999")
    bytes, err = json.Marshal(num)
    require.NoError(t, err)
    require.JSONEq(t, `"2576980377"`, string(bytes))

    num = HexToNumber("1fffffffffffff")
    bytes, err = json.Marshal(num)
    require.NoError(t, err)
    require.JSONEq(t, `"9007199254740991"`, string(bytes))

    num = HexToNumber("9999999999999999")
    bytes, err = json.Marshal(num)
    require.NoError(t, err)
    require.JSONEq(t, `"11068046444225730969"`, string(bytes))
}

func TestNumberToHex(t *testing.T) {
    require.Equal(t, "20000000000002", NumberToHex("9007199254740994"))
}

func TestSha3(t *testing.T) {
    require.Equal(t, "48bed44d1bcd124a28c27f343a817e5f5243190d3c52bf347daf876de1dbbf77", Sha3("abcd"))
}

func TestHexToUtf8(t *testing.T) {
    str, err := HexToUtf8("0x49206861766520313030e282ac")
    require.NoError(t, err)
    require.Equal(t, "I have 100€", str)

    str, err = HexToUtf8("0xe4bda0e5a5bd")
    require.NoError(t, err)
    require.Equal(t, "你好", str)

    _, err = HexToUtf8("0xfffefd")
    require.ErrorContains(t, err, "invalid UTF-8 detected")
}

func TestUtf8ToHex(t *testing.T) {
    str, err := Utf8ToHex("\xff")
    require.NoError(t, err)
    require.Equal(t, "0xc3bf", str)

    str, err = Utf8ToHex("你好")
    require.NoError(t, err)
    require.Equal(t, "0xe4bda0e5a5bd", str)
}

const (
    address1 = "0x0eD343df16A5327aC13B689072804A2705a26F47"
    address2 = "0x0eD343df16A5327aC13B689072804A2705a26F47a"
    address3 = "0x0eD343df16A5327aC13B689072804A2705a26f47"
)

func TestIsAddress(t *testing.T) {
    valid, err := IsAddress(address1)
    require.NoError(t, err)
    require.True(t, valid)

    valid, err = IsAddress(address2)
    require.NoError(t, err)
    require.False(t, valid)

    valid, err = IsAddress(address3)
    require.NoError(t, err)
    require.False(t, valid)
}

func TestCheckAddressChecksum(t *testing.T) {
    valid, err := CheckAddressChecksum(address1)
    require.NoError(t, err)
    require.True(t, valid)

    valid, err = CheckAddressChecksum(address2)
    require.NoError(t, err)
    require.False(t, valid)

    valid, err = CheckAddressChecksum(address3)
    require.NoError(t, err)
    require.False(t, valid)
}

func TestToChecksumAddress(t *testing.T) {
    checksumAddress, err := ToChecksumAddress(address3)
    require.NoError(t, err)
    require.Equal(t, address1, checksumAddress)

    address := "0x0ed343df16A5327aC13B689072804A2705A26f47"
    checksumAddress, err = ToChecksumAddress(address)
    require.NoError(t, err)
    require.Equal(t, address1, checksumAddress)
}