11use {
22 crate :: app_data,
3- alloy:: primitives:: { U256 , U512 , Uint , ruint:: UintTryFrom } ,
3+ alloy:: primitives:: { U256 , U512 , ruint:: UintTryFrom } ,
44 bigdecimal:: { BigDecimal , FromPrimitive } ,
55 chrono:: { TimeZone , Utc } ,
66 configs:: { fee_factor:: FeeFactor , orderbook:: VolumeFeeConfig } ,
@@ -610,16 +610,17 @@ mod tests {
610610
611611 #[ test]
612612 fn test_volume_fee_rounds_up_buy_order ( ) {
613- // factor 0.0001, sell_amount 12345, network fee 0: 12345/10000 = 1.2345 -> ceil
614- // 2.
613+ // factor 0.0001, sell 10_000, network fee 5: ceil((10000 + 5)/10000) = ceil(1.0005) = 2
615614 let volume_fee = FeeFactor :: try_from ( 0.0001 ) . unwrap ( ) ;
616615 let volume_fee_config = VolumeFeeConfig {
617616 factor : Some ( volume_fee) ,
618617 effective_from_timestamp : None ,
619618 } ;
620619 let volume_fee_policy = VolumeFeePolicy :: new ( vec ! [ ] , Some ( volume_fee) , false ) ;
621620
622- let quote = create_test_quote ( U256 :: from ( 12345u64 ) , U256 :: from ( 100u64 ) ) ;
621+ let mut quote = create_test_quote ( U256 :: from ( 10_000u64 ) , U256 :: from ( 100u64 ) ) ;
622+ quote. fee_amount = U256 :: from ( 5u64 ) ;
623+
623624 let side = OrderQuoteSide :: Buy {
624625 buy_amount_after_fee : number:: nonzero:: NonZeroU256 :: try_from ( U256 :: from ( 100u64 ) )
625626 . unwrap ( ) ,
@@ -635,7 +636,7 @@ mod tests {
635636 )
636637 . unwrap ( ) ;
637638
638- assert_eq ! ( result. sell_amount, U256 :: from( 12345u64 + 2 ) ) ;
639+ assert_eq ! ( result. sell_amount, U256 :: from( 10_000u64 + 2 ) ) ;
639640 assert_eq ! ( result. buy_amount, U256 :: from( 100u64 ) ) ;
640641 }
641642
0 commit comments