diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
commit | be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 (patch) | |
tree | 9754ff1ca740f6346cf8483ec915d4054bc5da2d /web/server/h2o/libh2o/deps/mruby/test/t/float.rb | |
parent | Initial commit. (diff) | |
download | netdata-upstream.tar.xz netdata-upstream.zip |
Adding upstream version 1.44.3.upstream/1.44.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'web/server/h2o/libh2o/deps/mruby/test/t/float.rb')
-rw-r--r-- | web/server/h2o/libh2o/deps/mruby/test/t/float.rb | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/web/server/h2o/libh2o/deps/mruby/test/t/float.rb b/web/server/h2o/libh2o/deps/mruby/test/t/float.rb new file mode 100644 index 00000000..7e8c9898 --- /dev/null +++ b/web/server/h2o/libh2o/deps/mruby/test/t/float.rb @@ -0,0 +1,205 @@ +## +# Float ISO Test + +assert('Float', '15.2.9') do + assert_equal Class, Float.class +end + +assert('Float#+', '15.2.9.3.1') do + a = 3.123456788 + 0.000000001 + b = 3.123456789 + 1 + + assert_float(3.123456789, a) + assert_float(4.123456789, b) + + assert_raise(TypeError){ 0.0+nil } + assert_raise(TypeError){ 1.0+nil } +end + +assert('Float#-', '15.2.9.3.2') do + a = 3.123456790 - 0.000000001 + b = 5.123456789 - 1 + + assert_float(3.123456789, a) + assert_float(4.123456789, b) +end + +assert('Float#*', '15.2.9.3.3') do + a = 3.125 * 3.125 + b = 3.125 * 1 + + assert_float(9.765625, a) + assert_float(3.125 , b) +end + +assert('Float#/', '15.2.9.3.4') do + a = 3.123456789 / 3.123456789 + b = 3.123456789 / 1 + + assert_float(1.0 , a) + assert_float(3.123456789, b) +end + +assert('Float#%', '15.2.9.3.5') do + a = 3.125 % 3.125 + b = 3.125 % 1 + + assert_float(0.0 , a) + assert_float(0.125, b) +end + +assert('Float#<=>', '15.2.9.3.6') do + a = 3.125 <=> 3.123 + b = 3.125 <=> 3.125 + c = 3.125 <=> 3.126 + a2 = 3.125 <=> 3 + c2 = 3.125 <=> 4 + + assert_equal( 1, a) + assert_equal( 0, b) + assert_equal(-1, c) + assert_equal( 1, a2) + assert_equal(-1, c2) +end + +assert('Float#==', '15.2.9.3.7') do + assert_true 3.1 == 3.1 + assert_false 3.1 == 3.2 +end + +assert('Float#ceil', '15.2.9.3.8') do + a = 3.123456789.ceil + b = 3.0.ceil + c = -3.123456789.ceil + d = -3.0.ceil + + assert_equal( 4, a) + assert_equal( 3, b) + assert_equal(-3, c) + assert_equal(-3, d) +end + +assert('Float#finite?', '15.2.9.3.9') do + assert_true 3.123456789.finite? + assert_false (1.0 / 0.0).finite? +end + +assert('Float#floor', '15.2.9.3.10') do + a = 3.123456789.floor + b = 3.0.floor + c = -3.123456789.floor + d = -3.0.floor + + assert_equal( 3, a) + assert_equal( 3, b) + assert_equal(-4, c) + assert_equal(-3, d) +end + +assert('Float#infinite?', '15.2.9.3.11') do + a = 3.123456789.infinite? + b = (1.0 / 0.0).infinite? + c = (-1.0 / 0.0).infinite? + + assert_nil a + assert_equal( 1, b) + assert_equal(-1, c) +end + +assert('Float#round', '15.2.9.3.12') do + a = 3.123456789.round + b = 3.5.round + c = 3.4999.round + d = (-3.123456789).round + e = (-3.5).round + f = 12345.67.round(-1) + g = 3.423456789.round(0) + h = 3.423456789.round(1) + i = 3.423456789.round(3) + + assert_equal( 3, a) + assert_equal( 4, b) + assert_equal( 3, c) + assert_equal( -3, d) + assert_equal( -4, e) + assert_equal(12350, f) + assert_equal( 3, g) + assert_float( 3.4, h) + assert_float(3.423, i) + + assert_equal(42.0, 42.0.round(307)) + assert_equal(1.0e307, 1.0e307.round(2)) + + inf = 1.0/0.0 + assert_raise(FloatDomainError){ inf.round } + assert_raise(FloatDomainError){ inf.round(-1) } + assert_equal(inf, inf.round(1)) + nan = 0.0/0.0 + assert_raise(FloatDomainError){ nan.round } + assert_raise(FloatDomainError){ nan.round(-1) } + assert_true(nan.round(1).nan?) +end + +assert('Float#to_f', '15.2.9.3.13') do + a = 3.123456789 + + assert_float(a, a.to_f) +end + +assert('Float#to_i', '15.2.9.3.14') do + assert_equal(3, 3.123456789.to_i) + assert_raise(FloatDomainError) { Float::INFINITY.to_i } + assert_raise(FloatDomainError) { (-Float::INFINITY).to_i } + assert_raise(FloatDomainError) { Float::NAN.to_i } +end + +assert('Float#truncate', '15.2.9.3.15') do + assert_equal( 3, 3.123456789.truncate) + assert_equal(-3, -3.1.truncate) +end + +assert('Float#divmod') do + def check_floats exp, act + assert_float exp[0], act[0] + assert_float exp[1], act[1] + end + + # Note: quotients are Float because mruby does not have Bignum. + check_floats [ 0, 0.0], 0.0.divmod(1) + check_floats [ 0, 1.1], 1.1.divmod(3) + check_floats [ 3, 0.2], 3.2.divmod(1) + check_floats [ 2, 6.3], 20.3.divmod(7) + check_floats [-1, 1.6], -3.4.divmod(5) + check_floats [-2, -0.5], 25.5.divmod(-13) + check_floats [ 1, -6.6], -13.6.divmod(-7) + check_floats [ 3, 0.2], 9.8.divmod(3.2) +end + +assert('Float#nan?') do + assert_true (0.0/0.0).nan? + assert_false 0.0.nan? + assert_false (1.0/0.0).nan? + assert_false (-1.0/0.0).nan? +end + +assert('Float#<<') do + # Left Shift by one + assert_equal 46, 23.0 << 1 + + # Left Shift by a negative is Right Shift + assert_equal 23, 46.0 << -1 +end + +assert('Float#>>') do + # Right Shift by one + assert_equal 23, 46.0 >> 1 + + # Right Shift by a negative is Left Shift + assert_equal 46, 23.0 >> -1 + + # Don't raise on large Right Shift + assert_equal 0, 23.0 >> 128 + + # Don't raise on large Right Shift + assert_equal(-1, -23.0 >> 128) +end |