external 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. data/History +5 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +168 -0
  4. data/lib/ext_arc.rb +108 -0
  5. data/lib/ext_arr.rb +727 -0
  6. data/lib/ext_ind.rb +1120 -0
  7. data/lib/external/base.rb +85 -0
  8. data/lib/external/chunkable.rb +105 -0
  9. data/lib/external/enumerable.rb +137 -0
  10. data/lib/external/io.rb +398 -0
  11. data/lib/external.rb +3 -0
  12. data/test/benchmarks/benchmarks_20070918.txt +45 -0
  13. data/test/benchmarks/benchmarks_20070921.txt +91 -0
  14. data/test/benchmarks/benchmarks_20071006.txt +147 -0
  15. data/test/benchmarks/test_copy_file.rb +80 -0
  16. data/test/benchmarks/test_pos_speed.rb +47 -0
  17. data/test/benchmarks/test_read_time.rb +55 -0
  18. data/test/cached_ext_ind_test.rb +219 -0
  19. data/test/check/benchmark_check.rb +441 -0
  20. data/test/check/namespace_conflicts_check.rb +23 -0
  21. data/test/check/pack_check.rb +90 -0
  22. data/test/ext_arc_test.rb +286 -0
  23. data/test/ext_arr/alt_sep.txt +3 -0
  24. data/test/ext_arr/cr_lf_input.txt +3 -0
  25. data/test/ext_arr/input.index +0 -0
  26. data/test/ext_arr/input.txt +1 -0
  27. data/test/ext_arr/inputb.index +0 -0
  28. data/test/ext_arr/inputb.txt +1 -0
  29. data/test/ext_arr/lf_input.txt +3 -0
  30. data/test/ext_arr/lines.txt +19 -0
  31. data/test/ext_arr/without_index.txt +1 -0
  32. data/test/ext_arr_test.rb +534 -0
  33. data/test/ext_ind_test.rb +1472 -0
  34. data/test/external/base_test.rb +74 -0
  35. data/test/external/chunkable_test.rb +182 -0
  36. data/test/external/index/input.index +0 -0
  37. data/test/external/index/inputb.index +0 -0
  38. data/test/external/io_test.rb +414 -0
  39. data/test/external_test_helper.rb +31 -0
  40. data/test/external_test_suite.rb +4 -0
  41. data/test/test_array.rb +1192 -0
  42. metadata +104 -0
@@ -0,0 +1,1192 @@
1
+ require 'test/unit'
2
+
3
+ ###########################
4
+ # Array methods tests
5
+ #
6
+ # taken from Ruby 1.9 trunk, revision 13450 (2007-16-2007)
7
+ # test/ruby/test_array.rb
8
+ #
9
+ # run rake diff_test_array to view any differences between
10
+ # this and the current test_array
11
+ ###########################
12
+
13
+ #class TestArray < Test::Unit::TestCase
14
+ module TestArray
15
+
16
+ # def test_0_literal
17
+ # assert_equal([1, 2, 3, 4], [1, 2] + [3, 4])
18
+ # assert_equal([1, 2, 1, 2], [1, 2] * 2)
19
+ # assert_equal("1:2", [1, 2] * ":")
20
+ #
21
+ # assert_equal([1, 2].hash, [1, 2].hash)
22
+ #
23
+ # assert_equal([2,3], [1,2,3] & [2,3,4])
24
+ # assert_equal([1,2,3,4], [1,2,3] | [2,3,4])
25
+ # assert_equal([1,2,3] - [2,3], [1])
26
+ #
27
+ # x = [0, 1, 2, 3, 4, 5]
28
+ # assert_equal(2, x[2])
29
+ # assert_equal([1, 2, 3], x[1..3])
30
+ # assert_equal([1, 2, 3], x[1,3])
31
+ #
32
+ # x[0, 2] = 10
33
+ # assert(x[0] == 10 && x[1] == 2)
34
+ #
35
+ # x[0, 0] = -1
36
+ # assert(x[0] == -1 && x[1] == 10)
37
+ #
38
+ # x[-1, 1] = 20
39
+ # assert(x[-1] == 20 && x.pop == 20)
40
+ # end
41
+ #
42
+ # def test_array_andor_0
43
+ # assert_equal([2], ([1,2,3]&[2,4,6]))
44
+ # assert_equal([1,2,3,4,6], ([1,2,3]|[2,4,6]))
45
+ # end
46
+ #
47
+ # def test_compact_0
48
+ # a = [nil, 1, nil, nil, 5, nil, nil]
49
+ # assert_equal [1, 5], a.compact
50
+ # assert_equal [nil, 1, nil, nil, 5, nil, nil], a
51
+ # a.compact!
52
+ # assert_equal [1, 5], a
53
+ # end
54
+ #
55
+ # def test_uniq_0
56
+ # x = [1, 1, 4, 2, 5, 4, 5, 1, 2]
57
+ # x.uniq!
58
+ # assert_equal([1, 4, 2, 5], x)
59
+ # end
60
+ #
61
+ # def test_empty_0
62
+ # assert_equal true, [].empty?
63
+ # assert_equal false, [1].empty?
64
+ # assert_equal false, [1, 1, 4, 2, 5, 4, 5, 1, 2].empty?
65
+ # end
66
+ #
67
+ # def test_sort_0
68
+ # x = ["it", "came", "to", "pass", "that", "..."]
69
+ # x = x.sort.join(" ")
70
+ # assert_equal("... came it pass that to", x)
71
+ # x = [2,5,3,1,7]
72
+ # x.sort!{|a,b| a<=>b} # sort with condition
73
+ # assert_equal([1,2,3,5,7], x)
74
+ # x.sort!{|a,b| b-a} # reverse sort
75
+ # assert_equal([7,5,3,2,1], x)
76
+ # end
77
+ #
78
+ # def test_split_0
79
+ # x = "The Boassert of Mormon"
80
+ # assert_equal(x.reverse, x.split(//).reverse!.join)
81
+ # assert_equal(x.reverse, x.reverse!)
82
+ # assert_equal("g:n:i:r:t:s: :e:t:y:b: :1", "1 byte string".split(//).reverse.join(":"))
83
+ # x = "a b c d"
84
+ # assert_equal(['a', 'b', 'c', 'd'], x.split)
85
+ # assert_equal(['a', 'b', 'c', 'd'], x.split(' '))
86
+ # end
87
+ #
88
+ # def test_misc_0
89
+ # assert(defined? "a".chomp)
90
+ # assert_equal(["a", "b", "c"], "abc".scan(/./))
91
+ # assert_equal([["1a"], ["2b"], ["3c"]], "1a2b3c".scan(/(\d.)/))
92
+ # # non-greedy match
93
+ # assert_equal([["a", "12"], ["b", "22"]], "a=12;b=22".scan(/(.*?)=(\d*);?/))
94
+ #
95
+ # x = [1]
96
+ # assert_equal('1:1:1:1:1', (x * 5).join(":"))
97
+ # assert_equal('1', (x * 1).join(":"))
98
+ # assert_equal('', (x * 0).join(":"))
99
+ #
100
+ # *x = *(1..7).to_a
101
+ # assert_equal(7, x.size)
102
+ # assert_equal([1, 2, 3, 4, 5, 6, 7], x)
103
+ #
104
+ # x = [1,2,3]
105
+ # x[1,0] = x
106
+ # assert_equal([1,1,2,3,2,3], x)
107
+ #
108
+ # x = [1,2,3]
109
+ # x[-1,0] = x
110
+ # assert_equal([1,2,1,2,3,3], x)
111
+ #
112
+ # x = [1,2,3]
113
+ # x.concat(x)
114
+ # assert_equal([1,2,3,1,2,3], x)
115
+ #
116
+ # x = [1,2,3]
117
+ # x.clear
118
+ # assert_equal([], x)
119
+ #
120
+ # x = [1,2,3]
121
+ # y = x.dup
122
+ # x << 4
123
+ # y << 5
124
+ # assert_equal([1,2,3,4], x)
125
+ # assert_equal([1,2,3,5], y)
126
+ # end
127
+ #
128
+ # def test_beg_end_0
129
+ # x = [1, 2, 3, 4, 5]
130
+ #
131
+ # assert_equal(1, x.first)
132
+ # assert_equal([1], x.first(1))
133
+ # assert_equal([1, 2, 3], x.first(3))
134
+ #
135
+ # assert_equal(5, x.last)
136
+ # assert_equal([5], x.last(1))
137
+ # assert_equal([3, 4, 5], x.last(3))
138
+ #
139
+ # assert_equal(1, x.shift)
140
+ # assert_equal([2, 3, 4], x.shift(3))
141
+ # assert_equal([5], x)
142
+ #
143
+ # assert_equal([2, 3, 4, 5], x.unshift(2, 3, 4))
144
+ # assert_equal([1, 2, 3, 4, 5], x.unshift(1))
145
+ # assert_equal([1, 2, 3, 4, 5], x)
146
+ #
147
+ # assert_equal(5, x.pop)
148
+ # assert_equal([3, 4], x.pop(2))
149
+ # assert_equal([1, 2], x)
150
+ #
151
+ # assert_equal([1, 2, 3, 4], x.push(3, 4))
152
+ # assert_equal([1, 2, 3, 4, 5], x.push(5))
153
+ # assert_equal([1, 2, 3, 4, 5], x)
154
+ # end
155
+ #
156
+ # def test_find_all_0
157
+ # assert_respond_to([], :find_all)
158
+ # assert_respond_to([], :select) # Alias
159
+ # assert_equal([], [].find_all{ |obj| obj == "foo"})
160
+ #
161
+ # x = ["foo", "bar", "baz", "baz", 1, 2, 3, 3, 4]
162
+ # assert_equal(["baz","baz"], x.find_all{ |obj| obj == "baz" })
163
+ # assert_equal([3,3], x.find_all{ |obj| obj == 3 })
164
+ # end
165
+ #
166
+ # def test_fill_0
167
+ # assert_equal([-1, -1, -1, -1, -1, -1], [0, 1, 2, 3, 4, 5].fill(-1))
168
+ # assert_equal([0, 1, 2, -1, -1, -1], [0, 1, 2, 3, 4, 5].fill(-1, 3))
169
+ # assert_equal([0, 1, 2, -1, -1, 5], [0, 1, 2, 3, 4, 5].fill(-1, 3, 2))
170
+ # assert_equal([0, 1, 2, -1, -1, -1, -1, -1], [0, 1, 2, 3, 4, 5].fill(-1, 3, 5))
171
+ # assert_equal([0, 1, -1, -1, 4, 5], [0, 1, 2, 3, 4, 5].fill(-1, 2, 2))
172
+ # assert_equal([0, 1, -1, -1, -1, -1, -1], [0, 1, 2, 3, 4, 5].fill(-1, 2, 5))
173
+ # assert_equal([0, 1, 2, 3, -1, 5], [0, 1, 2, 3, 4, 5].fill(-1, -2, 1))
174
+ # assert_equal([0, 1, 2, 3, -1, -1, -1], [0, 1, 2, 3, 4, 5].fill(-1, -2, 3))
175
+ # assert_equal([0, 1, 2, -1, -1, 5], [0, 1, 2, 3, 4, 5].fill(-1, 3..4))
176
+ # assert_equal([0, 1, 2, -1, 4, 5], [0, 1, 2, 3, 4, 5].fill(-1, 3...4))
177
+ # assert_equal([0, 1, -1, -1, -1, 5], [0, 1, 2, 3, 4, 5].fill(-1, 2..-2))
178
+ # assert_equal([0, 1, -1, -1, 4, 5], [0, 1, 2, 3, 4, 5].fill(-1, 2...-2))
179
+ # assert_equal([10, 11, 12, 13, 14, 15], [0, 1, 2, 3, 4, 5].fill{|i| i+10})
180
+ # assert_equal([0, 1, 2, 13, 14, 15], [0, 1, 2, 3, 4, 5].fill(3){|i| i+10})
181
+ # assert_equal([0, 1, 2, 13, 14, 5], [0, 1, 2, 3, 4, 5].fill(3, 2){|i| i+10})
182
+ # assert_equal([0, 1, 2, 13, 14, 15, 16, 17], [0, 1, 2, 3, 4, 5].fill(3, 5){|i| i+10})
183
+ # assert_equal([0, 1, 2, 13, 14, 5], [0, 1, 2, 3, 4, 5].fill(3..4){|i| i+10})
184
+ # assert_equal([0, 1, 2, 13, 4, 5], [0, 1, 2, 3, 4, 5].fill(3...4){|i| i+10})
185
+ # assert_equal([0, 1, 12, 13, 14, 5], [0, 1, 2, 3, 4, 5].fill(2..-2){|i| i+10})
186
+ # assert_equal([0, 1, 12, 13, 4, 5], [0, 1, 2, 3, 4, 5].fill(2...-2){|i| i+10})
187
+ # end
188
+
189
+ # From rubicon
190
+
191
+ # def setup
192
+ # @cls = Array
193
+ # end
194
+
195
+ def test_00_new
196
+ a = @cls.new()
197
+ assert_instance_of(@cls, a)
198
+ assert_equal(0, a.length)
199
+ assert_nil(a[0])
200
+ end
201
+
202
+ def test_01_square_brackets
203
+ a = @cls[ 5, 4, 3, 2, 1 ]
204
+ assert_instance_of(@cls, a)
205
+ assert_equal(5, a.length)
206
+ 5.times { |i| assert_equal(5-i, a[i]) }
207
+ assert_nil(a[6])
208
+ end
209
+
210
+ # def test_AND # '&'
211
+ # assert_equal(@cls[1, 3], @cls[ 1, 1, 3, 5 ] & @cls[ 1, 2, 3 ])
212
+ # assert_equal(@cls[], @cls[ 1, 1, 3, 5 ] & @cls[ ])
213
+ # assert_equal(@cls[], @cls[ ] & @cls[ 1, 2, 3 ])
214
+ # assert_equal(@cls[], @cls[ 1, 2, 3 ] & @cls[ 4, 5, 6 ])
215
+ # end
216
+ #
217
+ # def test_MUL # '*'
218
+ # assert_equal(@cls[], @cls[]*3)
219
+ # assert_equal(@cls[1, 1, 1], @cls[1]*3)
220
+ # assert_equal(@cls[1, 2, 1, 2, 1, 2], @cls[1, 2]*3)
221
+ # assert_equal(@cls[], @cls[1, 2, 3] * 0)
222
+ # assert_raise(ArgumentError) { @cls[1, 2]*(-3) }
223
+ #
224
+ # assert_equal('1-2-3-4-5', @cls[1, 2, 3, 4, 5] * '-')
225
+ # assert_equal('12345', @cls[1, 2, 3, 4, 5] * '')
226
+ #
227
+ # end
228
+ #
229
+ def test_PLUS # '+'
230
+ assert_equal(@cls[], @cls[] + @cls[])
231
+ assert_equal(@cls[1], @cls[1] + @cls[])
232
+ assert_equal(@cls[1], @cls[] + @cls[1])
233
+ assert_equal(@cls[1, 1], @cls[1] + @cls[1])
234
+ assert_equal(@cls['cat', 'dog', 1, 2, 3], %w(cat dog) + (1..3).to_a)
235
+ end
236
+ #
237
+ # def test_MINUS # '-'
238
+ # assert_equal(@cls[], @cls[1] - @cls[1])
239
+ # assert_equal(@cls[1], @cls[1, 2, 3, 4, 5] - @cls[2, 3, 4, 5])
240
+ # # Ruby 1.8 feature change
241
+ # #assert_equal(@cls[1], @cls[1, 2, 1, 3, 1, 4, 1, 5] - @cls[2, 3, 4, 5])
242
+ # assert_equal(@cls[1, 1, 1, 1], @cls[1, 2, 1, 3, 1, 4, 1, 5] - @cls[2, 3, 4, 5])
243
+ # a = @cls[]
244
+ # 1000.times { a << 1 }
245
+ # assert_equal(1000, a.length)
246
+ # #assert_equal(@cls[1], a - @cls[2])
247
+ # assert_equal(@cls[1] * 1000, a - @cls[2])
248
+ # #assert_equal(@cls[1], @cls[1, 2, 1] - @cls[2])
249
+ # assert_equal(@cls[1, 1], @cls[1, 2, 1] - @cls[2])
250
+ # assert_equal(@cls[1, 2, 3], @cls[1, 2, 3] - @cls[4, 5, 6])
251
+ # end
252
+
253
+ def test_LSHIFT # '<<'
254
+ a = @cls[]
255
+ a << 1
256
+ assert_equal(@cls[1], a)
257
+ a << 2 << 3
258
+ assert_equal(@cls[1, 2, 3], a)
259
+ a << nil << 'cat'
260
+ assert_equal(@cls[1, 2, 3, nil, 'cat'], a)
261
+ a << a
262
+ assert_equal(@cls[1, 2, 3, nil, 'cat', a], a)
263
+ end
264
+
265
+ def test_CMP # '<=>'
266
+ assert_equal(0, @cls[] <=> @cls[])
267
+ assert_equal(0, @cls[1] <=> @cls[1])
268
+ assert_equal(0, @cls[1, 2, 3, 'cat'] <=> @cls[1, 2, 3, 'cat'])
269
+ assert_equal(-1, @cls[] <=> @cls[1])
270
+ assert_equal(1, @cls[1] <=> @cls[])
271
+ assert_equal(-1, @cls[1, 2, 3] <=> @cls[1, 2, 3, 'cat'])
272
+ assert_equal(1, @cls[1, 2, 3, 'cat'] <=> @cls[1, 2, 3])
273
+ assert_equal(-1, @cls[1, 2, 3, 'cat'] <=> @cls[1, 2, 3, 'dog'])
274
+ assert_equal(1, @cls[1, 2, 3, 'dog'] <=> @cls[1, 2, 3, 'cat'])
275
+ end
276
+
277
+ def test_EQUAL # '=='
278
+ assert(@cls[] == @cls[])
279
+ assert(@cls[1] == @cls[1])
280
+ assert(@cls[1, 1, 2, 2] == @cls[1, 1, 2, 2])
281
+ assert(@cls[1.0, 1.0, 2.0, 2.0] == @cls[1, 1, 2, 2])
282
+ end
283
+
284
+ # def test_VERY_EQUAL # '==='
285
+ # assert(@cls[] === @cls[])
286
+ # assert(@cls[1] === @cls[1])
287
+ # assert(@cls[1, 1, 2, 2] === @cls[1, 1, 2, 2])
288
+ # assert(@cls[1.0, 1.0, 2.0, 2.0] === @cls[1, 1, 2, 2])
289
+ # end
290
+ #
291
+ def test_AREF # '[]'
292
+ a = @cls[*(1..100).to_a]
293
+
294
+ assert_equal(1, a[0])
295
+ assert_equal(100, a[99])
296
+ assert_nil(a[100])
297
+ assert_equal(100, a[-1])
298
+ assert_equal(99, a[-2])
299
+ assert_equal(1, a[-100])
300
+ assert_nil(a[-101])
301
+ assert_nil(a[-101,0])
302
+ assert_nil(a[-101,1])
303
+ assert_nil(a[-101,-1])
304
+ assert_nil(a[10,-1])
305
+
306
+ assert_equal(@cls[1], a[0,1])
307
+ assert_equal(@cls[100], a[99,1])
308
+ assert_equal(@cls[], a[100,1])
309
+ assert_equal(@cls[100], a[99,100])
310
+ assert_equal(@cls[100], a[-1,1])
311
+ assert_equal(@cls[99], a[-2,1])
312
+ assert_equal(@cls[], a[-100,0])
313
+ assert_equal(@cls[1], a[-100,1])
314
+
315
+ assert_equal(@cls[10, 11, 12], a[9, 3])
316
+ assert_equal(@cls[10, 11, 12], a[-91, 3])
317
+
318
+ assert_equal(@cls[1], a[0..0])
319
+ assert_equal(@cls[100], a[99..99])
320
+ assert_equal(@cls[], a[100..100])
321
+ assert_equal(@cls[100], a[99..200])
322
+ assert_equal(@cls[100], a[-1..-1])
323
+ assert_equal(@cls[99], a[-2..-2])
324
+
325
+ assert_equal(@cls[10, 11, 12], a[9..11])
326
+ assert_equal(@cls[10, 11, 12], a[-91..-89])
327
+
328
+ assert_nil(a[10, -3])
329
+ # Ruby 1.8 feature change:
330
+ # Array#[size..x] returns [] instead of nil.
331
+ #assert_nil(a[10..7])
332
+ assert_equal [], a[10..7]
333
+
334
+ assert_raise(TypeError) {a['cat']}
335
+ end
336
+
337
+ def test_ASET # '[]='
338
+ a = @cls[*(0..99).to_a]
339
+ assert_equal(0, a[0] = 0)
340
+ assert_equal(@cls[0] + @cls[*(1..99).to_a], a)
341
+
342
+ a = @cls[*(0..99).to_a]
343
+ assert_equal(0, a[10,10] = 0)
344
+ assert_equal(@cls[*(0..9).to_a] + @cls[0] + @cls[*(20..99).to_a], a)
345
+
346
+ a = @cls[*(0..99).to_a]
347
+ assert_equal(0, a[-1] = 0)
348
+ assert_equal(@cls[*(0..98).to_a] + @cls[0], a)
349
+
350
+ a = @cls[*(0..99).to_a]
351
+ assert_equal(0, a[-10, 10] = 0)
352
+ assert_equal(@cls[*(0..89).to_a] + @cls[0], a)
353
+
354
+ a = @cls[*(0..99).to_a]
355
+ assert_equal(0, a[0,1000] = 0)
356
+ assert_equal(@cls[0] , a)
357
+
358
+ a = @cls[*(0..99).to_a]
359
+ assert_equal(0, a[10..19] = 0)
360
+ assert_equal(@cls[*(0..9).to_a] + @cls[0] + @cls[*(20..99).to_a], a)
361
+
362
+ b = @cls[*%w( a b c )]
363
+ a = @cls[*(0..99).to_a]
364
+ assert_equal(b, a[0,1] = b)
365
+ assert_equal(b + @cls[*(1..99).to_a], a)
366
+
367
+ a = @cls[*(0..99).to_a]
368
+ assert_equal(b, a[10,10] = b)
369
+ assert_equal(@cls[*(0..9).to_a] + b + @cls[*(20..99).to_a], a)
370
+
371
+ a = @cls[*(0..99).to_a]
372
+ assert_equal(b, a[-1, 1] = b)
373
+ assert_equal(@cls[*(0..98).to_a] + b, a)
374
+
375
+ a = @cls[*(0..99).to_a]
376
+ assert_equal(b, a[-10, 10] = b)
377
+ assert_equal(@cls[*(0..89).to_a] + b, a)
378
+
379
+ a = @cls[*(0..99).to_a]
380
+ assert_equal(b, a[0,1000] = b)
381
+ assert_equal(b , a)
382
+
383
+ a = @cls[*(0..99).to_a]
384
+ assert_equal(b, a[10..19] = b)
385
+ assert_equal(@cls[*(0..9).to_a] + b + @cls[*(20..99).to_a], a)
386
+
387
+ # Ruby 1.8 feature change:
388
+ # assigning nil does not remove elements.
389
+ =begin
390
+ a = @cls[*(0..99).to_a]
391
+ assert_equal(nil, a[0,1] = nil)
392
+ assert_equal(@cls[*(1..99).to_a], a)
393
+
394
+ a = @cls[*(0..99).to_a]
395
+ assert_equal(nil, a[10,10] = nil)
396
+ assert_equal(@cls[*(0..9).to_a] + @cls[*(20..99).to_a], a)
397
+
398
+ a = @cls[*(0..99).to_a]
399
+ assert_equal(nil, a[-1, 1] = nil)
400
+ assert_equal(@cls[*(0..98).to_a], a)
401
+
402
+ a = @cls[*(0..99).to_a]
403
+ assert_equal(nil, a[-10, 10] = nil)
404
+ assert_equal(@cls[*(0..89).to_a], a)
405
+
406
+ a = @cls[*(0..99).to_a]
407
+ assert_equal(nil, a[0,1000] = nil)
408
+ assert_equal(@cls[] , a)
409
+
410
+ a = @cls[*(0..99).to_a]
411
+ assert_equal(nil, a[10..19] = nil)
412
+ assert_equal(@cls[*(0..9).to_a] + @cls[*(20..99).to_a], a)
413
+ =end
414
+
415
+ a = @cls[1, 2, 3]
416
+ a[1, 0] = a
417
+ assert_equal([1, 1, 2, 3, 2, 3], a)
418
+
419
+ a = @cls[1, 2, 3]
420
+ a[-1, 0] = a
421
+ assert_equal([1, 2, 1, 2, 3, 3], a)
422
+ end
423
+
424
+ # def test_assoc
425
+ # a1 = @cls[*%w( cat feline )]
426
+ # a2 = @cls[*%w( dog canine )]
427
+ # a3 = @cls[*%w( mule asinine )]
428
+ #
429
+ # a = @cls[ a1, a2, a3 ]
430
+ #
431
+ # assert_equal(a1, a.assoc('cat'))
432
+ # assert_equal(a3, a.assoc('mule'))
433
+ # assert_equal(nil, a.assoc('asinine'))
434
+ # assert_equal(nil, a.assoc('wombat'))
435
+ # assert_equal(nil, a.assoc(1..2))
436
+ # end
437
+
438
+ def test_at
439
+ a = @cls[*(0..99).to_a]
440
+ assert_equal(0, a.at(0))
441
+ assert_equal(10, a.at(10))
442
+ assert_equal(99, a.at(99))
443
+ assert_equal(nil, a.at(100))
444
+ assert_equal(99, a.at(-1))
445
+ assert_equal(0, a.at(-100))
446
+ assert_equal(nil, a.at(-101))
447
+ assert_raise(TypeError) { a.at('cat') }
448
+ end
449
+
450
+ def test_clear
451
+ a = @cls[1, 2, 3]
452
+ b = a.clear
453
+ assert_equal(@cls[], a)
454
+ assert_equal(@cls[], b)
455
+ assert_equal(a.__id__, b.__id__)
456
+ end
457
+ #
458
+ # def test_clone
459
+ # for taint in [ false, true ]
460
+ # for frozen in [ false, true ]
461
+ # a = @cls[*(0..99).to_a]
462
+ # a.taint if taint
463
+ # a.freeze if frozen
464
+ # b = a.clone
465
+ #
466
+ # assert_equal(a, b)
467
+ # assert(a.__id__ != b.__id__)
468
+ # assert_equal(a.frozen?, b.frozen?)
469
+ # assert_equal(a.tainted?, b.tainted?)
470
+ # end
471
+ # end
472
+ # end
473
+ #
474
+ # def test_collect
475
+ # a = @cls[ 1, 'cat', 1..1 ]
476
+ # assert_equal([ Fixnum, String, Range], a.collect {|e| e.class} )
477
+ # assert_equal([ 99, 99, 99], a.collect { 99 } )
478
+ #
479
+ # assert_equal([], @cls[].collect { 99 })
480
+ #
481
+ # # Ruby 1.9 feature change:
482
+ # # Enumerable#collect without block returns an Enumerator.
483
+ # #assert_equal([1, 2, 3], @cls[1, 2, 3].collect)
484
+ # assert_kind_of Enumerable::Enumerator, @cls[1, 2, 3].collect
485
+ # end
486
+ #
487
+ # # also update map!
488
+ # def test_collect!
489
+ # a = @cls[ 1, 'cat', 1..1 ]
490
+ # assert_equal([ Fixnum, String, Range], a.collect! {|e| e.class} )
491
+ # assert_equal([ Fixnum, String, Range], a)
492
+ #
493
+ # a = @cls[ 1, 'cat', 1..1 ]
494
+ # assert_equal([ 99, 99, 99], a.collect! { 99 } )
495
+ # assert_equal([ 99, 99, 99], a)
496
+ #
497
+ # a = @cls[ ]
498
+ # assert_equal([], a.collect! { 99 })
499
+ # assert_equal([], a)
500
+ # end
501
+ #
502
+ # def test_compact
503
+ # a = @cls[ 1, nil, nil, 2, 3, nil, 4 ]
504
+ # assert_equal(@cls[1, 2, 3, 4], a.compact)
505
+ #
506
+ # a = @cls[ nil, 1, nil, 2, 3, nil, 4 ]
507
+ # assert_equal(@cls[1, 2, 3, 4], a.compact)
508
+ #
509
+ # a = @cls[ 1, nil, nil, 2, 3, nil, 4, nil ]
510
+ # assert_equal(@cls[1, 2, 3, 4], a.compact)
511
+ #
512
+ # a = @cls[ 1, 2, 3, 4 ]
513
+ # assert_equal(@cls[1, 2, 3, 4], a.compact)
514
+ # end
515
+ #
516
+ # def test_compact!
517
+ # a = @cls[ 1, nil, nil, 2, 3, nil, 4 ]
518
+ # assert_equal(@cls[1, 2, 3, 4], a.compact!)
519
+ # assert_equal(@cls[1, 2, 3, 4], a)
520
+ #
521
+ # a = @cls[ nil, 1, nil, 2, 3, nil, 4 ]
522
+ # assert_equal(@cls[1, 2, 3, 4], a.compact!)
523
+ # assert_equal(@cls[1, 2, 3, 4], a)
524
+ #
525
+ # a = @cls[ 1, nil, nil, 2, 3, nil, 4, nil ]
526
+ # assert_equal(@cls[1, 2, 3, 4], a.compact!)
527
+ # assert_equal(@cls[1, 2, 3, 4], a)
528
+ #
529
+ # a = @cls[ 1, 2, 3, 4 ]
530
+ # assert_equal(nil, a.compact!)
531
+ # assert_equal(@cls[1, 2, 3, 4], a)
532
+ # end
533
+ #
534
+ def test_concat
535
+ assert_equal(@cls[1, 2, 3, 4], @cls[1, 2].concat(@cls[3, 4]))
536
+ assert_equal(@cls[1, 2, 3, 4], @cls[].concat(@cls[1, 2, 3, 4]))
537
+ assert_equal(@cls[1, 2, 3, 4], @cls[1, 2, 3, 4].concat(@cls[]))
538
+ assert_equal(@cls[], @cls[].concat(@cls[]))
539
+ assert_equal(@cls[@cls[1, 2], @cls[3, 4]], @cls[@cls[1, 2]].concat(@cls[@cls[3, 4]]))
540
+
541
+ a = @cls[1, 2, 3]
542
+ a.concat(a)
543
+ assert_equal([1, 2, 3, 1, 2, 3], a)
544
+ end
545
+ #
546
+ # def test_delete
547
+ # a = @cls[*('cab'..'cat').to_a]
548
+ # assert_equal('cap', a.delete('cap'))
549
+ # assert_equal(@cls[*('cab'..'cao').to_a] + @cls[*('caq'..'cat').to_a], a)
550
+ #
551
+ # a = @cls[*('cab'..'cat').to_a]
552
+ # assert_equal('cab', a.delete('cab'))
553
+ # assert_equal(@cls[*('cac'..'cat').to_a], a)
554
+ #
555
+ # a = @cls[*('cab'..'cat').to_a]
556
+ # assert_equal('cat', a.delete('cat'))
557
+ # assert_equal(@cls[*('cab'..'cas').to_a], a)
558
+ #
559
+ # a = @cls[*('cab'..'cat').to_a]
560
+ # assert_equal(nil, a.delete('cup'))
561
+ # assert_equal(@cls[*('cab'..'cat').to_a], a)
562
+ #
563
+ # a = @cls[*('cab'..'cat').to_a]
564
+ # assert_equal(99, a.delete('cup') { 99 } )
565
+ # assert_equal(@cls[*('cab'..'cat').to_a], a)
566
+ # end
567
+ #
568
+ # def test_delete_at
569
+ # a = @cls[*(1..5).to_a]
570
+ # assert_equal(3, a.delete_at(2))
571
+ # assert_equal(@cls[1, 2, 4, 5], a)
572
+ #
573
+ # a = @cls[*(1..5).to_a]
574
+ # assert_equal(4, a.delete_at(-2))
575
+ # assert_equal(@cls[1, 2, 3, 5], a)
576
+ #
577
+ # a = @cls[*(1..5).to_a]
578
+ # assert_equal(nil, a.delete_at(5))
579
+ # assert_equal(@cls[1, 2, 3, 4, 5], a)
580
+ #
581
+ # a = @cls[*(1..5).to_a]
582
+ # assert_equal(nil, a.delete_at(-6))
583
+ # assert_equal(@cls[1, 2, 3, 4, 5], a)
584
+ # end
585
+ #
586
+ # # also reject!
587
+ # def test_delete_if
588
+ # a = @cls[ 1, 2, 3, 4, 5 ]
589
+ # assert_equal(a, a.delete_if { false })
590
+ # assert_equal(@cls[1, 2, 3, 4, 5], a)
591
+ #
592
+ # a = @cls[ 1, 2, 3, 4, 5 ]
593
+ # assert_equal(a, a.delete_if { true })
594
+ # assert_equal(@cls[], a)
595
+ #
596
+ # a = @cls[ 1, 2, 3, 4, 5 ]
597
+ # assert_equal(a, a.delete_if { |i| i > 3 })
598
+ # assert_equal(@cls[1, 2, 3], a)
599
+ # end
600
+ #
601
+ # def test_dup
602
+ # for taint in [ false, true ]
603
+ # for frozen in [ false, true ]
604
+ # a = @cls[*(0..99).to_a]
605
+ # a.taint if taint
606
+ # a.freeze if frozen
607
+ # b = a.dup
608
+ #
609
+ # assert_equal(a, b)
610
+ # assert(a.__id__ != b.__id__)
611
+ # assert_equal(false, b.frozen?)
612
+ # assert_equal(a.tainted?, b.tainted?)
613
+ # end
614
+ # end
615
+ # end
616
+ #
617
+ def test_each
618
+ a = @cls[*%w( ant bat cat dog )]
619
+ i = 0
620
+ a.each { |e|
621
+ assert_equal(a[i], e)
622
+ i += 1
623
+ }
624
+ assert_equal(4, i)
625
+
626
+ a = @cls[]
627
+ i = 0
628
+ a.each { |e|
629
+ assert_equal(a[i], e)
630
+ i += 1
631
+ }
632
+ assert_equal(0, i)
633
+
634
+ assert_equal(a, a.each {})
635
+ end
636
+
637
+ def test_each_index
638
+ a = @cls[*%w( ant bat cat dog )]
639
+ i = 0
640
+ a.each_index { |ind|
641
+ assert_equal(i, ind)
642
+ i += 1
643
+ }
644
+ assert_equal(4, i)
645
+
646
+ a = @cls[]
647
+ i = 0
648
+ a.each_index { |ind|
649
+ assert_equal(i, ind)
650
+ i += 1
651
+ }
652
+ assert_equal(0, i)
653
+
654
+ assert_equal(a, a.each_index {})
655
+ end
656
+
657
+ def test_empty?
658
+ assert(@cls[].empty?)
659
+ assert(!@cls[1].empty?)
660
+ end
661
+
662
+ def test_eql?
663
+ assert(@cls[].eql?(@cls[]))
664
+ assert(@cls[1].eql?(@cls[1]))
665
+ assert(@cls[1, 1, 2, 2].eql?(@cls[1, 1, 2, 2]))
666
+ assert(!@cls[1.0, 1.0, 2.0, 2.0].eql?(@cls[1, 1, 2, 2]))
667
+ end
668
+ #
669
+ # def test_fill
670
+ # assert_equal(@cls[], @cls[].fill(99))
671
+ # assert_equal(@cls[], @cls[].fill(99, 0))
672
+ # assert_equal(@cls[99], @cls[].fill(99, 0, 1))
673
+ # assert_equal(@cls[99], @cls[].fill(99, 0..0))
674
+ #
675
+ # assert_equal(@cls[99], @cls[1].fill(99))
676
+ # assert_equal(@cls[99], @cls[1].fill(99, 0))
677
+ # assert_equal(@cls[99], @cls[1].fill(99, 0, 1))
678
+ # assert_equal(@cls[99], @cls[1].fill(99, 0..0))
679
+ #
680
+ # assert_equal(@cls[99, 99], @cls[1, 2].fill(99))
681
+ # assert_equal(@cls[99, 99], @cls[1, 2].fill(99, 0))
682
+ # assert_equal(@cls[99, 99], @cls[1, 2].fill(99, nil))
683
+ # assert_equal(@cls[1, 99], @cls[1, 2].fill(99, 1, nil))
684
+ # assert_equal(@cls[99, 2], @cls[1, 2].fill(99, 0, 1))
685
+ # assert_equal(@cls[99, 2], @cls[1, 2].fill(99, 0..0))
686
+ # end
687
+ #
688
+ def test_first
689
+ assert_equal(3, @cls[3, 4, 5].first)
690
+ assert_equal(nil, @cls[].first)
691
+ end
692
+
693
+ # def test_flatten
694
+ # a1 = @cls[ 1, 2, 3]
695
+ # a2 = @cls[ 5, 6 ]
696
+ # a3 = @cls[ 4, a2 ]
697
+ # a4 = @cls[ a1, a3 ]
698
+ # assert_equal(@cls[1, 2, 3, 4, 5, 6], a4.flatten)
699
+ # assert_equal(@cls[ a1, a3], a4)
700
+ #
701
+ # a5 = @cls[ a1, @cls[], a3 ]
702
+ # assert_equal(@cls[1, 2, 3, 4, 5, 6], a5.flatten)
703
+ # assert_equal(@cls[], @cls[].flatten)
704
+ # assert_equal(@cls[],
705
+ # @cls[@cls[@cls[@cls[],@cls[]],@cls[@cls[]],@cls[]],@cls[@cls[@cls[]]]].flatten)
706
+ #
707
+ # assert_raise(TypeError, "[ruby-dev:31197]") { [[]].flatten("") }
708
+ # end
709
+ #
710
+ # def test_flatten!
711
+ # a1 = @cls[ 1, 2, 3]
712
+ # a2 = @cls[ 5, 6 ]
713
+ # a3 = @cls[ 4, a2 ]
714
+ # a4 = @cls[ a1, a3 ]
715
+ # assert_equal(@cls[1, 2, 3, 4, 5, 6], a4.flatten!)
716
+ # assert_equal(@cls[1, 2, 3, 4, 5, 6], a4)
717
+ #
718
+ # a5 = @cls[ a1, @cls[], a3 ]
719
+ # assert_equal(@cls[1, 2, 3, 4, 5, 6], a5.flatten!)
720
+ # assert_equal(@cls[1, 2, 3, 4, 5, 6], a5)
721
+ #
722
+ # assert_equal(@cls[], @cls[].flatten)
723
+ # assert_equal(@cls[],
724
+ # @cls[@cls[@cls[@cls[],@cls[]],@cls[@cls[]],@cls[]],@cls[@cls[@cls[]]]].flatten)
725
+ # end
726
+ #
727
+ # def test_hash
728
+ # a1 = @cls[ 'cat', 'dog' ]
729
+ # a2 = @cls[ 'cat', 'dog' ]
730
+ # a3 = @cls[ 'dog', 'cat' ]
731
+ # assert(a1.hash == a2.hash)
732
+ # assert(a1.hash != a3.hash)
733
+ # end
734
+ #
735
+ # def test_include?
736
+ # a = @cls[ 'cat', 99, /a/, @cls[ 1, 2, 3] ]
737
+ # assert(a.include?('cat'))
738
+ # assert(a.include?(99))
739
+ # assert(a.include?(/a/))
740
+ # assert(a.include?([1,2,3]))
741
+ # assert(!a.include?('ca'))
742
+ # assert(!a.include?([1,2]))
743
+ # end
744
+ #
745
+ # def test_index
746
+ # a = @cls[ 'cat', 99, /a/, 99, @cls[ 1, 2, 3] ]
747
+ # assert_equal(0, a.index('cat'))
748
+ # assert_equal(1, a.index(99))
749
+ # assert_equal(4, a.index([1,2,3]))
750
+ # assert_nil(a.index('ca'))
751
+ # assert_nil(a.index([1,2]))
752
+ # end
753
+ #
754
+ # def test_values_at
755
+ # a = @cls[*('a'..'j').to_a]
756
+ # assert_equal(@cls['a', 'c', 'e'], a.values_at(0, 2, 4))
757
+ # assert_equal(@cls['j', 'h', 'f'], a.values_at(-1, -3, -5))
758
+ # assert_equal(@cls['h', nil, 'a'], a.values_at(-3, 99, 0))
759
+ # end
760
+ #
761
+ # def test_join
762
+ # $, = ""
763
+ # a = @cls[]
764
+ # assert_equal("", a.join)
765
+ # assert_equal("", a.join(','))
766
+ #
767
+ # $, = ""
768
+ # a = @cls[1, 2]
769
+ # assert_equal("12", a.join)
770
+ # assert_equal("1,2", a.join(','))
771
+ #
772
+ # $, = ""
773
+ # a = @cls[1, 2, 3]
774
+ # assert_equal("123", a.join)
775
+ # assert_equal("1,2,3", a.join(','))
776
+ #
777
+ # $, = ":"
778
+ # a = @cls[1, 2, 3]
779
+ # assert_equal("1:2:3", a.join)
780
+ # assert_equal("1,2,3", a.join(','))
781
+ #
782
+ # $, = ""
783
+ # end
784
+ #
785
+ def test_last
786
+ assert_equal(nil, @cls[].last)
787
+ assert_equal(1, @cls[1].last)
788
+ assert_equal(99, @cls[*(3..99).to_a].last)
789
+ end
790
+
791
+ def test_length
792
+ assert_equal(0, @cls[].length)
793
+ assert_equal(1, @cls[1].length)
794
+ assert_equal(2, @cls[1, nil].length)
795
+ assert_equal(2, @cls[nil, 1].length)
796
+ assert_equal(234, @cls[*(0..233).to_a].length)
797
+ end
798
+ #
799
+ # # also update collect!
800
+ # def test_map!
801
+ # a = @cls[ 1, 'cat', 1..1 ]
802
+ # assert_equal(@cls[ Fixnum, String, Range], a.map! {|e| e.class} )
803
+ # assert_equal(@cls[ Fixnum, String, Range], a)
804
+ #
805
+ # a = @cls[ 1, 'cat', 1..1 ]
806
+ # assert_equal(@cls[ 99, 99, 99], a.map! { 99 } )
807
+ # assert_equal(@cls[ 99, 99, 99], a)
808
+ #
809
+ # a = @cls[ ]
810
+ # assert_equal(@cls[], a.map! { 99 })
811
+ # assert_equal(@cls[], a)
812
+ # end
813
+ #
814
+ # def test_nitems
815
+ # assert_equal(0, @cls[].nitems)
816
+ # assert_equal(1, @cls[1].nitems)
817
+ # assert_equal(1, @cls[1, nil].nitems)
818
+ # assert_equal(1, @cls[nil, 1].nitems)
819
+ # assert_equal(3, @cls[1, nil, nil, 2, nil, 3, nil].nitems)
820
+ # end
821
+ #
822
+ # def test_pack
823
+ # a = @cls[*%w( cat wombat x yy)]
824
+ # assert_equal("catwomx yy ", a.pack("A3A3A3A3"))
825
+ # assert_equal("cat", a.pack("A*"))
826
+ # assert_equal("cwx yy ", a.pack("A3@1A3@2A3A3"))
827
+ # assert_equal("catwomx\000\000yy\000", a.pack("a3a3a3a3"))
828
+ # assert_equal("cat", a.pack("a*"))
829
+ # assert_equal("ca", a.pack("a2"))
830
+ # assert_equal("cat\000\000", a.pack("a5"))
831
+ #
832
+ # assert_equal("\x61", @cls["01100001"].pack("B8"))
833
+ # assert_equal("\x61", @cls["01100001"].pack("B*"))
834
+ # assert_equal("\x61", @cls["0110000100110111"].pack("B8"))
835
+ # assert_equal("\x61\x37", @cls["0110000100110111"].pack("B16"))
836
+ # assert_equal("\x61\x37", @cls["01100001", "00110111"].pack("B8B8"))
837
+ # assert_equal("\x60", @cls["01100001"].pack("B4"))
838
+ # assert_equal("\x40", @cls["01100001"].pack("B2"))
839
+ #
840
+ # assert_equal("\x86", @cls["01100001"].pack("b8"))
841
+ # assert_equal("\x86", @cls["01100001"].pack("b*"))
842
+ # assert_equal("\x86", @cls["0110000100110111"].pack("b8"))
843
+ # assert_equal("\x86\xec", @cls["0110000100110111"].pack("b16"))
844
+ # assert_equal("\x86\xec", @cls["01100001", "00110111"].pack("b8b8"))
845
+ # assert_equal("\x06", @cls["01100001"].pack("b4"))
846
+ # assert_equal("\x02", @cls["01100001"].pack("b2"))
847
+ #
848
+ # assert_equal("ABC", @cls[ 65, 66, 67 ].pack("C3"))
849
+ # assert_equal("\377BC", @cls[ -1, 66, 67 ].pack("C*"))
850
+ # assert_equal("ABC", @cls[ 65, 66, 67 ].pack("c3"))
851
+ # assert_equal("\377BC", @cls[ -1, 66, 67 ].pack("c*"))
852
+ #
853
+ #
854
+ # assert_equal("AB\n\x10", @cls["4142", "0a", "12"].pack("H4H2H1"))
855
+ # assert_equal("AB\n\x02", @cls["1424", "a0", "21"].pack("h4h2h1"))
856
+ #
857
+ # assert_equal("abc=02def=\ncat=\n=01=\n",
858
+ # @cls["abc\002def", "cat", "\001"].pack("M9M3M4"))
859
+ #
860
+ # assert_equal("aGVsbG8K\n", @cls["hello\n"].pack("m"))
861
+ # assert_equal(",:&5L;&\\*:&5L;&\\*\n", @cls["hello\nhello\n"].pack("u"))
862
+ #
863
+ # assert_equal("\xc2\xa9B\xe2\x89\xa0", @cls[0xa9, 0x42, 0x2260].pack("U*"))
864
+ #
865
+ #
866
+ # format = "c2x5CCxsdils_l_a6";
867
+ # # Need the expression in here to force ary[5] to be numeric. This avoids
868
+ # # test2 failing because ary2 goes str->numeric->str and ary does not.
869
+ # ary = [1, -100, 127, 128, 32767, 987.654321098/100.0,
870
+ # 12345, 123456, -32767, -123456, "abcdef"]
871
+ # x = ary.pack(format)
872
+ # ary2 = x.unpack(format)
873
+ #
874
+ # assert_equal(ary.length, ary2.length)
875
+ # assert_equal(ary.join(':'), ary2.join(':'))
876
+ # assert_not_nil(x =~ /def/)
877
+ #
878
+ # =begin
879
+ # skipping "Not tested:
880
+ # D,d & double-precision float, native format\\
881
+ # E & double-precision float, little-endian byte order\\
882
+ # e & single-precision float, little-endian byte order\\
883
+ # F,f & single-precision float, native format\\
884
+ # G & double-precision float, network (big-endian) byte order\\
885
+ # g & single-precision float, network (big-endian) byte order\\
886
+ # I & unsigned integer\\
887
+ # i & integer\\
888
+ # L & unsigned long\\
889
+ # l & long\\
890
+ #
891
+ # N & long, network (big-endian) byte order\\
892
+ # n & short, network (big-endian) byte-order\\
893
+ # P & pointer to a structure (fixed-length string)\\
894
+ # p & pointer to a null-terminated string\\
895
+ # S & unsigned short\\
896
+ # s & short\\
897
+ # V & long, little-endian byte order\\
898
+ # v & short, little-endian byte order\\
899
+ # X & back up a byte\\
900
+ # x & null byte\\
901
+ # Z & ASCII string (null padded, count is width)\\
902
+ # "
903
+ # =end
904
+ # end
905
+ #
906
+ # def test_pop
907
+ # a = @cls[ 'cat', 'dog' ]
908
+ # assert_equal('dog', a.pop)
909
+ # assert_equal(@cls['cat'], a)
910
+ # assert_equal('cat', a.pop)
911
+ # assert_equal(@cls[], a)
912
+ # assert_nil(a.pop)
913
+ # assert_equal(@cls[], a)
914
+ # end
915
+ #
916
+ # def test_push
917
+ # a = @cls[1, 2, 3]
918
+ # assert_equal(@cls[1, 2, 3, 4, 5], a.push(4, 5))
919
+ # assert_equal(@cls[1, 2, 3, 4, 5, nil], a.push(nil))
920
+ # # Ruby 1.8 feature:
921
+ # # Array#push accepts any number of arguments.
922
+ # #assert_raise(ArgumentError, "a.push()") { a.push() }
923
+ # a.push
924
+ # assert_equal @cls[1, 2, 3, 4, 5, nil], a
925
+ # a.push 6, 7
926
+ # assert_equal @cls[1, 2, 3, 4, 5, nil, 6, 7], a
927
+ # end
928
+ #
929
+ # def test_rassoc
930
+ # a1 = @cls[*%w( cat feline )]
931
+ # a2 = @cls[*%w( dog canine )]
932
+ # a3 = @cls[*%w( mule asinine )]
933
+ # a = @cls[ a1, a2, a3 ]
934
+ #
935
+ # assert_equal(a1, a.rassoc('feline'))
936
+ # assert_equal(a3, a.rassoc('asinine'))
937
+ # assert_equal(nil, a.rassoc('dog'))
938
+ # assert_equal(nil, a.rassoc('mule'))
939
+ # assert_equal(nil, a.rassoc(1..2))
940
+ # end
941
+ #
942
+ # # also delete_if
943
+ # def test_reject!
944
+ # a = @cls[ 1, 2, 3, 4, 5 ]
945
+ # assert_equal(nil, a.reject! { false })
946
+ # assert_equal(@cls[1, 2, 3, 4, 5], a)
947
+ #
948
+ # a = @cls[ 1, 2, 3, 4, 5 ]
949
+ # assert_equal(a, a.reject! { true })
950
+ # assert_equal(@cls[], a)
951
+ #
952
+ # a = @cls[ 1, 2, 3, 4, 5 ]
953
+ # assert_equal(a, a.reject! { |i| i > 3 })
954
+ # assert_equal(@cls[1, 2, 3], a)
955
+ # end
956
+ #
957
+ # def test_replace
958
+ # a = @cls[ 1, 2, 3]
959
+ # a_id = a.__id__
960
+ # assert_equal(@cls[4, 5, 6], a.replace(@cls[4, 5, 6]))
961
+ # assert_equal(@cls[4, 5, 6], a)
962
+ # assert_equal(a_id, a.__id__)
963
+ # assert_equal(@cls[], a.replace(@cls[]))
964
+ # end
965
+ #
966
+ # def test_reverse
967
+ # a = @cls[*%w( dog cat bee ant )]
968
+ # assert_equal(@cls[*%w(ant bee cat dog)], a.reverse)
969
+ # assert_equal(@cls[*%w(dog cat bee ant)], a)
970
+ # assert_equal(@cls[], @cls[].reverse)
971
+ # end
972
+ #
973
+ # def test_reverse!
974
+ # a = @cls[*%w( dog cat bee ant )]
975
+ # assert_equal(@cls[*%w(ant bee cat dog)], a.reverse!)
976
+ # assert_equal(@cls[*%w(ant bee cat dog)], a)
977
+ # # Ruby 1.8 feature change:
978
+ # # Array#reverse always returns self.
979
+ # #assert_nil(@cls[].reverse!)
980
+ # assert_equal @cls[], @cls[].reverse!
981
+ # end
982
+ #
983
+ # def test_reverse_each
984
+ # a = @cls[*%w( dog cat bee ant )]
985
+ # i = a.length
986
+ # a.reverse_each { |e|
987
+ # i -= 1
988
+ # assert_equal(a[i], e)
989
+ # }
990
+ # assert_equal(0, i)
991
+ #
992
+ # a = @cls[]
993
+ # i = 0
994
+ # a.reverse_each { |e|
995
+ # assert(false, "Never get here")
996
+ # }
997
+ # assert_equal(0, i)
998
+ # end
999
+ #
1000
+ # def test_rindex
1001
+ # a = @cls[ 'cat', 99, /a/, 99, [ 1, 2, 3] ]
1002
+ # assert_equal(0, a.rindex('cat'))
1003
+ # assert_equal(3, a.rindex(99))
1004
+ # assert_equal(4, a.rindex([1,2,3]))
1005
+ # assert_nil(a.rindex('ca'))
1006
+ # assert_nil(a.rindex([1,2]))
1007
+ # end
1008
+ #
1009
+ # def test_shift
1010
+ # a = @cls[ 'cat', 'dog' ]
1011
+ # assert_equal('cat', a.shift)
1012
+ # assert_equal(@cls['dog'], a)
1013
+ # assert_equal('dog', a.shift)
1014
+ # assert_equal(@cls[], a)
1015
+ # assert_nil(a.shift)
1016
+ # assert_equal(@cls[], a)
1017
+ # end
1018
+ #
1019
+ def test_size
1020
+ assert_equal(0, @cls[].size)
1021
+ assert_equal(1, @cls[1].size)
1022
+ assert_equal(100, @cls[*(0..99).to_a].size)
1023
+ end
1024
+ #
1025
+ # def test_slice
1026
+ # a = @cls[*(1..100).to_a]
1027
+ #
1028
+ # assert_equal(1, a.slice(0))
1029
+ # assert_equal(100, a.slice(99))
1030
+ # assert_nil(a.slice(100))
1031
+ # assert_equal(100, a.slice(-1))
1032
+ # assert_equal(99, a.slice(-2))
1033
+ # assert_equal(1, a.slice(-100))
1034
+ # assert_nil(a.slice(-101))
1035
+ #
1036
+ # assert_equal(@cls[1], a.slice(0,1))
1037
+ # assert_equal(@cls[100], a.slice(99,1))
1038
+ # assert_equal(@cls[], a.slice(100,1))
1039
+ # assert_equal(@cls[100], a.slice(99,100))
1040
+ # assert_equal(@cls[100], a.slice(-1,1))
1041
+ # assert_equal(@cls[99], a.slice(-2,1))
1042
+ #
1043
+ # assert_equal(@cls[10, 11, 12], a.slice(9, 3))
1044
+ # assert_equal(@cls[10, 11, 12], a.slice(-91, 3))
1045
+ #
1046
+ # assert_equal(@cls[1], a.slice(0..0))
1047
+ # assert_equal(@cls[100], a.slice(99..99))
1048
+ # assert_equal(@cls[], a.slice(100..100))
1049
+ # assert_equal(@cls[100], a.slice(99..200))
1050
+ # assert_equal(@cls[100], a.slice(-1..-1))
1051
+ # assert_equal(@cls[99], a.slice(-2..-2))
1052
+ #
1053
+ # assert_equal(@cls[10, 11, 12], a.slice(9..11))
1054
+ # assert_equal(@cls[10, 11, 12], a.slice(-91..-89))
1055
+ #
1056
+ # assert_nil(a.slice(10, -3))
1057
+ # # Ruby 1.8 feature change:
1058
+ # # Array#slice[size..x] always returns [].
1059
+ # #assert_nil(a.slice(10..7))
1060
+ # assert_equal @cls[], a.slice(10..7)
1061
+ # end
1062
+ #
1063
+ # def test_slice!
1064
+ # a = @cls[1, 2, 3, 4, 5]
1065
+ # assert_equal(3, a.slice!(2))
1066
+ # assert_equal(@cls[1, 2, 4, 5], a)
1067
+ #
1068
+ # a = @cls[1, 2, 3, 4, 5]
1069
+ # assert_equal(4, a.slice!(-2))
1070
+ # assert_equal(@cls[1, 2, 3, 5], a)
1071
+ #
1072
+ # a = @cls[1, 2, 3, 4, 5]
1073
+ # assert_equal(@cls[3,4], a.slice!(2,2))
1074
+ # assert_equal(@cls[1, 2, 5], a)
1075
+ #
1076
+ # a = @cls[1, 2, 3, 4, 5]
1077
+ # assert_equal(@cls[4,5], a.slice!(-2,2))
1078
+ # assert_equal(@cls[1, 2, 3], a)
1079
+ #
1080
+ # a = @cls[1, 2, 3, 4, 5]
1081
+ # assert_equal(@cls[3,4], a.slice!(2..3))
1082
+ # assert_equal(@cls[1, 2, 5], a)
1083
+ #
1084
+ # a = @cls[1, 2, 3, 4, 5]
1085
+ # assert_equal(nil, a.slice!(20))
1086
+ # assert_equal(@cls[1, 2, 3, 4, 5], a)
1087
+ # end
1088
+ #
1089
+ # def test_sort
1090
+ # a = @cls[ 4, 1, 2, 3 ]
1091
+ # assert_equal(@cls[1, 2, 3, 4], a.sort)
1092
+ # assert_equal(@cls[4, 1, 2, 3], a)
1093
+ #
1094
+ # assert_equal(@cls[4, 3, 2, 1], a.sort { |x, y| y <=> x} )
1095
+ # assert_equal(@cls[4, 1, 2, 3], a)
1096
+ #
1097
+ # a.fill(1)
1098
+ # assert_equal(@cls[1, 1, 1, 1], a.sort)
1099
+ #
1100
+ # assert_equal(@cls[], @cls[].sort)
1101
+ # end
1102
+ #
1103
+ # def test_sort!
1104
+ # a = @cls[ 4, 1, 2, 3 ]
1105
+ # assert_equal(@cls[1, 2, 3, 4], a.sort!)
1106
+ # assert_equal(@cls[1, 2, 3, 4], a)
1107
+ #
1108
+ # assert_equal(@cls[4, 3, 2, 1], a.sort! { |x, y| y <=> x} )
1109
+ # assert_equal(@cls[4, 3, 2, 1], a)
1110
+ #
1111
+ # a.fill(1)
1112
+ # assert_equal(@cls[1, 1, 1, 1], a.sort!)
1113
+ #
1114
+ # assert_equal(@cls[1], @cls[1].sort!)
1115
+ # assert_equal(@cls[], @cls[].sort!)
1116
+ # end
1117
+
1118
+ def test_to_a
1119
+ a = @cls[ 1, 2, 3 ]
1120
+ a_id = a.__id__
1121
+ assert_equal(a, a.to_a)
1122
+ assert_equal(a_id, a.to_a.__id__)
1123
+ end
1124
+
1125
+ # def test_to_ary
1126
+ # a = [ 1, 2, 3 ]
1127
+ # b = @cls[*a]
1128
+ #
1129
+ # a_id = a.__id__
1130
+ # assert_equal(a, b.to_ary)
1131
+ # if (@cls == Array)
1132
+ # assert_equal(a_id, a.to_ary.__id__)
1133
+ # end
1134
+ # end
1135
+ #
1136
+ # def test_to_s
1137
+ # $, = ""
1138
+ # a = @cls[]
1139
+ # assert_equal("[]", a.to_s)
1140
+ #
1141
+ # $, = ""
1142
+ # a = @cls[1, 2]
1143
+ # assert_equal("[1, 2]", a.to_s)
1144
+ #
1145
+ # $, = ""
1146
+ # a = @cls[1, 2, 3]
1147
+ # assert_equal("[1, 2, 3]", a.to_s)
1148
+ #
1149
+ # $, = ":"
1150
+ # a = @cls[1, 2, 3]
1151
+ # assert_equal("[1, 2, 3]", a.to_s)
1152
+ #
1153
+ # $, = ""
1154
+ # end
1155
+ #
1156
+ # def test_uniq
1157
+ # a = @cls[ 1, 2, 3, 2, 1, 2, 3, 4, nil ]
1158
+ # b = a.dup
1159
+ # assert_equal(@cls[1, 2, 3, 4, nil], a.uniq)
1160
+ # assert_equal(b, a)
1161
+ #
1162
+ # assert_equal(@cls[1, 2, 3], @cls[1, 2, 3].uniq)
1163
+ # end
1164
+ #
1165
+ # def test_uniq!
1166
+ # a = @cls[ 1, 2, 3, 2, 1, 2, 3, 4, nil ]
1167
+ # assert_equal(@cls[1, 2, 3, 4, nil], a.uniq!)
1168
+ # assert_equal(@cls[1, 2, 3, 4, nil], a)
1169
+ #
1170
+ # assert_nil(@cls[1, 2, 3].uniq!)
1171
+ # end
1172
+ #
1173
+ # def test_unshift
1174
+ # a = @cls[]
1175
+ # assert_equal(@cls['cat'], a.unshift('cat'))
1176
+ # assert_equal(@cls['dog', 'cat'], a.unshift('dog'))
1177
+ # assert_equal(@cls[nil, 'dog', 'cat'], a.unshift(nil))
1178
+ # assert_equal(@cls[@cls[1,2], nil, 'dog', 'cat'], a.unshift(@cls[1, 2]))
1179
+ # end
1180
+ #
1181
+ # def test_OR # '|'
1182
+ # assert_equal(@cls[], @cls[] | @cls[])
1183
+ # assert_equal(@cls[1], @cls[1] | @cls[])
1184
+ # assert_equal(@cls[1], @cls[] | @cls[1])
1185
+ # assert_equal(@cls[1], @cls[1] | @cls[1])
1186
+ #
1187
+ # assert_equal(@cls[1,2], @cls[1] | @cls[2])
1188
+ # assert_equal(@cls[1,2], @cls[1, 1] | @cls[2, 2])
1189
+ # assert_equal(@cls[1,2], @cls[1, 2] | @cls[1, 2])
1190
+ # end
1191
+
1192
+ end