source: EcnlProtoTool/trunk/mruby-2.1.1/test/t/numeric.rb@ 439

Last change on this file since 439 was 439, checked in by coas-nagasima, 4 years ago

mrubyを2.1.1に更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby;charset=UTF-8
File size: 3.5 KB
Line 
1##
2# Numeric ISO Test
3
4def assert_step(exp, receiver, args, inf: false)
5 act = []
6 ret = receiver.step(*args) do |i|
7 act << i
8 break if inf && exp.size == act.size
9 end
10 expr = "#{receiver.inspect}.step(#{args.map(&:inspect).join(', ')})"
11 assert "assert_step" do
12 assert_true(exp.eql?(act), "#{expr}: counters", assertion_diff(exp, act))
13 assert_same(receiver, ret, "#{expr}: return value") unless inf
14 end
15end
16
17assert('Numeric', '15.2.7') do
18 assert_equal(Class, Numeric.class)
19end
20
21assert('Numeric#+@', '15.2.7.4.1') do
22 assert_equal(+1, +1)
23end
24
25assert('Numeric#-@', '15.2.7.4.2') do
26 assert_equal(-1, -1)
27end
28
29assert('Numeric#abs', '15.2.7.4.3') do
30 assert_equal(1, 1.abs)
31 skip unless Object.const_defined?(:Float)
32 assert_equal(1.0, -1.abs)
33end
34
35assert('Numeric#/', '15.2.8.3.4') do
36 n = Class.new(Numeric){ def /(x); 15.1;end }.new
37
38 assert_equal(2, 10/5)
39 assert_equal(0.0625, 1/16)
40 assert_equal(15.1, n/10)
41 assert_raise(TypeError){ 1/n }
42 assert_raise(TypeError){ 1/nil }
43end
44
45# Not ISO specified
46
47assert('Numeric#**') do
48 assert_equal(8, 2 ** 3)
49 assert_equal(-8, -2 ** 3)
50 assert_equal(1, 2 ** 0)
51 skip unless Object.const_defined?(:Float)
52 assert_equal(1.0, 2.2 ** 0)
53 assert_equal(0.5, 2 ** -1)
54 assert_equal(8.0, 2.0**3)
55end
56
57assert('Numeric#step') do
58 assert_raise(ArgumentError) { 1.step(2, 0) { break } }
59 assert_step([2, 3, 4], 2, [4])
60 assert_step([10, 8, 6, 4, 2], 10, [1, -2])
61 assert_step([], 2, [1, 3])
62 assert_step([], -2, [-1, -3])
63 assert_step([10, 11, 12, 13], 10, [], inf: true)
64 assert_step([10, 7, 4], 10, [nil, -3], inf: true)
65
66 skip unless Object.const_defined?(:Float)
67 inf = Float::INFINITY
68 assert_raise(ArgumentError) { 1.step(2, 0.0) { break } }
69 assert_step([2.0, 3.0, 4.0], 2, [4.0])
70 assert_step([7.0, 4.0, 1.0, -2.0], 7, [-4, -3.0])
71 assert_step([2.0, 3.0, 4.0], 2.0, [4])
72 assert_step([10.0, 11.0, 12.0, 13.0], 10.0, [], inf: true)
73 assert_step([10.0, 7.0, 4.0], 10, [nil, -3.0], inf: true)
74 assert_step([1.0], 1, [nil, inf])
75 assert_step([1.0], 1, [nil, -inf])
76 assert_step([1.0], 1, [3, inf])
77 assert_step([], 1, [-3, inf])
78 assert_step([], 1, [3, -inf])
79 assert_step([1.0], 1, [-3, -inf])
80 assert_step([1.0], 1, [inf, inf])
81 assert_step([], 1, [inf, -inf])
82 assert_step([], 1, [-inf, inf])
83 assert_step([1.0], 1, [-inf, -inf])
84 assert_step([], inf, [2])
85 assert_step([], inf, [-2])
86 assert_step([], inf, [2, 3])
87 assert_step([inf, inf, inf], inf, [2, -3], inf: true)
88 assert_step([], inf, [2, inf])
89 assert_step([inf], inf, [2, -inf])
90 assert_step([], inf, [-2, inf])
91 assert_step([inf], inf, [-2, -inf])
92 assert_step([], inf, [-2, 3])
93 assert_step([inf, inf, inf], inf, [-2, -3], inf: true)
94 assert_step([inf], inf, [inf])
95 assert_step([], inf, [-inf])
96 assert_step([inf], inf, [inf, inf])
97 assert_step([inf], inf, [inf, -inf])
98 assert_step([inf], inf, [-inf, -inf])
99 assert_step([-inf, -inf, -inf], -inf, [2], inf: true)
100 assert_step([-inf, -inf, -inf], -inf, [-2], inf: true)
101 assert_step([-inf, -inf, -inf], -inf, [2, 3], inf: true)
102 assert_step([], -inf, [2, -3])
103 assert_step([-inf], -inf, [2, inf])
104 assert_step([], -inf, [2, -inf])
105 assert_step([-inf], -inf, [-2, inf])
106 assert_step([], -inf, [-2, -inf])
107 assert_step([-inf, -inf, -inf], -inf, [-2, 3], inf: true)
108 assert_step([], -inf, [-2, -3])
109 assert_step([-inf, -inf, -inf], -inf, [inf], inf: true)
110 assert_step([-inf], -inf, [-inf])
111 assert_step([-inf], -inf, [inf, inf])
112 assert_step([], -inf, [inf, -inf])
113 assert_step([-inf], -inf, [-inf, -inf])
114end
Note: See TracBrowser for help on using the repository browser.