[270] | 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
|
---|