#!/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)

say "** Test passed!";