about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2011-12-07 22:02:38 +0100
committerMarijn Haverbeke <marijnh@gmail.com>2011-12-07 22:02:38 +0100
commit7548a0d77a7ebc2950421e68dfb06f6a06c58202 (patch)
treee5ede522a4998a810f409c5200f1b0023caa1d0a
parent3d0610b072537f43946cf685bc9888ec7df44f08 (diff)
Restore accidentally overwritten test
-rw-r--r--src/test/run-pass/float-nan.rs92
1 files changed, 74 insertions, 18 deletions
diff --git a/src/test/run-pass/float-nan.rs b/src/test/run-pass/float-nan.rs
index de78341a199..c27b97d81da 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::float;
 
-import std::ctypes::*;
+fn main() {
+  let nan = float::NaN;
+  assert(float::isNaN(nan));
 
-fn foo_float() -> m_float { ret 0.0 as m_float; }
-fn bar_float() -> float { be foo_float() as float; }
+  let inf = float::infinity;
+  assert(-inf == float::neg_infinity);
 
-fn foo_int() -> m_int { ret 0 as m_int; }
-fn bar_int() -> int { be foo_int() as int; }
+  assert( nan !=  nan);
+  assert( nan != -nan);
+  assert(-nan != -nan);
+  assert(-nan !=  nan);
 
-fn foo_uint() -> m_uint { ret 0u as m_uint; }
-fn bar_uint() -> uint { be foo_uint() as uint; }
+  assert( nan !=   1.);
+  assert( nan !=   0.);
+  assert( nan !=  inf);
+  assert( nan != -inf);
 
-fn foo_long() -> long { ret 0 as long; }
-fn bar_long() -> int { be foo_long() as int; }
+  assert(  1. !=  nan);
+  assert(  0. !=  nan);
+  assert( inf !=  nan);
+  assert(-inf !=  nan);
 
-fn foo_ulong() -> ulong { ret 0u as ulong; }
-fn bar_ulong() -> uint { be foo_uint() as uint; }
+  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));
 
-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
+  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));
+}