// 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_value(), 0, 0), i32::min_value() ); assert_eq!( scientific_exponent(i32::min_value(), 0, 5), i32::min_value() ); // Overflow assert_eq!( scientific_exponent(i32::max_value(), 0, 0), i32::max_value() - 1 ); assert_eq!( scientific_exponent(i32::max_value(), 5, 0), i32::max_value() ); } #[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_value(), 5, 0), i32::max_value() - 5 ); assert_eq!(mantissa_exponent(i32::max_value(), 0, 5), i32::max_value()); assert_eq!(mantissa_exponent(i32::min_value(), 5, 0), i32::min_value()); assert_eq!( mantissa_exponent(i32::min_value(), 0, 5), i32::min_value() + 5 ); }