random-accessible 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/random-writable.rb +7 -0
- data/test/test-random-accessible.rb +1 -28
- data/test/test-random-writable.rb +36 -42
- metadata +3 -3
data/lib/random-writable.rb
CHANGED
@@ -171,6 +171,7 @@ module RandomWritable
|
|
171
171
|
# if the class provides no size-provider.
|
172
172
|
def clear
|
173
173
|
shrink(size)
|
174
|
+
return self
|
174
175
|
end
|
175
176
|
|
176
177
|
# Same as Array's.
|
@@ -184,6 +185,7 @@ module RandomWritable
|
|
184
185
|
replace_at(i, el)
|
185
186
|
i += 1
|
186
187
|
end
|
188
|
+
return self
|
187
189
|
end
|
188
190
|
|
189
191
|
# Same as Array's.
|
@@ -228,6 +230,8 @@ module RandomWritable
|
|
228
230
|
end
|
229
231
|
end
|
230
232
|
end
|
233
|
+
|
234
|
+
return self
|
231
235
|
end
|
232
236
|
|
233
237
|
# Same as Array's.
|
@@ -241,6 +245,7 @@ module RandomWritable
|
|
241
245
|
insert_at(nth, el)
|
242
246
|
end
|
243
247
|
end
|
248
|
+
return self
|
244
249
|
end
|
245
250
|
|
246
251
|
# Remove specified number of elements from the last of this object.
|
@@ -266,6 +271,7 @@ module RandomWritable
|
|
266
271
|
obj.each do |el|
|
267
272
|
replace_at(size, el)
|
268
273
|
end
|
274
|
+
return self
|
269
275
|
end
|
270
276
|
|
271
277
|
# Same as Array's.
|
@@ -284,6 +290,7 @@ module RandomWritable
|
|
284
290
|
# Same as Array's.
|
285
291
|
# This method raises NotImplementedError
|
286
292
|
# if the class provides no delete-accessor.
|
293
|
+
# This method ALWAYS RETURNS NULL.
|
287
294
|
def shift(*args)
|
288
295
|
if args.size > 1
|
289
296
|
raise ArgumentError, "wrong number of arguments(#{args.size})"
|
@@ -91,9 +91,7 @@ class TestRandomAccesible < Test::Unit::TestCase
|
|
91
91
|
def test_collect!
|
92
92
|
FULL_IMPLS.each do |klass|
|
93
93
|
impl = klass.new([1, 2, 3])
|
94
|
-
impl.collect!
|
95
|
-
el * 3
|
96
|
-
end
|
94
|
+
assert_same(impl, impl.collect! { |el| el * 3 })
|
97
95
|
assert_equal([3, 6, 9], impl)
|
98
96
|
assert_equal(3, impl.size)
|
99
97
|
|
@@ -205,31 +203,6 @@ class TestRandomAccesible < Test::Unit::TestCase
|
|
205
203
|
end
|
206
204
|
end
|
207
205
|
|
208
|
-
# TODO: Delete me.
|
209
|
-
def test_fill_start_length
|
210
|
-
FULL_IMPLS.each do |klass|
|
211
|
-
impl = klass.new([0, 1, 2, 3 ,4])
|
212
|
-
impl.fill(-1, 0, 3)
|
213
|
-
assert_equal([-1, -1, -1, 3, 4], impl)
|
214
|
-
assert_equal(5, impl.size)
|
215
|
-
|
216
|
-
impl = klass.new([0, 1, 2, 3 ,4])
|
217
|
-
impl.fill(-1, 2, 3)
|
218
|
-
assert_equal([0, 1, -1, -1, -1], impl)
|
219
|
-
assert_equal(5, impl.size)
|
220
|
-
|
221
|
-
impl = klass.new([0, 1, 2, 3 ,4])
|
222
|
-
impl.fill(-1, 2, 5)
|
223
|
-
assert_equal([0, 1, -1, -1, -1, -1, -1], impl)
|
224
|
-
assert_equal(7, impl.size)
|
225
|
-
|
226
|
-
impl = klass.new([0, 1, 2, 3 ,4])
|
227
|
-
impl.fill(-1, 7, 3)
|
228
|
-
assert_equal([0, 1, 2, 3, 4, nil, nil, -1, -1, -1], impl)
|
229
|
-
assert_equal(10, impl.size)
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
206
|
def test_flatten!
|
234
207
|
FULL_IMPLS.each do |klass|
|
235
208
|
impl = klass.new([1, [2, 3, [4], 5]])
|
@@ -211,15 +211,9 @@ class TestRandomWritable < Test::Unit::TestCase
|
|
211
211
|
end
|
212
212
|
|
213
213
|
def test_clear
|
214
|
-
FULL_IMPLS.each do |klass|
|
215
|
-
impl = klass.new((1..100).to_a)
|
216
|
-
impl.clear
|
217
|
-
assert_equal([], impl.to_ary)
|
218
|
-
assert_equal(0, impl.size)
|
219
|
-
end
|
220
|
-
NODELETE_IMPLS.each do |klass|
|
214
|
+
(FULL_IMPLS + NODELETE_IMPLS).each do |klass|
|
221
215
|
impl = klass.new((1..100).to_a)
|
222
|
-
impl.clear
|
216
|
+
assert_same(impl, impl.clear)
|
223
217
|
assert_equal([], impl.to_ary)
|
224
218
|
assert_equal(0, impl.size)
|
225
219
|
end
|
@@ -232,7 +226,7 @@ class TestRandomWritable < Test::Unit::TestCase
|
|
232
226
|
def test_concat
|
233
227
|
(FULL_IMPLS + NODELETE_IMPLS).each do |klass|
|
234
228
|
impl = klass.new([1, 2, 3])
|
235
|
-
impl.concat([4, 5])
|
229
|
+
assert_same(impl, impl.concat([4, 5]))
|
236
230
|
assert_equal([1, 2, 3, 4, 5], impl.to_ary)
|
237
231
|
assert_equal(5, impl.size)
|
238
232
|
end
|
@@ -314,11 +308,11 @@ class TestRandomWritable < Test::Unit::TestCase
|
|
314
308
|
def test_fill_val
|
315
309
|
(FULL_IMPLS + NODELETE_IMPLS).each do |klass|
|
316
310
|
impl = klass.new([1, 2, 3, 4])
|
317
|
-
impl.fill(10)
|
311
|
+
assert_same(impl, impl.fill(10))
|
318
312
|
assert_equal([10, 10, 10, 10], impl.to_ary)
|
319
313
|
|
320
314
|
impl = klass.new([1, 2, 3])
|
321
|
-
impl.fill { |i| -i }
|
315
|
+
assert_same(impl, impl.fill { |i| -i })
|
322
316
|
assert_equal([0, -1, -2], impl.to_ary)
|
323
317
|
end
|
324
318
|
NOSIZE_IMPLS.each do |klass|
|
@@ -334,92 +328,92 @@ class TestRandomWritable < Test::Unit::TestCase
|
|
334
328
|
def test_fill_start_length
|
335
329
|
(FULL_IMPLS + NODELETE_IMPLS).each do |klass|
|
336
330
|
impl = klass.new([1, 2, 3, 4])
|
337
|
-
impl.fill(10, 0, 2)
|
331
|
+
assert_same(impl, impl.fill(10, 0, 2))
|
338
332
|
assert_equal([10, 10, 3, 4], impl.to_ary)
|
339
333
|
assert_equal(4, impl.size)
|
340
334
|
|
341
|
-
impl.fill(-1, 1, 2)
|
335
|
+
assert_same(impl, impl.fill(-1, 1, 2))
|
342
336
|
assert_equal([10, -1, -1, 4], impl.to_ary)
|
343
337
|
assert_equal(4, impl.size)
|
344
338
|
|
345
|
-
impl.fill(0, 2, 2)
|
339
|
+
assert_same(impl, impl.fill(0, 2, 2))
|
346
340
|
assert_equal([10, -1, 0, 0], impl.to_ary)
|
347
341
|
assert_equal(4, impl.size)
|
348
342
|
|
349
|
-
impl.fill(1, 3, 3)
|
343
|
+
assert_equal(impl, impl.fill(1, 3, 3))
|
350
344
|
assert_equal([10, -1, 0, 1, 1, 1], impl.to_ary)
|
351
345
|
assert_equal(6, impl.size)
|
352
346
|
|
353
|
-
impl.fill(2, 6, 1)
|
347
|
+
assert_same(impl, impl.fill(2, 6, 1))
|
354
348
|
assert_equal([10, -1, 0, 1, 1, 1, 2], impl.to_ary)
|
355
349
|
assert_equal(7, impl.size)
|
356
350
|
|
357
|
-
impl.fill(3, 8, 3)
|
351
|
+
assert_same(impl, impl.fill(3, 8, 3))
|
358
352
|
assert_equal([10, -1, 0, 1, 1, 1, 2, nil, 3, 3, 3], impl.to_ary)
|
359
353
|
assert_equal(11, impl.size)
|
360
354
|
|
361
355
|
impl = klass.new([1, 2, 3, 4])
|
362
|
-
impl.fill(0, 2) { |i| 10 }
|
356
|
+
assert_same(impl, impl.fill(0, 2) { |i| 10 })
|
363
357
|
assert_equal([10, 10, 3, 4], impl.to_ary)
|
364
358
|
assert_equal(4, impl.size)
|
365
359
|
|
366
|
-
impl.fill(1, 2) { |i| -1 }
|
360
|
+
assert_same(impl, impl.fill(1, 2) { |i| -1 })
|
367
361
|
assert_equal([10, -1, -1, 4], impl.to_ary)
|
368
362
|
assert_equal(4, impl.size)
|
369
363
|
|
370
|
-
impl.fill(2, 2) { |i| i * 0 }
|
364
|
+
assert_same(impl, impl.fill(2, 2) { |i| i * 0 })
|
371
365
|
assert_equal([10, -1, 0, 0], impl.to_ary)
|
372
366
|
assert_equal(4, impl.size)
|
373
367
|
|
374
|
-
impl.fill(3, 3) { |i| 1 }
|
368
|
+
assert_same(impl, impl.fill(3, 3) { |i| 1 })
|
375
369
|
assert_equal([10, -1, 0, 1, 1, 1], impl.to_ary)
|
376
370
|
assert_equal(6, impl.size)
|
377
371
|
|
378
|
-
impl.fill(6, 1) { |i| i - 4 }
|
372
|
+
assert_same(impl, impl.fill(6, 1) { |i| i - 4 })
|
379
373
|
assert_equal([10, -1, 0, 1, 1, 1, 2], impl.to_ary)
|
380
374
|
assert_equal(7, impl.size)
|
381
375
|
|
382
|
-
impl.fill(8, 3) { |i| i }
|
376
|
+
assert_same(impl, impl.fill(8, 3) { |i| i })
|
383
377
|
assert_equal([10, -1, 0, 1, 1, 1, 2, nil, 8, 9, 10], impl.to_ary)
|
384
378
|
assert_equal(11, impl.size)
|
385
379
|
end
|
386
380
|
NOSIZE_IMPLS.each do |klass|
|
387
381
|
impl = klass.new([1, 2, 3, 4])
|
388
|
-
impl.fill(10, 0, 2)
|
382
|
+
assert_same(impl, impl.fill(10, 0, 2))
|
389
383
|
assert_equal([10, 10, 3, 4], impl.to_ary)
|
390
384
|
|
391
|
-
impl.fill(-1, 1, 2)
|
385
|
+
assert_same(impl, impl.fill(-1, 1, 2))
|
392
386
|
assert_equal([10, -1, -1, 4], impl.to_ary)
|
393
387
|
|
394
|
-
impl.fill(0, 2, 2)
|
388
|
+
assert_same(impl, impl.fill(0, 2, 2))
|
395
389
|
assert_equal([10, -1, 0, 0], impl.to_ary)
|
396
390
|
|
397
|
-
impl.fill(1, 3, 3)
|
391
|
+
assert_same(impl, impl.fill(1, 3, 3))
|
398
392
|
assert_equal([10, -1, 0, 1, 1, 1], impl.to_ary)
|
399
393
|
|
400
|
-
impl.fill(2, 6, 1)
|
394
|
+
assert_same(impl, impl.fill(2, 6, 1))
|
401
395
|
assert_equal([10, -1, 0, 1, 1, 1, 2], impl.to_ary)
|
402
396
|
|
403
|
-
impl.fill(3, 8, 3)
|
397
|
+
assert_same(impl, impl.fill(3, 8, 3))
|
404
398
|
assert_equal([10, -1, 0, 1, 1, 1, 2, nil, 3, 3, 3], impl.to_ary)
|
405
399
|
|
406
400
|
impl = klass.new([1, 2, 3, 4])
|
407
|
-
impl.fill(0, 2) { |i| 10 }
|
401
|
+
assert_same(impl, impl.fill(0, 2) { |i| 10 })
|
408
402
|
assert_equal([10, 10, 3, 4], impl.to_ary)
|
409
403
|
|
410
|
-
impl.fill(1, 2) { |i| -1 }
|
404
|
+
assert_same(impl, impl.fill(1, 2) { |i| -1 })
|
411
405
|
assert_equal([10, -1, -1, 4], impl.to_ary)
|
412
406
|
|
413
|
-
impl.fill(2, 2) { |i| i * 0 }
|
407
|
+
assert_same(impl, impl.fill(2, 2) { |i| i * 0 })
|
414
408
|
assert_equal([10, -1, 0, 0], impl.to_ary)
|
415
409
|
|
416
|
-
impl.fill(3, 3) { |i| 1 }
|
410
|
+
assert_same(impl, impl.fill(3, 3) { |i| 1 })
|
417
411
|
assert_equal([10, -1, 0, 1, 1, 1], impl.to_ary)
|
418
412
|
|
419
|
-
impl.fill(6, 1) { |i| i - 4 }
|
413
|
+
assert_same(impl, impl.fill(6, 1) { |i| i - 4 })
|
420
414
|
assert_equal([10, -1, 0, 1, 1, 1, 2], impl.to_ary)
|
421
415
|
|
422
|
-
impl.fill(8, 3) { |i| i }
|
416
|
+
assert_same(impl, impl.fill(8, 3) { |i| i })
|
423
417
|
assert_equal([10, -1, 0, 1, 1, 1, 2, nil, 8, 9, 10], impl.to_ary)
|
424
418
|
end
|
425
419
|
end
|
@@ -428,12 +422,12 @@ class TestRandomWritable < Test::Unit::TestCase
|
|
428
422
|
FULL_IMPLS.each do |klass|
|
429
423
|
msg = "Error in #{klass.name}"
|
430
424
|
impl = klass.new([1, 2, 3])
|
431
|
-
impl.insert(2, -1, -2)
|
425
|
+
assert_same(impl, impl.insert(2, -1, -2))
|
432
426
|
assert_equal([1, 2, -1, -2, 3], impl.to_ary, msg)
|
433
427
|
assert_equal(5, impl.size, msg)
|
434
428
|
|
435
429
|
impl = klass.new([1, 2, 3])
|
436
|
-
impl.insert(-2, -1, -2, -3)
|
430
|
+
assert_same(impl, impl.insert(-2, -1, -2, -3))
|
437
431
|
assert_equal([1, 2, -1, -2, -3, 3], impl.to_ary, msg)
|
438
432
|
assert_equal(6, impl.size, msg)
|
439
433
|
end
|
@@ -446,7 +440,7 @@ class TestRandomWritable < Test::Unit::TestCase
|
|
446
440
|
NOSIZE_IMPLS.each do |klass|
|
447
441
|
msg = "Error in #{klass.name}"
|
448
442
|
impl = klass.new([1, 2, 3])
|
449
|
-
impl.insert(2, -1, -2)
|
443
|
+
assert_same(impl, impl.insert(2, -1, -2))
|
450
444
|
assert_equal([1, 2, -1, -2, 3], impl.to_ary, msg)
|
451
445
|
|
452
446
|
impl = klass.new([1, 2, 3])
|
@@ -490,7 +484,7 @@ class TestRandomWritable < Test::Unit::TestCase
|
|
490
484
|
def test_push
|
491
485
|
(FULL_IMPLS + NODELETE_IMPLS).each do |klass|
|
492
486
|
impl = klass.new([1])
|
493
|
-
impl.push(2, 3)
|
487
|
+
assert_same(impl, impl.push(2, 3))
|
494
488
|
assert_equal([1, 2, 3], impl.to_ary)
|
495
489
|
assert_equal(3, impl.size)
|
496
490
|
end
|
@@ -503,17 +497,17 @@ class TestRandomWritable < Test::Unit::TestCase
|
|
503
497
|
def test_replace
|
504
498
|
(FULL_IMPLS + NODELETE_IMPLS).each do |klass|
|
505
499
|
impl = klass.new([1, 2, 3])
|
506
|
-
impl.replace([4, 5, 6])
|
500
|
+
assert_same(impl, impl.replace([4, 5, 6]))
|
507
501
|
assert_equal([4, 5, 6], impl.to_ary)
|
508
502
|
assert_equal(3, impl.size)
|
509
503
|
|
510
504
|
impl = klass.new([1, 2, 3])
|
511
|
-
impl.replace([4, 5])
|
505
|
+
assert_same(impl, impl.replace([4, 5]))
|
512
506
|
assert_equal([4, 5], impl.to_ary)
|
513
507
|
assert_equal(2, impl.size)
|
514
508
|
|
515
509
|
impl = klass.new([1, 2, 3])
|
516
|
-
impl.replace([4, 5, 6, 7])
|
510
|
+
assert_same(impl, impl.replace([4, 5, 6, 7]))
|
517
511
|
assert_equal([4, 5, 6, 7], impl.to_ary)
|
518
512
|
assert_equal(4, impl.size)
|
519
513
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: random-accessible
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,13 +9,13 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-12-
|
12
|
+
date: 2011-12-21 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: ! 'RandomAccessible mixin provides all methods of Array (regard as high-functioning
|
15
15
|
edition of Enumerable).
|
16
16
|
|
17
17
|
As a class includes Enumerable must provide "each" method, a class includes RandomAccessible
|
18
|
-
must have some methods.
|
18
|
+
must have some methods. Please see the document for detail.
|
19
19
|
|
20
20
|
|
21
21
|
'
|