going full courtside

This commit is contained in:
KS Jannette
2026-02-27 17:33:40 -05:00
parent 6d11b273f1
commit c99d31feff
24 changed files with 1569 additions and 220 deletions

View File

@@ -0,0 +1,96 @@
package ethereum
import (
"math/big"
"testing"
)
func TestHexToInt(t *testing.T) {
tests := []struct {
hex string
want int
}{
{"0x0", 0},
{"0x1", 1},
{"0xa", 10},
{"0xff", 255},
{"0x100", 256},
{"0x1234", 4660},
}
for _, tt := range tests {
got, err := hexToInt(tt.hex)
if err != nil {
t.Fatalf("hexToInt(%q) error: %v", tt.hex, err)
}
if got != tt.want {
t.Errorf("hexToInt(%q) = %d, want %d", tt.hex, got, tt.want)
}
}
}
func TestHexToInt_Invalid(t *testing.T) {
_, err := hexToInt("xyz")
if err == nil {
t.Fatal("expected error for invalid hex")
}
}
func TestHexToInt64(t *testing.T) {
got, err := hexToInt64("0x5f5e100")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if got != 100000000 {
t.Errorf("got %d, want 100000000", got)
}
}
func TestHexToDecimalString(t *testing.T) {
tests := []struct {
hex string
want string
}{
{"0x0", "0"},
{"0x", "0"},
{"", "0"},
{"0x1", "1"},
{"0xde0b6b3a7640000", "1000000000000000000"},
}
for _, tt := range tests {
got := hexToDecimalString(tt.hex)
if got != tt.want {
t.Errorf("hexToDecimalString(%q) = %q, want %q", tt.hex, got, tt.want)
}
}
}
func TestHexToDecimalString_LargeValues(t *testing.T) {
expected := new(big.Int).Mul(
big.NewInt(100),
new(big.Int).Exp(big.NewInt(10), big.NewInt(18), nil),
)
hex := "0x" + expected.Text(16)
got := hexToDecimalString(hex)
if got != expected.String() {
t.Errorf("got %q, want %q", got, expected.String())
}
}
func TestNewJsonRpcEthereum_EmptyURL(t *testing.T) {
_, err := NewJsonRpcEthereum("")
if err == nil {
t.Fatal("expected error for empty URL")
}
}
func TestNewJsonRpcEthereum_ValidURL(t *testing.T) {
eth, err := NewJsonRpcEthereum("https://example.com/rpc")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if eth == nil {
t.Fatal("expected non-nil client")
}
}