Skip to content

Commit 2b9dede

Browse files
committed
chore: detailed test cases
1 parent 595cc86 commit 2b9dede

File tree

2 files changed

+268
-3
lines changed

2 files changed

+268
-3
lines changed

Diff for: router/_TEST_router_swap_route_test.gno renamed to router/_TEST_router_swap_route_1route_1hop_test.gnoa

+68-3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ var (
2626
// Common
2727
barPath = "gno.land/r/bar"
2828
bazPath = "gno.land/r/baz"
29+
fooPath = "gno.land/r/foo"
30+
quxPath = "gno.land/r/qux"
2931

3032
MAX_TIMEOUT bigint = 9999999999
3133
)
@@ -69,6 +71,21 @@ func TestDrySwapRouteBarBazExactIn(t *testing.T) {
6971
shouldEQ(t, dryResult, bigint(2711))
7072
}
7173

74+
func TestSwapRouteBarBazExactIn(t *testing.T) {
75+
std.TestSetOrigCaller(lp01)
76+
77+
swapResult := SwapRoute(
78+
barPath, // inputToken
79+
bazPath, // outputToken
80+
bigint(1000), // amountSpecified
81+
"EXACT_IN", // swapType
82+
"gno.land/r/bar:gno.land/r/baz:500", // strRouteArr
83+
"100", // quoteArr
84+
2710, // tokenAmountLimit
85+
)
86+
shouldEQ(t, swapResult, bigint(2711))
87+
}
88+
7289
func TestDrySwapRouteBarBazExactOut(t *testing.T) {
7390
std.TestSetOrigCaller(lp01)
7491

@@ -81,7 +98,23 @@ func TestDrySwapRouteBarBazExactOut(t *testing.T) {
8198
"100", // quoteArr
8299
)
83100

84-
shouldEQ(t, dryResult, bigint(368))
101+
shouldEQ(t, dryResult, bigint(369))
102+
}
103+
104+
func TestSwapRouteBarBazExactOut(t *testing.T) {
105+
std.TestSetOrigCaller(lp01)
106+
107+
swapResult := SwapRoute(
108+
barPath, // inputToken
109+
bazPath, // outputToken
110+
bigint(1000), // amountSpecified
111+
"EXACT_OUT", // swapType
112+
"gno.land/r/bar:gno.land/r/baz:500", // strRouteArr
113+
"100", // quoteArr
114+
370, // tokenAmountLimit
115+
)
116+
117+
shouldEQ(t, swapResult, bigint(369))
85118
}
86119

87120
func TestDrySwapRouteBazBarExactIn(t *testing.T) {
@@ -96,7 +129,23 @@ func TestDrySwapRouteBazBarExactIn(t *testing.T) {
96129
"100", // quoteArr
97130
)
98131

99-
shouldEQ(t, dryResult, bigint(367))
132+
shouldEQ(t, dryResult, bigint(368))
133+
}
134+
135+
func TestSwapRouteBazBarExactIn(t *testing.T) {
136+
std.TestSetOrigCaller(lp01)
137+
138+
swapResult := SwapRoute(
139+
bazPath, // inputToken
140+
barPath, // outputToken
141+
bigint(1000), // amountSpecified
142+
"EXACT_IN", // swapType
143+
"gno.land/r/baz:gno.land/r/bar:500", // strRouteArr
144+
"100", // quoteArr
145+
360, // tokenAmountLimit
146+
)
147+
148+
shouldEQ(t, swapResult, bigint(368))
100149
}
101150

102151
func TestDrySwapRouteBazBarExactOut(t *testing.T) {
@@ -111,7 +160,23 @@ func TestDrySwapRouteBazBarExactOut(t *testing.T) {
111160
"100", // quoteArr
112161
)
113162

114-
shouldEQ(t, dryResult, bigint(1101))
163+
shouldEQ(t, dryResult, bigint(1104))
164+
}
165+
166+
func TestSwapRouteBazBarExactOut(t *testing.T) {
167+
std.TestSetOrigCaller(lp01)
168+
169+
swapResult := SwapRoute(
170+
bazPath, // inputToken
171+
barPath, // outputToken
172+
bigint(3000), // amountSpecified
173+
"EXACT_IN", // swapType
174+
"gno.land/r/baz:gno.land/r/bar:500", // strRouteArr
175+
"100", // quoteArr
176+
1100, // tokenAmountLimit
177+
)
178+
179+
shouldEQ(t, swapResult, bigint(1104))
115180
}
116181

117182
/* HELPER */

Diff for: router/_TEST_router_swap_route_2route_2hop_test.gno

+200
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
package router
2+
3+
import (
4+
"encoding/gjson"
5+
"std"
6+
"testing"
7+
8+
"gno.land/p/demo/testutils"
9+
10+
_ "gno.land/r/grc20_wrapper"
11+
pl "gno.land/r/pool"
12+
pos "gno.land/r/position"
13+
)
14+
15+
var (
16+
pc01 = testutils.TestAddress("pc01") // Pool Creator 01
17+
lp01 = testutils.TestAddress("lp01") // Liquidity Provider 01
18+
tr01 = testutils.TestAddress("tr01") // Trader 01
19+
20+
poolAddr = std.DerivePkgAddr("gno.land/r/pool")
21+
posAddr = std.DerivePkgAddr("gno.land/r/position")
22+
routerAddr = std.DerivePkgAddr("gno.land/r/router")
23+
)
24+
25+
var (
26+
// Common
27+
barPath = "gno.land/r/bar"
28+
bazPath = "gno.land/r/baz"
29+
fooPath = "gno.land/r/foo"
30+
quxPath = "gno.land/r/qux"
31+
32+
MAX_TIMEOUT bigint = 9999999999
33+
)
34+
35+
// debug addr
36+
func init() {
37+
println(pc01, "// pc01")
38+
println(lp01, "// lp01")
39+
println(tr01, "// tr01")
40+
println(poolAddr, "// pool")
41+
println(posAddr, "// pos")
42+
println(routerAddr, "// router")
43+
}
44+
45+
func TestInitManual(t *testing.T) {
46+
std.TestSetOrigCaller(pc01)
47+
pl.InitManual()
48+
std.TestSkipHeights(1)
49+
}
50+
51+
func TestCreatePool(t *testing.T) {
52+
std.TestSetOrigCaller(pc01)
53+
54+
pl.CreatePool(barPath, bazPath, uint16(500), 130621891405341611593710811006) // tick = 10_000, ratio = 2.71814592682522526700950038502924144268035888671875
55+
pl.CreatePool(bazPath, quxPath, uint16(500), 130621891405341611593710811006) // tick = 10_000, ratio = 2.71814592682522526700950038502924144268035888671875
56+
57+
jsonOutput := pl.ApiGetPools()
58+
jsonStr := gjson.Parse(jsonOutput)
59+
shouldEQ(t, len(jsonStr.Get("response.data").Array()), 2)
60+
}
61+
62+
func TestPositionMint(t *testing.T) {
63+
// bar_baz_500 by lp01
64+
std.TestSetOrigCaller(lp01)
65+
66+
// Mint
67+
pos.Mint(barPath, bazPath, uint16(500), int32(9000), int32(11000), bigint(100_000), bigint(100_000), 0, 0, MAX_TIMEOUT)
68+
pos.Mint(bazPath, quxPath, uint16(500), int32(9000), int32(11000), bigint(100_000), bigint(100_000), 0, 0, MAX_TIMEOUT)
69+
}
70+
71+
func TestDrySwapRouteBarQuxExactIn(t *testing.T) {
72+
std.TestSetOrigCaller(lp01)
73+
74+
dryResult := DrySwapRoute(
75+
barPath, // inputToken
76+
quxPath, // outputToken
77+
bigint(1000), // amountSpecified
78+
"EXACT_IN", // swapType
79+
"gno.land/r/bar:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/qux:500,gno.land/r/bar:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/qux:500", // strRouteArr
80+
"50,50", // quoteArr
81+
)
82+
83+
shouldEQ(t, dryResult, bigint(7346))
84+
}
85+
86+
func TestSwapRouteBarQuxExactIn(t *testing.T) {
87+
std.TestSetOrigCaller(lp01)
88+
89+
swapResult := SwapRoute(
90+
barPath, // inputToken
91+
quxPath, // outputToken
92+
bigint(1000), // amountSpecified
93+
"EXACT_IN", // swapType
94+
"gno.land/r/bar:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/qux:500,gno.land/r/bar:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/qux:500", // strRouteArr
95+
"50,50", // quoteArr
96+
1, // tokenAmountLimit
97+
)
98+
99+
shouldEQ(t, swapResult, bigint(7328))
100+
}
101+
102+
func TestDrySwapRouteBarQuxExactOut(t *testing.T) {
103+
std.TestSetOrigCaller(lp01)
104+
105+
dryResult := DrySwapRoute(
106+
barPath, // inputToken
107+
quxPath, // outputToken
108+
bigint(1000), // amountSpecified
109+
"EXACT_OUT", // swapType
110+
"gno.land/r/bar:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/qux:500,gno.land/r/bar:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/qux:500", // strRouteArr
111+
"50,50", // quoteArr
112+
)
113+
114+
shouldEQ(t, dryResult, bigint(136))
115+
}
116+
117+
func TestSwapRouteBarQuxExactOut(t *testing.T) {
118+
std.TestSetOrigCaller(lp01)
119+
120+
swapResult := SwapRoute(
121+
barPath, // inputToken
122+
quxPath, // outputToken
123+
bigint(1000), // amountSpecified
124+
"EXACT_OUT", // swapType
125+
"gno.land/r/bar:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/qux:500,gno.land/r/bar:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/qux:500", // strRouteArr
126+
"50,50", // quoteArr
127+
99999, // tokenAmountLimit
128+
)
129+
130+
shouldEQ(t, swapResult, bigint(136))
131+
}
132+
133+
func TestDrySwapRouteQuxBarExactIn(t *testing.T) {
134+
std.TestSetOrigCaller(lp01)
135+
136+
dryResult := DrySwapRoute(
137+
quxPath, // inputToken
138+
barPath, // outputToken
139+
bigint(1000), // amountSpecified
140+
"EXACT_IN", // swapType
141+
"gno.land/r/qux:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/bar:500,gno.land/r/qux:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/bar:500", // strRouteArr
142+
"30,70", // quoteArr
143+
)
144+
145+
shouldEQ(t, dryResult, bigint(135))
146+
}
147+
148+
func TestSwapRouteQuxBarExactIn(t *testing.T) {
149+
std.TestSetOrigCaller(lp01)
150+
151+
swapResult := SwapRoute(
152+
quxPath, // inputToken
153+
barPath, // outputToken
154+
bigint(1000), // amountSpecified
155+
"EXACT_IN", // swapType
156+
"gno.land/r/qux:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/bar:500,gno.land/r/qux:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/bar:500", // strRouteArr
157+
"30,70", // quoteArr
158+
1, // tokenAmountLimit
159+
)
160+
161+
shouldEQ(t, swapResult, bigint(135))
162+
}
163+
164+
func TestDrySwapRouteQuxBarExactOut(t *testing.T) {
165+
std.TestSetOrigCaller(lp01)
166+
167+
dryResult := DrySwapRoute(
168+
quxPath, // inputToken
169+
barPath, // outputToken
170+
bigint(1000), // amountSpecified
171+
"EXACT_OUT", // swapType
172+
"gno.land/r/qux:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/bar:500,gno.land/r/qux:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/bar:500", // strRouteArr
173+
"30,70", // quoteArr
174+
)
175+
176+
shouldEQ(t, dryResult, bigint(7336))
177+
}
178+
179+
func TestwapRouteQuxBarExactOut(t *testing.T) {
180+
std.TestSetOrigCaller(lp01)
181+
182+
swapResult := SwapRoute(
183+
quxPath, // inputToken
184+
barPath, // outputToken
185+
bigint(1000), // amountSpecified
186+
"EXACT_OUT", // swapType
187+
"gno.land/r/qux:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/bar:500,gno.land/r/qux:gno.land/r/baz:500*POOL*gno.land/r/baz:gno.land/r/bar:500", // strRouteArr
188+
"30,70", // quoteArr
189+
99999, // tokenAmountLimit
190+
)
191+
192+
shouldEQ(t, swapResult, bigint(7356))
193+
}
194+
195+
/* HELPER */
196+
func shouldEQ(t *testing.T, got, expected interface{}) {
197+
if got != expected {
198+
t.Errorf("got %v, expected %v", got, expected)
199+
}
200+
}

0 commit comments

Comments
 (0)