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 }