#!/usr/bin/ruby assert_eq( 1.0 / 0.0 , Inf) assert_eq( -1.0 / 0.0 , -Inf) assert( 0.0 / 0.0 -> is_nan) assert_eq( - 0.0 , 0) # should be -0.0 assert_eq( Inf + 1 , Inf) assert_eq( 5 - Inf , -Inf) assert_eq( Inf * 5 , Inf) assert_eq( Inf / 5 , Inf) assert( Inf * 0 -> is_nan) assert_eq( 1.0 / Inf , 0) assert_eq( -1.0 / Inf , 0) # should be -0.0 assert_eq( -Inf == -1/0 , true) assert( -Inf * 0 -> is_nan) assert( 0 * -Inf -> is_nan) assert( 0 * 1/0 -> is_nan) assert_eq( 0/0 == 0/0 , false) assert_eq( Inf + Inf , Inf) assert( Inf - Inf -> is_nan) assert_eq( Inf * Inf , Inf) assert( Inf / Inf -> is_nan) assert( Inf * 0.0 -> is_nan) assert_eq( 0 < Inf , true) assert_eq( Inf == Inf , true) assert_eq( -Inf == -Inf , true) assert_eq( -Inf <=> Inf , -1) assert_eq( Inf <=> -Inf , 1) assert_eq( Inf <=> Inf , 0) assert_eq( -Inf <=> -Inf , 0) assert_eq( 0 <=> -Inf , 1) assert( NaN + 1 -> is_nan) assert( NaN * 5 -> is_nan) assert( NaN - NaN -> is_nan) assert( NaN * Inf -> is_nan) assert( - NaN -> is_nan) assert_eq( NaN == NaN , false) assert_eq( NaN > 0 , nil) assert_eq( NaN < 0 , nil) assert_eq( NaN == 0 , false) assert_eq( 0.0 == -0.0 , true) assert_eq(42 <=> 42, 0) assert_eq(42 <=> 42.rat, 0) assert_eq(42.rat <=> 42, 0) assert_eq(42 <=> (41+1), 0) assert_eq(42 <=> (42-1), 1) assert_eq(42 <=> (42+1), -1) assert(!defined(43 <=> NaN)) assert(!defined(NaN <=> 99)) assert(!defined(NaN <=> NaN)) with (NaN) {|x| assert(!defined(x <=> x)) assert(!defined(x <=> 1)) assert(!defined(x <=> 0)) assert(!defined(0 <=> x)) assert(!defined(1 <=> x)) assert(!(x == x)) assert(x != x) assert(x != 42) assert(42 != x) assert(!(x == 42)) assert(!(42 == x)) } with (Complex(NaN, NaN)) { |x| assert(!defined(x <=> x)) assert(!defined(x <=> 0)) assert(!defined(1 <=> x)) assert(!defined(0 <=> x)) assert(!defined(x <=> Complex(0, 0))) assert(!defined(Complex(0, 0) <=> x)) assert(!(x == x)) assert(x != x) assert(x != 11) assert(11 != x) assert(!(12 == x)) assert(!(x == 13)) } assert(22 == 22) assert(!(22 != 22)) assert(!(22 == (22+1))) assert(22 != (22+1)) assert(22 != (22-1)) assert(!(43 == NaN)) assert(!(NaN == NaN)) assert(NaN != NaN) assert(NaN != 43) assert(21 != NaN) assert_eq([0.0], [0]) assert_eq([0_0], [0]) assert_eq([00], [0]) assert_eq([000], [0]) assert_eq([01], [1]) assert_eq([001], [1]) assert_eq(0_, 0) assert_eq(0x, 0) assert_eq(0b, 0) assert_eq(0o, 0) assert_eq(0b1101, 13) assert_eq(01234, 668) assert_eq(0o1234, 668) assert_eq(0x1234, 4660) assert_eq(Sys.ref(*(42f)), "Math::MPFR") assert_eq(Sys.ref(*(4.2f)), "Math::MPFR") assert_eq(Sys.ref(*(-4.2f)), "Math::MPFR") assert_eq(42f, 42) assert_eq(-42f, -42) assert_eq(4.23e45f, float(4.23e45)) assert_eq(4.2567f, float(4.2567)) assert_eq(-4.2f, float(-4.2)) assert(42.ne(99)) assert(!(42.ne(42))) assert(!0.divides(42)) assert(42.divides(0)) say "** Test passed!"