diff --git a/crates/yas_core/src/lib.cairo b/crates/yas_core/src/lib.cairo index b9095371..1c475040 100644 --- a/crates/yas_core/src/lib.cairo +++ b/crates/yas_core/src/lib.cairo @@ -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 { @@ -78,5 +79,6 @@ mod tests { mod pool_5; mod pool_6; mod pool_9; + mod pool_14; } } diff --git a/crates/yas_core/src/tests/test_contracts/test_swap_pool_14.cairo b/crates/yas_core/src/tests/test_contracts/test_swap_pool_14.cairo new file mode 100644 index 00000000..b0f98748 --- /dev/null +++ b/crates/yas_core/src/tests/test_contracts/test_swap_pool_14.cairo @@ -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() + ); + } +} diff --git a/crates/yas_core/src/tests/utils/pool_14.cairo b/crates/yas_core/src/tests/utils/pool_14.cairo new file mode 100644 index 00000000..0cdf7466 --- /dev/null +++ b/crates/yas_core/src/tests/utils/pool_14.cairo @@ -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, Array) { + obtain_swap_cases(array![0, 2, 4, 6, 8, 10, 13, 14]) +} + +fn SWAP_EXPECTED_RESULTS_POOL_14() -> Array { + array![ + SwapExpectedResults { + amount_0_before: 36796311322104302062438284732106019258, + amount_0_delta: IntegerTrait::::new(36796311322104302058426248623781044040, true), + amount_1_before: 0, + amount_1_delta: IntegerTrait::::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::::new(13924, true), + tick_before: IntegerTrait::::new(887272, true), + }, + SwapExpectedResults { + amount_0_before: 36796311322104302062438284732106019258, + amount_0_delta: IntegerTrait::::new(1000000000000000000, true), + amount_1_before: 0, + amount_1_delta: IntegerTrait::::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::::new(887220, true), + tick_before: IntegerTrait::::new(887272, true), + }, + SwapExpectedResults { + amount_0_before: 36796311322104302062438284732106019258, + amount_0_delta: IntegerTrait::::new(36796311322104302058426248623781044040, true), + amount_1_before: 0, + amount_1_delta: IntegerTrait::::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::::new(13924, true), + tick_before: IntegerTrait::::new(887272, true), + }, + SwapExpectedResults { + amount_0_before: 36796311322104302062438284732106019258, + amount_0_delta: IntegerTrait::::new(1000000000000000000, true), + amount_1_before: 0, + amount_1_delta: IntegerTrait::::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::::new(887220, true), + tick_before: IntegerTrait::::new(887272, true), + }, + SwapExpectedResults { + amount_0_before: 36796311322104302062438284732106019258, + amount_0_delta: IntegerTrait::::new(36792226666449146913445651103694411508, true), + amount_1_before: 0, + amount_1_delta: IntegerTrait::::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::::new(705093, true), + tick_before: IntegerTrait::::new(887272, true), + }, + SwapExpectedResults { + amount_0_before: 36796311322104302062438284732106019258, + amount_0_delta: IntegerTrait::::new(1000, true), + amount_1_before: 0, + amount_1_delta: IntegerTrait::::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::::new(887220, true), + tick_before: IntegerTrait::::new(887272, true), + }, + SwapExpectedResults { + amount_0_before: 36796311322104302062438284732106019258, + amount_0_delta: IntegerTrait::::new(36796311322104302061173373668038667492, true), + amount_1_before: 0, + amount_1_delta: IntegerTrait::::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::::new(9163, false), + tick_before: IntegerTrait::::new(887272, true), + }, + SwapExpectedResults { + amount_0_before: 36796311322104302062438284732106019258, + amount_0_delta: IntegerTrait::::new(36796311322104302059276007071937639893, true), + amount_1_before: 0, + amount_1_delta: IntegerTrait::::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::::new(9164, true), + tick_before: IntegerTrait::::new(887272, true), + } + ] +}