going full courtside
This commit is contained in:
96
backend-go/internal/protocols/ethereum/jsonrpc_test.go
Normal file
96
backend-go/internal/protocols/ethereum/jsonrpc_test.go
Normal 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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user