github.com/netbound/dex-feed@v0.0.4/exchange/uniswap_v3/pool_test.go (about) 1 package uniswapv3 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/netbound/dex-feed/token" 9 10 "github.com/ethereum/go-ethereum/common" 11 "github.com/ethereum/go-ethereum/ethclient" 12 ) 13 14 var ( 15 ethUsdcPool = common.HexToAddress("0x8ad599c3A0ff1De082011EFDDc58f1908eb6e6D8") 16 17 token1 = token.NewToken("WETH", wethAddress, 18) 18 token0 = token.NewToken("USDC", usdcAddress, 6) 19 ) 20 21 var p, _ = newTestPool() 22 var client *ethclient.Client 23 24 func newTestPool() (*Pool, error) { 25 var err error 26 27 i := PoolOpts{ 28 Token0: token0, 29 Token1: token1, 30 Fee: fee, 31 } 32 33 rpcApi := "http://localhost:8080/eth" 34 35 ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) 36 defer cancel() 37 38 client, err = ethclient.DialContext(ctx, rpcApi) 39 if err != nil { 40 return nil, err 41 } 42 43 p, err := NewPool(client, "WETHUSDC", ethUsdcPool, i) 44 if err != nil { 45 return nil, err 46 } 47 48 return p, nil 49 } 50 51 func TestNewPool(t *testing.T) { 52 p, err := newTestPool() 53 if err != nil { 54 t.Fatalf("error creating pool: %s", err) 55 } 56 57 t.Log("new pool name:", p.Name) 58 } 59 60 func TestUpdateState(t *testing.T) { 61 ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) 62 defer cancel() 63 64 err := p.UpdateState(ctx, client) 65 if err != nil { 66 t.Fatalf("error updating state: %s", err) 67 } 68 69 emptyState := PoolState{} 70 71 if p.State == emptyState { 72 t.Fatal("empty state") 73 } 74 75 t.Log("pool state:", p.State) 76 } 77 78 func TestPriceOf(t *testing.T) { 79 price, err := p.PriceOf(token1.Address) 80 if err != nil { 81 t.Fatalf("error getting price: %s", err) 82 } 83 84 t.Log("price of", token1.Symbol, price) 85 } 86 87 func BenchmarkPriceOf(b *testing.B) { 88 _, err := p.PriceOf(token1.Address) 89 if err != nil { 90 b.Fatalf("error getting price: %s", err) 91 } 92 } 93 94 func TestEncodeDecodePool(t *testing.T) { 95 poolBytes, err := p.Encode() 96 if err != nil { 97 t.Fatal(err) 98 } 99 100 newPool, err := Decode(poolBytes) 101 if err != nil { 102 t.Fatal(err) 103 } 104 105 t.Logf("%#v", newPool) 106 }