// Adapted from https://github.com/Alexhuszagh/rust-lexical. use crate::lexical::exponent::*; #[test] fn scientific_exponent_test() { // 0 digits in the integer assert_eq!(scientific_exponent(0, 0, 5), -6); assert_eq!(scientific_exponent(10, 0, 5), 4); assert_eq!(scientific_exponent(-10, 0, 5), -16); // >0 digits in the integer assert_eq!(scientific_exponent(0, 1, 5), 0); assert_eq!(scientific_exponent(0, 2, 5), 1); assert_eq!(scientific_exponent(0, 2, 20), 1); assert_eq!(scientific_exponent(10, 2, 20), 11); assert_eq!(scientific_exponent(-10, 2, 20), -9); // Underflow assert_eq!(scientific_exponent(i32::MIN, 0, 0), i32::MIN); assert_eq!(scientific_exponent(i32::MIN, 0, 5), i32::MIN); // Overflow assert_eq!(scientific_exponent(i32::MAX, 0, 0), i32::MAX - 1); assert_eq!(scientific_exponent(i32::MAX, 5, 0), i32::MAX); } #[test] fn mantissa_exponent_test() { assert_eq!(mantissa_exponent(10, 5, 0), 5); assert_eq!(mantissa_exponent(0, 5, 0), -5); assert_eq!(mantissa_exponent(i32::MAX, 5, 0), i32::MAX - 5); assert_eq!(mantissa_exponent(i32::MAX, 0, 5), i32::MAX); assert_eq!(mantissa_exponent(i32::MIN, 5, 0), i32::MIN); assert_eq!(mantissa_exponent(i32::MIN, 0, 5), i32::MIN + 5); }