diff --git a/router/_helper_test.gno b/router/_helper_test.gno index 1d02b43f4..94523a131 100644 --- a/router/_helper_test.gno +++ b/router/_helper_test.gno @@ -372,6 +372,7 @@ func CreatePoolWithoutFee(t *testing.T) { CreatePool(t, barPath, fooPath, fee500, common.TickMathGetSqrtRatioAtTick(0).ToString(), users.Resolve(admin)) CreatePool(t, bazPath, fooPath, fee3000, common.TickMathGetSqrtRatioAtTick(0).ToString(), users.Resolve(admin)) CreatePool(t, barPath, bazPath, fee3000, common.TickMathGetSqrtRatioAtTick(0).ToString(), users.Resolve(admin)) + CreatePool(t, barPath, bazPath, fee500, common.TickMathGetSqrtRatioAtTick(0).ToString(), users.Resolve(admin)) } func CreateSecondPoolWithoutFee(t *testing.T) { @@ -460,3 +461,29 @@ func MakeThirdMintPositionWithoutFee(t *testing.T) (uint64, string, string, stri users.Resolve(admin), ) } + +func MakeForthMintPositionWithoutFee(t *testing.T) (uint64, string, string, string) { + t.Helper() + + // make actual data to test resetting not only position's state but also pool's state + std.TestSetRealm(adminRealm) + + TokenApprove(t, barPath, admin, pool, consts.UINT64_MAX) + TokenApprove(t, bazPath, admin, pool, consts.UINT64_MAX) + + // mint position + return pn.Mint( + barPath, + bazPath, + fee500, + -887220, + 887220, + "50000", + "50000", + "0", + "0", + max_timeout, + users.Resolve(admin), + users.Resolve(admin), + ) +} diff --git a/router/tests/__TEST_router_all_2_route_2_hop_with_emission_test.gnoA b/router/tests/__TEST_router_all_2_route_2_hop_with_emission_test.gnoA index 1822e4e30..43234badd 100644 --- a/router/tests/__TEST_router_all_2_route_2_hop_with_emission_test.gnoA +++ b/router/tests/__TEST_router_all_2_route_2_hop_with_emission_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -83,6 +84,7 @@ func testDrySwapRouteBarQuxExactIn(t *testing.T) { "EXACT_IN", // swapType "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500,gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500", // strRouteArr "50,50", // quoteArr + "1", ) uassert.Equal(t, dryResult, "7346") @@ -97,12 +99,13 @@ func testSwapRouteBarQuxExactIn(t *testing.T) { qux.Approve(a2u(consts.ROUTER_ADDR), 10000) amountIn, amountOut := ExactInSwapRoute( - barPath, // inputToken - quxPath, // outputToken - "1000", // amountSpecified + barPath, // inputToken + quxPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500,gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500", // strRouteArr "50,50", // quoteArr "1", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) std.TestSkipHeights(1) @@ -127,6 +130,7 @@ func testDrySwapRouteBarQuxExactOut(t *testing.T) { "EXACT_OUT", // swapType "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500,gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500", // strRouteArr "50,50", // quoteArr + "100000", ) uassert.Equal(t, dryResult, "140") @@ -138,12 +142,13 @@ func testSwapRouteBarQuxExactOut(t *testing.T) { std.TestSetRealm(adminRealm) amountIn, amountOut := ExactOutSwapRoute( - barPath, // inputToken - quxPath, // outputToken - "1000", // amountSpecified + barPath, // inputToken + quxPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500,gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500", // strRouteArr "50,50", // quoteArr "99999", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) std.TestSkipHeights(1) @@ -168,6 +173,7 @@ func testDrySwapRouteQuxBarExactIn(t *testing.T) { "EXACT_IN", // swapType "gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500,gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "30,70", // quoteArr + "1", ) uassert.Equal(t, dryResult, "135") @@ -179,12 +185,13 @@ func testSwapRouteQuxBarExactIn(t *testing.T) { std.TestSetRealm(adminRealm) amountIn, amountOut := ExactInSwapRoute( - quxPath, // inputToken - barPath, // outputToken - "1000", // amountSpecified + quxPath, // inputToken + barPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500,gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "30,70", // quoteArr "1", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) std.TestSkipHeights(1) @@ -209,6 +216,7 @@ func testDrySwapRouteQuxBarExactOut(t *testing.T) { "EXACT_OUT", // swapType "gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500,gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "30,70", // quoteArr + "100000", ) uassert.Equal(t, dryResult, "7351") @@ -223,12 +231,13 @@ func testSwapRouteQuxBarExactOut(t *testing.T) { bar.Approve(a2u(consts.ROUTER_ADDR), 10000) amountIn, amountOut := ExactOutSwapRoute( - quxPath, // inputToken - barPath, // outputToken - "1000", // amountSpecified + quxPath, // inputToken + barPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500,gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "30,70", // quoteArr "99999", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) std.TestSkipHeights(1) diff --git a/router/tests/__TEST_router_native_swap_amount_check_test.gnoA b/router/tests/__TEST_router_native_swap_amount_check_test.gnoA index ff16504e2..fcffe3c92 100644 --- a/router/tests/__TEST_router_native_swap_amount_check_test.gnoA +++ b/router/tests/__TEST_router_native_swap_amount_check_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/json" "gno.land/p/demo/uassert" @@ -59,6 +60,7 @@ func TestSwapRouteWugnotquxExactIn(t *testing.T) { "gno.land/r/demo/wugnot:gno.land/r/onbloc/qux:500", // strRouteArr "100", // quoteArr "1", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) }, ) diff --git a/router/tests/__TEST_router_spec_#1_ExactIn_test.gnoA b/router/tests/__TEST_router_spec_#1_ExactIn_test.gnoA index bea70ef98..0cf2d3cdd 100644 --- a/router/tests/__TEST_router_spec_#1_ExactIn_test.gnoA +++ b/router/tests/__TEST_router_spec_#1_ExactIn_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -71,12 +72,13 @@ func TestExactInputSinglePool(t *testing.T) { swapFee = uint64(0) amountIn, amountOut := ExactInSwapRoute( - barPath, // inputToken - bazPath, // outputToken - "3", // amountSpecified - poolPath, // strRouteArr - "100", // quoteArr - "1", // tokenAmountLimit + barPath, // inputToken + bazPath, // outputToken + "3", // amountSpecified + poolPath, // strRouteArr + "100", // quoteArr + "1", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) uassert.Equal(t, amountIn, "3") diff --git a/router/tests/__TEST_router_spec_#2_ExactIn_test.gnoA b/router/tests/__TEST_router_spec_#2_ExactIn_test.gnoA index 534ca2351..2e75c3350 100644 --- a/router/tests/__TEST_router_spec_#2_ExactIn_test.gnoA +++ b/router/tests/__TEST_router_spec_#2_ExactIn_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -48,12 +49,13 @@ func TestExactInputSinglePool1_to_0(t *testing.T) { user1Token1Before := foo.BalanceOf(a2u(consts.ADMIN)) amountIn, amountOut := ExactInSwapRoute( - barPath, // inputToken - fooPath, // outputToken - "3", // amountSpecified + barPath, // inputToken + fooPath, // outputToken + "3", // amountSpecified "gno.land/r/onbloc/foo:gno.land/r/onbloc/bar:3000", // strRouteArr "100", // quoteArr "1", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) uassert.Equal(t, amountIn, "3") diff --git a/router/tests/__TEST_router_spec_#3_ExactIn_test.gnoA b/router/tests/__TEST_router_spec_#3_ExactIn_test.gnoA index 776e9d6d3..95480303a 100644 --- a/router/tests/__TEST_router_spec_#3_ExactIn_test.gnoA +++ b/router/tests/__TEST_router_spec_#3_ExactIn_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -57,12 +58,13 @@ func TestSwapRouteFooBarExactIn(t *testing.T) { token2Before := foo.BalanceOf(a2u(consts.ADMIN)) amountIn, amountOut := ExactInSwapRoute( - fooPath, // inputToken - barPath, // outputToken - "5", // amountSpecified + fooPath, // inputToken + barPath, // outputToken + "5", // amountSpecified "gno.land/r/onbloc/foo:gno.land/r/onbloc/baz:3000*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:3000", // strRouteArr "100", // quoteArr "1", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) token0After := bar.BalanceOf(a2u(consts.ADMIN)) diff --git a/router/tests/__TEST_router_spec_#4_ExactIn_test.gnoA b/router/tests/__TEST_router_spec_#4_ExactIn_test.gnoA index 56ff32609..1a0e96395 100644 --- a/router/tests/__TEST_router_spec_#4_ExactIn_test.gnoA +++ b/router/tests/__TEST_router_spec_#4_ExactIn_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -57,12 +58,13 @@ func TestSwapRouteBarfooExactIn(t *testing.T) { token2Before := foo.BalanceOf(a2u(consts.ADMIN)) amountIn, amountOut := ExactInSwapRoute( - barPath, // inputToken - fooPath, // outputToken - "5", // amountSpecified + barPath, // inputToken + fooPath, // outputToken + "5", // amountSpecified "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:3000*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/foo:3000", // strRouteArr "100", // quoteArr "1", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) token0After := bar.BalanceOf(a2u(consts.ADMIN)) diff --git a/router/tests/__TEST_router_spec_#5_ExactOut_test.gnoA b/router/tests/__TEST_router_spec_#5_ExactOut_test.gnoA index f026300fd..dcc3cf361 100644 --- a/router/tests/__TEST_router_spec_#5_ExactOut_test.gnoA +++ b/router/tests/__TEST_router_spec_#5_ExactOut_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -48,12 +49,13 @@ func TestSwapRouteBarBazExactOut(t *testing.T) { token1Before := baz.BalanceOf(a2u(consts.ADMIN)) amountIn, amountOut := ExactOutSwapRoute( - barPath, // inputToken - bazPath, // outputToken - "1", // amountSpecified + barPath, // inputToken + bazPath, // outputToken + "1", // amountSpecified "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:3000", // strRouteArr "100", // quoteArr "3", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) token0After := bar.BalanceOf(a2u(consts.ADMIN)) @@ -89,7 +91,7 @@ func TestSwapRouteWugnotquxExactInDifferentAmountCoinShouldPanic(t *testing.T) { uassert.PanicsWithMessage( t, - `[GNOSWAP-ROUTER-005] invalid input || router.gno__SwapRoute() || ugnot sent by user(12345) is not equal to amountSpecified(3)`, + `[GNOSWAP-POOL-008] requested data not found || expected poolPath(gno.land/r/demo/wugnot:gno.land/r/onbloc/qux:3000) to exist`, func() { ExactOutSwapRoute( consts.GNOT, // inputToken @@ -98,6 +100,7 @@ func TestSwapRouteWugnotquxExactInDifferentAmountCoinShouldPanic(t *testing.T) { "gno.land/r/demo/wugnot:gno.land/r/onbloc/qux:3000", // strRouteArr "100", // quoteArr "1", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) }, ) diff --git a/router/tests/__TEST_router_spec_#6_ExactOut_test.gnoA b/router/tests/__TEST_router_spec_#6_ExactOut_test.gnoA index ee52f2f30..fa5e95c67 100644 --- a/router/tests/__TEST_router_spec_#6_ExactOut_test.gnoA +++ b/router/tests/__TEST_router_spec_#6_ExactOut_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -46,12 +47,13 @@ func TestSwapRouteBazBarExactOut(t *testing.T) { token1Before := baz.BalanceOf(a2u(consts.ADMIN)) amountIn, amountOut := ExactOutSwapRoute( - bazPath, // inputToken - barPath, // outputToken - "1", // amountSpecified + bazPath, // inputToken + barPath, // outputToken + "1", // amountSpecified "gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:3000", // strRouteArr "100", // quoteArr "3", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) token0After := bar.BalanceOf(a2u(consts.ADMIN)) diff --git a/router/tests/__TEST_router_spec_#7_ExactOut_test.gnoA b/router/tests/__TEST_router_spec_#7_ExactOut_test.gnoA index ad86bcf98..9d8b99922 100644 --- a/router/tests/__TEST_router_spec_#7_ExactOut_test.gnoA +++ b/router/tests/__TEST_router_spec_#7_ExactOut_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -55,12 +56,13 @@ func TestSwapRouteBarfooExactOut(t *testing.T) { token2Before := foo.BalanceOf(a2u(consts.ADMIN)) amountIn, amountOut := ExactOutSwapRoute( - barPath, // inputToken - fooPath, // outputToken - "1", // amountSpecified + barPath, // inputToken + fooPath, // outputToken + "1", // amountSpecified "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:3000*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/foo:3000", // strRouteArr "100", // quoteArr "5", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) token0After := bar.BalanceOf(a2u(consts.ADMIN)) diff --git a/router/tests/__TEST_router_spec_#8_ExactOut_test.gnoA b/router/tests/__TEST_router_spec_#8_ExactOut_test.gnoA index b9899fb12..0ef832525 100644 --- a/router/tests/__TEST_router_spec_#8_ExactOut_test.gnoA +++ b/router/tests/__TEST_router_spec_#8_ExactOut_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -56,12 +57,13 @@ func TestSwapRouteFooBarExactOut(t *testing.T) { token2Before := foo.BalanceOf(a2u(consts.ADMIN)) amountIn, amountOut := ExactOutSwapRoute( - fooPath, // inputToken - barPath, // outputToken - "1", // amountSpecified + fooPath, // inputToken + barPath, // outputToken + "1", // amountSpecified "gno.land/r/onbloc/foo:gno.land/r/onbloc/baz:3000*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:3000", // strRouteArr "100", // quoteArr "5", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) token0After := bar.BalanceOf(a2u(consts.ADMIN)) diff --git a/router/tests/__TEST_router_swap_route_1route_1hop_all_liquidity_exact_in_test.gnoA b/router/tests/__TEST_router_swap_route_1route_1hop_all_liquidity_exact_in_test.gnoA index b6ae1f608..a2f912c93 100644 --- a/router/tests/__TEST_router_swap_route_1route_1hop_all_liquidity_exact_in_test.gnoA +++ b/router/tests/__TEST_router_swap_route_1route_1hop_all_liquidity_exact_in_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -50,6 +51,9 @@ func TestPositionMint(t *testing.T) { func TestSwapRouteBarBazExactIn(t *testing.T) { poolPath := "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500" + CreatePoolWithoutFee(t) + MakeForthMintPositionWithoutFee(t) + std.TestSetRealm(adminRealm) bar.Approve(a2u(consts.POOL_ADDR), consts.UINT64_MAX) @@ -57,21 +61,22 @@ func TestSwapRouteBarBazExactIn(t *testing.T) { // spend all baz in pool amountIn, amountOut := ExactInSwapRoute( - barPath, // inputToken - bazPath, // outputToken - "140000", // amountSpecified - poolPath, // strRouteArr - "100", // quoteArr - "0", // tokenAmountLimit + barPath, // inputToken + bazPath, // outputToken + "140000", // amountSpecified + poolPath, // strRouteArr + "100", // quoteArr + "0", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) - uassert.Equal(t, amountIn, "135049") - uassert.Equal(t, amountOut, "-99848") + uassert.Equal(t, amountIn, "140000") + uassert.Equal(t, amountOut, "-105765") pool := pl.GetPool(barPath, bazPath, fee500) poolLiq := pool.Liquidity() - uassert.Equal(t, poolLiq.ToString(), "0") + uassert.Equal(t, poolLiq.ToString(), "435768") poolTick := pl.PoolGetSlot0Tick(poolPath) - uassert.Equal(t, poolTick, int32(-887270)) + uassert.Equal(t, poolTick, int32(-5569)) } diff --git a/router/tests/__TEST_router_swap_route_1route_1hop_all_liquidity_exact_out_test.gnoA b/router/tests/__TEST_router_swap_route_1route_1hop_all_liquidity_exact_out_test.gnoA index 1dc7598ed..a71a16871 100644 --- a/router/tests/__TEST_router_swap_route_1route_1hop_all_liquidity_exact_out_test.gnoA +++ b/router/tests/__TEST_router_swap_route_1route_1hop_all_liquidity_exact_out_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -50,6 +51,9 @@ func TestPositionMint(t *testing.T) { func TestSwapRouteBarBazExactOut(t *testing.T) { poolPath := "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500" + CreatePoolWithoutFee(t) + MakeForthMintPositionWithoutFee(t) + std.TestSetRealm(adminRealm) bar.Approve(a2u(consts.POOL_ADDR), consts.UINT64_MAX) @@ -57,15 +61,16 @@ func TestSwapRouteBarBazExactOut(t *testing.T) { uassert.PanicsWithMessage( t, - `[GNOSWAP-ROUTER-012] slippage || router.gno__finalizeSwap() || too few received for user (expected minimum: 120000, actual: 99997, swapType: EXACT_OUT)`, + `[GNOSWAP-ROUTER-002] slippage check failed || ExactOut: too much spent (max:0, used:168406)`, func() { amountIn, amountOut := ExactOutSwapRoute( - barPath, // inputToken - bazPath, // outputToken - "120000", // amountSpecified - poolPath, // strRouteArr - "100", // quoteArr - "0", // tokenAmountLimit + barPath, // inputToken + bazPath, // outputToken + "120000", // amountSpecified + poolPath, // strRouteArr + "100", // quoteArr + "0", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) }, ) diff --git a/router/tests/__TEST_router_swap_route_1route_1hop_native_in_out_test_exact_in_test.gnoA b/router/tests/__TEST_router_swap_route_1route_1hop_native_in_out_test_exact_in_test.gnoA index 3d200f149..ad399ef8d 100644 --- a/router/tests/__TEST_router_swap_route_1route_1hop_native_in_out_test_exact_in_test.gnoA +++ b/router/tests/__TEST_router_swap_route_1route_1hop_native_in_out_test_exact_in_test.gnoA @@ -1,4 +1,4 @@ -package router +package tests import ( "std" diff --git a/router/tests/__TEST_router_swap_route_1route_1hop_out_range_test.gnoA b/router/tests/__TEST_router_swap_route_1route_1hop_out_range_test.gnoA index 20e6b4082..fc6adc1a4 100644 --- a/router/tests/__TEST_router_swap_route_1route_1hop_out_range_test.gnoA +++ b/router/tests/__TEST_router_swap_route_1route_1hop_out_range_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/json" "gno.land/p/demo/uassert" @@ -66,6 +67,7 @@ func TestDrySwapRouteBazBarExactIn(t *testing.T) { "EXACT_IN", // swapType "gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "100", // quoteArr + "1", // tokenAmountLimit ) uassert.Equal(t, dryResult, "367") @@ -76,15 +78,16 @@ func TestSwapRouteBazBarExactIn(t *testing.T) { uassert.PanicsWithMessage( t, - `[GNOSWAP-ROUTER-012] slippage || router.gno__finalizeSwap() || too few received for user (expected minimum: 2710, actual: 367, swapType: EXACT_IN)`, + `[GNOSWAP-ROUTER-002] slippage check failed || ExactIn: too few received (min:2710, got:367)`, func() { ExactInSwapRoute( - bazPath, // inputToken - barPath, // outputToken - "1000", // amountSpecified + bazPath, // inputToken + barPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "100", // quoteArr "2710", // tokenAmountLimit ( too few recieved (expected 2710, got 300)) + time.Now().Add(time.Hour).Unix(), ) }, ) diff --git a/router/tests/__TEST_router_swap_route_1route_1hop_test.gnoA b/router/tests/__TEST_router_swap_route_1route_1hop_test.gnoA index 10958bbc2..c1a07948d 100644 --- a/router/tests/__TEST_router_swap_route_1route_1hop_test.gnoA +++ b/router/tests/__TEST_router_swap_route_1route_1hop_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -52,6 +53,7 @@ func TestDrySwapRouteBarBazExactIn(t *testing.T) { "EXACT_IN", // swapType "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500", // strRouteArr "100", // quoteArr + "1", ) uassert.Equal(t, dryResult, "2711") @@ -64,12 +66,13 @@ func TestSwapRouteBarBazExactIn(t *testing.T) { baz.Approve(a2u(consts.ROUTER_ADDR), consts.UINT64_MAX) // ITS FOR 0.15% fee amountIn, amountOut := ExactInSwapRoute( - barPath, // inputToken - bazPath, // outputToken - "1000", // amountSpecified + barPath, // inputToken + bazPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500", // strRouteArr "100", // quoteArr "2700", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) uassert.Equal(t, amountIn, "1000") @@ -83,12 +86,13 @@ func TestSwapRouteBarBazExactOut(t *testing.T) { baz.Approve(a2u(consts.ROUTER_ADDR), consts.UINT64_MAX) // ITS FOR 0.15% fee amountIn, amountOut := ExactOutSwapRoute( - barPath, // inputToken - bazPath, // outputToken - "1000", // amountSpecified + barPath, // inputToken + bazPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500", // strRouteArr "100", // quoteArr "371", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) uassert.Equal(t, amountIn, "371") @@ -102,12 +106,13 @@ func TestSwapRouteBazBarExactIn(t *testing.T) { bar.Approve(a2u(consts.ROUTER_ADDR), consts.UINT64_MAX) // ITS FOR 0.15% fee amountIn, amountOut := ExactInSwapRoute( - bazPath, // inputToken - barPath, // outputToken - "1000", // amountSpecified + bazPath, // inputToken + barPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "100", // quoteArr "360", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) uassert.Equal(t, amountIn, "1000") @@ -119,12 +124,13 @@ func TestSwapRouteBazBarExactOut(t *testing.T) { bar.Approve(a2u(consts.ROUTER_ADDR), consts.UINT64_MAX) amountIn, amountOut := ExactOutSwapRoute( - bazPath, // inputToken - barPath, // outputToken - "3000", // amountSpecified + bazPath, // inputToken + barPath, // outputToken + "3000", // amountSpecified "gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "100", // quoteArr "8200", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) uassert.Equal(t, amountIn, "8171") diff --git a/router/tests/__TEST_router_swap_route_1route_1hop_wrapped_native_in_out_test.gnoA b/router/tests/__TEST_router_swap_route_1route_1hop_wrapped_native_in_out_test.gnoA index e2545c74b..1c5af2de4 100644 --- a/router/tests/__TEST_router_swap_route_1route_1hop_wrapped_native_in_out_test.gnoA +++ b/router/tests/__TEST_router_swap_route_1route_1hop_wrapped_native_in_out_test.gnoA @@ -1,11 +1,10 @@ -package router +package tests import ( + "gno.land/p/demo/uassert" "std" "testing" - "gno.land/p/demo/uassert" - "gno.land/r/gnoswap/v1/common" "gno.land/r/gnoswap/v1/consts" @@ -56,6 +55,7 @@ func TestDrySwapRouteQuxGnotExactIn(t *testing.T) { "EXACT_IN", // swapType "gno.land/r/onbloc/qux:gno.land/r/demo/wugnot:500", // strRouteArr "100", // quoteArr + "1", ) uassert.Equal(t, dryResult, "2711") } @@ -70,6 +70,7 @@ func TestDrySwapRouteQuxGnotExactOut(t *testing.T) { "EXACT_OUT", // swapType "gno.land/r/onbloc/qux:gno.land/r/demo/wugnot:500", // strRouteArr "100", // quoteArr + "100000", ) uassert.Equal(t, dryResult, "370") } diff --git a/router/tests/__TEST_router_swap_route_1route_2hop_wrapped_native_in_out_test.gnoA b/router/tests/__TEST_router_swap_route_1route_2hop_wrapped_native_in_out_test.gnoA index a81ac6e68..ee5920cf5 100644 --- a/router/tests/__TEST_router_swap_route_1route_2hop_wrapped_native_in_out_test.gnoA +++ b/router/tests/__TEST_router_swap_route_1route_2hop_wrapped_native_in_out_test.gnoA @@ -1,4 +1,4 @@ -package router +package tests import ( "std" @@ -91,6 +91,7 @@ func TestDrySwapRouteBarGnotExactIn(t *testing.T) { "EXACT_IN", // swapType "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500*POOL*gno.land/r/onbloc/qux:gno.land/r/demo/wugnot:500", // strRouteArr "100", // quoteArr + "1", ) uassert.Equal(t, dryResult, "19740") } @@ -105,6 +106,7 @@ func TestDrySwapRouteBarGnotExactOut(t *testing.T) { "EXACT_OUT", // swapType "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500*POOL*gno.land/r/onbloc/qux:gno.land/r/demo/wugnot:500", // strRouteArr "100", // quoteArr + "2000000", ) uassert.Equal(t, dryResult, "1014") } @@ -119,6 +121,7 @@ func TestDrySwapRouteGnotBarExactIn(t *testing.T) { "EXACT_IN", // swapType "gno.land/r/demo/wugnot:gno.land/r/onbloc/qux:500*POOL*gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "100", // quoteArr + "1", ) uassert.Equal(t, dryResult, "247") } @@ -133,6 +136,7 @@ func TestDrySwapRouteGnotBarExactOut(t *testing.T) { "EXACT_OUT", // swapType "gno.land/r/demo/wugnot:gno.land/r/onbloc/qux:500*POOL*gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "100", // quoteArr + "100000", ) uassert.Equal(t, dryResult, "2027") } diff --git a/router/tests/__TEST_router_swap_route_1route_3hop_wrapped_native_middle_test.gnoA b/router/tests/__TEST_router_swap_route_1route_3hop_wrapped_native_middle_test.gnoA index c0bee3593..7b4f4dc0a 100644 --- a/router/tests/__TEST_router_swap_route_1route_3hop_wrapped_native_middle_test.gnoA +++ b/router/tests/__TEST_router_swap_route_1route_3hop_wrapped_native_middle_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -86,6 +87,7 @@ func TestDrySwapRouteGnsBarExactIn(t *testing.T) { "EXACT_IN", // swapType "gno.land/r/gnoswap/v1/gns:gno.land/r/demo/wugnot:100*POOL*gno.land/r/demo/wugnot:gno.land/r/onbloc/bar:100", // strRouteArr "100", // quoteArr + "1", ) uassert.Equal(t, dryResult, "7327") } @@ -103,6 +105,7 @@ func TestSwapRouteGnsBarExactIn(t *testing.T) { "gno.land/r/gnoswap/v1/gns:gno.land/r/demo/wugnot:100*POOL*gno.land/r/demo/wugnot:gno.land/r/onbloc/bar:100", // strRouteArr "100", // quoteArr "0", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) uassert.Equal(t, amountIn, "1000") diff --git a/router/tests/__TEST_router_swap_route_2route_2hop_test.gnoA b/router/tests/__TEST_router_swap_route_2route_2hop_test.gnoA index 84daa3f5e..40dfe2c62 100644 --- a/router/tests/__TEST_router_swap_route_2route_2hop_test.gnoA +++ b/router/tests/__TEST_router_swap_route_2route_2hop_test.gnoA @@ -1,8 +1,9 @@ -package router +package tests import ( "std" "testing" + "time" "gno.land/p/demo/uassert" @@ -54,6 +55,7 @@ func TestDrySwapRouteBarQuxExactIn(t *testing.T) { "EXACT_IN", // swapType "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500,gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500", // strRouteArr "50,50", // quoteArr + "1", ) uassert.Equal(t, dryResult, "7346") @@ -66,12 +68,13 @@ func TestSwapRouteBarQuxExactIn(t *testing.T) { qux.Approve(a2u(consts.ROUTER_ADDR), 10000) amountIn, amountOut := ExactInSwapRoute( - barPath, // inputToken - quxPath, // outputToken - "1000", // amountSpecified + barPath, // inputToken + quxPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500,gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500", // strRouteArr "50,50", // quoteArr "1", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) uassert.Equal(t, amountIn, "1000") @@ -82,12 +85,13 @@ func TestSwapRouteBarQuxExactOut(t *testing.T) { std.TestSetRealm(adminRealm) amountIn, amountOut := ExactOutSwapRoute( - barPath, // inputToken - quxPath, // outputToken - "1000", // amountSpecified + barPath, // inputToken + quxPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500,gno.land/r/onbloc/bar:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/qux:500", // strRouteArr "50,50", // quoteArr "99999", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) uassert.Equal(t, amountIn, "140") @@ -98,12 +102,13 @@ func TestSwapRouteQuxBarExactIn(t *testing.T) { std.TestSetRealm(adminRealm) amountIn, amountOut := ExactInSwapRoute( - quxPath, // inputToken - barPath, // outputToken - "1000", // amountSpecified + quxPath, // inputToken + barPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500,gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "30,70", // quoteArr "1", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) uassert.Equal(t, amountIn, "1000") @@ -117,12 +122,13 @@ func TestwapRouteQuxBarExactOut(t *testing.T) { bar.Approve(a2u(consts.ROUTER_ADDR), 10000) amountIn, amountOut := ExactOutSwapRoute( - quxPath, // inputToken - barPath, // outputToken - "1000", // amountSpecified + quxPath, // inputToken + barPath, // outputToken + "1000", // amountSpecified "gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500,gno.land/r/onbloc/qux:gno.land/r/onbloc/baz:500*POOL*gno.land/r/onbloc/baz:gno.land/r/onbloc/bar:500", // strRouteArr "30,70", // quoteArr "99999", // tokenAmountLimit + time.Now().Add(time.Hour).Unix(), ) uassert.Equal(t, amountIn, "7365")