use dashu_int::{IBig, UBig}; mod helper_macros; #[test] fn test_sum() { let nums = [ ubig!(0), ubig!(1), ubig!(10), ubig!(100), ubig!(10000), ubig!(100000000), ubig!(10000000000000000), ubig!(100000000000000000000000000000000), ]; assert_eq!(nums[..0].iter().sum::(), ubig!(0)); assert_eq!(nums[..1].iter().sum::(), ubig!(0)); assert_eq!(nums[..2].iter().sum::(), ubig!(1)); assert_eq!(nums[..4].iter().sum::(), ubig!(111)); assert_eq!(nums.iter().sum::(), ubig!(100000000000000010000000100010111)); assert_eq!(nums.iter().sum::(), ibig!(100000000000000010000000100010111)); assert_eq!(nums.into_iter().sum::(), ubig!(100000000000000010000000100010111)); let nums = [ ibig!(0), ibig!(-1), ibig!(10), ibig!(-100), ibig!(10000), ibig!(-100000000), ibig!(10000000000000000), ibig!(-100000000000000000000000000000000), ]; assert_eq!(nums[..0].iter().sum::(), ibig!(0)); assert_eq!(nums[..1].iter().sum::(), ibig!(0)); assert_eq!(nums[..2].iter().sum::(), ibig!(-1)); assert_eq!(nums[..4].iter().sum::(), ibig!(-91)); assert_eq!(nums.iter().sum::(), ibig!(-99999999999999990000000099990091)); assert_eq!(nums.into_iter().sum::(), ibig!(-99999999999999990000000099990091)); } #[test] fn test_prod() { assert_eq!((1..4u8).map(UBig::from).product::(), ubig!(6)); assert_eq!((1..10u8).map(UBig::from).product::(), ubig!(362880)); assert_eq!((1..10u8).map(UBig::from).product::(), ibig!(362880)); assert_eq!((0..4u8).map(UBig::from).product::(), ubig!(0)); assert_eq!((0..10u8).map(UBig::from).product::(), ubig!(0)); assert_eq!((0..10u8).map(UBig::from).product::(), ibig!(0)); assert_eq!((-4..-1).map(IBig::from).product::(), ibig!(-24)); assert_eq!((-10..-1).map(IBig::from).product::(), ibig!(-3628800)); assert_eq!((-4..4).map(IBig::from).product::(), ibig!(0)); assert_eq!((-10..10).map(IBig::from).product::(), ibig!(0)); }