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_true [1,2,3,4,5,6,7,8,9].find_all() {|i| i%2 == 0}, [2,4,6,8]
|
---|
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
|
---|