github.com/TrueBlocks/trueblocks-core/src/apps/chifra@v0.0.0-20241022031540-b362680128f7/pkg/base/address_test.go (about)

     1  package base
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"reflect"
     7  	"testing"
     8  
     9  	"github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/cache"
    10  	"github.com/ethereum/go-ethereum/common"
    11  	"github.com/ethereum/go-ethereum/common/hexutil"
    12  )
    13  
    14  func TestAddress_Hex(t *testing.T) {
    15  	a := hexutil.MustDecode("0xAb")
    16  	b := []byte{0xAb}
    17  	c := bytes.Compare(a, b)
    18  	if c != 0 {
    19  		t.Error("incorrect result from MustDecode")
    20  	}
    21  
    22  	addr := HexToAddress("0x00000000000000000000000000000000deadbeef")
    23  
    24  	hex := "0xF1AA581F353005BA3765B81BF52D6B1C488C2101"
    25  	addr.SetHex(hex)
    26  
    27  	expectedHex := "0xf1aa581f353005ba3765b81bf52d6b1c488c2101"
    28  	if result := addr.Hex(); result != expectedHex {
    29  		t.Fatal("wrong Hex() return value:", result)
    30  	}
    31  
    32  	zero := "0x0000000000000000000000000000000000000000"
    33  	expectedHex = "0x0"
    34  	addr = HexToAddress(zero)
    35  	if result := addr.Hex(); result != expectedHex {
    36  		t.Fatal("wrong Hex() return value for 0x0:", result)
    37  	}
    38  
    39  	var zero2 Address
    40  	addrStr := fmt.Sprint(zero2)
    41  	if addrStr != expectedHex {
    42  		t.Fatal("wrong Hex() return value for 0x0:", addrStr)
    43  	}
    44  }
    45  
    46  func TestAddress_Stringer(t *testing.T) {
    47  	hex := "0xF1AA581F353005BA3765B81BF52D6B1C488C2101"
    48  	var addr Address
    49  	addr.SetHex(hex)
    50  
    51  	expected := "0xf1aa581f353005ba3765b81bf52d6b1c488c2101"
    52  	if result := fmt.Sprint(addr); result != expected {
    53  		t.Fatal("wrong Hex() return value:", result)
    54  	}
    55  }
    56  
    57  func TestAddress_IsZero(t *testing.T) {
    58  	var zeroValue Address
    59  	if result := zeroValue.IsZero(); result != true {
    60  		t.Fatal("wrong result for zero value")
    61  	}
    62  
    63  	if result := ZeroAddr.IsZero(); result != true {
    64  		t.Fatal("wrong result for zero address")
    65  	}
    66  }
    67  
    68  func TestHexToAddress(t *testing.T) {
    69  	hex := "0xF1AA581F353005BA3765B81BF52D6B1C488C2101"
    70  	addr := HexToAddress(hex)
    71  
    72  	expected := "0xf1aa581f353005ba3765b81bf52d6b1c488c2101"
    73  	if result := addr.Hex(); result != expected {
    74  		t.Fatal("HexToAddress: wrong Hex() return value:", result)
    75  	}
    76  }
    77  
    78  func TestAddressCache(t *testing.T) {
    79  	buf := new(bytes.Buffer)
    80  	item := cache.NewItem(buf)
    81  
    82  	addr := HexToAddress("0xf503017d7baf7fbc0fff7492b751025c6a78179b")
    83  	if err := item.Encode(addr); err != nil {
    84  		t.Fatal(err)
    85  	}
    86  	result := buf.Bytes()[cache.HeaderByteSize:]
    87  	if !reflect.DeepEqual(result, addr.Bytes()) {
    88  		t.Fatalf("values are not same: got %x, expected %x", result, addr.Bytes())
    89  	}
    90  	readerItem := cache.NewItem(buf)
    91  	var readAddr Address
    92  	if err := readerItem.Decode(&readAddr); err != nil {
    93  		return
    94  	}
    95  	if readAddr.Hex() != addr.Hex() {
    96  		t.Fatal("read wrong value:", readAddr)
    97  	}
    98  
    99  	// 0x0 case
   100  	zeroAddr := Address{}
   101  	buf.Reset()
   102  	if err := item.Encode(zeroAddr); err != nil {
   103  		t.Fatal(err)
   104  	}
   105  	resultAddr := BytesToAddress(buf.Bytes()[cache.HeaderByteSize:])
   106  	if !resultAddr.IsZero() {
   107  		t.Fatalf("expected zero address, but got %s", resultAddr)
   108  	}
   109  }
   110  
   111  func TestAddressCompareToCommon(t *testing.T) {
   112  	c := common.HexToAddress("0x00000123456789abcde")
   113  	b := HexToAddress("0x00000123456789abcde")
   114  	if c != b.Common() {
   115  		t.Fatal("base.Hash.toCommon() does not match")
   116  	}
   117  	if b != new(Address).SetCommon(&c) {
   118  		t.Fatal("fromCommon(c) does not match Hash")
   119  	}
   120  }