Apply PIE to nghttpx
[platform/upstream/nghttp2.git] / third-party / mruby / test / t / numeric.rb
1 ##
2 # Numeric ISO Test
3
4 assert('Numeric', '15.2.7') do
5   assert_equal(Class, Numeric.class)
6 end
7
8 assert('Numeric#+@', '15.2.7.4.1') do
9   assert_equal(+1, +1)
10 end
11
12 assert('Numeric#-@', '15.2.7.4.2') do
13   assert_equal(-1, -1)
14 end
15
16 assert('Numeric#abs', '15.2.7.4.3') do
17   assert_equal(1, 1.abs)
18   skip unless Object.const_defined?(:Float)
19   assert_equal(1.0, -1.abs)
20 end
21
22 assert('Numeric#/', '15.2.8.3.4') do
23   n = Class.new(Numeric){ def /(x); 15.1;end }.new
24
25   assert_equal(2, 10/5)
26   assert_equal(0.0625, 1/16)
27   assert_equal(15.1, n/10)
28   assert_raise(TypeError){ 1/n }
29   assert_raise(TypeError){ 1/nil }
30 end
31
32 # Not ISO specified
33
34 assert('Numeric#**') do
35   assert_equal(8, 2 ** 3)
36   assert_equal(-8, -2 ** 3)
37   assert_equal(1, 2 ** 0)
38   skip unless Object.const_defined?(:Float)
39   assert_equal(1.0, 2.2 ** 0)
40   assert_equal(0.5, 2 ** -1)
41   assert_equal(8.0, 2.0**3)
42 end
43
44 assert('Numeric#step') do
45   assert_step = ->(exp, receiver, args) do
46     inf = !args[0]
47     act = []
48     ret = receiver.step(*args) do |i|
49       act << i
50       break if inf && exp.size == act.size
51     end
52     expr = "#{receiver.inspect}.step(#{args.map(&:inspect).join(', ')})"
53     assert_true(exp.eql?(act), "#{expr}: counters", assertion_diff(exp, act))
54     assert_same(receiver, ret, "#{expr}: return value") unless inf
55   end
56
57   assert_raise(ArgumentError) { 1.step(2, 0) { break } }
58   assert_step.([2, 3, 4], 2, [4])
59   assert_step.([10, 8, 6, 4, 2], 10, [1, -2])
60   assert_step.([], 2, [1, 3])
61   assert_step.([], -2, [-1, -3])
62   assert_step.([10, 11, 12, 13], 10, [])
63   assert_step.([10, 7, 4], 10, [nil, -3])
64
65   skip unless Object.const_defined?(:Float)
66   assert_raise(ArgumentError) { 1.step(2, 0.0) { break } }
67   assert_step.([2.0, 3.0, 4.0], 2, [4.0])
68   assert_step.([7.0, 4.0, 1.0, -2.0], 7, [-4, -3.0])
69   assert_step.([2.0, 3.0, 4.0], 2.0, [4])
70   assert_step.([10.0, 11.0, 12.0, 13.0], 10.0, [])
71   assert_step.([10.0, 7.0, 4.0], 10, [nil, -3.0])
72 end