Apply PIE to nghttpx
[platform/upstream/nghttp2.git] / third-party / mruby / test / t / enumerable.rb
1 ##
2 # Enumerable ISO Test
3
4 assert('Enumerable', '15.3.2') do
5   assert_equal(Module, Enumerable.class)
6 end
7
8 assert('Enumerable#all?', '15.3.2.2.1') do
9   assert_true([1,2,3].all?)
10   assert_false([1,false,3].all?)
11
12   a = [2,4,6]
13   all = a.all? do |e|
14     e % 2 == 0
15   end
16   assert_true(all)
17
18   a = [2,4,7]
19   all = a.all? do |e|
20     e % 2 == 0
21   end
22   assert_false(all)
23 end
24
25 assert('Enumerable#any?', '15.3.2.2.2') do
26   assert_true([false,true,false].any?)
27   assert_false([false,false,false].any?)
28
29   a = [1,3,6]
30   any = a.any? do |e|
31     e % 2 == 0
32   end
33   assert_true(any)
34
35   a = [1,3,5]
36   any = a.any? do |e|
37     e % 2 == 0
38   end
39   assert_false(any)
40 end
41
42 assert('Enumerable#collect', '15.3.2.2.3') do
43   assert_true [1,2,3].collect { |i| i + i } == [2,4,6]
44 end
45
46 assert('Enumerable#detect', '15.3.2.2.4') do
47   assert_equal 1, [1,2,3].detect() { true }
48   assert_equal 'a', [1,2,3].detect("a") { false }
49 end
50
51 assert('Array#each_with_index', '15.3.2.2.5') do
52   a = nil
53   b = nil
54
55   [1].each_with_index {|e,i| a = e; b = i}
56
57   assert_equal(1, a)
58   assert_equal(0, b)
59 end
60
61 assert('Enumerable#entries', '15.3.2.2.6') do
62   assert_equal([1], [1].entries)
63 end
64
65 assert('Enumerable#find', '15.3.2.2.7') do
66   assert_equal 1, [1,2,3].find() { true }
67   assert_equal 'a', [1,2,3].find("a") { false }
68 end
69
70 assert('Enumerable#find_all', '15.3.2.2.8') do
71   assert_equal [2,4,6,8], [1,2,3,4,5,6,7,8,9].find_all() {|i| i%2 == 0}
72 end
73
74 assert('Enumerable#grep', '15.3.2.2.9') do
75   assert_equal [4,5,6], [1,2,3,4,5,6,7,8,9].grep(4..6)
76 end
77
78 assert('Enumerable#include?', '15.3.2.2.10') do
79   assert_true [1,2,3,4,5,6,7,8,9].include?(5)
80   assert_false [1,2,3,4,5,6,7,8,9].include?(0)
81 end
82
83 assert('Enumerable#inject', '15.3.2.2.11') do
84   assert_equal 21, [1,2,3,4,5,6].inject() {|s, n| s + n}
85   assert_equal 22, [1,2,3,4,5,6].inject(1) {|s, n| s + n}
86 end
87
88 assert('Enumerable#map', '15.3.2.2.12') do
89   assert_equal [2,4,6], [1,2,3].map { |i| i + i }
90 end
91
92 assert('Enumerable#max', '15.3.2.2.13') do
93   a = ['aaa', 'bb', 'c']
94   assert_equal 'c', a.max
95   assert_equal 'aaa', a.max {|i1,i2| i1.length <=> i2.length}
96 end
97
98 assert('Enumerable#min', '15.3.2.2.14') do
99   a = ['aaa', 'bb', 'c']
100   assert_equal 'aaa', a.min
101   assert_equal 'c', a.min {|i1,i2| i1.length <=> i2.length}
102 end
103
104 assert('Enumerable#member?', '15.3.2.2.15') do
105   assert_true [1,2,3,4,5,6,7,8,9].member?(5)
106   assert_false [1,2,3,4,5,6,7,8,9].member?(0)
107 end
108
109 assert('Enumerable#partition', '15.3.2.2.16') do
110   partition = [0,1,2,3,4,5,6,7,8,9].partition do |i|
111     i % 2 == 0
112   end
113   assert_equal [[0,2,4,6,8], [1,3,5,7,9]], partition
114 end
115
116 assert('Enumerable#reject', '15.3.2.2.17') do
117   reject = [0,1,2,3,4,5,6,7,8,9].reject do |i|
118     i % 2 == 0
119   end
120   assert_equal [1,3,5,7,9], reject
121 end
122
123 assert('Enumerable#select', '15.3.2.2.18') do
124   assert_equal [2,4,6,8], [1,2,3,4,5,6,7,8,9].select() {|i| i%2 == 0}
125 end
126
127 assert('Enumerable#sort', '15.3.2.2.19') do
128   assert_equal [1,2,3,4,6,7], [7,3,1,2,6,4].sort
129   assert_equal [7,6,4,3,2,1], [7,3,1,2,6,4].sort {|e1,e2|e2<=>e1}
130 end
131
132 assert('Enumerable#to_a', '15.3.2.2.20') do
133   assert_equal [1], [1].to_a
134 end