sixarm_ruby_ramp 4.1.0 → 4.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
-
3
- # Enumberable extensions
2
+ # Enumerable extensions
4
3
 
5
4
  require 'set'
6
5
  module Enumerable
@@ -97,128 +96,6 @@ module Enumerable
97
96
  map{|item| yield(item)}.to_h
98
97
  end
99
98
 
100
- ########################################################################
101
- #
102
- # map_to_xxx
103
- #
104
- ########################################################################
105
-
106
- # Map each item => item.id
107
- #
108
- # @return [Enumerable<Object>] an list of each item.id
109
- #
110
- # @example
111
- # users = User.find(:all)
112
- # users.map_id => [1,2,3,4,...]
113
- #
114
- # A typical use is to convert a list of ActiveRecord items to a list of id items.
115
- #
116
- # This method is a fast way to get the same results as items.map(&:id)
117
- #
118
- def map_id
119
- map{|item| item.id}
120
- end
121
-
122
- # Map each item => item.to_a
123
- #
124
- # @return [Enumberable<Array<Object>>] a list of each item.to_a
125
- #
126
- # @example
127
- # set1 = Set.new([:a,:b,:c])
128
- # set2 = Set.new([:d,:e,:f])
129
- # set3 = Set.new([:g,:h,:i])
130
- # sets = [set1, set2, set3]
131
- # sets.map_to_a => [[:a, :b, :c], [:d, :e, :f], [:g, :h, :i]]
132
- #
133
- # A typical use is to convert a list with Set items to a list of Array items,
134
- # so you can more easily iterate over the the Array items.
135
- #
136
- # See http://www.ruby-doc.org/core/classes/Enumerable.html#M003148
137
- #
138
- def map_to_a
139
- map{|item| [item]}
140
- end
141
-
142
- # Map each item => item.to_f
143
- #
144
- # @return [Enumerable<Float>] a list of each item.to_f
145
- #
146
- # @example
147
- # strings = ["1","2","3"]
148
- # strings.map_to_f => [1.0, 2.0, 3.0]
149
- #
150
- # A typical use is to convert a list of String items to a list of float items.
151
- #
152
- # This method is a fast way to get the same results as items.map(&:to_f)
153
- #
154
- def map_to_f
155
- map{|item| item.to_f}
156
- end
157
-
158
- # Map each item => item.to_i
159
- #
160
- # @return [Enumerable<Integer>] a list of each item.to_i
161
- #
162
- # @example
163
- # strings = ["1","2","3"]
164
- # strings.map_to_i => [1, 2, 3]
165
- #
166
- # A typical use is to convert a list of String items to a list of integer items.
167
- #
168
- # This method is a fast way to get the same results as items.map(&:to_i)
169
- #
170
- def map_to_i
171
- map{|item| item.to_i}
172
- end
173
-
174
- # Map each item => item.to_s
175
- #
176
- # @return [Enumerable<String>] a list of each item.to_s
177
- #
178
- # @example
179
- # numbers = [1, 2, 3]
180
- # numbers.map_to_s => ["1", "2", "3"]
181
- #
182
- # A typical use is to convert a list of Numeric items to a list of String items.
183
- #
184
- # This method is a fast way to get the same results as items.map(&:to_s)
185
- #
186
- def map_to_s
187
- map{|item| item.to_s}
188
- end
189
-
190
- # Map each item => item.to_sym
191
- #
192
- # @return [Enumerable<Symbol>] a list of each item.to_sym
193
- #
194
- # @example
195
- # strings = ["foo", "goo", "hoo"]
196
- # strings.map_to_sym => [:foo, :goo, :hoo]
197
- #
198
- # A typical use is to convert a list of Object items to a list of Symbol items.
199
- #
200
- # This method is a fast way to get the same results as items.map(&:to_sym)
201
- #
202
- def map_to_sym
203
- map{|item| item.to_sym}
204
- end
205
-
206
- # Map each item and its index => a new output
207
- #
208
- # @return [Enumerable<Object>] an list of each item transformed by the block
209
- # @see Enumerable#map
210
- # @see Enumerable#each_with_index
211
- #
212
- # @example
213
- # strings = ["a", "b", "c"]
214
- # strings.map_with_index{|string,index| "#{string}#{index}"}
215
- # => ["a0, "b1", "c3"]
216
- #
217
- def map_with_index
218
- index=-1
219
- map{|item| index+=1; yield(item,index)}
220
- end
221
-
222
99
  ########################################################################
223
100
  #
224
101
  # select
@@ -0,0 +1,23 @@
1
+ class Integer
2
+
3
+ # Reverse bit.
4
+ #
5
+ # Example:
6
+ #
7
+ # 0.rbit #=> 0
8
+ # 1.rbit #=> 128
9
+ # 2.rbit #=> 64
10
+ #
11
+ # The bit count defaults to 8.
12
+ #
13
+ # @param count [Integer] the count of bits to reverse
14
+ #
15
+ def rbit(count=8)
16
+ z = self & 0
17
+ count.times{|i|
18
+ z = z * 2 + self[i]
19
+ }
20
+ z
21
+ end
22
+
23
+ end
@@ -3,6 +3,35 @@
3
3
  Please see README
4
4
  =end
5
5
 
6
- ['array','class','csv','date','enumerable','file','fixnum','hash','integer','io','kernel','math','nil','numeric','object','pairable','process','string','symbol','time','xml','yaml'].map{|x|
6
+ [
7
+ 'array',
8
+ 'array/join',
9
+ 'array/shuffle',
10
+ 'class',
11
+ 'csv',
12
+ 'date',
13
+ 'enumerable',
14
+ 'enumerable/map',
15
+ 'enumerable/nitems',
16
+ 'enumerable/select',
17
+ 'file',
18
+ 'fixnum',
19
+ 'hash',
20
+ 'integer',
21
+ 'integer/rbit',
22
+ 'io',
23
+ 'kernel',
24
+ 'math',
25
+ 'nil',
26
+ 'numeric',
27
+ 'object',
28
+ 'pairable',
29
+ 'process',
30
+ 'string',
31
+ 'symbol',
32
+ 'time',
33
+ 'xml',
34
+ 'yaml'
35
+ ].map{|x|
7
36
  require File.dirname(__FILE__) + "/sixarm_ruby_ramp/#{x}.rb"
8
37
  }
@@ -0,0 +1,37 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'minitest/autorun'
3
+ require 'sixarm_ruby_ramp/array/join'
4
+
5
+ class ArrayJoinTest < Minitest::Test
6
+
7
+ A=['a','b','c']
8
+
9
+ def test_join_with_no_ops
10
+ assert_equal('abc',A.join())
11
+ end
12
+
13
+ def test_join_with_1_op_does_infix
14
+ assert_equal('a*b*c', A.join('*'))
15
+ end
16
+
17
+ def test_join_with_2_ops_does_prefix_suffix
18
+ assert_equal('[a][b][c]', A.join('[',']'))
19
+ end
20
+
21
+ def test_join_with_3_ops_does_prefix_suffix_infix
22
+ assert_equal('[a]*[b]*[c]', A.join('[',']','*'))
23
+ end
24
+
25
+ def test_join_with_too_many_ops_raises
26
+ assert_raises(ArgumentError){ A.join('','','','') }
27
+ end
28
+
29
+ def test_join_prefix_suffix
30
+ assert_equal('[a][b][c]', A.join_prefix_suffix('[',']'))
31
+ end
32
+
33
+ def test_join_prefix_suffix_infix
34
+ assert_equal('[a]*[b]*[c]', A.join_prefix_suffix_infix('[',']','*'))
35
+ end
36
+
37
+ end
@@ -0,0 +1,26 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'minitest/autorun'
3
+ require 'sixarm_ruby_ramp/array/shuffle'
4
+
5
+ class ArrayTest < Minitest::Test
6
+
7
+ def test_shuffle
8
+ a=[1,2,3,4]
9
+ 5.times {
10
+ b=a.shuffle
11
+ assert_equal(a.size,b.size)
12
+ a.each{|item| assert(b.include?(item)) }
13
+ }
14
+ end
15
+
16
+ def test_shuffle_bang
17
+ a=[1,2,3,4]
18
+ b=a.dup
19
+ 5.times {
20
+ b.shuffle!
21
+ assert_equal(a.size,b.size)
22
+ a.each{|item| assert(b.include?(item)) }
23
+ }
24
+ end
25
+
26
+ end
@@ -9,34 +9,6 @@ class ArrayTest < Minitest::Test
9
9
  A=['a','b','c','d']
10
10
  B=['w','x','y','z']
11
11
 
12
- def test_join_with_no_ops
13
- assert_equal('abcd',A.join())
14
- end
15
-
16
- def test_join_with_1_op_does_infix
17
- assert_equal('a*b*c*d', A.join('*'))
18
- end
19
-
20
- def test_join_with_2_ops_does_prefix_suffix
21
- assert_equal('[a][b][c][d]', A.join('[',']'))
22
- end
23
-
24
- def test_join_with_3_opes_does_prefix_suffix_infix
25
- assert_equal('[a]*[b]*[c]*[d]', A.join('[',']','*'))
26
- end
27
-
28
- def test_join_with_too_many_ops_raises
29
- assert_raises(ArgumentError){ A.join('','','','') }
30
- end
31
-
32
- def test_join_prefix_suffix
33
- assert_equal('[a][b][c][d]', A.join_prefix_suffix('[',']'))
34
- end
35
-
36
- def test_join_prefix_suffix_infix
37
- assert_equal('[a]*[b]*[c]*[d]', A.join_prefix_suffix_infix('[',']','*'))
38
- end
39
-
40
12
  def test_size_with_one_item
41
13
  assert_equal(true,[1].size?)
42
14
  end
@@ -56,7 +28,7 @@ class ArrayTest < Minitest::Test
56
28
  def test_size_with_one_empty
57
29
  assert_equal(true,[[]].size?)
58
30
  end
59
-
31
+
60
32
  def test_rotate
61
33
  a=A.dup
62
34
  a.rotate!
@@ -157,7 +129,7 @@ class ArrayTest < Minitest::Test
157
129
  end
158
130
 
159
131
  # alias: test_cdr must be idential to test_shifted
160
- def test_cdr_with_negative_count
132
+ def test_cdr_with_negative_count
161
133
  assert_raises(ArgumentError){ [].cdr(-1) }
162
134
  end
163
135
 
@@ -206,15 +178,15 @@ class ArrayTest < Minitest::Test
206
178
  a=['a','b','c']; a.shifted!(4); assert_equal([ ],a)
207
179
  end
208
180
 
209
- def test_shifted_bang_with_negative_count
181
+ def test_shifted_bang_with_negative_count
210
182
  assert_raises(ArgumentError){ [].shifted!(-1) }
211
183
  end
212
184
 
213
- def test_shifted_bang_with_non_integer_count
185
+ def test_shifted_bang_with_non_integer_count
214
186
  assert_raises(ArgumentError){ [].shifted!(0.123) }
215
187
  end
216
188
 
217
- def test_shifted_bang_with_non_numeric_count
189
+ def test_shifted_bang_with_non_numeric_count
218
190
  assert_raises(ArgumentError){ [].shifted!("") }
219
191
  end
220
192
 
@@ -242,7 +214,7 @@ class ArrayTest < Minitest::Test
242
214
  def test_cdr_bang_with_non_numeric_count
243
215
  assert_raises(ArgumentError){ [].cdr!("") }
244
216
  end
245
-
217
+
246
218
  # alias: test_rest_bang must be identical to test_shifted_bang
247
219
  def test_rest_bang
248
220
  a=['a','b','c']; a.rest!; assert_equal([ 'b','c'],a)
@@ -252,7 +224,7 @@ class ArrayTest < Minitest::Test
252
224
  a=['a','b','c']; a.rest!(3); assert_equal([ ],a)
253
225
  a=['a','b','c']; a.rest!(4); assert_equal([ ],a)
254
226
  end
255
-
227
+
256
228
  # alias: test_rest_bang must be identical to test_shifted_bang
257
229
  def test_rest_bang_with_negative_count
258
230
  assert_raises(ArgumentError){ [].rest!(-1) }
@@ -273,31 +245,12 @@ class ArrayTest < Minitest::Test
273
245
  assert_equal('a',a.car)
274
246
  end
275
247
 
276
- def test_shuffle
277
- a=[1,2,3,4]
278
- 5.times {
279
- b=a.shuffle
280
- assert_equal(a.size,b.size)
281
- a.each{|item| assert(b.include?(item)) }
282
- }
283
- end
284
-
285
- def test_shuffle_bang
286
- a=[1,2,3,4]
287
- b=a.dup
288
- 5.times {
289
- b.shuffle!
290
- assert_equal(a.size,b.size)
291
- a.each{|item| assert(b.include?(item)) }
292
- }
293
- end
294
-
295
248
  def test_to_csv_one_dimensional
296
249
  assert_equal("a,b,c,d\n",A.to_csv)
297
250
  end
298
251
 
299
252
  def test_to_csv_with_empty
300
- assert_equal("",[].to_csv)
253
+ assert_equal("",[].to_csv)
301
254
  end
302
255
 
303
256
  def test_to_csv_multi_dimensional
@@ -311,7 +264,7 @@ class ArrayTest < Minitest::Test
311
264
  end
312
265
 
313
266
  def test_to_tsv_with_empty
314
- assert_equal("",[].to_tsv)
267
+ assert_equal("",[].to_tsv)
315
268
  end
316
269
 
317
270
  # alias: test_to_tdf must be identical to test_to_tsv
@@ -322,9 +275,7 @@ class ArrayTest < Minitest::Test
322
275
 
323
276
  # alias: test_to_tdf must be identical to test_to_tsv
324
277
  def test_to_tdf_with_empty
325
- assert_equal("",[].to_tdf)
278
+ assert_equal("",[].to_tdf)
326
279
  end
327
280
 
328
281
  end
329
-
330
-
@@ -0,0 +1,42 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'minitest/autorun'
3
+ require 'sixarm_ruby_ramp/enumerable/map'
4
+ require 'ostruct'
5
+
6
+ class EnumerableMapTest < Minitest::Test
7
+
8
+ def test_map_id
9
+ x = [OpenStruct.new(id: 1), OpenStruct.new(id: 2), OpenStruct.new(id: 3)]
10
+ assert_equal(x.map(&:id), x.map_id)
11
+ end
12
+
13
+ def test_map_to_a
14
+ x = [{a: :b, c: :d}, {e: :f, g: :h}]
15
+ assert_equal(x.map(&:to_a), x.map_to_a)
16
+ end
17
+
18
+ def test_map_to_f
19
+ x = ["1", "2", "3"]
20
+ assert_equal(x.map(&:to_f) , x.map_to_f)
21
+ end
22
+
23
+ def test_map_to_i
24
+ x = ["1", "2", "3"]
25
+ assert_equal(x.map(&:to_i), x.map_to_i)
26
+ end
27
+
28
+ def test_map_to_s
29
+ x = [1, 2, 3]
30
+ assert_equal(x.map(&:to_s), x.map_to_s)
31
+ end
32
+
33
+ def test_map_to_sym
34
+ x = ["a", "b", "c"]
35
+ assert_equal(x.map(&:to_sym) , x.map_to_sym)
36
+ end
37
+
38
+ def test_map_with_index
39
+ assert_equal(["a0", "b1", "c2"], ["a", "b", "c"].map_with_index{|x,i| "#{x}#{i}"})
40
+ end
41
+
42
+ end
@@ -0,0 +1,48 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'minitest/autorun'
3
+ require 'sixarm_ruby_ramp/enumerable/nitems'
4
+
5
+ class EnumerableNItemsTest < Minitest::Test
6
+
7
+ ITEMS = ['a','b','c']
8
+
9
+ def test_nitems?
10
+ assert_equal(true, ITEMS.nitems?(0){|x| x < 'a'})
11
+ assert_equal(false, ITEMS.nitems?(1){|x| x < 'a'})
12
+ assert_equal(false, ITEMS.nitems?(2){|x| x < 'a'})
13
+ assert_equal(false, ITEMS.nitems?(0){|x| x < 'b'})
14
+ assert_equal(true, ITEMS.nitems?(1){|x| x < 'b'})
15
+ assert_equal(false, ITEMS.nitems?(2){|x| x < 'b'})
16
+ assert_equal(false, ITEMS.nitems?(0){|x| x < 'c'})
17
+ assert_equal(false, ITEMS.nitems?(1){|x| x < 'c'})
18
+ assert_equal(true, ITEMS.nitems?(2){|x| x < 'c'})
19
+ end
20
+
21
+
22
+ def test_nitems_while
23
+ assert_equal(0,ITEMS.nitems_while{|x| x < 'a' },'< a')
24
+ assert_equal(1,ITEMS.nitems_while{|x| x < 'b' },'< b')
25
+ assert_equal(2,ITEMS.nitems_while{|x| x < 'c' },'< c')
26
+ assert_equal(3,ITEMS.nitems_while{|x| x < 'd' },'< d')
27
+ assert_equal(3,ITEMS.nitems_while{|x| x < 'e' },'< e')
28
+ end
29
+
30
+
31
+ def test_nitems_until
32
+ assert_equal(0,ITEMS.nitems_until{|x| x == 'a' },'a')
33
+ assert_equal(1,ITEMS.nitems_until{|x| x == 'b' },'b')
34
+ assert_equal(2,ITEMS.nitems_until{|x| x == 'c' },'c')
35
+ assert_equal(3,ITEMS.nitems_until{|x| x == 'd' },'d')
36
+ assert_equal(3,ITEMS.nitems_until{|x| x == 'e' },'e')
37
+ end
38
+
39
+
40
+ def test_nitems_with_index
41
+ assert_equal(0,ITEMS.nitems_with_index{|x,i| i < 0 },'i < 0')
42
+ assert_equal(1,ITEMS.nitems_with_index{|x,i| i < 1 },'i < 1')
43
+ assert_equal(2,ITEMS.nitems_with_index{|x,i| i < 2 },'i < 2')
44
+ assert_equal(3,ITEMS.nitems_with_index{|x,i| i < 3 },'i < 3')
45
+ assert_equal(3,ITEMS.nitems_with_index{|x,i| i < 4 },'i < 4')
46
+ end
47
+
48
+ end
@@ -0,0 +1,33 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'minitest/autorun'
3
+ require 'sixarm_ruby_ramp/enumerable/select'
4
+
5
+ class EnumerableSelectTest < Minitest::Test
6
+
7
+ ITEMS = ['a','b','c']
8
+
9
+ def test_select_while
10
+ assert_equal([ ], ITEMS.select_while{|x| x < 'a' },'< a')
11
+ assert_equal(['a' ], ITEMS.select_while{|x| x < 'b' },'< b')
12
+ assert_equal(['a','b' ], ITEMS.select_while{|x| x < 'c' },'< c')
13
+ assert_equal(['a','b','c'], ITEMS.select_while{|x| x < 'd' },'< d')
14
+ assert_equal(['a','b','c'], ITEMS.select_while{|x| x < 'e' },'< e')
15
+ end
16
+
17
+ def test_select_until_condition
18
+ assert_equal([ ], ITEMS.select_until{|x| x == 'a' },'a')
19
+ assert_equal(['a' ], ITEMS.select_until{|x| x == 'b' },'b')
20
+ assert_equal(['a','b' ], ITEMS.select_until{|x| x == 'c' },'c')
21
+ assert_equal(['a','b','c'], ITEMS.select_until{|x| x == 'd' },'d')
22
+ assert_equal(['a','b','c'], ITEMS.select_until{|x| x == 'e' },'e')
23
+ end
24
+
25
+ def test_select_with_index
26
+ assert_equal([ ], ITEMS.select_with_index{|x,i| i < 0 },'i < 0')
27
+ assert_equal(['a' ], ITEMS.select_with_index{|x,i| i < 1 },'i < 1')
28
+ assert_equal(['a','b' ], ITEMS.select_with_index{|x,i| i < 2 },'i < 2')
29
+ assert_equal(['a','b','c'], ITEMS.select_with_index{|x,i| i < 3 },'i < 3')
30
+ assert_equal(['a','b','c'], ITEMS.select_with_index{|x,i| i < 4 },'i < 4')
31
+ end
32
+
33
+ end
@@ -7,7 +7,6 @@ require 'set'
7
7
  class EnumerableTest < Minitest::Test
8
8
 
9
9
  ITEMS = ['a','b','c']
10
- MAPTEST = [123,"456"] # to test typecasts-- one is numeric and one is string
11
10
  RGB = ["red","green","blue"] # to test case changes
12
11
 
13
12
 
@@ -47,95 +46,6 @@ class EnumerableTest < Minitest::Test
47
46
  end
48
47
 
49
48
 
50
- ########################################################################
51
- #
52
- # map
53
- #
54
- ########################################################################
55
-
56
-
57
- class Mock #:nodoc: all
58
- attr_accessor :id
59
-
60
- def initialize(id)
61
- @id=id
62
- end
63
-
64
- def to_a
65
- [self]
66
- end
67
-
68
- end
69
-
70
-
71
- A = Mock.new('a')
72
- B = Mock.new('b')
73
- C = Mock.new('c')
74
-
75
-
76
- def test_map_id
77
- assert_equal(['a','b','c'],[A,B,C].map_id)
78
- end
79
-
80
- def test_map_to_a
81
- assert_equal([[123],["456"]],MAPTEST.to_set.map_to_a)
82
- end
83
-
84
- def test_map_to_f
85
- assert_equal([123.0,456.0],MAPTEST.map_to_f)
86
- end
87
-
88
- def test_map_to_i
89
- assert_equal([123,456],MAPTEST.map_to_i)
90
- end
91
-
92
- def test_map_to_s
93
- assert_equal(["123","456"],MAPTEST.map_to_s)
94
- end
95
-
96
- def test_map_to_sym
97
- assert_equal([:a,:b,:c],ITEMS.map_to_sym)
98
- end
99
-
100
- def test_map_with_index
101
- assert_equal(['a0','b1','c2'],ITEMS.map_with_index{|x,i| "#{x}#{i}"})
102
- end
103
-
104
-
105
- ########################################################################
106
- #
107
- # select
108
- #
109
- ########################################################################
110
-
111
-
112
- def test_select_while
113
- assert_equal([ ],ITEMS.select_while{|x| x < 'a' },'< a')
114
- assert_equal(['a' ],ITEMS.select_while{|x| x < 'b' },'< b')
115
- assert_equal(['a','b' ],ITEMS.select_while{|x| x < 'c' },'< c')
116
- assert_equal(['a','b','c'],ITEMS.select_while{|x| x < 'd' },'< d')
117
- assert_equal(['a','b','c'],ITEMS.select_while{|x| x < 'e' },'< e')
118
- end
119
-
120
-
121
- def test_select_until_condition
122
- assert_equal([ ],ITEMS.select_until{|x| x == 'a' },'a')
123
- assert_equal(['a' ],ITEMS.select_until{|x| x == 'b' },'b')
124
- assert_equal(['a','b' ],ITEMS.select_until{|x| x == 'c' },'c')
125
- assert_equal(['a','b','c'],ITEMS.select_until{|x| x == 'd' },'d')
126
- assert_equal(['a','b','c'],ITEMS.select_until{|x| x == 'e' },'e')
127
- end
128
-
129
-
130
- def test_select_with_index
131
- assert_equal([ ],ITEMS.select_with_index{|x,i| i < 0 },'i < 0')
132
- assert_equal(['a' ],ITEMS.select_with_index{|x,i| i < 1 },'i < 1')
133
- assert_equal(['a','b' ],ITEMS.select_with_index{|x,i| i < 2 },'i < 2')
134
- assert_equal(['a','b','c'],ITEMS.select_with_index{|x,i| i < 3 },'i < 3')
135
- assert_equal(['a','b','c'],ITEMS.select_with_index{|x,i| i < 4 },'i < 4')
136
- end
137
-
138
-
139
49
  ########################################################################
140
50
  #
141
51
  # bisect
@@ -164,52 +74,6 @@ class EnumerableTest < Minitest::Test
164
74
  end
165
75
 
166
76
 
167
- ########################################################################
168
- #
169
- # nitems
170
- #
171
- ########################################################################
172
-
173
- def test_nitems?
174
- assert_equal(true, ITEMS.nitems?(0){|x| x < 'a'})
175
- assert_equal(false, ITEMS.nitems?(1){|x| x < 'a'})
176
- assert_equal(false, ITEMS.nitems?(2){|x| x < 'a'})
177
- assert_equal(false, ITEMS.nitems?(0){|x| x < 'b'})
178
- assert_equal(true, ITEMS.nitems?(1){|x| x < 'b'})
179
- assert_equal(false, ITEMS.nitems?(2){|x| x < 'b'})
180
- assert_equal(false, ITEMS.nitems?(0){|x| x < 'c'})
181
- assert_equal(false, ITEMS.nitems?(1){|x| x < 'c'})
182
- assert_equal(true, ITEMS.nitems?(2){|x| x < 'c'})
183
- end
184
-
185
-
186
- def test_nitems_while
187
- assert_equal(0,ITEMS.nitems_while{|x| x < 'a' },'< a')
188
- assert_equal(1,ITEMS.nitems_while{|x| x < 'b' },'< b')
189
- assert_equal(2,ITEMS.nitems_while{|x| x < 'c' },'< c')
190
- assert_equal(3,ITEMS.nitems_while{|x| x < 'd' },'< d')
191
- assert_equal(3,ITEMS.nitems_while{|x| x < 'e' },'< e')
192
- end
193
-
194
-
195
- def test_nitems_until
196
- assert_equal(0,ITEMS.nitems_until{|x| x == 'a' },'a')
197
- assert_equal(1,ITEMS.nitems_until{|x| x == 'b' },'b')
198
- assert_equal(2,ITEMS.nitems_until{|x| x == 'c' },'c')
199
- assert_equal(3,ITEMS.nitems_until{|x| x == 'd' },'d')
200
- assert_equal(3,ITEMS.nitems_until{|x| x == 'e' },'e')
201
- end
202
-
203
-
204
- def test_nitems_with_index
205
- assert_equal(0,ITEMS.nitems_with_index{|x,i| i < 0 },'i < 0')
206
- assert_equal(1,ITEMS.nitems_with_index{|x,i| i < 1 },'i < 1')
207
- assert_equal(2,ITEMS.nitems_with_index{|x,i| i < 2 },'i < 2')
208
- assert_equal(3,ITEMS.nitems_with_index{|x,i| i < 3 },'i < 3')
209
- assert_equal(3,ITEMS.nitems_with_index{|x,i| i < 4 },'i < 4')
210
- end
211
-
212
-
213
77
  ########################################################################
214
78
  #
215
79
  # strings