blob: fc2e724a20c7c64a1781f88dd46452f5fbe3e498 [file] [log] [blame]
use super::super::*;
use core::num::bignum::Big32x40 as Big;
use core::num::flt2dec::strategy::dragon::*;
#[test]
fn test_mul_pow10() {
let mut prevpow10 = Big::from_small(1);
for i in 1..340 {
let mut curpow10 = Big::from_small(1);
mul_pow10(&mut curpow10, i);
assert_eq!(curpow10, *prevpow10.clone().mul_small(10));
prevpow10 = curpow10;
}
}
#[test]
fn shortest_sanity_test() {
f64_shortest_sanity_test(format_shortest);
f32_shortest_sanity_test(format_shortest);
more_shortest_sanity_test(format_shortest);
}
#[test]
#[cfg_attr(miri, ignore)] // Miri is too slow
fn exact_sanity_test() {
// This test ends up running what I can only assume is some corner-ish case
// of the `exp2` library function, defined in whatever C runtime we're
// using. In VS 2013 this function apparently had a bug as this test fails
// when linked, but with VS 2015 the bug appears fixed as the test runs just
// fine.
//
// The bug seems to be a difference in return value of `exp2(-1057)`, where
// in VS 2013 it returns a double with the bit pattern 0x2 and in VS 2015 it
// returns 0x20000.
//
// For now just ignore this test entirely on MSVC as it's tested elsewhere
// anyway and we're not super interested in testing each platform's exp2
// implementation.
if !cfg!(target_env = "msvc") {
f64_exact_sanity_test(format_exact);
}
f32_exact_sanity_test(format_exact);
}
#[test]
fn test_to_shortest_str() {
to_shortest_str_test(format_shortest);
}
#[test]
fn test_to_shortest_exp_str() {
to_shortest_exp_str_test(format_shortest);
}
#[test]
fn test_to_exact_exp_str() {
to_exact_exp_str_test(format_exact);
}
#[test]
fn test_to_exact_fixed_str() {
to_exact_fixed_str_test(format_exact);
}