From e8af7419eeb50753b9756c2c416b9cbf90cfbe98 Mon Sep 17 00:00:00 2001 From: JChoy Date: Thu, 13 Jun 2024 14:34:41 +0900 Subject: [PATCH] test: add calculate_fee tests --- src/libraries/fee_policy.cairo | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/libraries/fee_policy.cairo b/src/libraries/fee_policy.cairo index 5aed09e..9cd9697 100644 --- a/src/libraries/fee_policy.cairo +++ b/src/libraries/fee_policy.cairo @@ -67,6 +67,7 @@ impl FeePolicyStorePacking of StorePacking { #[cfg(test)] mod tests { use super::FeePolicy; + use super::FeePolicyImpl; use super::StorePacking; #[test] @@ -119,4 +120,27 @@ mod tests { assert_eq!(fee_policy.sign, false); assert_eq!(fee_policy.rate, 0); } + + #[test] + fn calculate_fee() { + _calculate_fee((false, 1000), 1000000, false, (false, 1000)); + _calculate_fee((true, 1000), 1000000, false, (true, 1000)); + _calculate_fee((false, 1000), 1000000, true, (false, 1000)); + _calculate_fee((true, 1000), 1000000, true, (true, 1000)); + // zero value tests + _calculate_fee((false, 0), 1000000, false, (false, 0)); + _calculate_fee((false, 1000), 0, false, (false, 0)); + // rounding tests + _calculate_fee((false, 1500), 1000, false, (false, 2)); + _calculate_fee((true, 1500), 1000, false, (true, 1)); + _calculate_fee((false, 1500), 1000, true, (false, 1)); + _calculate_fee((true, 1500), 1000, true, (true, 2)); + } + + fn _calculate_fee(rate: (bool, u32), amount: u256, reverse_rounding: bool, expected: (bool, u256)) { + let (s, r) = rate; + let fee_policy: FeePolicy = FeePolicy { uses_quote: true, sign: s, rate: r, }; + let result = fee_policy.calculate_fee(amount, reverse_rounding); + assert_eq!(result, expected); + } }