Skip to content

Commit

Permalink
Add swap() tests for Pool 14 (#182)
Browse files Browse the repository at this point in the history
Co-authored-by: Santiago Galván (Dub) <[email protected]>
  • Loading branch information
dpinones and dubzn authored Dec 28, 2023
1 parent 9183529 commit 0a1ec61
Show file tree
Hide file tree
Showing 3 changed files with 265 additions and 0 deletions.
2 changes: 2 additions & 0 deletions crates/yas_core/src/lib.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ mod tests {
mod test_swap_pool_5;
mod test_swap_pool_6;
mod test_swap_pool_9;
mod test_swap_pool_14;
}

mod test_libraries {
Expand Down Expand Up @@ -78,5 +79,6 @@ mod tests {
mod pool_5;
mod pool_6;
mod pool_9;
mod pool_14;
}
}
144 changes: 144 additions & 0 deletions crates/yas_core/src/tests/test_contracts/test_swap_pool_14.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
mod PoolCase14 {
use yas_core::tests::utils::swap_helper::SwapTestHelper::test_pool;
use yas_core::tests::utils::pool_14::{SWAP_CASES_POOL_14, SWAP_EXPECTED_RESULTS_POOL_14};
use yas_core::tests::utils::swap_cases::SwapTestHelper::{POOL_CASES};

const PRECISION: u256 = 43;

#[test]
#[available_gas(200000000000)]
fn test_pool_14_success_cases() {
let pool_case = POOL_CASES()[14];
let expected_cases = SWAP_EXPECTED_RESULTS_POOL_14();
let (success_swap_cases, _) = SWAP_CASES_POOL_14();
test_pool(pool_case, expected_cases, success_swap_cases, PRECISION);
}

#[test]
#[available_gas(200000000000)]
#[should_panic(expected: ('SPL', 'ENTRYPOINT_FAILED', 'ENTRYPOINT_FAILED'))]
fn test_pool_14_panics_0() {
let PANIC_CASE = 0;
let pool_case = POOL_CASES()[14];
let (success_swap_cases, panic_swap_cases) = SWAP_CASES_POOL_14();
let expected_cases = SWAP_EXPECTED_RESULTS_POOL_14(); //get random case, is never executed
test_pool(
pool_case,
array![*expected_cases[0]],
array![*panic_swap_cases[PANIC_CASE]],
Zeroable::zero()
);
}

#[test]
#[available_gas(200000000000)]
#[should_panic(expected: ('SPL', 'ENTRYPOINT_FAILED', 'ENTRYPOINT_FAILED'))]
fn test_pool_14_panics_1() {
let PANIC_CASE = 1;
let pool_case = POOL_CASES()[14];
let (success_swap_cases, panic_swap_cases) = SWAP_CASES_POOL_14();
let expected_cases = SWAP_EXPECTED_RESULTS_POOL_14(); //get random case, is never executed
test_pool(
pool_case,
array![*expected_cases[0]],
array![*panic_swap_cases[PANIC_CASE]],
Zeroable::zero()
);
}

#[test]
#[available_gas(200000000000)]
#[should_panic(expected: ('SPL', 'ENTRYPOINT_FAILED', 'ENTRYPOINT_FAILED'))]
fn test_pool_14_panics_2() {
let PANIC_CASE = 2;
let pool_case = POOL_CASES()[14];
let (success_swap_cases, panic_swap_cases) = SWAP_CASES_POOL_14();
let expected_cases = SWAP_EXPECTED_RESULTS_POOL_14(); //get random case, is never executed
test_pool(
pool_case,
array![*expected_cases[0]],
array![*panic_swap_cases[PANIC_CASE]],
Zeroable::zero()
);
}

#[test]
#[available_gas(200000000000)]
#[should_panic(expected: ('SPL', 'ENTRYPOINT_FAILED', 'ENTRYPOINT_FAILED'))]
fn test_pool_14_panics_3() {
let PANIC_CASE = 3;
let pool_case = POOL_CASES()[14];
let (success_swap_cases, panic_swap_cases) = SWAP_CASES_POOL_14();
let expected_cases = SWAP_EXPECTED_RESULTS_POOL_14(); //get random case, is never executed
test_pool(
pool_case,
array![*expected_cases[0]],
array![*panic_swap_cases[PANIC_CASE]],
Zeroable::zero()
);
}

#[test]
#[available_gas(200000000000)]
#[should_panic(expected: ('SPL', 'ENTRYPOINT_FAILED', 'ENTRYPOINT_FAILED'))]
fn test_pool_14_panics_4() {
let PANIC_CASE = 4;
let pool_case = POOL_CASES()[14];
let (success_swap_cases, panic_swap_cases) = SWAP_CASES_POOL_14();
let expected_cases = SWAP_EXPECTED_RESULTS_POOL_14(); //get random case, is never executed
test_pool(
pool_case,
array![*expected_cases[0]],
array![*panic_swap_cases[PANIC_CASE]],
Zeroable::zero()
);
}

#[test]
#[available_gas(200000000000)]
#[should_panic(expected: ('SPL', 'ENTRYPOINT_FAILED', 'ENTRYPOINT_FAILED'))]
fn test_pool_14_panics_5() {
let PANIC_CASE = 5;
let pool_case = POOL_CASES()[14];
let (success_swap_cases, panic_swap_cases) = SWAP_CASES_POOL_14();
let expected_cases = SWAP_EXPECTED_RESULTS_POOL_14(); //get random case, is never executed
test_pool(
pool_case,
array![*expected_cases[0]],
array![*panic_swap_cases[PANIC_CASE]],
Zeroable::zero()
);
}

#[test]
#[available_gas(200000000000)]
#[should_panic(expected: ('SPL', 'ENTRYPOINT_FAILED', 'ENTRYPOINT_FAILED'))]
fn test_pool_14_panics_6() {
let PANIC_CASE = 6;
let pool_case = POOL_CASES()[14];
let (success_swap_cases, panic_swap_cases) = SWAP_CASES_POOL_14();
let expected_cases = SWAP_EXPECTED_RESULTS_POOL_14(); //get random case, is never executed
test_pool(
pool_case,
array![*expected_cases[0]],
array![*panic_swap_cases[PANIC_CASE]],
Zeroable::zero()
);
}

#[test]
#[available_gas(200000000000)]
#[should_panic(expected: ('SPL', 'ENTRYPOINT_FAILED', 'ENTRYPOINT_FAILED'))]
fn test_pool_14_panics_7() {
let PANIC_CASE = 7;
let pool_case = POOL_CASES()[14];
let (success_swap_cases, panic_swap_cases) = SWAP_CASES_POOL_14();
let expected_cases = SWAP_EXPECTED_RESULTS_POOL_14(); //get random case, is never executed
test_pool(
pool_case,
array![*expected_cases[0]],
array![*panic_swap_cases[PANIC_CASE]],
Zeroable::zero()
);
}
}
119 changes: 119 additions & 0 deletions crates/yas_core/src/tests/utils/pool_14.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
use yas_core::numbers::signed_integer::{
i32::i32, i32::i32_div_no_round, i256::i256, integer_trait::IntegerTrait
};
use yas_core::tests::utils::swap_cases::SwapTestHelper::{
SwapExpectedResults, SwapTestCase, PoolTestCase, obtain_swap_cases, POOL_CASES
};

fn SWAP_CASES_POOL_14() -> (Array<SwapTestCase>, Array<SwapTestCase>) {
obtain_swap_cases(array![0, 2, 4, 6, 8, 10, 13, 14])
}

fn SWAP_EXPECTED_RESULTS_POOL_14() -> Array<SwapExpectedResults> {
array![
SwapExpectedResults {
amount_0_before: 36796311322104302062438284732106019258,
amount_0_delta: IntegerTrait::<i256>::new(36796311322104302058426248623781044040, true),
amount_1_before: 0,
amount_1_delta: IntegerTrait::<i256>::new(1000000000000000000, false),
execution_price: 2153155022,
fee_growth_global_0_X128_delta: 0,
fee_growth_global_1_X128_delta: 510423550381413820277666488039994629,
pool_price_after: 39495239013360769732380381856,
pool_price_before: 4295128739,
tick_after: IntegerTrait::<i32>::new(13924, true),
tick_before: IntegerTrait::<i32>::new(887272, true),
},
SwapExpectedResults {
amount_0_before: 36796311322104302062438284732106019258,
amount_0_delta: IntegerTrait::<i256>::new(1000000000000000000, true),
amount_1_before: 0,
amount_1_delta: IntegerTrait::<i256>::new(2, false),
execution_price: 158456325028,
fee_growth_global_0_X128_delta: 0,
fee_growth_global_1_X128_delta: 170141183460469231731,
pool_price_after: 4306310045,
pool_price_before: 4295128739,
tick_after: IntegerTrait::<i32>::new(887220, true),
tick_before: IntegerTrait::<i32>::new(887272, true),
},
SwapExpectedResults {
amount_0_before: 36796311322104302062438284732106019258,
amount_0_delta: IntegerTrait::<i256>::new(36796311322104302058426248623781044040, true),
amount_1_before: 0,
amount_1_delta: IntegerTrait::<i256>::new(1000000000000000000, false),
execution_price: 2153155022,
fee_growth_global_0_X128_delta: 0,
fee_growth_global_1_X128_delta: 510423550381413820277666488039994629,
pool_price_after: 39495239013360769732380381856,
pool_price_before: 4295128739,
tick_after: IntegerTrait::<i32>::new(13924, true),
tick_before: IntegerTrait::<i32>::new(887272, true),
},
SwapExpectedResults {
amount_0_before: 36796311322104302062438284732106019258,
amount_0_delta: IntegerTrait::<i256>::new(1000000000000000000, true),
amount_1_before: 0,
amount_1_delta: IntegerTrait::<i256>::new(2, false),
execution_price: 158456325028,
fee_growth_global_0_X128_delta: 0,
fee_growth_global_1_X128_delta: 170141183460469231731,
pool_price_after: 4306310045,
pool_price_before: 4295128739,
tick_after: IntegerTrait::<i32>::new(887220, true),
tick_before: IntegerTrait::<i32>::new(887272, true),
},
SwapExpectedResults {
amount_0_before: 36796311322104302062438284732106019258,
amount_0_delta: IntegerTrait::<i256>::new(36792226666449146913445651103694411508, true),
amount_1_before: 0,
amount_1_delta: IntegerTrait::<i256>::new(1000, false),
execution_price: 0,
fee_growth_global_0_X128_delta: 0,
fee_growth_global_1_X128_delta: 2381976568446569244235,
pool_price_after: 38793068108090,
pool_price_before: 4295128739,
tick_after: IntegerTrait::<i32>::new(705093, true),
tick_before: IntegerTrait::<i32>::new(887272, true),
},
SwapExpectedResults {
amount_0_before: 36796311322104302062438284732106019258,
amount_0_delta: IntegerTrait::<i256>::new(1000, true),
amount_1_before: 0,
amount_1_delta: IntegerTrait::<i256>::new(2, false),
execution_price: 158456325028528675187087900,
fee_growth_global_0_X128_delta: 0,
fee_growth_global_1_X128_delta: 170141183460469231731,
pool_price_after: 4306310045,
pool_price_before: 4295128739,
tick_after: IntegerTrait::<i32>::new(887220, true),
tick_before: IntegerTrait::<i32>::new(887272, true),
},
SwapExpectedResults {
amount_0_before: 36796311322104302062438284732106019258,
amount_0_delta: IntegerTrait::<i256>::new(36796311322104302061173373668038667492, true),
amount_1_before: 0,
amount_1_delta: IntegerTrait::<i256>::new(3171793039286238112, false),
execution_price: 6829362111,
fee_growth_global_0_X128_delta: 0,
fee_growth_global_1_X128_delta: 1618957864187523634078592530170978294,
pool_price_after: 125270724187523965593206900784,
pool_price_before: 4295128739,
tick_after: IntegerTrait::<i32>::new(9163, false),
tick_before: IntegerTrait::<i32>::new(887272, true),
},
SwapExpectedResults {
amount_0_before: 36796311322104302062438284732106019258,
amount_0_delta: IntegerTrait::<i256>::new(36796311322104302059276007071937639893, true),
amount_1_before: 0,
amount_1_delta: IntegerTrait::<i256>::new(1268717215714495283, false),
execution_price: 2731744844,
fee_growth_global_0_X128_delta: 0,
fee_growth_global_1_X128_delta: 647583145675012958539816297734564973,
pool_price_after: 50108289675009586237282760313,
pool_price_before: 4295128739,
tick_after: IntegerTrait::<i32>::new(9164, true),
tick_before: IntegerTrait::<i32>::new(887272, true),
}
]
}

0 comments on commit 0a1ec61

Please sign in to comment.