-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
use drink::{runtime::MinimalRuntime, session::Session}; | ||
use super::*; | ||
use drink::{runtime::MinimalRuntime, session::Session}; | ||
|
||
const USDT_DEC: u8 = 6; | ||
const USDC_DEC: u8 = 6; | ||
|
@@ -11,14 +11,72 @@ fn test_min_initial_reserve( | |
initial_reserves: Vec<u128>, | ||
expected_result: Result<(u128, u128), StablePoolError>, | ||
) { | ||
let (stable_swap, _) = | ||
setup_stable_swap_with_tokens(session, token_decimals, initial_reserves.clone(), 1000, 25, 6, BOB); | ||
let res = stable_swap::add_liquidity( | ||
let (stable_swap, _) = setup_stable_swap_with_tokens( | ||
session, | ||
token_decimals, | ||
initial_reserves.clone(), | ||
1000, | ||
25, | ||
6, | ||
BOB, | ||
); | ||
let res = stable_swap::add_liquidity(session, stable_swap, BOB, 1, initial_reserves, bob()); | ||
assert_eq!(expected_result, res, "Unexpected result"); | ||
} | ||
|
||
fn test_min_reserve_withdraw_liquidity( | ||
session: &mut Session<MinimalRuntime>, | ||
token_decimals: Vec<u8>, | ||
initial_reserves: Vec<u128>, | ||
withdraw_amounts: Vec<u128>, | ||
expected_result: Result<(u128, u128), StablePoolError>, | ||
) { | ||
let (stable_swap, _) = setup_stable_swap_with_tokens( | ||
session, | ||
token_decimals, | ||
initial_reserves.clone(), | ||
1000, | ||
25, | ||
6, | ||
BOB, | ||
); | ||
_ = stable_swap::add_liquidity(session, stable_swap, BOB, 1, initial_reserves, bob()); | ||
|
||
let res = stable_swap::remove_liquidity_by_amounts( | ||
session, | ||
stable_swap, | ||
BOB, | ||
u128::MAX, // allow inifite max share to burn | ||
withdraw_amounts, | ||
bob(), | ||
); | ||
assert_eq!(expected_result, res, "Unexpected result"); | ||
} | ||
|
||
fn test_min_reserve_withdraw_liquidity_by_shares( | ||
session: &mut Session<MinimalRuntime>, | ||
token_decimals: Vec<u8>, | ||
initial_reserves: Vec<u128>, | ||
withdraw_shares: u128, | ||
expected_result: Result<Vec<u128>, StablePoolError>, | ||
) { | ||
let (stable_swap, _) = setup_stable_swap_with_tokens( | ||
session, | ||
token_decimals, | ||
initial_reserves.clone(), | ||
1000, | ||
25, | ||
6, | ||
BOB, | ||
); | ||
_ = stable_swap::add_liquidity(session, stable_swap, BOB, 1, initial_reserves, bob()); | ||
|
||
let res = stable_swap::remove_liquidity_by_shares( | ||
session, | ||
stable_swap, | ||
BOB, | ||
1, | ||
initial_reserves, | ||
withdraw_shares, | ||
vec![1, 1, 1], // min withdraw amounts | ||
bob(), | ||
); | ||
assert_eq!(expected_result, res, "Unexpected result"); | ||
|
@@ -74,7 +132,163 @@ fn test_05(session: &mut Session) { | |
test_min_initial_reserve( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![1_000_000u128, 100_000_000_000_000_000u128], | ||
Err(StablePoolError::MinReserve()), | ||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_06(session: &mut Session) { | ||
// reserves one 1 usdt, 1 dai | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong. |
||
// withdraw 1 usdt, 1 dai | ||
test_min_reserve_withdraw_liquidity( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![1_000_000u128, 1_000_000_000_000_000_000u128], | ||
vec![1_000_000u128, 1_000_000_000_000_000_000u128], | ||
Err(StablePoolError::MinReserve()), | ||
This comment has been minimized.
Sorry, something went wrong.
deuszx
Contributor
|
||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_07(session: &mut Session) { | ||
// reserves one 1 usdt, 1 dai | ||
// withdraw 0.1 usdt, 0.1 dai | ||
test_min_reserve_withdraw_liquidity( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![1_000_000u128, 1_000_000_000_000_000_000u128], | ||
vec![100_000u128, 100_000_000_000_000_000u128], | ||
Err(StablePoolError::MinReserve()), | ||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_08(session: &mut Session) { | ||
// reserves one 2 usdt, 2 dai | ||
// withdraw 1 usdt, 1 dai | ||
test_min_reserve_withdraw_liquidity( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![2_000_000u128, 2_000_000_000_000_000_000u128], | ||
This comment has been minimized.
Sorry, something went wrong.
deuszx
Contributor
|
||
vec![1_000_000u128, 1_000_000_000_000_000_000u128], | ||
Ok((2000000000000000000, 0)), | ||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_09(session: &mut Session) { | ||
// reserves one 2 usdt, 2 dai | ||
// withdraw 1.1 usdt, 1.1 dai | ||
test_min_reserve_withdraw_liquidity( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![2_000_000u128, 2_000_000_000_000_000_000u128], | ||
vec![1_100_000u128, 1_100_000_000_000_000_000u128], | ||
Err(StablePoolError::MinReserve()), | ||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_10(session: &mut Session) { | ||
// reserves one 2 usdt, 2 dai | ||
// withdraw 1.5 usdt, 0.5 dai | ||
test_min_reserve_withdraw_liquidity( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![2_000_000u128, 2_000_000_000_000_000_000u128], | ||
vec![1_500_000u128, 500_000_000_000_000_000u128], | ||
Err(StablePoolError::MinReserve()), | ||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_11(session: &mut Session) { | ||
// reserves one 2 usdt, 2 dai | ||
// withdraw 0.5 usdt, 0.5 dai | ||
test_min_reserve_withdraw_liquidity( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![2_000_000u128, 2_000_000_000_000_000_000u128], | ||
vec![500_000u128, 500_000_000_000_000_000u128], | ||
Ok((1000000000000000000, 0)), | ||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_12(session: &mut Session) { | ||
// reserves one 1 usdt, 1 dai | ||
// withdraw 1 usdt, 1 dai | ||
test_min_reserve_withdraw_liquidity_by_shares( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![1_000_000u128, 1_000_000_000_000_000_000u128], | ||
2000000000000000000, // 100% | ||
Err(StablePoolError::MinReserve()), | ||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_13(session: &mut Session) { | ||
// reserves one 1 usdt, 1 dai | ||
// withdraw 0.1 usdt, 0.1 dai | ||
test_min_reserve_withdraw_liquidity_by_shares( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![1_000_000u128, 1_000_000_000_000_000_000u128], | ||
2000000000000000000 / 10, // 10% | ||
Err(StablePoolError::MinReserve()), | ||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_14(session: &mut Session) { | ||
// reserves one 2 usdt, 2 dai | ||
// withdraw 1 usdt, 1 dai | ||
test_min_reserve_withdraw_liquidity_by_shares( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![2_000_000u128, 2_000_000_000_000_000_000u128], | ||
2000000000000000000, // 50% | ||
Ok(vec![1_000_000u128, 1_000_000_000_000_000_000u128]), | ||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_15(session: &mut Session) { | ||
// reserves one 2 usdt, 2 dai | ||
// withdraw 1.1 usdt, 1.1 dai | ||
test_min_reserve_withdraw_liquidity_by_shares( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![2_000_000u128, 2_000_000_000_000_000_000u128], | ||
4000000000000000000 * 51 / 100, // 51 % | ||
Err(StablePoolError::MinReserve()), | ||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_16(session: &mut Session) { | ||
// reserves one 2 usdt, 2 dai | ||
// withdraw 1.5 usdt, 0.5 dai | ||
test_min_reserve_withdraw_liquidity_by_shares( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![2_000_000u128, 2_000_000_000_000_000_000u128], | ||
4000000000000000000 * 3 / 4, // 75% | ||
Err(StablePoolError::MinReserve()), | ||
); | ||
} | ||
|
||
#[drink::test] | ||
fn test_17(session: &mut Session) { | ||
// reserves one 2 usdt, 2 dai | ||
// withdraw 0.5 usdt, 0.5 dai | ||
test_min_reserve_withdraw_liquidity_by_shares( | ||
&mut session, | ||
vec![USDT_DEC, DAI_DEC], | ||
vec![2_000_000u128, 2_000_000_000_000_000_000u128], | ||
4000000000000000000 / 4, // 25% | ||
Ok(vec![500_000u128, 500_000_000_000_000_000u128]), | ||
); | ||
} |
what's this one doing here? (and everywhere else for that matter:))