From 7548a0d77a7ebc2950421e68dfb06f6a06c58202 Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Wed, 7 Dec 2011 22:02:38 +0100 Subject: [PATCH] Restore accidentally overwritten test --- src/test/run-pass/float-nan.rs | 102 +++++++++++++++++++++++++-------- 1 file changed, 79 insertions(+), 23 deletions(-) diff --git a/src/test/run-pass/float-nan.rs b/src/test/run-pass/float-nan.rs index de78341a199c..c27b97d81da3 100644 --- a/src/test/run-pass/float-nan.rs +++ b/src/test/run-pass/float-nan.rs @@ -1,26 +1,82 @@ use std; - -import std::ctypes::*; - -fn foo_float() -> m_float { ret 0.0 as m_float; } -fn bar_float() -> float { be foo_float() as float; } - -fn foo_int() -> m_int { ret 0 as m_int; } -fn bar_int() -> int { be foo_int() as int; } - -fn foo_uint() -> m_uint { ret 0u as m_uint; } -fn bar_uint() -> uint { be foo_uint() as uint; } - -fn foo_long() -> long { ret 0 as long; } -fn bar_long() -> int { be foo_long() as int; } - -fn foo_ulong() -> ulong { ret 0u as ulong; } -fn bar_ulong() -> uint { be foo_uint() as uint; } +import std::float; fn main() { - assert bar_float() == 0.0; - assert bar_int() == 0; - assert bar_uint() == 0u; - assert bar_long() == 0; - assert bar_ulong() == 0u; -} \ No newline at end of file + let nan = float::NaN; + assert(float::isNaN(nan)); + + let inf = float::infinity; + assert(-inf == float::neg_infinity); + + assert( nan != nan); + assert( nan != -nan); + assert(-nan != -nan); + assert(-nan != nan); + + assert( nan != 1.); + assert( nan != 0.); + assert( nan != inf); + assert( nan != -inf); + + assert( 1. != nan); + assert( 0. != nan); + assert( inf != nan); + assert(-inf != nan); + + assert(!( nan == nan)); + assert(!( nan == -nan)); + assert(!( nan == 1.)); + assert(!( nan == 0.)); + assert(!( nan == inf)); + assert(!( nan == -inf)); + assert(!( 1. == nan)); + assert(!( 0. == nan)); + assert(!( inf == nan)); + assert(!(-inf == nan)); + assert(!(-nan == nan)); + assert(!(-nan == -nan)); + + assert(!( nan > nan)); + assert(!( nan > -nan)); + assert(!( nan > 0.)); + assert(!( nan > inf)); + assert(!( nan > -inf)); + assert(!( 0. > nan)); + assert(!( inf > nan)); + assert(!(-inf > nan)); + assert(!(-nan > nan)); + + assert(!(nan < 0.)); + assert(!(nan < 1.)); + assert(!(nan < -1.)); + assert(!(nan < inf)); + assert(!(nan < -inf)); + assert(!(nan < nan)); + assert(!(nan < -nan)); + + assert(!( 0. < nan)); + assert(!( 1. < nan)); + assert(!( -1. < nan)); + assert(!( inf < nan)); + assert(!(-inf < nan)); + assert(!(-nan < nan)); + + assert(float::isNaN(nan + inf)); + assert(float::isNaN(nan + -inf)); + assert(float::isNaN(nan + 0.)); + assert(float::isNaN(nan + 1.)); + assert(float::isNaN(nan * 1.)); + assert(float::isNaN(nan / 1.)); + assert(float::isNaN(nan / 0.)); + assert(float::isNaN(0. / 0.)); + assert(float::isNaN(-inf + inf)); + assert(float::isNaN(inf - inf)); + + assert(!float::isNaN(-1.)); + assert(!float::isNaN(0.)); + assert(!float::isNaN(0.1)); + assert(!float::isNaN(1.)); + assert(!float::isNaN(inf)); + assert(!float::isNaN(-inf)); + assert(!float::isNaN(1./-inf)); +}