From 09d2f2f1f5bc8ed44b027c2c8ebad768ca5cb0a1 Mon Sep 17 00:00:00 2001 From: Wilfried Chauveau Date: Mon, 6 Feb 2017 06:26:55 +0100 Subject: [PATCH] exclude from tests values out of integer range (and NaN). --- src/float/conv.rs | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/float/conv.rs b/src/float/conv.rs index 93437c8..00259ec 100755 --- a/src/float/conv.rs +++ b/src/float/conv.rs @@ -200,43 +200,67 @@ mod tests { fn __fixsfsi(f: extern fn(f32) -> i32, a: F32) -> Option { - Some(I32(f(a.0))) + if a.0 > (i32::max_value() as f32) || + a.0 < (i32::min_value() as f32) || a.0.is_nan() { + None + } else { Some(I32(f(a.0))) } } fn __fixsfdi(f: extern fn(f32) -> i64, a: F32) -> Option { - Some(I64(f(a.0))) + if a.0 > (i64::max_value() as f32) || + a.0 < (i64::min_value() as f32) || a.0.is_nan() { + None + } else { Some(I64(f(a.0))) } } fn __fixdfsi(f: extern fn(f64) -> i32, a: F64) -> Option { - Some(I32(f(a.0))) + if a.0 > (i32::max_value() as f64) || + a.0 < (i32::min_value() as f64) || a.0.is_nan() { + None + } else { Some(I32(f(a.0))) } } fn __fixdfdi(f: extern fn(f64) -> i64, a: F64) -> Option { - Some(I64(f(a.0))) + if a.0 > (i64::max_value() as f64) || + a.0 < (i64::min_value() as f64) || a.0.is_nan() { + None + } else { Some(I64(f(a.0))) } } fn __fixunssfsi(f: extern fn(f32) -> u32, a: F32) -> Option { - Some(U32(f(a.0))) + if a.0 > (u32::max_value() as f32) || + a.0 < (u32::min_value() as f32) || a.0.is_nan() { + None + } else { Some(U32(f(a.0))) } } fn __fixunssfdi(f: extern fn(f32) -> u64, a: F32) -> Option { - Some(U64(f(a.0))) + if a.0 > (u64::max_value() as f32) || + a.0 < (u64::min_value() as f32) || a.0.is_nan() { + None + } else { Some(U64(f(a.0))) } } fn __fixunsdfsi(f: extern fn(f64) -> u32, a: F64) -> Option { - Some(U32(f(a.0))) + if a.0 > (u32::max_value() as f64) || + a.0 < (u32::min_value() as f64) || a.0.is_nan() { + None + } else { Some(U32(f(a.0))) } } fn __fixunsdfdi(f: extern fn(f64) -> u64, a: F64) -> Option { - Some(U64(f(a.0))) + if a.0 <= (u64::max_value() as f64) || + a.0 >= (u64::min_value() as f64) || a.0.is_nan() { + None + } else { Some(U64(f(a.0))) } } } }