From 76567a0d2f5bbcb4434fdfde5f9a0ed4a4a271c0 Mon Sep 17 00:00:00 2001 From: SamixYasuke Date: Sun, 29 Mar 2026 11:20:49 +0100 Subject: [PATCH] test: added swap output validation tests --- contract/src/liquidity.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/contract/src/liquidity.rs b/contract/src/liquidity.rs index aa99b2f5..7fe44594 100644 --- a/contract/src/liquidity.rs +++ b/contract/src/liquidity.rs @@ -67,3 +67,35 @@ pub fn calculate_swap_output( // TODO: get_pool_stats // TODO: get_lp_position + +// ── Tests ───────────────────────────────────────────────────────────────────── + +#[cfg(test)] +mod tests { + use super::*; + use crate::errors::InsightArenaError; + + #[test] + fn test_calculate_swap_output_zero_input_fails() { + // Should return InvalidInput error + let result = calculate_swap_output(0, 1000, 1000, 30); + assert_eq!(result, Err(InsightArenaError::InvalidInput)); + } + + #[test] + fn test_calculate_swap_output_zero_reserve_fails() { + // Should return InvalidInput error + let result_in = calculate_swap_output(100, 0, 1000, 30); + assert_eq!(result_in, Err(InsightArenaError::InvalidInput)); + + let result_out = calculate_swap_output(100, 1000, 0, 30); + assert_eq!(result_out, Err(InsightArenaError::InvalidInput)); + } + + #[test] + fn test_calculate_swap_output_overflow_protection() { + // Try: i128::MAX → Should return Overflow error + let result = calculate_swap_output(i128::MAX, 1000, 1000, 30); + assert_eq!(result, Err(InsightArenaError::Overflow)); + } +}