Skip to content

Commit b2d6a04

Browse files
committed
fix: testcase
1 parent e008515 commit b2d6a04

8 files changed

+206
-48
lines changed

pool/_TEST_math_logic_test.gnoa

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func TestGetSqrtRatioFromTick(t *testing.T) {
3131

3232
func TestGetTickFromSqrtRatio(t *testing.T) {
3333
tick := GetTickFromSqrtRatio(sqrtPrice)
34-
shouldEQ(t, tick, 9999) // currentTick - 1
34+
shouldEQ(t, tick, 10000)
3535
}
3636

3737
func TestDrySwap_ZeroForOneTrue_AmountSpecified_Positive_16000(t *testing.T) {
@@ -61,7 +61,7 @@ func TestDrySwap_ZeroForOneTrue_AmountSpecified_Positive_16000(t *testing.T) {
6161
MIN_PRICE, // sqrtPriceLimitX96
6262
)
6363
shouldEQ(t, poolIn, bigint(16000))
64-
shouldEQ(t, poolOut, bigint(-5884))
64+
shouldEQ(t, poolOut, bigint(-5883))
6565
}
6666

6767
func TestDrySwap_ZeroForOneTrue_AmountSpecified_Negative_16000(t *testing.T) {
@@ -78,7 +78,7 @@ func TestDrySwap_ZeroForOneTrue_AmountSpecified_Negative_16000(t *testing.T) {
7878
MIN_PRICE, // sqrtPriceLimitX96
7979
)
8080

81-
shouldEQ(t, poolIn, bigint(43506))
81+
shouldEQ(t, poolIn, bigint(43511))
8282
shouldEQ(t, poolOut, bigint(-16000))
8383
}
8484

@@ -96,7 +96,7 @@ func TestDrySwap_ZeroForOneFalse_AmountSpecified_Positive_16000(t *testing.T) {
9696
MAX_PRICE, // sqrtPriceLimitX96
9797
)
9898

99-
shouldEQ(t, poolOut, bigint(-43464))
99+
shouldEQ(t, poolOut, bigint(-43468))
100100
shouldEQ(t, poolIn, bigint(16000))
101101
}
102102

pool/_TEST_pool_multi_token_test.gnoa

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,17 +89,17 @@ func TestSwapFooBarFooToBar(t *testing.T) {
8989
std.GetOrigCaller(),
9090
)
9191
shouldEQ(t, poolIn, bigint(16000))
92-
shouldEQ(t, poolOut, bigint(-5883))
92+
shouldEQ(t, poolOut, bigint(-5882))
9393

9494
newtest1Token1Balance := balanceOfByRegisterCall(fooPath, test1)
9595
newtest1Token0Balance := balanceOfByRegisterCall(barPath, test1)
9696
newPoolToken1Balance := balanceOfByRegisterCall(fooPath, poolAddr)
9797
newPoolToken0Balance := balanceOfByRegisterCall(barPath, poolAddr)
9898

9999
shouldEQ(t, oldtest1Token0Balance-newtest1Token0Balance, bigint(16000))
100-
shouldEQ(t, newtest1Token1Balance-oldtest1Token1Balance, bigint(5883))
100+
shouldEQ(t, newtest1Token1Balance-oldtest1Token1Balance, bigint(5882))
101101
shouldEQ(t, newPoolToken0Balance-oldPoolToken0Balance, bigint(16000))
102-
shouldEQ(t, oldPoolToken1Balance-newPoolToken1Balance, bigint(5883))
102+
shouldEQ(t, oldPoolToken1Balance-newPoolToken1Balance, bigint(5882))
103103
}
104104

105105
// 7. Swap Bar:Baz Bar > Baz by test1

pool/_TEST_pool_single_lp_test.gnoa

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -360,17 +360,15 @@ func TestApiGetPools(t *testing.T) {
360360
shouldEQ(t, jsonStr.Get("stat.height").Int(), GetHeight())
361361
shouldEQ(t, jsonStr.Get("stat.timestamp").Int(), GetTimestamp())
362362

363-
shouldEQ(t, len(jsonStr.Get("response.data").Array()), 1)
364-
shouldEQ(t, jsonStr.Get("response.data").Array()[0].String(), "gno.land/r/demo/bar:gno.land/r/demo/foo:500")
363+
shouldEQ(t, len(jsonStr.Get("response").Array()), 1)
365364
}
366365

367366
func TestApiGetPool(t *testing.T) {
368367
gpl := ApiGetPool("gno.land/r/demo/bar:gno.land/r/demo/foo:500")
369368
jsonStr := gjson.Parse(gpl)
370-
// println("jsonStr:", jsonStr)
371369

372370
shouldEQ(t, jsonStr.Get("stat.height").Int(), GetHeight())
373371
shouldEQ(t, jsonStr.Get("stat.timestamp").Int(), GetTimestamp())
374372

375-
shouldEQ(t, len(jsonStr.Get("response.data.positions").Array()), 4)
373+
shouldEQ(t, len(jsonStr.Get("response.positions").Array()), 4)
376374
}

pool/_TEST_rpc_test.gno

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -73,21 +73,7 @@ func TestMintBarBazLiquidity(t *testing.T) {
7373
// API TESTS
7474
func TestApiGetPools(t *testing.T) {
7575
jsonStr := ApiGetPools()
76-
jsonArr := gjson.Parse(jsonStr).Get("response.data").Array()
76+
jsonArr := gjson.Parse(jsonStr).Get("response").Array()
7777
shouldEQ(t, len(jsonArr), 2)
78-
}
79-
80-
func TestApiGetPool(t *testing.T) {
81-
jsonStr := ApiGetPool("gno.land/r/demo/bar:gno.land/r/demo/baz:500")
82-
jsonOutput := gjson.Parse(jsonStr).Get("response.data")
83-
shouldEQ(t, jsonOutput.Get("pool_path").String(), "gno.land/r/demo/bar:gno.land/r/demo/baz:500")
84-
}
85-
86-
// RPC TESTS
87-
func TestRpcGetPools(t *testing.T) {
88-
RpcGetPools()
89-
}
9078

91-
func TestRpcMakePool(t *testing.T) {
92-
RpcMakePool("gno.land/r/demo/bar:gno.land/r/demo/baz:500")
9379
}
File renamed without changes.

position/_TEST_position_api_test.gnoa renamed to position/_TEST_position_api_test.gno

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,6 @@ func TestSwap(t *testing.T) {
6161
)
6262
}
6363

64-
func TestApiGetPositions(t *testing.T) {
65-
gpss := ApiGetPositions()
66-
jsonStr := gjson.Parse(gpss)
67-
shouldEQ(t, len(jsonStr.Get("response.data").Array()), 2)
68-
}
69-
7064
func TestCollectFeeAfterSwap(t *testing.T) {
7165
// burn 0 to collect swap fee
7266
std.TestSetOrigCaller(test1)
@@ -77,20 +71,9 @@ func TestCollectFeeAfterSwap(t *testing.T) {
7771
shouldEQ(t, fromPath, "gno.land/r/demo/bar:gno.land/r/demo/foo:500")
7872
}
7973

80-
func TestApiGetPositionByUser(t *testing.T) {
81-
gpu := ApiGetPositionByUser(test1.String())
82-
jsonStr := gjson.Parse(gpu)
83-
shouldEQ(t, len(jsonStr.Get("response.data").Array()), 2)
84-
85-
shouldEQ(t, jsonStr.Get("response.data.0.token_id").Int(), 1)
86-
87-
shouldEQ(t, jsonStr.Get("response.data.1.token_id").Int(), 2)
88-
shouldEQ(t, jsonStr.Get("response.data.1.pool_key").String(), "gno.land/r/demo/bar:gno.land/r/demo/foo:500")
89-
shouldEQ(t, jsonStr.Get("response.data.1.tick_lower").Int(), -6000)
90-
shouldEQ(t, jsonStr.Get("response.data.1.tick_upper").Int(), -4000)
91-
shouldEQ(t, jsonStr.Get("response.data.1.liquidity").Int(), 7785251)
92-
shouldEQ(t, jsonStr.Get("response.data.1.token0_balance").Int(), 1000000)
93-
shouldEQ(t, jsonStr.Get("response.data.1.token1_balance").Int(), 0)
94-
shouldEQ(t, jsonStr.Get("response.data.1.tokens_owed_0").Int(), 0)
95-
shouldEQ(t, jsonStr.Get("response.data.1.tokens_owed_1").Int(), 0)
74+
// RPCs
75+
func TestApiGetPositions(t *testing.T) {
76+
gpss := ApiGetPositions()
77+
jsonStr := gjson.Parse(gpss)
78+
shouldEQ(t, len(jsonStr.Get("response").Array()), 2)
9679
}
File renamed without changes.

staker/_TEST_staker_rpc_test.gno

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
package staker
2+
3+
import (
4+
"std"
5+
"testing"
6+
7+
"encoding/gjson"
8+
9+
p "gno.land/r/demo/pool"
10+
pos "gno.land/r/demo/position"
11+
12+
gnft "gno.land/r/demo/gnft" // GNFT, Gnoswap NFT
13+
gns "gno.land/r/demo/gns" // GNS, Gnoswap Share
14+
obl "gno.land/r/demo/obl" // OBL, External Reward Token
15+
16+
_ "gno.land/r/demo/grc20_wrapper"
17+
)
18+
19+
func init() {
20+
// init pool tiers
21+
// tier 1
22+
poolTiers["gno.land/r/demo/bar:gno.land/r/demo/qux:500"] = 1 // DEV
23+
24+
// tier 2
25+
poolTiers["GNS/USDT_500"] = 2
26+
poolTiers["ATOM/GNS_500"] = 2
27+
28+
// tier 3
29+
poolTiers["ATOM/GNOT_500"] = 3
30+
poolTiers["ATOM/USDT_500"] = 3
31+
poolTiers["ATOM/WETH_500"] = 3
32+
}
33+
34+
func TestPoolInitCreatePool(t *testing.T) {
35+
std.TestSetOrigCaller(test1)
36+
37+
p.InitManual()
38+
std.TestSkipHeights(1)
39+
40+
p.CreatePool(barPath, quxPath, 500, 130621891405341611593710811006)
41+
std.TestSkipHeights(1)
42+
}
43+
44+
func TestPositionMint(t *testing.T) {
45+
{
46+
std.TestSetOrigCaller(test1)
47+
tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint(
48+
barPath, // token0
49+
quxPath, // token1
50+
uint16(500), // fee
51+
int32(9000), // tickLower
52+
int32(11000), // tickUpper
53+
bigint(1000), // amount0Desired
54+
bigint(1000), // amount1Desired
55+
bigint(1), // amount0Min
56+
bigint(1), // amount1Min
57+
bigint(2345678901), // deadline
58+
)
59+
std.TestSkipHeights(1)
60+
61+
shouldEQ(t, tPosTokenId, 1)
62+
shouldEQ(t, gnft.OwnerOf(tid(tPosTokenId)), GetOrigCaller()) // test1
63+
64+
// approve nft to staker
65+
std.TestSetPrevAddr(test1)
66+
gnft.Approve(a2u(GetOrigPkgAddr()), tid(tPosTokenId))
67+
std.TestSkipHeights(1)
68+
}
69+
70+
{
71+
std.TestSetOrigCaller(test1)
72+
tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint(
73+
barPath, // token0
74+
quxPath, // token1
75+
uint16(500), // fee
76+
int32(9100), // tickLower
77+
int32(12000), // tickUpper
78+
bigint(5000), // amount0Desired
79+
bigint(5000), // amount1Desired
80+
bigint(1), // amount0Min
81+
bigint(1), // amount1Min
82+
bigint(2345678901), // deadline
83+
)
84+
std.TestSkipHeights(1)
85+
86+
shouldEQ(t, tPosTokenId, 2)
87+
shouldEQ(t, gnft.OwnerOf(tid(tPosTokenId)), GetOrigCaller()) // test1
88+
89+
// approve nft to staker
90+
std.TestSetPrevAddr(test1)
91+
gnft.Approve(a2u(GetOrigPkgAddr()), tid(tPosTokenId))
92+
std.TestSkipHeights(1)
93+
}
94+
}
95+
96+
func TestCreateExternalIncentive(t *testing.T) {
97+
std.TestSetOrigCaller(test1)
98+
99+
CreateExternalIncentive(
100+
"gno.land/r/demo/bar:gno.land/r/demo/qux:500", // targetPoolPath
101+
"gno.land/r/demo/obl", // rewardToken
102+
10_000_000_000, // rewardAmount
103+
GetTimestamp(), // startTimestamp
104+
GetTimestamp()+TIMESTAMP_90DAYS, // endTimestamp
105+
)
106+
CreateExternalIncentive("gno.land/r/demo/bar:gno.land/r/demo/qux:500", "gno.land/r/demo/obl", 10_000_000_000, GetTimestamp(), GetTimestamp()+TIMESTAMP_90DAYS)
107+
std.TestSkipHeights(5)
108+
}
109+
110+
func TestStakeToken(t *testing.T) {
111+
{
112+
std.TestSetOrigCaller(test1)
113+
StakeToken(1) // GNFT tokenId
114+
std.TestSkipHeights(2)
115+
116+
shouldEQ(t, gnft.OwnerOf(tid(1)), GetOrigPkgAddr()) // staker
117+
shouldEQ(t, len(deposits), 1)
118+
}
119+
120+
{
121+
std.TestSetOrigCaller(test1)
122+
StakeToken(2) // GNFT tokenId
123+
std.TestSkipHeights(2)
124+
125+
shouldEQ(t, gnft.OwnerOf(tid(2)), GetOrigPkgAddr()) // staker
126+
shouldEQ(t, len(deposits), 2)
127+
}
128+
}
129+
130+
func TestApiGetRewards(t *testing.T) {
131+
agrs := ApiGetRewards()
132+
jsonStr := gjson.Parse(agrs)
133+
jsonArr := jsonStr.Get("response").Array()
134+
shouldEQ(t, len(jsonArr), 2) // lpTokenId 1, 2
135+
}
136+
137+
func TestApiGetStakes(t *testing.T) {
138+
ags := ApiGetStakes()
139+
jsonStr := gjson.Parse(ags)
140+
jsonArr := jsonStr.Get("response").Array()
141+
shouldEQ(t, len(jsonArr), 2) // lpTokenId 1, 2
142+
}
143+
144+
func TestCollectReward(t *testing.T) {
145+
std.TestSetOrigCaller(test1)
146+
147+
// before claim
148+
gnsOld := gns.BalanceOf(a2u(test1))
149+
shouldEQ(t, gnsOld, 99999999999500)
150+
151+
CollectReward(1) // GNFT tokenId
152+
gnsNew := gns.BalanceOf(a2u(test1))
153+
shouldEQ(t, gnsNew, 99999999999584)
154+
155+
}
156+
157+
func TestUnstakeToken(t *testing.T) {
158+
{
159+
std.TestSetOrigCaller(test1)
160+
UnstakeToken(1) // GNFT tokenId
161+
std.TestSkipHeights(1)
162+
163+
shouldEQ(t, gnft.OwnerOf(tid(1)), test1)
164+
165+
// check reward
166+
shouldEQ(t, gns.BalanceOf(a2u(test1)), 99999999999584) // internal
167+
shouldEQ(t, obl.BalanceOf(a2u(test1)), 499980000000648) // external
168+
}
169+
170+
{
171+
std.TestSetOrigCaller(test1)
172+
UnstakeToken(2) // GNFT tokenId
173+
std.TestSkipHeights(1)
174+
175+
shouldEQ(t, gnft.OwnerOf(tid(2)), test1)
176+
177+
// check reward
178+
shouldEQ(t, gns.BalanceOf(a2u(test1)), 100000000000049) // internal
179+
shouldEQ(t, obl.BalanceOf(a2u(test1)), 499980000004243) // external
180+
}
181+
}
182+
183+
func TestEndExternalIncentive(t *testing.T) {
184+
std.TestSetOrigCaller(test1)
185+
std.TestSkipHeights(9999999)
186+
EndExternalIncentive(GetOrigCaller().String(), "gno.land/r/demo/bar:gno.land/r/demo/qux:500", "gno.land/r/demo/obl") // use same parameter as CreateExternalIncentive()
187+
std.TestSkipHeights(1)
188+
189+
shouldEQ(t, len(incentives), 0)
190+
shouldEQ(t, len(poolIncentives["gno.land/r/demo/bar:gno.land/r/demo/qux:500"]), 0)
191+
}

0 commit comments

Comments
 (0)