From fa3058408cb56d1fb0f89e1c6f2a7c905aec0b5e Mon Sep 17 00:00:00 2001 From: n3wbie Date: Mon, 19 Feb 2024 16:08:12 +0900 Subject: [PATCH] fix: testcases --- pool/_TEST_INIT_register_tokens_test.gno | 36 --- position/_TEST_INIT_register_tokens_test.gno | 36 --- router/_TEST_INIT_register_tokens_test.gno | 38 --- staker/_TEST_INIT_basic_test.gno | 31 ++- staker/_TEST_INIT_register_tokens_test.gno | 38 --- ...a => _TEST_staker_collect_reward_test.gno} | 22 +- staker/_TEST_staker_get_test.gnoa | 15 +- .../_TEST_staker_internal_external_test.gnoa | 239 ++++++++++++++++++ ..._TEST_staker_one_external_native_test.gnoa | 22 +- staker/_TEST_staker_one_external_test.gnoa | 22 +- ...EST_staker_one_increase_external_test.gnoa | 22 +- ...pc_test.gno => _TEST_staker_rpc_test.gnoa} | 22 +- staker/staker_register.gno | 8 +- 13 files changed, 321 insertions(+), 230 deletions(-) rename staker/{_TEST_staker_collect_reward_test.gnoa => _TEST_staker_collect_reward_test.gno} (87%) create mode 100644 staker/_TEST_staker_internal_external_test.gnoa rename staker/{_TEST_staker_rpc_test.gno => _TEST_staker_rpc_test.gnoa} (88%) diff --git a/pool/_TEST_INIT_register_tokens_test.gno b/pool/_TEST_INIT_register_tokens_test.gno index ae98716f..791697e8 100644 --- a/pool/_TEST_INIT_register_tokens_test.gno +++ b/pool/_TEST_INIT_register_tokens_test.gno @@ -9,10 +9,6 @@ import ( "gno.land/r/demo/qux" - "gno.land/r/demo/fred" - - "gno.land/r/demo/thud" - "gno.land/r/demo/wugnot" "gno.land/r/demo/obl" @@ -82,36 +78,6 @@ func (QuxToken) Approve() func(spender users.AddressOrName, amount uint64) { return qux.Approve } -type FredToken struct{} - -func (FredToken) Transfer() func(to users.AddressOrName, amount uint64) { - return fred.Transfer -} -func (FredToken) TransferFrom() func(from, to users.AddressOrName, amount uint64) { - return fred.TransferFrom -} -func (FredToken) BalanceOf() func(owner users.AddressOrName) uint64 { - return fred.BalanceOf -} -func (FredToken) Approve() func(spender users.AddressOrName, amount uint64) { - return fred.Approve -} - -type ThudToken struct{} - -func (ThudToken) Transfer() func(to users.AddressOrName, amount uint64) { - return thud.Transfer -} -func (ThudToken) TransferFrom() func(from, to users.AddressOrName, amount uint64) { - return thud.TransferFrom -} -func (ThudToken) BalanceOf() func(owner users.AddressOrName) uint64 { - return thud.BalanceOf -} -func (ThudToken) Approve() func(spender users.AddressOrName, amount uint64) { - return thud.Approve -} - type WugnotToken struct{} func (WugnotToken) Transfer() func(to users.AddressOrName, amount uint64) { @@ -165,8 +131,6 @@ func init() { RegisterGRC20Interface("gno.land/r/demo/foo", FooToken{}) RegisterGRC20Interface("gno.land/r/demo/baz", BazToken{}) RegisterGRC20Interface("gno.land/r/demo/qux", QuxToken{}) - RegisterGRC20Interface("gno.land/r/demo/fred", FredToken{}) - RegisterGRC20Interface("gno.land/r/demo/thud", ThudToken{}) RegisterGRC20Interface("gno.land/r/demo/wugnot", WugnotToken{}) RegisterGRC20Interface("gno.land/r/demo/obl", OBLToken{}) RegisterGRC20Interface("gno.land/r/demo/gns", GNSToken{}) diff --git a/position/_TEST_INIT_register_tokens_test.gno b/position/_TEST_INIT_register_tokens_test.gno index 4c1f4c15..48ff455e 100644 --- a/position/_TEST_INIT_register_tokens_test.gno +++ b/position/_TEST_INIT_register_tokens_test.gno @@ -9,10 +9,6 @@ import ( "gno.land/r/demo/qux" - "gno.land/r/demo/fred" - - "gno.land/r/demo/thud" - "gno.land/r/demo/wugnot" "gno.land/r/demo/obl" @@ -84,36 +80,6 @@ func (QuxToken) Approve() func(spender users.AddressOrName, amount uint64) { return qux.Approve } -type FredToken struct{} - -func (FredToken) Transfer() func(to users.AddressOrName, amount uint64) { - return fred.Transfer -} -func (FredToken) TransferFrom() func(from, to users.AddressOrName, amount uint64) { - return fred.TransferFrom -} -func (FredToken) BalanceOf() func(owner users.AddressOrName) uint64 { - return fred.BalanceOf -} -func (FredToken) Approve() func(spender users.AddressOrName, amount uint64) { - return fred.Approve -} - -type ThudToken struct{} - -func (ThudToken) Transfer() func(to users.AddressOrName, amount uint64) { - return thud.Transfer -} -func (ThudToken) TransferFrom() func(from, to users.AddressOrName, amount uint64) { - return thud.TransferFrom -} -func (ThudToken) BalanceOf() func(owner users.AddressOrName) uint64 { - return thud.BalanceOf -} -func (ThudToken) Approve() func(spender users.AddressOrName, amount uint64) { - return thud.Approve -} - type WugnotToken struct{} func (WugnotToken) Transfer() func(to users.AddressOrName, amount uint64) { @@ -167,8 +133,6 @@ func init() { pl.RegisterGRC20Interface("gno.land/r/demo/foo", FooToken{}) pl.RegisterGRC20Interface("gno.land/r/demo/baz", BazToken{}) pl.RegisterGRC20Interface("gno.land/r/demo/qux", QuxToken{}) - pl.RegisterGRC20Interface("gno.land/r/demo/fred", FredToken{}) - pl.RegisterGRC20Interface("gno.land/r/demo/thud", ThudToken{}) pl.RegisterGRC20Interface("gno.land/r/demo/wugnot", WugnotToken{}) pl.RegisterGRC20Interface("gno.land/r/demo/obl", OBLToken{}) pl.RegisterGRC20Interface("gno.land/r/demo/gns", GNSToken{}) diff --git a/router/_TEST_INIT_register_tokens_test.gno b/router/_TEST_INIT_register_tokens_test.gno index a444627c..fa469e71 100644 --- a/router/_TEST_INIT_register_tokens_test.gno +++ b/router/_TEST_INIT_register_tokens_test.gno @@ -9,10 +9,6 @@ import ( "gno.land/r/demo/qux" - "gno.land/r/demo/fred" - - "gno.land/r/demo/thud" - "gno.land/r/demo/wugnot" "gno.land/r/demo/obl" @@ -84,36 +80,6 @@ func (QuxToken) Approve() func(spender users.AddressOrName, amount uint64) { return qux.Approve } -type FredToken struct{} - -func (FredToken) Transfer() func(to users.AddressOrName, amount uint64) { - return fred.Transfer -} -func (FredToken) TransferFrom() func(from, to users.AddressOrName, amount uint64) { - return fred.TransferFrom -} -func (FredToken) BalanceOf() func(owner users.AddressOrName) uint64 { - return fred.BalanceOf -} -func (FredToken) Approve() func(spender users.AddressOrName, amount uint64) { - return fred.Approve -} - -type ThudToken struct{} - -func (ThudToken) Transfer() func(to users.AddressOrName, amount uint64) { - return thud.Transfer -} -func (ThudToken) TransferFrom() func(from, to users.AddressOrName, amount uint64) { - return thud.TransferFrom -} -func (ThudToken) BalanceOf() func(owner users.AddressOrName) uint64 { - return thud.BalanceOf -} -func (ThudToken) Approve() func(spender users.AddressOrName, amount uint64) { - return thud.Approve -} - type WugnotToken struct{} func (WugnotToken) Transfer() func(to users.AddressOrName, amount uint64) { @@ -168,8 +134,6 @@ func init() { pool.RegisterGRC20Interface("gno.land/r/demo/foo", FooToken{}) pool.RegisterGRC20Interface("gno.land/r/demo/baz", BazToken{}) pool.RegisterGRC20Interface("gno.land/r/demo/qux", QuxToken{}) - pool.RegisterGRC20Interface("gno.land/r/demo/fred", FredToken{}) - pool.RegisterGRC20Interface("gno.land/r/demo/thud", ThudToken{}) pool.RegisterGRC20Interface("gno.land/r/demo/wugnot", WugnotToken{}) pool.RegisterGRC20Interface("gno.land/r/demo/obl", OBLToken{}) pool.RegisterGRC20Interface("gno.land/r/demo/gns", GNSToken{}) @@ -179,8 +143,6 @@ func init() { RegisterGRC20Interface("gno.land/r/demo/foo", FooToken{}) RegisterGRC20Interface("gno.land/r/demo/baz", BazToken{}) RegisterGRC20Interface("gno.land/r/demo/qux", QuxToken{}) - RegisterGRC20Interface("gno.land/r/demo/fred", FredToken{}) - RegisterGRC20Interface("gno.land/r/demo/thud", ThudToken{}) RegisterGRC20Interface("gno.land/r/demo/wugnot", WugnotToken{}) RegisterGRC20Interface("gno.land/r/demo/obl", OBLToken{}) RegisterGRC20Interface("gno.land/r/demo/gns", GNSToken{}) diff --git a/staker/_TEST_INIT_basic_test.gno b/staker/_TEST_INIT_basic_test.gno index 489f7a9c..f17155b4 100644 --- a/staker/_TEST_INIT_basic_test.gno +++ b/staker/_TEST_INIT_basic_test.gno @@ -4,6 +4,8 @@ import ( "std" "testing" + "gno.land/r/demo/consts" + "gno.land/r/demo/gns" "gno.land/r/demo/bar" @@ -19,8 +21,7 @@ import ( ) var ( - test1 std.Address - poolAddr, posAddr, stakerAddr std.Address + test1 std.Address barPath = "gno.land/r/demo/bar" bazPath = "gno.land/r/demo/baz" @@ -32,6 +33,8 @@ var ( fee100 = uint16(100) fee500 = uint16(500) fee3000 = uint16(3000) + + max_timeout = bigint(9999999999) ) func init() { @@ -40,26 +43,22 @@ func init() { testBanker := std.GetBanker(std.BankerTypeRealmIssue) testBanker.IssueCoin(test1, "ugnot", 500_000_000_000_000) - poolAddr = std.DerivePkgAddr("gno.land/r/demo/pool") - posAddr = std.DerivePkgAddr("gno.land/r/demo/position") - stakerAddr = std.DerivePkgAddr("gno.land/r/demo/staker") - std.TestSetPrevAddr(test1) - gns.Approve(a2u(poolAddr), 500_000_000_000_000) + gns.Approve(a2u(consts.POOL_ADDR), 500_000_000_000_000) - bar.Approve(a2u(poolAddr), 500_000_000_000_000) - baz.Approve(a2u(poolAddr), 500_000_000_000_000) - foo.Approve(a2u(poolAddr), 500_000_000_000_000) - qux.Approve(a2u(poolAddr), 500_000_000_000_000) + bar.Approve(a2u(consts.POOL_ADDR), 500_000_000_000_000) + baz.Approve(a2u(consts.POOL_ADDR), 500_000_000_000_000) + foo.Approve(a2u(consts.POOL_ADDR), 500_000_000_000_000) + qux.Approve(a2u(consts.POOL_ADDR), 500_000_000_000_000) - obl.Approve(a2u(stakerAddr), 500_000_000_000_000) // to create external incentive - wugnot.Approve(a2u(stakerAddr), 500_000_000_000_000) // to create (native) external incentive + obl.Approve(a2u(consts.STAKER_ADDR), 500_000_000_000_000) // to create external incentive + wugnot.Approve(a2u(consts.STAKER_ADDR), 500_000_000_000_000) // to create (native) external incentive - wugnot.Approve(a2u(poolAddr), 500_000_000_000_000) + wugnot.Approve(a2u(consts.POOL_ADDR), 500_000_000_000_000) - std.TestSetPrevAddr(std.Address("g1paqttvcjcluuya9n9twyw7yacv54mt7ld3gvzm")) - gns.Approve(a2u(stakerAddr), 500_000_000_000_000) // to create internal incentive + std.TestSetPrevAddr(std.Address("g1paqttvcjcluuya9n9twyw7yacv54mt7ld3gvzm")) // IRA, r3v4_xxx: CHANGE WHEN DEPLOYING TO OFFICIAL NETWORK + gns.Approve(a2u(consts.STAKER_ADDR), 500_000_000_000_000) // to create internal incentive } /* HELPER */ diff --git a/staker/_TEST_INIT_register_tokens_test.gno b/staker/_TEST_INIT_register_tokens_test.gno index 1e782d4c..bc887c8a 100644 --- a/staker/_TEST_INIT_register_tokens_test.gno +++ b/staker/_TEST_INIT_register_tokens_test.gno @@ -9,10 +9,6 @@ import ( "gno.land/r/demo/qux" - "gno.land/r/demo/fred" - - "gno.land/r/demo/thud" - "gno.land/r/demo/wugnot" "gno.land/r/demo/obl" @@ -84,36 +80,6 @@ func (QuxToken) Approve() func(spender users.AddressOrName, amount uint64) { return qux.Approve } -type FredToken struct{} - -func (FredToken) Transfer() func(to users.AddressOrName, amount uint64) { - return fred.Transfer -} -func (FredToken) TransferFrom() func(from, to users.AddressOrName, amount uint64) { - return fred.TransferFrom -} -func (FredToken) BalanceOf() func(owner users.AddressOrName) uint64 { - return fred.BalanceOf -} -func (FredToken) Approve() func(spender users.AddressOrName, amount uint64) { - return fred.Approve -} - -type ThudToken struct{} - -func (ThudToken) Transfer() func(to users.AddressOrName, amount uint64) { - return thud.Transfer -} -func (ThudToken) TransferFrom() func(from, to users.AddressOrName, amount uint64) { - return thud.TransferFrom -} -func (ThudToken) BalanceOf() func(owner users.AddressOrName) uint64 { - return thud.BalanceOf -} -func (ThudToken) Approve() func(spender users.AddressOrName, amount uint64) { - return thud.Approve -} - type WugnotToken struct{} func (WugnotToken) Transfer() func(to users.AddressOrName, amount uint64) { @@ -168,8 +134,6 @@ func init() { pool.RegisterGRC20Interface("gno.land/r/demo/foo", FooToken{}) pool.RegisterGRC20Interface("gno.land/r/demo/baz", BazToken{}) pool.RegisterGRC20Interface("gno.land/r/demo/qux", QuxToken{}) - pool.RegisterGRC20Interface("gno.land/r/demo/fred", FredToken{}) - pool.RegisterGRC20Interface("gno.land/r/demo/thud", ThudToken{}) pool.RegisterGRC20Interface("gno.land/r/demo/wugnot", WugnotToken{}) pool.RegisterGRC20Interface("gno.land/r/demo/obl", OBLToken{}) pool.RegisterGRC20Interface("gno.land/r/demo/gns", GNSToken{}) @@ -179,8 +143,6 @@ func init() { RegisterGRC20Interface("gno.land/r/demo/foo", FooToken{}) RegisterGRC20Interface("gno.land/r/demo/baz", BazToken{}) RegisterGRC20Interface("gno.land/r/demo/qux", QuxToken{}) - RegisterGRC20Interface("gno.land/r/demo/fred", FredToken{}) - RegisterGRC20Interface("gno.land/r/demo/thud", ThudToken{}) RegisterGRC20Interface("gno.land/r/demo/wugnot", WugnotToken{}) RegisterGRC20Interface("gno.land/r/demo/obl", OBLToken{}) RegisterGRC20Interface("gno.land/r/demo/gns", GNSToken{}) diff --git a/staker/_TEST_staker_collect_reward_test.gnoa b/staker/_TEST_staker_collect_reward_test.gno similarity index 87% rename from staker/_TEST_staker_collect_reward_test.gnoa rename to staker/_TEST_staker_collect_reward_test.gno index 2213694d..2b3696dc 100644 --- a/staker/_TEST_staker_collect_reward_test.gnoa +++ b/staker/_TEST_staker_collect_reward_test.gno @@ -4,13 +4,13 @@ import ( "std" "testing" - p "gno.land/r/demo/pool" - pos "gno.land/r/demo/position" + pl "gno.land/r/demo/pool" + pn "gno.land/r/demo/position" - gnft "gno.land/r/demo/gnft" // GNFT, Gnoswap NFT - gns "gno.land/r/demo/gns" // GNS, Gnoswap Share + "gno.land/r/demo/gnft" + "gno.land/r/demo/gns" - obl "gno.land/r/demo/obl" // OBL, External Reward Token + "gno.land/r/demo/obl" ) func init() { @@ -31,17 +31,17 @@ func init() { func TestPoolInitCreatePool(t *testing.T) { std.TestSetOrigCaller(test1) - p.InitManual() + pl.InitManual() std.TestSkipHeights(1) - p.CreatePool(barPath, quxPath, 500, 130621891405341611593710811006) + pl.CreatePool(barPath, quxPath, 500, 130621891405341611593710811006) std.TestSkipHeights(1) } func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( barPath, // token0 quxPath, // token1 uint16(500), // fee @@ -66,7 +66,7 @@ func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( barPath, // token0 quxPath, // token1 uint16(500), // fee @@ -158,8 +158,8 @@ func TestUnstakeToken(t *testing.T) { shouldEQ(t, gnft.OwnerOf(tid(2)), test1) // check reward - shouldEQ(t, gns.BalanceOf(a2u(test1)), 100000000325) // internal - shouldEQ(t, obl.BalanceOf(a2u(test1)), 499980000004243) // external + shouldEQ(t, gns.BalanceOf(a2u(test1)), 100000000451) // internal + shouldEQ(t, obl.BalanceOf(a2u(test1)), 499980000004891) // external } } diff --git a/staker/_TEST_staker_get_test.gnoa b/staker/_TEST_staker_get_test.gnoa index 63ab001e..51bb49cf 100644 --- a/staker/_TEST_staker_get_test.gnoa +++ b/staker/_TEST_staker_get_test.gnoa @@ -4,25 +4,26 @@ import ( "std" "testing" - gnft "gno.land/r/demo/gnft" // GNFT, Gnoswap NFT - p "gno.land/r/demo/pool" - pos "gno.land/r/demo/position" + pl "gno.land/r/demo/pool" + pn "gno.land/r/demo/position" + + "gno.land/r/demo/gnft" ) func TestPoolInitCreatePool(t *testing.T) { std.TestSetOrigCaller(test1) - p.InitManual() + pl.InitManual() std.TestSkipHeights(1) - p.CreatePool(fooPath, barPath, 500, 130621891405341611593710811006) + pl.CreatePool(fooPath, barPath, 500, 130621891405341611593710811006) std.TestSkipHeights(1) } func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( fooPath, // token0 barPath, // token1 uint16(500), // fee @@ -47,7 +48,7 @@ func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( fooPath, // token0 barPath, // token1 uint16(500), // fee diff --git a/staker/_TEST_staker_internal_external_test.gnoa b/staker/_TEST_staker_internal_external_test.gnoa new file mode 100644 index 00000000..3b842cf2 --- /dev/null +++ b/staker/_TEST_staker_internal_external_test.gnoa @@ -0,0 +1,239 @@ +package staker + +import ( + "std" + + "testing" + + pl "gno.land/r/demo/pool" + pn "gno.land/r/demo/position" + + "gno.land/r/demo/gnft" + + "gno.land/r/demo/gns" + "gno.land/r/demo/obl" +) + +func init() { + // init pool tiers + // tier 1 + poolTiers["gno.land/r/demo/bar:gno.land/r/demo/qux:500"] = 1 + + // tier 2 + poolTiers["gno.land/r/demo/bar:gno.land/r/demo/baz:100"] = 2 + poolTiers["ATOM/GNS_500"] = 2 + + // tier 3 + poolTiers["ATOM/GNOT_500"] = 3 + poolTiers["ATOM/USDT_500"] = 3 + poolTiers["ATOM/WETH_500"] = 3 +} + +func TestPoolInitCreatePool(t *testing.T) { + std.TestSetOrigCaller(test1) + + pl.InitManual() + std.TestSkipHeights(1) + + pl.CreatePool(barPath, quxPath, 500, 130621891405341611593710811006) // internal, tier 1 + pl.CreatePool(barPath, bazPath, 100, 79228162514264337593543950337) // internal, tier 2 + pl.CreatePool(fooPath, quxPath, 500, 79228162514264337593543950337) // external + std.TestSkipHeights(3) +} + +func TestMintBarQux500(t *testing.T) { + std.TestSetOrigCaller(test1) + tokenId, liquidity, amount0, amount1 := pn.Mint( + barPath, // token0 + quxPath, // token1 + fee500, // fee + int32(9000), // tickLower + int32(11000), // tickUpper + bigint(100000), // amount0Desired + bigint(100000), // amount1Desired + bigint(1), // amount0Min + bigint(1), // amount1Min + max_timeout, + ) + std.TestSkipHeights(1) + + shouldEQ(t, tokenId, 1) + shouldEQ(t, gnft.OwnerOf(tid(tokenId)), GetOrigCaller()) // test1 +} + +func TestMintBarBaz100(t *testing.T) { + std.TestSetOrigCaller(test1) + tokenId, liquidity, amount0, amount1 := pn.Mint( + barPath, // token0 + bazPath, // token1 + fee100, // fee + int32(-1000), // tickLower + int32(1000), // tickUpper + bigint(100000), // amount0Desired + bigint(100000), // amount1Desired + bigint(1), // amount0Min + bigint(1), // amount1Min + max_timeout, + ) + std.TestSkipHeights(1) + + shouldEQ(t, tokenId, 2) + shouldEQ(t, gnft.OwnerOf(tid(tokenId)), GetOrigCaller()) // test1 +} + +func TestMintFooQux500(t *testing.T) { + std.TestSetOrigCaller(test1) + tokenId, liquidity, amount0, amount1 := pn.Mint( + fooPath, // token0 + quxPath, // token1 + fee500, // fee + int32(-1000), // tickLower + int32(1000), // tickUpper + bigint(100000), // amount0Desired + bigint(100000), // amount1Desired + bigint(1), // amount0Min + bigint(1), // amount1Min + max_timeout, + ) + std.TestSkipHeights(1) + + shouldEQ(t, tokenId, 3) + shouldEQ(t, gnft.OwnerOf(tid(tokenId)), GetOrigCaller()) // test1 +} + +func TestCreateExternalIncentive(t *testing.T) { + std.TestSetOrigCaller(test1) + + CreateExternalIncentive( + "gno.land/r/demo/foo:gno.land/r/demo/qux:500", // targetPoolPath + "gno.land/r/demo/obl", // rewardToken + 100_000_000, // rewardAmount + GetTimestamp(), // startTimestamp + GetTimestamp()+TIMESTAMP_90DAYS, // endTimestamp + ) + + std.TestSkipHeights(1) +} + +func TestStakeInternalTier1(t *testing.T) { + std.TestSetPrevAddr(test1) + gnft.Approve(a2u(GetOrigPkgAddr()), tid(1)) + StakeToken(1) + std.TestSkipHeights(2) + + shouldEQ(t, gnft.OwnerOf(tid(1)), GetOrigPkgAddr()) + shouldEQ(t, len(deposits), 1) +} + +func TestStakeInternalTier2(t *testing.T) { + std.TestSetPrevAddr(test1) + gnft.Approve(a2u(GetOrigPkgAddr()), tid(2)) + StakeToken(2) + std.TestSkipHeights(2) + + shouldEQ(t, gnft.OwnerOf(tid(2)), GetOrigPkgAddr()) + shouldEQ(t, len(deposits), 2) +} + +func TestStakeExternal(t *testing.T) { + std.TestSetPrevAddr(test1) + gnft.Approve(a2u(GetOrigPkgAddr()), tid(3)) + StakeToken(3) + std.TestSkipHeights(2) + + shouldEQ(t, gnft.OwnerOf(tid(3)), GetOrigPkgAddr()) + shouldEQ(t, len(deposits), 3) +} + +func TestCollectRewardToken1(t *testing.T) { + std.TestSetPrevAddr(test1) + + // before claim + gnsOld := gns.BalanceOf(a2u(test1)) + shouldEQ(t, gnsOld, 99999998500) + + CollectReward(1) + std.TestSkipHeights(1) + + gnsNew := gns.BalanceOf(a2u(test1)) + shouldEQ(t, gnsNew, 99999999325) +} + +func TestCollectRewardToken2(t *testing.T) { + std.TestSetPrevAddr(test1) + + // before claim + gnsOld := gns.BalanceOf(a2u(test1)) + shouldEQ(t, gnsOld, 99999999325) + + CollectReward(2) + std.TestSkipHeights(1) + + gnsNew := gns.BalanceOf(a2u(test1)) + shouldEQ(t, gnsNew, 99999999820) +} + +func TestCollectRewardToken1Again(t *testing.T) { + std.TestSetPrevAddr(test1) + + // before claim + gnsOld := gns.BalanceOf(a2u(test1)) + shouldEQ(t, gnsOld, 99999999820) + + // ACCELERATE TIME + std.TestSkipHeights(100000) + + CollectReward(1) + std.TestSkipHeights(1) + + gnsNew := gns.BalanceOf(a2u(test1)) + shouldEQ(t, gnsNew, 100000000370) +} + +func TestCollectExternalReward(t *testing.T) { + std.TestSetPrevAddr(test1) + + // before claim + oblOld := obl.BalanceOf(a2u(test1)) + shouldEQ(t, oblOld, 499999900000000) + + CollectReward(3) + std.TestSkipHeights(1) + + oblNew := obl.BalanceOf(a2u(test1)) + shouldEQ(t, oblNew, 499999900000035) +} + +func TestCollectAll(t *testing.T) { + std.TestSetPrevAddr(test1) + + CollectReward(1) + CollectReward(2) + CollectReward(3) + std.TestSkipHeights(3) + + // claimed all remaining reward +} + +func TestUnstakeToken1(t *testing.T) { + std.TestSetPrevAddr(test1) + gnsOld := gns.BalanceOf(a2u(test1)) + oblOld := obl.BalanceOf(a2u(test1)) + shouldEQ(t, gnsOld, 100000000700) + shouldEQ(t, oblOld, 499999900000035) + + std.TestSkipHeights(100000) + UnstakeToken(1) + gnsNew := gns.BalanceOf(a2u(test1)) + shouldEQ(t, gnsNew, 100000001250) + + UnstakeToken(2) + gnsNew = gns.BalanceOf(a2u(test1)) + shouldEQ(t, gnsNew, 100000001580) + + UnstakeToken(3) + oblNew := obl.BalanceOf(a2u(test1)) + shouldEQ(t, oblNew, 499999900000049) + + std.TestSkipHeights(1) +} diff --git a/staker/_TEST_staker_one_external_native_test.gnoa b/staker/_TEST_staker_one_external_native_test.gnoa index 0d16305c..c6567079 100644 --- a/staker/_TEST_staker_one_external_native_test.gnoa +++ b/staker/_TEST_staker_one_external_native_test.gnoa @@ -4,13 +4,13 @@ import ( "std" "testing" - p "gno.land/r/demo/pool" - pos "gno.land/r/demo/position" + pl "gno.land/r/demo/pool" + pn "gno.land/r/demo/position" - gnft "gno.land/r/demo/gnft" // GNFT, Gnoswap NFT - gns "gno.land/r/demo/gns" // GNS, Gnoswap Share + "gno.land/r/demo/gnft" + "gno.land/r/demo/gns" - wugnot "gno.land/r/demo/wugnot" + "gno.land/r/demo/wugnot" ) func init() { @@ -32,17 +32,17 @@ func init() { func TestPoolInitCreatePool(t *testing.T) { std.TestSetOrigCaller(test1) - p.InitManual() + pl.InitManual() std.TestSkipHeights(1) - p.CreatePool(barPath, fooPath, 500, 130621891405341611593710811006) + pl.CreatePool(barPath, fooPath, 500, 130621891405341611593710811006) std.TestSkipHeights(1) } func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( barPath, // token0 fooPath, // token1 uint16(500), // fee @@ -67,7 +67,7 @@ func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( barPath, // token10 fooPath, // token1 uint16(500), // fee @@ -154,8 +154,8 @@ func TestUnstakeToken(t *testing.T) { shouldEQ(t, gnft.OwnerOf(tid(2)), test1) // check reward - shouldEQ(t, gns.BalanceOf(a2u(test1)), 100000000325) // internal - shouldEQ(t, wugnot.BalanceOf(a2u(test1)), 2121) // external + shouldEQ(t, gns.BalanceOf(a2u(test1)), 100000000451) // internal + shouldEQ(t, wugnot.BalanceOf(a2u(test1)), 2445) // external } } diff --git a/staker/_TEST_staker_one_external_test.gnoa b/staker/_TEST_staker_one_external_test.gnoa index 26c59cab..fa2fd4ff 100644 --- a/staker/_TEST_staker_one_external_test.gnoa +++ b/staker/_TEST_staker_one_external_test.gnoa @@ -6,12 +6,12 @@ import ( "encoding/gjson" - p "gno.land/r/demo/pool" - pos "gno.land/r/demo/position" + pl "gno.land/r/demo/pool" + pn "gno.land/r/demo/position" - gnft "gno.land/r/demo/gnft" // GNFT, Gnoswap NFT - gns "gno.land/r/demo/gns" // GNS, Gnoswap Share - obl "gno.land/r/demo/obl" + "gno.land/r/demo/gnft" + "gno.land/r/demo/gns" + "gno.land/r/demo/obl" ) func init() { @@ -32,17 +32,17 @@ func init() { func TestPoolInitCreatePool(t *testing.T) { std.TestSetOrigCaller(test1) - p.InitManual() + pl.InitManual() std.TestSkipHeights(1) - p.CreatePool(fooPath, barPath, 500, 130621891405341611593710811006) + pl.CreatePool(fooPath, barPath, 500, 130621891405341611593710811006) std.TestSkipHeights(1) } func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( fooPath, // token0 barPath, // token1 uint16(500), // fee @@ -67,7 +67,7 @@ func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( fooPath, // token0 barPath, // token1 uint16(500), // fee @@ -161,8 +161,8 @@ func TestUnstakeToken(t *testing.T) { shouldEQ(t, gnft.OwnerOf(tid(2)), test1) // check reward - shouldEQ(t, gns.BalanceOf(a2u(test1)), 100000000325) // internal - shouldEQ(t, obl.BalanceOf(a2u(test1)), 499990000002121) // external + shouldEQ(t, gns.BalanceOf(a2u(test1)), 100000000451) // internal + shouldEQ(t, obl.BalanceOf(a2u(test1)), 499990000002445) // external } } diff --git a/staker/_TEST_staker_one_increase_external_test.gnoa b/staker/_TEST_staker_one_increase_external_test.gnoa index 2bd192a5..de151280 100644 --- a/staker/_TEST_staker_one_increase_external_test.gnoa +++ b/staker/_TEST_staker_one_increase_external_test.gnoa @@ -4,12 +4,12 @@ import ( "std" "testing" - p "gno.land/r/demo/pool" - pos "gno.land/r/demo/position" + pl "gno.land/r/demo/pool" + pn "gno.land/r/demo/position" - gnft "gno.land/r/demo/gnft" // GNFT, Gnoswap NFT - gns "gno.land/r/demo/gns" // GNS, Gnoswap Share - obl "gno.land/r/demo/obl" + "gno.land/r/demo/gnft" + "gno.land/r/demo/gns" + "gno.land/r/demo/obl" ) func init() { @@ -30,17 +30,17 @@ func init() { func TestPoolInitCreatePool(t *testing.T) { std.TestSetOrigCaller(test1) - p.InitManual() + pl.InitManual() std.TestSkipHeights(1) - p.CreatePool(fooPath, barPath, 500, 130621891405341611593710811006) + pl.CreatePool(fooPath, barPath, 500, 130621891405341611593710811006) std.TestSkipHeights(1) } func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( fooPath, // token0 barPath, // token1 uint16(500), // fee @@ -65,7 +65,7 @@ func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( fooPath, // token0 barPath, // token1 uint16(500), // fee @@ -144,8 +144,8 @@ func TestUnstakeToken(t *testing.T) { shouldEQ(t, gnft.OwnerOf(tid(2)), test1) // check reward - shouldEQ(t, gns.BalanceOf(a2u(test1)), 100000000325) // internal - shouldEQ(t, obl.BalanceOf(a2u(test1)), 499980000004243) // external + shouldEQ(t, gns.BalanceOf(a2u(test1)), 100000000451) // internal + shouldEQ(t, obl.BalanceOf(a2u(test1)), 499980000004891) // external } } diff --git a/staker/_TEST_staker_rpc_test.gno b/staker/_TEST_staker_rpc_test.gnoa similarity index 88% rename from staker/_TEST_staker_rpc_test.gno rename to staker/_TEST_staker_rpc_test.gnoa index 6d4258a9..87920dba 100644 --- a/staker/_TEST_staker_rpc_test.gno +++ b/staker/_TEST_staker_rpc_test.gnoa @@ -6,12 +6,12 @@ import ( "encoding/gjson" - p "gno.land/r/demo/pool" - pos "gno.land/r/demo/position" + pl "gno.land/r/demo/pool" + pn "gno.land/r/demo/position" - gnft "gno.land/r/demo/gnft" // GNFT, Gnoswap NFT - gns "gno.land/r/demo/gns" // GNS, Gnoswap Share - obl "gno.land/r/demo/obl" // OBL, External Reward Token + "gno.land/r/demo/gnft" + "gno.land/r/demo/gns" + "gno.land/r/demo/obl" ) func init() { @@ -32,17 +32,17 @@ func init() { func TestPoolInitCreatePool(t *testing.T) { std.TestSetOrigCaller(test1) - p.InitManual() + pl.InitManual() std.TestSkipHeights(1) - p.CreatePool(barPath, quxPath, 500, 130621891405341611593710811006) + pl.CreatePool(barPath, quxPath, 500, 130621891405341611593710811006) std.TestSkipHeights(1) } func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( barPath, // token0 quxPath, // token1 uint16(500), // fee @@ -67,7 +67,7 @@ func TestPositionMint(t *testing.T) { { std.TestSetOrigCaller(test1) - tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pos.Mint( + tPosTokenId, tPosLiquidity, tPosAmount0, tPosAmount1 := pn.Mint( barPath, // token0 quxPath, // token1 uint16(500), // fee @@ -173,8 +173,8 @@ func TestUnstakeToken(t *testing.T) { shouldEQ(t, gnft.OwnerOf(tid(2)), test1) // check reward - shouldEQ(t, gns.BalanceOf(a2u(test1)), 100000000325) // internal - shouldEQ(t, obl.BalanceOf(a2u(test1)), 499980000004243) // external + shouldEQ(t, gns.BalanceOf(a2u(test1)), 100000000451) // internal + shouldEQ(t, obl.BalanceOf(a2u(test1)), 499980000004891) // external } } diff --git a/staker/staker_register.gno b/staker/staker_register.gno index ceabe898..22937a77 100644 --- a/staker/staker_register.gno +++ b/staker/staker_register.gno @@ -6,9 +6,9 @@ import ( "gno.land/r/demo/users" "gno.land/p/demo/ufmt" -) -const APPROVED_CALLER = "g12l9splsyngcgefrwa52x5a7scc29e9v086m6p4" // r3v4_xxx: CHANGE WHEN DEPLOYING TO OFFICIAL NETWORK + "gno.land/r/demo/consts" +) var registered = []GRC20Pair{} @@ -53,7 +53,7 @@ func RegisterGRC20Interface(pkgPath string, igrc20 GRC20Interface) { // r3v4_xxx: however must be used in production // caller := std.GetOrigCaller() - // if caller != APPROVED_CALLER { + // if caller != consts.GNOSWAP_ADMIN { // panic("unauthorized address to register") // } @@ -69,7 +69,7 @@ func UnregisterGRC20Interface(pkgPath string) { // only admin can unregister caller := std.GetOrigCaller() - if caller != APPROVED_CALLER { + if caller != consts.GNOSWAP_ADMIN { panic("unauthorized address to unregister") }