Skip to content

Commit 3a6e057

Browse files
committed
Adding Solend test 'test_pool_reward_manager_multiple_rewards'
1 parent 430d720 commit 3a6e057

File tree

2 files changed

+84
-2
lines changed

2 files changed

+84
-2
lines changed

token-lending/program/tests/helpers/solend_program_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ mod cu_budgets {
6262
pub(super) const DEPOSIT_OBLIGATION_COLLATERAL: u32 = 38_002;
6363
pub(super) const REFRESH_RESERVE: u32 = 2_000_003;
6464
pub(super) const REFRESH_OBLIGATION: u32 = 1_000_004;
65-
pub(super) const BORROW_OBLIGATION_LIQUIDITY: u32 = 100_005;
65+
pub(super) const BORROW_OBLIGATION_LIQUIDITY: u32 = 140_005;
6666
pub(super) const REPAY_OBLIGATION_LIQUIDITY: u32 = 35_006;
6767
pub(super) const REDEEM_FEES: u32 = 80_007;
6868
pub(super) const LIQUIDATE_OBLIGATION_AND_REDEEM_RESERVE_COLLATERAL: u32 = 110_008;

token-lending/sdk/src/state/liquidity_mining.rs

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1226,9 +1226,91 @@ mod tests {
12261226
}
12271227
}
12281228

1229+
/// This tests replicates calculations from Suilend's
1230+
/// "test_pool_reward_manager_multiple_rewards" test.
12291231
#[test]
12301232
fn it_tests_pool_reward_manager_multiple_rewards() {
1231-
// TODO: rewrite Suilend "test_pool_reward_manager_multiple_rewards"
1233+
let usdc = Pubkey::new_unique(); // reserve pubkey
1234+
let slnd_vault1 = Pubkey::new_unique(); // where rewards are stored
1235+
let slnd_vault2 = Pubkey::new_unique(); // where rewards are stored
1236+
1237+
let mut clock = Clock {
1238+
unix_timestamp: 0,
1239+
..Default::default()
1240+
};
1241+
1242+
let mut pool_reward_manager = PoolRewardManager::default();
1243+
{
1244+
// setup a reward that starts now and lasts for 20 days
1245+
1246+
pool_reward_manager
1247+
.add_pool_reward(
1248+
slnd_vault1,
1249+
0,
1250+
20 * MILLISECONDS_IN_DAY,
1251+
100 * 1_000_000,
1252+
&clock,
1253+
)
1254+
.expect("It adds pool reward");
1255+
1256+
// and another reward that starts in 10 days and lasts for 10 days
1257+
1258+
pool_reward_manager
1259+
.add_pool_reward(
1260+
slnd_vault2,
1261+
10 * MILLISECONDS_IN_DAY,
1262+
20 * MILLISECONDS_IN_DAY,
1263+
100 * 1_000_000,
1264+
&clock,
1265+
)
1266+
.expect("It adds pool reward");
1267+
}
1268+
1269+
let mut user_reward_manager_1 = UserRewardManager::new(usdc, PositionKind::Deposit, &clock);
1270+
{
1271+
// setup user reward manager with 100/100 shares
1272+
1273+
user_reward_manager_1
1274+
.populate(&mut pool_reward_manager, &clock)
1275+
.expect("It populates user reward manager");
1276+
user_reward_manager_1.set_share(&mut pool_reward_manager, 100);
1277+
}
1278+
1279+
clock.unix_timestamp = 15 * MILLISECONDS_IN_DAY as i64;
1280+
1281+
let mut user_reward_manager_2 = UserRewardManager::new(usdc, PositionKind::Deposit, &clock);
1282+
{
1283+
// setup user reward manager with 100/200 shares
1284+
1285+
user_reward_manager_2
1286+
.populate(&mut pool_reward_manager, &clock)
1287+
.expect("It populates user reward manager");
1288+
user_reward_manager_2.set_share(&mut pool_reward_manager, 100);
1289+
}
1290+
1291+
{
1292+
clock.unix_timestamp = 30 * MILLISECONDS_IN_DAY as i64;
1293+
1294+
let claimed_slnd = user_reward_manager_1
1295+
.claim_rewards(&mut pool_reward_manager, slnd_vault1, &clock)
1296+
.expect("It claims rewards");
1297+
assert_eq!(claimed_slnd, 87_500_000);
1298+
1299+
let claimed_slnd = user_reward_manager_1
1300+
.claim_rewards(&mut pool_reward_manager, slnd_vault2, &clock)
1301+
.expect("It claims rewards");
1302+
assert_eq!(claimed_slnd, 75 * 1_000_000);
1303+
1304+
let claimed_slnd = user_reward_manager_2
1305+
.claim_rewards(&mut pool_reward_manager, slnd_vault1, &clock)
1306+
.expect("It claims rewards");
1307+
assert_eq!(claimed_slnd, 12_500_000);
1308+
1309+
let claimed_slnd = user_reward_manager_2
1310+
.claim_rewards(&mut pool_reward_manager, slnd_vault2, &clock)
1311+
.expect("It claims rewards");
1312+
assert_eq!(claimed_slnd, 25 * 1_000_000);
1313+
}
12321314
}
12331315

12341316
#[test]

0 commit comments

Comments
 (0)