Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions packages/margin_trading/tests/margin_pool_math_tests.move
Original file line number Diff line number Diff line change
Expand Up @@ -155,3 +155,35 @@ fun test_borrow_supply(duration: u64, borrow: u64, supply: u64) {
test::return_shared(pool);
cleanup_test(registry, admin_cap, maintainer_cap, clock, scenario);
}

#[test]
fun test_zero_utilization() {
let (mut scenario, mut clock, admin_cap, maintainer_cap, pool_id) = setup_test();
scenario.next_tx(test_constants::admin());
let mut pool = scenario.take_shared_by_id<MarginPool<USDC>>(pool_id);
let registry = scenario.take_shared<MarginRegistry>();

scenario.next_tx(test_constants::user1());
let supply = 100 * test_constants::usdc_multiplier();
let coin = mint_coin<USDC>(supply, scenario.ctx());
pool.supply(&registry, coin, &clock, scenario.ctx());

advance_time(&mut clock, margin_constants::year_ms());

// Withdraw should give back same amount
scenario.next_tx(test_constants::user1());
let withdrawn_coin = pool.withdraw(&registry, option::none(), &clock, scenario.ctx());
assert!(withdrawn_coin.value() == supply);
destroy(withdrawn_coin);

test::return_shared(pool);
cleanup_test(registry, admin_cap, maintainer_cap, clock, scenario);
}

#[test]
fun test_high_utilization_interest() {
let duration = 1;
let borrow = 79 * test_constants::usdc_multiplier(); // Just below optimal utilization
let supply = 100 * test_constants::usdc_multiplier();
test_borrow_supply(duration, borrow, supply);
}
Loading