def f() =
  test.equal(float.is_nan(nan), true)
  test.equal(float.is_nan(1.), false)
  test.equal(float.is_nan(infinity), false)
  test.equal(float.is_infinite(nan), false)
  test.equal(float.is_infinite(1.), false)
  test.equal(float.is_infinite(infinity), true)
  test.equal(float.is_infinite(-(infinity)), true)
  test.equal(int(nan), 0)
  test.raises({int(raise=true, nan)}, error.invalid)
  test.equal(int(infinity), max_int)
  test.equal(int(-(infinity)), min_int)
  test.raises({int(raise=true, infinity)}, error.invalid)
  test.raises({int(raise=true, -(infinity))}, error.invalid)
  test.equal(ceil(1.), 1.)
  test.equal(ceil(1.4), 2.)
  test.equal(ceil(1.5), 2.)
  test.equal(ceil(1.6), 2.)
  test.equal(ceil(0.1), 1.)
  test.equal(1_1.2_2, 11.22)
  test.equal(ceil(0.), 0.)
  test.equal(ceil(-0.1), -0.)
  test.equal(ceil(-1.), -1.)
  test.equal(ceil(-1.4), -1.)
  test.equal(ceil(-1.5), -1.)
  test.equal(ceil(-1.6), -1.)
  test.equal(float.is_nan(ceil(nan)), true)
  test.equal(floor(1.), 1.)
  test.equal(floor(1.4), 1.)
  test.equal(floor(1.5), 1.)
  test.equal(floor(1.6), 1.)
  test.equal(floor(0.1), 0.)
  test.equal(floor(0.), 0.)
  test.equal(floor(-0.1), -1.)
  test.equal(floor(-1.), -1.)
  test.equal(floor(-1.4), -2.)
  test.equal(floor(-1.5), -2.)
  test.equal(floor(-1.6), -2.)
  test.equal(float.is_nan(floor(nan)), true)
  test.equal(sign(0.), 1.)
  test.equal(sign(0.1), 1.)
  test.equal(sign(1.), 1.)
  test.equal(sign(2.), 1.)
  test.equal(sign(-0.1), -1.)
  test.equal(sign(-1.), -1.)
  test.equal(sign(-2.), -1.)
  test.equal(sign(nan), 1.)
  test.equal(round(0.), 0.)
  test.equal(round(infinity), infinity)
  test.equal(float.is_nan(round(nan)), true)

  def f(x) =
    print(
      "x.foo is: " ^
        x.foo
    )
    x + 1
  end
  test.equal(f(1.{foo="gni"}), 2)

  test.pass()
end

test.check(f)
