cast 0.0.1 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/CHANGELOG +63 -0
- data/Gemfile +9 -0
- data/LICENSE +22 -0
- data/README.markdown +1924 -0
- data/Rakefile +29 -0
- data/cast.gemspec +18 -0
- data/ext/cast.c +6 -0
- data/ext/cast.h +141 -0
- data/ext/extconf.rb +2 -0
- data/ext/parser.c +287 -0
- data/ext/yylex.re +340 -0
- data/lib/cast.rb +11 -9
- data/lib/cast/c.y +904 -0
- data/lib/{c_nodes.rb → cast/c_nodes.rb} +188 -392
- data/lib/{to_debug.rb → cast/inspect.rb} +18 -20
- data/lib/cast/node.rb +741 -0
- data/lib/{node_list.rb → cast/node_list.rb} +175 -176
- data/lib/{parse.rb → cast/parse.rb} +86 -65
- data/lib/cast/preprocessor.rb +59 -0
- data/lib/cast/tempfile.rb +33 -0
- data/lib/{to_s.rb → cast/to_s.rb} +133 -80
- data/lib/cast/version.rb +11 -0
- data/test/c_nodes_test.rb +224 -0
- data/test/lexer_test.rb +335 -0
- data/test/{test_node_list.rb → node_list_test.rb} +401 -413
- data/test/{test_node.rb → node_test.rb} +186 -214
- data/test/parse_test.rb +2068 -0
- data/test/{test_parser.rb → parser_test.rb} +145 -58
- data/test/preprocessor_test.rb +85 -0
- data/test/render_test.rb +2116 -0
- data/test/test_helper.rb +198 -0
- metadata +83 -52
- data/README +0 -6
- data/doc/index.html +0 -2513
- data/install.rb +0 -14
- data/lib/c.tab.rb +0 -3433
- data/lib/c.y +0 -935
- data/lib/node.rb +0 -744
- data/test/common.rb +0 -174
- data/test/run.rb +0 -5
- data/test/test_c_nodes.rb +0 -160
- data/test/test_parse.rb +0 -2014
@@ -1,53 +1,50 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
### NodeListTest subclasses are therefore used to test all NodeList
|
16
|
-
### classes.
|
17
|
-
###
|
1
|
+
######################################################################
|
2
|
+
#
|
3
|
+
# Tests for NodeList classes.
|
4
|
+
#
|
5
|
+
######################################################################
|
6
|
+
|
7
|
+
require 'test_helper'
|
8
|
+
|
9
|
+
#
|
10
|
+
# NodeListTest classes are abstract, inherited by classes which define
|
11
|
+
# List() to return a NodeList class. The tests defined in
|
12
|
+
# NodeListTest subclasses are therefore used to test all NodeList
|
13
|
+
# classes.
|
14
|
+
#
|
18
15
|
module NodeListTest
|
19
16
|
@@submodules = []
|
20
17
|
def self.submodules
|
21
18
|
@@submodules
|
22
19
|
end
|
23
|
-
def self.included
|
20
|
+
def self.included(m)
|
24
21
|
@@submodules << m
|
25
22
|
end
|
26
23
|
def setup
|
27
|
-
|
24
|
+
# []
|
28
25
|
@empty = _List[]
|
29
26
|
|
30
|
-
|
27
|
+
# [a]
|
31
28
|
a = C::Int.new
|
32
29
|
@one = _List[a]
|
33
30
|
@one_els = [a]
|
34
31
|
|
35
|
-
|
32
|
+
# [a, b]
|
36
33
|
a, b = 2.of{C::Int.new}
|
37
34
|
@two = _List[a, b]
|
38
35
|
@two_els = [a, b]
|
39
36
|
|
40
|
-
|
37
|
+
# [a, b, c]
|
41
38
|
a, b, c = 3.of{C::Int.new}
|
42
39
|
@three = _List[a, b, c]
|
43
40
|
@three_els = [a, b, c]
|
44
41
|
|
45
|
-
|
42
|
+
# [a, b, c, d]
|
46
43
|
a, b, c, d = 4.of{C::Int.new}
|
47
44
|
@four = _List[a, b, c, d]
|
48
45
|
@four_els = [a, b, c, d]
|
49
46
|
|
50
|
-
|
47
|
+
# [[a,b], [c,d], [e,f], [g,h]]
|
51
48
|
a, b, c, d, e, f, g, h = 8.of{C::Int.new}
|
52
49
|
l0 = _List[a,b]
|
53
50
|
l1 = _List[c,d]
|
@@ -56,7 +53,7 @@ module NodeListTest
|
|
56
53
|
@two_by_four = _List[l0, l1, l2, l3]
|
57
54
|
@two_by_four_els = [l0, l1, l2, l3, a, b, c, d, e, f, g, h]
|
58
55
|
|
59
|
-
|
56
|
+
# [a, [b,c], [d, [e], [], [[]]]]
|
60
57
|
a, b, c, d, e = 5.of{C::Int.new}
|
61
58
|
l1 = _List[b,c]
|
62
59
|
l21 = _List[e]
|
@@ -99,82 +96,82 @@ module NodeListInitializeTest
|
|
99
96
|
end
|
100
97
|
end
|
101
98
|
|
102
|
-
|
103
|
-
|
104
|
-
|
99
|
+
#
|
100
|
+
# Tests dup, clone.
|
101
|
+
#
|
105
102
|
module NodeListCopyTest
|
106
103
|
include NodeListTest
|
107
104
|
def test_copy
|
108
|
-
|
105
|
+
# empty
|
109
106
|
a = empty
|
110
107
|
b = empty.dup
|
111
108
|
c = empty.clone
|
112
|
-
|
109
|
+
#
|
113
110
|
assert_copy a, b
|
114
|
-
|
111
|
+
#
|
115
112
|
assert_copy a, c
|
116
113
|
|
117
|
-
|
114
|
+
# one
|
118
115
|
a = one
|
119
116
|
b = one.dup
|
120
117
|
c = one.clone
|
121
|
-
|
118
|
+
#
|
122
119
|
assert_copy a, b
|
123
120
|
assert_copy a[0], b[0]
|
124
|
-
|
121
|
+
#
|
125
122
|
assert_copy a, c
|
126
123
|
assert_copy a[0], c[0]
|
127
124
|
|
128
|
-
|
125
|
+
# two
|
129
126
|
a = two
|
130
127
|
b = two.dup
|
131
128
|
c = two.clone
|
132
|
-
|
129
|
+
#
|
133
130
|
assert_copy a, b
|
134
131
|
assert_copy a[0], b[0]
|
135
132
|
assert_copy a[1], b[1]
|
136
|
-
|
133
|
+
#
|
137
134
|
assert_copy a, c
|
138
135
|
assert_copy a[0], c[0]
|
139
136
|
assert_copy a[1], c[1]
|
140
137
|
|
141
|
-
|
138
|
+
# three
|
142
139
|
a = three
|
143
140
|
b = three.dup
|
144
141
|
c = three.clone
|
145
|
-
|
142
|
+
#
|
146
143
|
assert_copy a, b
|
147
144
|
assert_copy a[0], b[0]
|
148
145
|
assert_copy a[1], b[1]
|
149
146
|
assert_copy a[2], b[2]
|
150
|
-
|
147
|
+
#
|
151
148
|
assert_copy a, c
|
152
149
|
assert_copy a[0], c[0]
|
153
150
|
assert_copy a[1], c[1]
|
154
151
|
assert_copy a[2], c[2]
|
155
152
|
|
156
|
-
|
153
|
+
# four
|
157
154
|
a = four
|
158
155
|
b = four.dup
|
159
156
|
c = four.clone
|
160
|
-
|
157
|
+
#
|
161
158
|
assert_copy a, b
|
162
159
|
assert_copy a[0], b[0]
|
163
160
|
assert_copy a[1], b[1]
|
164
161
|
assert_copy a[2], b[2]
|
165
162
|
assert_copy a[3], b[3]
|
166
|
-
|
163
|
+
#
|
167
164
|
assert_copy a, c
|
168
165
|
assert_copy a[0], c[0]
|
169
166
|
assert_copy a[1], c[1]
|
170
167
|
assert_copy a[2], c[2]
|
171
168
|
assert_copy a[3], c[3]
|
172
169
|
|
173
|
-
|
170
|
+
# two_by_four
|
174
171
|
a = two_by_four
|
175
172
|
b = two_by_four.dup
|
176
173
|
c = two_by_four.clone
|
177
|
-
|
174
|
+
#
|
178
175
|
assert_copy a, b
|
179
176
|
assert_copy a[0], b[0]
|
180
177
|
assert_copy a[1], b[1]
|
@@ -188,7 +185,7 @@ module NodeListCopyTest
|
|
188
185
|
assert_copy a[2][1], b[2][1]
|
189
186
|
assert_copy a[3][0], b[3][0]
|
190
187
|
assert_copy a[3][1], b[3][1]
|
191
|
-
|
188
|
+
#
|
192
189
|
assert_copy a, c
|
193
190
|
assert_copy a[0], c[0]
|
194
191
|
assert_copy a[1], c[1]
|
@@ -203,11 +200,11 @@ module NodeListCopyTest
|
|
203
200
|
assert_copy a[3][0], c[3][0]
|
204
201
|
assert_copy a[3][1], c[3][1]
|
205
202
|
|
206
|
-
|
203
|
+
# big -- [a, [b,c], [d, [e], [], [[]]]]
|
207
204
|
a = big
|
208
205
|
b = big.dup
|
209
206
|
c = big.clone
|
210
|
-
|
207
|
+
#
|
211
208
|
assert_copy a, b
|
212
209
|
assert_copy a[0], b[0]
|
213
210
|
assert_copy a[1], b[1]
|
@@ -220,7 +217,7 @@ module NodeListCopyTest
|
|
220
217
|
assert_copy a[2][2], b[2][2]
|
221
218
|
assert_copy a[2][3], b[2][3]
|
222
219
|
assert_copy a[2][3][0], b[2][3][0]
|
223
|
-
|
220
|
+
#
|
224
221
|
assert_copy a, c
|
225
222
|
assert_copy a[0], c[0]
|
226
223
|
assert_copy a[1], c[1]
|
@@ -236,17 +233,17 @@ module NodeListCopyTest
|
|
236
233
|
end
|
237
234
|
end
|
238
235
|
|
239
|
-
|
240
|
-
|
241
|
-
|
236
|
+
#
|
237
|
+
# Tests ==, eql?, hash.
|
238
|
+
#
|
242
239
|
module NodeListEqualTest
|
243
240
|
include NodeListTest
|
244
|
-
def assert_eq
|
241
|
+
def assert_eq(a, b)
|
245
242
|
assert(a == b)
|
246
243
|
assert(a.eql?(b))
|
247
244
|
assert(a.hash == b.hash)
|
248
245
|
end
|
249
|
-
def
|
246
|
+
def refute_eq(a, b)
|
250
247
|
assert(!(a == b))
|
251
248
|
assert(!a.eql?(b))
|
252
249
|
end
|
@@ -259,38 +256,38 @@ module NodeListEqualTest
|
|
259
256
|
assert_eq(two_by_four, two_by_four)
|
260
257
|
assert_eq(big, big)
|
261
258
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
259
|
+
refute_eq(empty, one)
|
260
|
+
refute_eq(one, empty)
|
261
|
+
refute_eq(one, two)
|
262
|
+
refute_eq(two, one)
|
263
|
+
refute_eq(two, three)
|
264
|
+
refute_eq(three, two)
|
268
265
|
|
269
|
-
|
266
|
+
# []
|
270
267
|
empty2 = _List[]
|
271
268
|
assert_eq(empty, empty2)
|
272
269
|
|
273
|
-
|
270
|
+
# [a]
|
274
271
|
a = C::Int.new
|
275
272
|
one2 = _List[a]
|
276
273
|
assert_eq(one, one2)
|
277
274
|
|
278
|
-
|
275
|
+
# [a, b]
|
279
276
|
a, b = 2.of{C::Int.new}
|
280
277
|
two2 = _List[a, b]
|
281
278
|
assert_eq(two, two2)
|
282
279
|
|
283
|
-
|
280
|
+
# [a, b, c]
|
284
281
|
a, b, c = 3.of{C::Int.new}
|
285
282
|
three2 = _List[a, b, c]
|
286
283
|
assert_eq(three, three2)
|
287
284
|
|
288
|
-
|
285
|
+
# [a, b, c, d]
|
289
286
|
a, b, c, d = 4.of{C::Int.new}
|
290
287
|
four2 = _List[a, b, c, d]
|
291
288
|
assert_eq(four, four2)
|
292
289
|
|
293
|
-
|
290
|
+
# [[a,b], [c,d], [e,f], [g,h]]
|
294
291
|
a, b, c, d, e, f, g, h = 8.of{C::Int.new}
|
295
292
|
l0 = _List[a,b]
|
296
293
|
l1 = _List[c,d]
|
@@ -299,7 +296,7 @@ module NodeListEqualTest
|
|
299
296
|
two_by_four2 = _List[l0, l1, l2, l3]
|
300
297
|
assert_eq(two_by_four, two_by_four2)
|
301
298
|
|
302
|
-
|
299
|
+
# [a, [b,c], [d, [e], [], [[]]]]
|
303
300
|
a, b, c, d, e = 5.of{C::Int.new}
|
304
301
|
l1 = _List[b,c]
|
305
302
|
l21 = _List[e]
|
@@ -314,11 +311,11 @@ end
|
|
314
311
|
|
315
312
|
module NodeListWalkTest
|
316
313
|
include NodeListTest
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
def yields
|
314
|
+
#
|
315
|
+
# Collect and return the args yielded to `node.send(method)' as an
|
316
|
+
# Array, each element of which is an array of args yielded.
|
317
|
+
#
|
318
|
+
def yields(method, node, exp)
|
322
319
|
ret = []
|
323
320
|
out = node.send(method) do |*args|
|
324
321
|
ret << args
|
@@ -327,18 +324,18 @@ module NodeListWalkTest
|
|
327
324
|
return ret
|
328
325
|
end
|
329
326
|
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
def assert_equal_yields
|
327
|
+
#
|
328
|
+
# Assert exp and out are equal, where elements are compared with
|
329
|
+
# Array#same_list?. That is, exp[i].same_list?(out[i]) for all i.
|
330
|
+
#
|
331
|
+
def assert_equal_yields(exp, out)
|
335
332
|
if exp.zip(out).all?{|a,b| a.same_list?(b)}
|
336
333
|
assert(true)
|
337
334
|
else
|
338
335
|
flunk("walk not equal: #{walk_str(out)} (expected #{walk_str(exp)})")
|
339
336
|
end
|
340
337
|
end
|
341
|
-
def walk_str
|
338
|
+
def walk_str(walk)
|
342
339
|
walk.is_a? ::Array or
|
343
340
|
raise "walk_str: expected ::Array"
|
344
341
|
if walk.empty?
|
@@ -358,12 +355,11 @@ module NodeListWalkTest
|
|
358
355
|
end
|
359
356
|
end
|
360
357
|
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
def iter_str iter
|
358
|
+
# ------------------------------------------------------------------
|
359
|
+
# each, reverse_each
|
360
|
+
# ------------------------------------------------------------------
|
361
|
+
|
362
|
+
def iter_str(iter)
|
367
363
|
iter.is_a? ::Array or
|
368
364
|
raise "iter_str: expected ::Array"
|
369
365
|
if iter.empty?
|
@@ -382,7 +378,7 @@ module NodeListWalkTest
|
|
382
378
|
return s.string
|
383
379
|
end
|
384
380
|
end
|
385
|
-
def check_iter
|
381
|
+
def check_iter(node, exp)
|
386
382
|
exp.map!{|n| [n]}
|
387
383
|
|
388
384
|
out = yields(:each, node, node)
|
@@ -394,79 +390,78 @@ module NodeListWalkTest
|
|
394
390
|
end
|
395
391
|
|
396
392
|
def test_each
|
397
|
-
|
393
|
+
# empty
|
398
394
|
check_iter(empty, [])
|
399
395
|
|
400
|
-
|
401
|
-
a = *one_els
|
396
|
+
# one
|
397
|
+
a, = *one_els
|
402
398
|
check_iter(one, [a])
|
403
399
|
|
404
|
-
|
400
|
+
# two
|
405
401
|
a, b = *two_els
|
406
402
|
check_iter(two, [a, b])
|
407
403
|
|
408
|
-
|
404
|
+
# three
|
409
405
|
a, b, c = *three_els
|
410
406
|
check_iter(three, [a, b, c])
|
411
407
|
|
412
|
-
|
408
|
+
# four
|
413
409
|
a, b, c, d = *four_els
|
414
410
|
check_iter(four, [a, b, c, d])
|
415
411
|
|
416
|
-
|
412
|
+
# two_by_four
|
417
413
|
l0, l1, l2, l3, a, b, c, d, e, f, g, h = *two_by_four_els
|
418
414
|
check_iter(two_by_four, [l0, l1, l2, l3])
|
419
415
|
|
420
|
-
|
416
|
+
# big
|
421
417
|
l1, l2, l21, l22, l23, l230, a, b, c, d, e = *big_els
|
422
418
|
check_iter(big, [a, l1, l2])
|
423
419
|
end
|
424
420
|
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
###
|
421
|
+
# ------------------------------------------------------------------
|
422
|
+
# each_index
|
423
|
+
# ------------------------------------------------------------------
|
424
|
+
|
430
425
|
def test_each_index
|
431
|
-
|
426
|
+
# empty
|
432
427
|
assert_equal([], yields(:each_index, empty, empty))
|
433
428
|
|
434
|
-
|
429
|
+
# one
|
435
430
|
assert_equal([[0]], yields(:each_index, one, one))
|
436
431
|
|
437
|
-
|
432
|
+
# two
|
438
433
|
assert_equal([[0], [1]], yields(:each_index, two, two))
|
439
434
|
|
440
|
-
|
435
|
+
# two_by_four
|
441
436
|
assert_equal([[0], [1], [2], [3]], yields(:each_index, two_by_four, two_by_four))
|
442
437
|
|
443
|
-
|
438
|
+
# big
|
444
439
|
assert_equal([[0], [1], [2]], yields(:each_index, big, big))
|
445
440
|
end
|
446
441
|
end
|
447
442
|
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
443
|
+
#
|
444
|
+
# Tests:
|
445
|
+
# -- node_before
|
446
|
+
# -- node_after
|
447
|
+
# -- remove_node
|
448
|
+
# -- insert_before
|
449
|
+
# -- insert_after
|
450
|
+
# -- replace_node
|
451
|
+
#
|
457
452
|
module NodeListChildManagementTests
|
458
453
|
include NodeListTest
|
459
|
-
def check_not_child
|
454
|
+
def check_not_child(list, node)
|
460
455
|
n = C::Int.new
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
456
|
+
assert_raises(ArgumentError, list.node_before(node))
|
457
|
+
assert_raises(ArgumentError, list.node_after(node))
|
458
|
+
assert_raises(ArgumentError, list.remove_node(node))
|
459
|
+
assert_raises(ArgumentError, list.insert_after(node, n))
|
460
|
+
assert_raises(ArgumentError, list.insert_before(node, n))
|
461
|
+
assert_raises(ArgumentError, list.replace_node(node, n))
|
467
462
|
end
|
468
463
|
|
469
|
-
def check_list
|
464
|
+
def check_list(list, *nodes)
|
470
465
|
afters = nodes.dup
|
471
466
|
afters.shift
|
472
467
|
afters.push(nil)
|
@@ -479,18 +474,16 @@ module NodeListChildManagementTests
|
|
479
474
|
nodes.each_index do |i|
|
480
475
|
assert_same(nodes[i], list[i], "at index #{i}")
|
481
476
|
assert_same(list, nodes[i].parent, "at index #{i}")
|
482
|
-
|
477
|
+
# node_after
|
483
478
|
assert_same(afters[i], list.node_after(nodes[i]), "at index #{i} (expected id=#{afters[i].object_id}, got id=#{list.node_after(nodes[i]).object_id})")
|
484
|
-
|
479
|
+
# node_before
|
485
480
|
assert_same(befores[i], list.node_before(nodes[i]), "at index #{i}")
|
486
481
|
end
|
487
482
|
end
|
488
483
|
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
### ----------------------------------------------------------------
|
493
|
-
###
|
484
|
+
# ------------------------------------------------------------------
|
485
|
+
# insert_before, insert_after
|
486
|
+
# ------------------------------------------------------------------
|
494
487
|
|
495
488
|
def test_insert_one_into_one
|
496
489
|
a1, a2 = 2.of{C::Int.new}
|
@@ -498,11 +491,11 @@ module NodeListChildManagementTests
|
|
498
491
|
a = _List[a1]
|
499
492
|
b = _List[b1]
|
500
493
|
|
501
|
-
|
494
|
+
# beginning
|
502
495
|
assert_same(b, b.insert_before(b1, b2))
|
503
496
|
check_list(b, b2, b1)
|
504
497
|
|
505
|
-
|
498
|
+
# end
|
506
499
|
assert_same(a, a.insert_after(a1, a2))
|
507
500
|
check_list(a, a1, a2)
|
508
501
|
end
|
@@ -513,11 +506,11 @@ module NodeListChildManagementTests
|
|
513
506
|
a = _List[a1]
|
514
507
|
b = _List[b1]
|
515
508
|
|
516
|
-
|
509
|
+
# beginning
|
517
510
|
assert_same(a, a.insert_before(a1, a2, a3))
|
518
511
|
check_list(a, a2, a3, a1)
|
519
512
|
|
520
|
-
|
513
|
+
# end
|
521
514
|
assert_same(b, b.insert_after(b1, b2, b3))
|
522
515
|
check_list(b, b1, b2, b3)
|
523
516
|
end
|
@@ -528,11 +521,11 @@ module NodeListChildManagementTests
|
|
528
521
|
a = _List[a1]
|
529
522
|
b = _List[b1]
|
530
523
|
|
531
|
-
|
524
|
+
# beginning
|
532
525
|
assert_same(a, a.insert_before(a1, a2, a3, a4))
|
533
526
|
check_list(a, a2, a3, a4, a1)
|
534
527
|
|
535
|
-
|
528
|
+
# end
|
536
529
|
assert_same(b, b.insert_after(b1, b2, b3, b4))
|
537
530
|
check_list(b, b1, b2, b3, b4)
|
538
531
|
end
|
@@ -543,16 +536,16 @@ module NodeListChildManagementTests
|
|
543
536
|
a = _List[a1]
|
544
537
|
b = _List[b1]
|
545
538
|
|
546
|
-
|
539
|
+
# beginning
|
547
540
|
assert_same(a, a.insert_before(a1, a2, a3, a4, a5))
|
548
541
|
check_list(a, a2, a3, a4, a5, a1)
|
549
542
|
|
550
|
-
|
543
|
+
# end
|
551
544
|
assert_same(b, b.insert_after(b1, b2, b3, b4, b5))
|
552
545
|
check_list(b, b1, b2, b3, b4, b5)
|
553
546
|
end
|
554
547
|
|
555
|
-
def
|
548
|
+
def test_insert_one_into_two
|
556
549
|
a1, a2, a3 = 3.of{C::Int.new}
|
557
550
|
b1, b2, b3 = 3.of{C::Int.new}
|
558
551
|
c1, c2, c3 = 3.of{C::Int.new}
|
@@ -562,19 +555,19 @@ module NodeListChildManagementTests
|
|
562
555
|
c = _List[c1, c2]
|
563
556
|
d = _List[d1, d2]
|
564
557
|
|
565
|
-
|
558
|
+
# beginning
|
566
559
|
assert_same(a, a.insert_before(a1, a3))
|
567
560
|
check_list(a, a3, a1, a2)
|
568
561
|
|
569
|
-
|
562
|
+
# end
|
570
563
|
assert_same(b, b.insert_after(b2, b3))
|
571
564
|
check_list(b, b1, b2, b3)
|
572
565
|
|
573
|
-
|
566
|
+
# middle (after)
|
574
567
|
assert_same(c, c.insert_after(c1, c3))
|
575
568
|
check_list(c, c1, c3, c2)
|
576
569
|
|
577
|
-
|
570
|
+
# middle (before)
|
578
571
|
assert_same(d, d.insert_before(d2, d3))
|
579
572
|
check_list(d, d1, d3, d2)
|
580
573
|
end
|
@@ -589,19 +582,19 @@ module NodeListChildManagementTests
|
|
589
582
|
c = _List[c1, c2]
|
590
583
|
d = _List[d1, d2]
|
591
584
|
|
592
|
-
|
585
|
+
# beginning
|
593
586
|
assert_same(a, a.insert_before(a1, a3, a4))
|
594
587
|
check_list(a, a3, a4, a1, a2)
|
595
588
|
|
596
|
-
|
589
|
+
# end
|
597
590
|
assert_same(b, b.insert_after(b2, b3, b4))
|
598
591
|
check_list(b, b1, b2, b3, b4)
|
599
592
|
|
600
|
-
|
593
|
+
# middle (after)
|
601
594
|
assert_same(c, c.insert_after(c1, c3, c4))
|
602
595
|
check_list(c, c1, c3, c4, c2)
|
603
596
|
|
604
|
-
|
597
|
+
# middle (before)
|
605
598
|
assert_same(d, d.insert_before(d2, d3, d4))
|
606
599
|
check_list(d, d1, d3, d4, d2)
|
607
600
|
end
|
@@ -616,19 +609,19 @@ module NodeListChildManagementTests
|
|
616
609
|
c = _List[c1, c2]
|
617
610
|
d = _List[d1, d2]
|
618
611
|
|
619
|
-
|
612
|
+
# beginning
|
620
613
|
assert_same(a, a.insert_before(a1, a3, a4, a5))
|
621
614
|
check_list(a, a3, a4, a5, a1, a2)
|
622
615
|
|
623
|
-
|
616
|
+
# end
|
624
617
|
assert_same(b, b.insert_after(b2, b3, b4, b5))
|
625
618
|
check_list(b, b1, b2, b3, b4, b5)
|
626
619
|
|
627
|
-
|
620
|
+
# middle (after)
|
628
621
|
assert_same(c, c.insert_after(c1, c3, c4, c5))
|
629
622
|
check_list(c, c1, c3, c4, c5, c2)
|
630
623
|
|
631
|
-
|
624
|
+
# middle (before)
|
632
625
|
assert_same(d, d.insert_before(d2, d3, d4, d5))
|
633
626
|
check_list(d, d1, d3, d4, d5, d2)
|
634
627
|
end
|
@@ -643,25 +636,25 @@ module NodeListChildManagementTests
|
|
643
636
|
c = _List[c1, c2]
|
644
637
|
d = _List[d1, d2]
|
645
638
|
|
646
|
-
|
639
|
+
# beginning
|
647
640
|
assert_same(a, a.insert_before(a1, a3, a4, a5, a6))
|
648
641
|
check_list(a, a3, a4, a5, a6, a1, a2)
|
649
642
|
|
650
|
-
|
643
|
+
# end
|
651
644
|
assert_same(b, b.insert_after(b2, b3, b4, b5, b6))
|
652
645
|
check_list(b, b1, b2, b3, b4, b5, b6)
|
653
646
|
|
654
|
-
|
647
|
+
# middle (after)
|
655
648
|
assert_same(c, c.insert_after(c1, c3, c4, c5, c6))
|
656
649
|
check_list(c, c1, c3, c4, c5, c6, c2)
|
657
650
|
|
658
|
-
|
651
|
+
# middle (before)
|
659
652
|
assert_same(d, d.insert_before(d2, d3, d4, d5, d6))
|
660
653
|
check_list(d, d1, d3, d4, d5, d6, d2)
|
661
654
|
end
|
662
655
|
|
663
656
|
def test_insert_attached
|
664
|
-
|
657
|
+
# one (before)
|
665
658
|
a1 = C::Int.new
|
666
659
|
b1 = C::Int.new
|
667
660
|
a = _List[a1]
|
@@ -672,7 +665,7 @@ module NodeListChildManagementTests
|
|
672
665
|
assert_copy(b1, a[0])
|
673
666
|
assert_same(a1, a[1])
|
674
667
|
|
675
|
-
|
668
|
+
# one (after)
|
676
669
|
a1 = C::Int.new
|
677
670
|
b1 = C::Int.new
|
678
671
|
a = _List[a1]
|
@@ -683,7 +676,7 @@ module NodeListChildManagementTests
|
|
683
676
|
assert_same(a1, a[0])
|
684
677
|
assert_copy(b1, a[1])
|
685
678
|
|
686
|
-
|
679
|
+
# many (before)
|
687
680
|
a1 = C::Int.new
|
688
681
|
b1, b2, b3, b4 = 4.of{C::Int.new}
|
689
682
|
a = _List[a1]
|
@@ -697,7 +690,7 @@ module NodeListChildManagementTests
|
|
697
690
|
assert_copy(b4, a[3])
|
698
691
|
assert_same(a1, a[4])
|
699
692
|
|
700
|
-
|
693
|
+
# many (after)
|
701
694
|
a1 = C::Int.new
|
702
695
|
b1, b2, b3, b4 = 4.of{C::Int.new}
|
703
696
|
a = _List[a1]
|
@@ -712,11 +705,9 @@ module NodeListChildManagementTests
|
|
712
705
|
assert_copy(b4, a[4])
|
713
706
|
end
|
714
707
|
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
### ----------------------------------------------------------------
|
719
|
-
###
|
708
|
+
# ------------------------------------------------------------------
|
709
|
+
# remove_node
|
710
|
+
# ------------------------------------------------------------------
|
720
711
|
|
721
712
|
def test_remove_one_from_one
|
722
713
|
a1 = C::Int.new
|
@@ -733,12 +724,12 @@ module NodeListChildManagementTests
|
|
733
724
|
a = _List[a1, a2]
|
734
725
|
b = _List[b1, b2]
|
735
726
|
|
736
|
-
|
727
|
+
# beginning
|
737
728
|
assert_same(a, a.remove_node(a1))
|
738
729
|
check_list(a, a2)
|
739
730
|
assert_nil(a1.parent)
|
740
731
|
|
741
|
-
|
732
|
+
# end
|
742
733
|
assert_same(b, b.remove_node(b2))
|
743
734
|
check_list(b, b1)
|
744
735
|
assert_nil(b2.parent)
|
@@ -752,17 +743,17 @@ module NodeListChildManagementTests
|
|
752
743
|
b = _List[b1, b2, b3]
|
753
744
|
c = _List[c1, c2, c3]
|
754
745
|
|
755
|
-
|
746
|
+
# beginning
|
756
747
|
assert_same(a, a.remove_node(a1))
|
757
748
|
check_list(a, a2, a3)
|
758
749
|
assert_nil(a1.parent)
|
759
750
|
|
760
|
-
|
751
|
+
# end
|
761
752
|
assert_same(b, b.remove_node(b3))
|
762
753
|
check_list(b, b1, b2)
|
763
754
|
assert_nil(b3.parent)
|
764
755
|
|
765
|
-
|
756
|
+
# middle
|
766
757
|
assert_same(c, c.remove_node(c2))
|
767
758
|
check_list(c, c1, c3)
|
768
759
|
assert_nil(c2.parent)
|
@@ -777,27 +768,25 @@ module NodeListChildManagementTests
|
|
777
768
|
b = _List[b1, b2, b3, b4]
|
778
769
|
c = _List[c1, c2, c3, c4]
|
779
770
|
|
780
|
-
|
771
|
+
# beginning
|
781
772
|
assert_same(a, a.remove_node(a1))
|
782
773
|
check_list(a, a2, a3, a4)
|
783
774
|
assert_nil(a1.parent)
|
784
775
|
|
785
|
-
|
776
|
+
# end
|
786
777
|
assert_same(b, b.remove_node(b4))
|
787
778
|
check_list(b, b1, b2, b3)
|
788
779
|
assert_nil(b4.parent)
|
789
780
|
|
790
|
-
|
781
|
+
# middle
|
791
782
|
assert_same(c, c.remove_node(c2))
|
792
783
|
check_list(c, c1, c3, c4)
|
793
784
|
assert_nil(c2.parent)
|
794
785
|
end
|
795
786
|
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
### ----------------------------------------------------------------
|
800
|
-
###
|
787
|
+
# ------------------------------------------------------------------
|
788
|
+
# replace_node
|
789
|
+
# ------------------------------------------------------------------
|
801
790
|
|
802
791
|
def test_replace_with_none_in_one
|
803
792
|
a1 = C::Int.new
|
@@ -813,12 +802,12 @@ module NodeListChildManagementTests
|
|
813
802
|
a = _List[a1, a2]
|
814
803
|
b = _List[b1, b2]
|
815
804
|
|
816
|
-
|
805
|
+
# beginning
|
817
806
|
assert_same(a, a.replace_node(a1))
|
818
807
|
check_list(a, a2)
|
819
808
|
assert_nil(a1.parent)
|
820
809
|
|
821
|
-
|
810
|
+
# end
|
822
811
|
assert_same(b, b.replace_node(b2))
|
823
812
|
check_list(b, b1)
|
824
813
|
assert_nil(b2.parent)
|
@@ -832,17 +821,17 @@ module NodeListChildManagementTests
|
|
832
821
|
b = _List[b1, b2, b3]
|
833
822
|
c = _List[c1, c2, c3]
|
834
823
|
|
835
|
-
|
824
|
+
# beginning
|
836
825
|
assert_same(a, a.replace_node(a1))
|
837
826
|
check_list(a, a2, a3)
|
838
827
|
assert_nil(a1.parent)
|
839
828
|
|
840
|
-
|
829
|
+
# end
|
841
830
|
assert_same(b, b.replace_node(b3))
|
842
831
|
check_list(b, b1, b2)
|
843
832
|
assert_nil(b3.parent)
|
844
833
|
|
845
|
-
|
834
|
+
# middle
|
846
835
|
assert_same(c, c.replace_node(c2))
|
847
836
|
check_list(c, c1, c3)
|
848
837
|
assert_nil(c2.parent)
|
@@ -863,12 +852,12 @@ module NodeListChildManagementTests
|
|
863
852
|
a = _List[a1, a2]
|
864
853
|
b = _List[b1, b2]
|
865
854
|
|
866
|
-
|
855
|
+
# beginning
|
867
856
|
assert_same(a, a.replace_node(a1, a3))
|
868
857
|
check_list(a, a3, a2)
|
869
858
|
assert_nil(a1.parent)
|
870
859
|
|
871
|
-
|
860
|
+
# end
|
872
861
|
assert_same(b, b.replace_node(b2, b3))
|
873
862
|
check_list(b, b1, b3)
|
874
863
|
assert_nil(b2.parent)
|
@@ -882,17 +871,17 @@ module NodeListChildManagementTests
|
|
882
871
|
b = _List[b1, b2, b3]
|
883
872
|
c = _List[c1, c2, c3]
|
884
873
|
|
885
|
-
|
874
|
+
# beginning
|
886
875
|
assert_same(a, a.replace_node(a1, a4))
|
887
876
|
check_list(a, a4, a2, a3)
|
888
877
|
assert_nil(a1.parent)
|
889
878
|
|
890
|
-
|
879
|
+
# end
|
891
880
|
assert_same(b, b.replace_node(b3, b4))
|
892
881
|
check_list(b, b1, b2, b4)
|
893
882
|
assert_nil(b3.parent)
|
894
883
|
|
895
|
-
|
884
|
+
# middle
|
896
885
|
assert_same(c, c.replace_node(c2, c4))
|
897
886
|
check_list(c, c1, c4, c3)
|
898
887
|
assert_nil(c2.parent)
|
@@ -913,12 +902,12 @@ module NodeListChildManagementTests
|
|
913
902
|
a = _List[a1, a2]
|
914
903
|
b = _List[b1, b2]
|
915
904
|
|
916
|
-
|
905
|
+
# beginning
|
917
906
|
assert_same(a, a.replace_node(a1, a3, a4))
|
918
907
|
check_list(a, a3, a4, a2)
|
919
908
|
assert_nil(a1.parent)
|
920
909
|
|
921
|
-
|
910
|
+
# end
|
922
911
|
assert_same(b, b.replace_node(b2, b3, b4))
|
923
912
|
check_list(b, b1, b3, b4)
|
924
913
|
assert_nil(b2.parent)
|
@@ -932,17 +921,17 @@ module NodeListChildManagementTests
|
|
932
921
|
b = _List[b1, b2, b3]
|
933
922
|
c = _List[c1, c2, c3]
|
934
923
|
|
935
|
-
|
924
|
+
# beginning
|
936
925
|
assert_same(a, a.replace_node(a1, a4, a5))
|
937
926
|
check_list(a, a4, a5, a2, a3)
|
938
927
|
assert_nil(a1.parent)
|
939
928
|
|
940
|
-
|
929
|
+
# end
|
941
930
|
assert_same(b, b.replace_node(b3, b4, b5))
|
942
931
|
check_list(b, b1, b2, b4, b5)
|
943
932
|
assert_nil(b3.parent)
|
944
933
|
|
945
|
-
|
934
|
+
# middle
|
946
935
|
assert_same(c, c.replace_node(c2, c4, c5))
|
947
936
|
check_list(c, c1, c4, c5, c3)
|
948
937
|
assert_nil(c2.parent)
|
@@ -963,12 +952,12 @@ module NodeListChildManagementTests
|
|
963
952
|
a = _List[a1, a2]
|
964
953
|
b = _List[b1, b2]
|
965
954
|
|
966
|
-
|
955
|
+
# beginning
|
967
956
|
assert_same(a, a.replace_node(a1, a3, a4, a5))
|
968
957
|
check_list(a, a3, a4, a5, a2)
|
969
958
|
assert_nil(a1.parent)
|
970
959
|
|
971
|
-
|
960
|
+
# end
|
972
961
|
assert_same(b, b.replace_node(b2, b3, b4, b5))
|
973
962
|
check_list(b, b1, b3, b4, b5)
|
974
963
|
assert_nil(b2.parent)
|
@@ -982,17 +971,17 @@ module NodeListChildManagementTests
|
|
982
971
|
b = _List[b1, b2, b3]
|
983
972
|
c = _List[c1, c2, c3]
|
984
973
|
|
985
|
-
|
974
|
+
# beginning
|
986
975
|
assert_same(a, a.replace_node(a1, a4, a5, a6))
|
987
976
|
check_list(a, a4, a5, a6, a2, a3)
|
988
977
|
assert_nil(a1.parent)
|
989
978
|
|
990
|
-
|
979
|
+
# end
|
991
980
|
assert_same(b, b.replace_node(b3, b4, b5, b6))
|
992
981
|
check_list(b, b1, b2, b4, b5, b6)
|
993
982
|
assert_nil(b3.parent)
|
994
983
|
|
995
|
-
|
984
|
+
# middle
|
996
985
|
assert_same(c, c.replace_node(c2, c4, c5, c6))
|
997
986
|
check_list(c, c1, c4, c5, c6, c3)
|
998
987
|
assert_nil(c2.parent)
|
@@ -1013,12 +1002,12 @@ module NodeListChildManagementTests
|
|
1013
1002
|
a = _List[a1, a2]
|
1014
1003
|
b = _List[b1, b2]
|
1015
1004
|
|
1016
|
-
|
1005
|
+
# beginning
|
1017
1006
|
assert_same(a, a.replace_node(a1, a3, a4, a5, a6))
|
1018
1007
|
check_list(a, a3, a4, a5, a6, a2)
|
1019
1008
|
assert_nil(a1.parent)
|
1020
1009
|
|
1021
|
-
|
1010
|
+
# end
|
1022
1011
|
assert_same(b, b.replace_node(b2, b3, b4, b5, b6))
|
1023
1012
|
check_list(b, b1, b3, b4, b5, b6)
|
1024
1013
|
assert_nil(b2.parent)
|
@@ -1032,24 +1021,24 @@ module NodeListChildManagementTests
|
|
1032
1021
|
b = _List[b1, b2, b3]
|
1033
1022
|
c = _List[c1, c2, c3]
|
1034
1023
|
|
1035
|
-
|
1024
|
+
# beginning
|
1036
1025
|
assert_same(a, a.replace_node(a1, a4, a5, a6, a7))
|
1037
1026
|
check_list(a, a4, a5, a6, a7, a2, a3)
|
1038
1027
|
assert_nil(a1.parent)
|
1039
1028
|
|
1040
|
-
|
1029
|
+
# end
|
1041
1030
|
assert_same(b, b.replace_node(b3, b4, b5, b6, b7))
|
1042
1031
|
check_list(b, b1, b2, b4, b5, b6, b7)
|
1043
1032
|
assert_nil(b3.parent)
|
1044
1033
|
|
1045
|
-
|
1034
|
+
# middle
|
1046
1035
|
assert_same(c, c.replace_node(c2, c4, c5, c6, c7))
|
1047
1036
|
check_list(c, c1, c4, c5, c6, c7, c3)
|
1048
1037
|
assert_nil(c2.parent)
|
1049
1038
|
end
|
1050
1039
|
|
1051
1040
|
def test_replace_with_attached
|
1052
|
-
|
1041
|
+
# one
|
1053
1042
|
a1 = C::Int.new
|
1054
1043
|
a = _List[a1]
|
1055
1044
|
b1 = C::Int.new
|
@@ -1058,7 +1047,7 @@ module NodeListChildManagementTests
|
|
1058
1047
|
assert_copy(b1, a[0])
|
1059
1048
|
assert_nil(a1.parent)
|
1060
1049
|
|
1061
|
-
|
1050
|
+
# many
|
1062
1051
|
a1 = C::Int.new
|
1063
1052
|
a = _List[a1]
|
1064
1053
|
b1, b2, b3, b4 = 4.of{C::Int.new}
|
@@ -1072,7 +1061,7 @@ module NodeListChildManagementTests
|
|
1072
1061
|
end
|
1073
1062
|
|
1074
1063
|
def test_replace_with_duplicated
|
1075
|
-
|
1064
|
+
# one
|
1076
1065
|
a1, a2 = 2.of{C::Int.new}
|
1077
1066
|
a = _List[a1]
|
1078
1067
|
assert_same(a, a.replace_node(a1, a2, a2))
|
@@ -1080,7 +1069,7 @@ module NodeListChildManagementTests
|
|
1080
1069
|
assert_same(a2, a[0])
|
1081
1070
|
assert_copy(a2, a[1])
|
1082
1071
|
|
1083
|
-
|
1072
|
+
# many
|
1084
1073
|
a1, a2, a3, a4 = 4.of{C::Int.new}
|
1085
1074
|
a = _List[a1, a2, a3]
|
1086
1075
|
assert_same(a, a.replace_node(a1, a2, a4, a2, a4))
|
@@ -1094,13 +1083,13 @@ module NodeListChildManagementTests
|
|
1094
1083
|
end
|
1095
1084
|
|
1096
1085
|
def test_replace_with_replaced
|
1097
|
-
|
1086
|
+
# one
|
1098
1087
|
a1 = C::Int.new
|
1099
1088
|
a = _List[a1]
|
1100
1089
|
assert_same(a, a.replace_node(a1, a1))
|
1101
1090
|
assert_same_list([a1], a)
|
1102
1091
|
|
1103
|
-
|
1092
|
+
# many -- some are the replaced node
|
1104
1093
|
a1, a2, a3 = 3.of{C::Int.new}
|
1105
1094
|
a = _List[a1]
|
1106
1095
|
assert_same(a, a.replace_node(a1, a1, a2, a3, a1))
|
@@ -1110,7 +1099,7 @@ module NodeListChildManagementTests
|
|
1110
1099
|
assert_same(a3, a[2])
|
1111
1100
|
assert_copy(a1, a[3])
|
1112
1101
|
|
1113
|
-
|
1102
|
+
# many -- all are the replaced node
|
1114
1103
|
a1 = C::Int.new
|
1115
1104
|
a = _List[a1]
|
1116
1105
|
assert_same(a, a.replace_node(a1, a1, a1, a1))
|
@@ -1123,18 +1112,17 @@ end
|
|
1123
1112
|
|
1124
1113
|
module NodeListArrayQueryTests
|
1125
1114
|
include NodeListTest
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
###
|
1115
|
+
|
1116
|
+
# ------------------------------------------------------------------
|
1117
|
+
# first, last
|
1118
|
+
# ------------------------------------------------------------------
|
1131
1119
|
|
1132
1120
|
def test_first
|
1133
|
-
|
1121
|
+
# empty
|
1134
1122
|
a = _List[]
|
1135
1123
|
assert_nil(a.first)
|
1136
1124
|
|
1137
|
-
|
1125
|
+
# one
|
1138
1126
|
a1 = C::Int.new
|
1139
1127
|
a = _List[a1]
|
1140
1128
|
assert_same(a1, a.first)
|
@@ -1142,7 +1130,7 @@ module NodeListArrayQueryTests
|
|
1142
1130
|
assert_same_list([a1], a.first(1))
|
1143
1131
|
assert_same_list([a1], a.first(2))
|
1144
1132
|
|
1145
|
-
|
1133
|
+
# two
|
1146
1134
|
a1, a2 = 2.of{C::Int.new}
|
1147
1135
|
a = _List[a1, a2]
|
1148
1136
|
assert_same(a1, a.first)
|
@@ -1151,7 +1139,7 @@ module NodeListArrayQueryTests
|
|
1151
1139
|
assert_same_list([a1, a2], a.first(2))
|
1152
1140
|
assert_same_list([a1, a2], a.first(3))
|
1153
1141
|
|
1154
|
-
|
1142
|
+
# three
|
1155
1143
|
ret = a.first(3)
|
1156
1144
|
a1, a2, a3 = 3.of{C::Int.new}
|
1157
1145
|
a = _List[a1, a2, a3]
|
@@ -1162,16 +1150,16 @@ module NodeListArrayQueryTests
|
|
1162
1150
|
assert_same_list([a1, a2, a3], a.first(3))
|
1163
1151
|
assert_same_list([a1, a2, a3], a.first(4))
|
1164
1152
|
|
1165
|
-
|
1166
|
-
|
1153
|
+
# negative array size
|
1154
|
+
assert_raises(ArgumentError){a.first(-1)}
|
1167
1155
|
end
|
1168
1156
|
|
1169
1157
|
def test_last
|
1170
|
-
|
1158
|
+
# empty
|
1171
1159
|
a = _List[]
|
1172
1160
|
assert_nil(a.last)
|
1173
1161
|
|
1174
|
-
|
1162
|
+
# one
|
1175
1163
|
a1 = C::Int.new
|
1176
1164
|
a = _List[a1]
|
1177
1165
|
assert_same(a1, a.last)
|
@@ -1179,7 +1167,7 @@ module NodeListArrayQueryTests
|
|
1179
1167
|
assert_same_list([a1], a.last(1))
|
1180
1168
|
assert_same_list([a1], a.last(2))
|
1181
1169
|
|
1182
|
-
|
1170
|
+
# two
|
1183
1171
|
a1, a2 = 2.of{C::Int.new}
|
1184
1172
|
a = _List[a1, a2]
|
1185
1173
|
assert_same(a2, a.last)
|
@@ -1188,7 +1176,7 @@ module NodeListArrayQueryTests
|
|
1188
1176
|
assert_same_list([a1, a2], a.last(2))
|
1189
1177
|
assert_same_list([a1, a2], a.last(3))
|
1190
1178
|
|
1191
|
-
|
1179
|
+
# three
|
1192
1180
|
ret = a.last(3)
|
1193
1181
|
a1, a2, a3 = 3.of{C::Int.new}
|
1194
1182
|
a = _List[a1, a2, a3]
|
@@ -1199,15 +1187,13 @@ module NodeListArrayQueryTests
|
|
1199
1187
|
assert_same_list([a1, a2, a3], a.last(3))
|
1200
1188
|
assert_same_list([a1, a2, a3], a.last(4))
|
1201
1189
|
|
1202
|
-
|
1203
|
-
|
1190
|
+
# negative array size
|
1191
|
+
assert_raises(ArgumentError){a.last(-1)}
|
1204
1192
|
end
|
1205
1193
|
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
### ----------------------------------------------------------------
|
1210
|
-
###
|
1194
|
+
# ------------------------------------------------------------------
|
1195
|
+
# empty?
|
1196
|
+
# ------------------------------------------------------------------
|
1211
1197
|
|
1212
1198
|
def test_empty
|
1213
1199
|
assert(_List[].empty?)
|
@@ -1215,112 +1201,108 @@ module NodeListArrayQueryTests
|
|
1215
1201
|
assert(!_List[_List[]].empty?)
|
1216
1202
|
end
|
1217
1203
|
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
### ----------------------------------------------------------------
|
1222
|
-
###
|
1204
|
+
# ------------------------------------------------------------------
|
1205
|
+
# to_a
|
1206
|
+
# ------------------------------------------------------------------
|
1223
1207
|
|
1224
1208
|
def test_to_a
|
1225
|
-
|
1209
|
+
# empty
|
1226
1210
|
r = empty.to_a
|
1227
1211
|
assert_same(::Array, r.class)
|
1228
1212
|
assert_same_list([], r)
|
1229
1213
|
|
1230
|
-
|
1231
|
-
a = *one_els
|
1214
|
+
# one
|
1215
|
+
a, = *one_els
|
1232
1216
|
r = one.to_a
|
1233
1217
|
assert_same(::Array, r.class)
|
1234
1218
|
assert_same_list([a], r)
|
1235
1219
|
|
1236
|
-
|
1220
|
+
# two
|
1237
1221
|
a, b = *two_els
|
1238
1222
|
r = two.to_a
|
1239
1223
|
assert_same(::Array, r.class)
|
1240
1224
|
assert_same_list([a, b], r)
|
1241
1225
|
|
1242
|
-
|
1226
|
+
# three
|
1243
1227
|
a, b, c = *three_els
|
1244
1228
|
r = three.to_a
|
1245
1229
|
assert_same(::Array, r.class)
|
1246
1230
|
assert_same_list([a, b, c], r)
|
1247
1231
|
|
1248
|
-
|
1232
|
+
# four
|
1249
1233
|
a, b, c, d = *four_els
|
1250
1234
|
r = four.to_a
|
1251
1235
|
assert_same(::Array, r.class)
|
1252
1236
|
assert_same_list([a, b, c, d], r)
|
1253
1237
|
|
1254
|
-
|
1238
|
+
# two_by_four
|
1255
1239
|
l0, l1, l2, l3, a, b, c, d, e, f, g, h = *two_by_four_els
|
1256
1240
|
r = two_by_four.to_a
|
1257
1241
|
assert_same(::Array, r.class)
|
1258
1242
|
assert_same_list([l0, l1, l2, l3], r)
|
1259
1243
|
|
1260
|
-
|
1244
|
+
# big
|
1261
1245
|
l1, l2, l21, l22, l23, l230, a, b, c, d, e = *big_els
|
1262
1246
|
r = big.to_a
|
1263
1247
|
assert_same(::Array, r.class)
|
1264
1248
|
assert_same_list([a, l1, l2], r)
|
1265
1249
|
end
|
1266
1250
|
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
### ----------------------------------------------------------------
|
1271
|
-
###
|
1251
|
+
# ------------------------------------------------------------------
|
1252
|
+
# index, rindex
|
1253
|
+
# ------------------------------------------------------------------
|
1272
1254
|
|
1273
1255
|
def test_index
|
1274
|
-
|
1256
|
+
# empty
|
1275
1257
|
empty = _List[]
|
1276
1258
|
assert_nil(empty.index(C::Int.new))
|
1277
1259
|
assert_nil(empty.index(nil))
|
1278
|
-
|
1260
|
+
#
|
1279
1261
|
assert_nil(empty.rindex(C::Int.new))
|
1280
1262
|
assert_nil(empty.rindex(nil))
|
1281
1263
|
|
1282
|
-
|
1264
|
+
# one
|
1283
1265
|
a = C::Int.new(1)
|
1284
1266
|
list = _List[a]
|
1285
|
-
|
1267
|
+
#
|
1286
1268
|
assert_equal(0, list.index(a))
|
1287
1269
|
assert_equal(0, list.index(C::Int.new(1)))
|
1288
1270
|
assert_nil(list.index(C::Int.new))
|
1289
1271
|
assert_nil(list.index(nil))
|
1290
|
-
|
1272
|
+
#
|
1291
1273
|
assert_equal(0, list.rindex(a))
|
1292
1274
|
assert_nil(list.rindex(C::Int.new))
|
1293
1275
|
assert_nil(list.rindex(nil))
|
1294
1276
|
|
1295
|
-
|
1277
|
+
# two
|
1296
1278
|
a = C::Int.new(1)
|
1297
1279
|
b = C::Int.new(2)
|
1298
1280
|
list = _List[a, b]
|
1299
|
-
|
1281
|
+
#
|
1300
1282
|
assert_equal(0, list.index(a))
|
1301
1283
|
assert_equal(1, list.index(b))
|
1302
1284
|
assert_nil(list.index(C::Int.new))
|
1303
1285
|
assert_nil(list.index(nil))
|
1304
|
-
|
1286
|
+
#
|
1305
1287
|
assert_equal(0, list.rindex(a))
|
1306
1288
|
assert_equal(1, list.rindex(b))
|
1307
1289
|
assert_nil(list.rindex(C::Int.new))
|
1308
1290
|
assert_nil(list.rindex(nil))
|
1309
1291
|
|
1310
|
-
|
1292
|
+
# nested -- [a, [b]]
|
1311
1293
|
a = C::Int.new(1)
|
1312
1294
|
b = C::Int.new(2)
|
1313
1295
|
l1 = _List[b]
|
1314
1296
|
list = _List[a, l1]
|
1315
|
-
|
1297
|
+
#
|
1316
1298
|
assert_equal(0, list.index(a))
|
1317
1299
|
assert_equal(1, list.index(l1))
|
1318
1300
|
assert_equal(1, list.index(_List[C::Int.new(2)]))
|
1319
|
-
|
1301
|
+
assert_nil(list.index([b]))
|
1320
1302
|
assert_nil(list.index([a]))
|
1321
1303
|
assert_nil(list.index(C::Int.new))
|
1322
1304
|
assert_nil(list.index(nil))
|
1323
|
-
|
1305
|
+
#
|
1324
1306
|
assert_equal(0, list.rindex(a))
|
1325
1307
|
assert_equal(1, list.rindex(l1))
|
1326
1308
|
assert_equal(1, list.rindex(_List[b]))
|
@@ -1328,11 +1310,11 @@ module NodeListArrayQueryTests
|
|
1328
1310
|
assert_nil(list.rindex(C::Int.new))
|
1329
1311
|
assert_nil(list.rindex(nil))
|
1330
1312
|
|
1331
|
-
|
1313
|
+
# repeated
|
1332
1314
|
a1, a2, a3 = 3.of{C::Int.new(-1)}
|
1333
1315
|
b1, b2, b3 = 3.of{C::Int.new(1)}
|
1334
1316
|
list = _List[a1, b1, a2, b2, a3, b3]
|
1335
|
-
|
1317
|
+
#
|
1336
1318
|
assert_equal(0, list.index(a1))
|
1337
1319
|
assert_equal(0, list.index(a2))
|
1338
1320
|
assert_equal(0, list.index(a3))
|
@@ -1341,7 +1323,7 @@ module NodeListArrayQueryTests
|
|
1341
1323
|
assert_equal(1, list.index(b3))
|
1342
1324
|
assert_nil(list.index(C::Int.new))
|
1343
1325
|
assert_nil(list.index(nil))
|
1344
|
-
|
1326
|
+
#
|
1345
1327
|
assert_equal(4, list.rindex(a1))
|
1346
1328
|
assert_equal(4, list.rindex(a2))
|
1347
1329
|
assert_equal(4, list.rindex(a3))
|
@@ -1352,26 +1334,24 @@ module NodeListArrayQueryTests
|
|
1352
1334
|
assert_nil(list.rindex(nil))
|
1353
1335
|
end
|
1354
1336
|
|
1355
|
-
|
1356
|
-
|
1357
|
-
|
1358
|
-
### ----------------------------------------------------------------
|
1359
|
-
###
|
1337
|
+
# ------------------------------------------------------------------
|
1338
|
+
# values_at
|
1339
|
+
# ------------------------------------------------------------------
|
1360
1340
|
|
1361
1341
|
def test_values_at
|
1362
|
-
|
1342
|
+
# empty
|
1363
1343
|
assert_same_list([], empty.values_at())
|
1364
1344
|
assert_same_list([nil], empty.values_at(1))
|
1365
1345
|
assert_same_list([nil], empty.values_at(-1))
|
1366
1346
|
|
1367
|
-
|
1368
|
-
a = *one_els
|
1347
|
+
# one
|
1348
|
+
a, = *one_els
|
1369
1349
|
assert_same_list([], one.values_at())
|
1370
1350
|
assert_same_list([a], one.values_at(0))
|
1371
1351
|
assert_same_list([a], one.values_at(-1))
|
1372
1352
|
assert_same_list([nil, a], one.values_at(1, -1))
|
1373
1353
|
|
1374
|
-
|
1354
|
+
# big -- [a, [b,c], [d, [e], [], [[]]]]
|
1375
1355
|
l1, l2, l21, l22, l23, l230, a, b, c, d, e = *big_els
|
1376
1356
|
assert_same_list([], big.values_at())
|
1377
1357
|
assert_same_list([l2], big.values_at(-1))
|
@@ -1379,14 +1359,12 @@ module NodeListArrayQueryTests
|
|
1379
1359
|
assert_same_list([a, l1, l2], big.values_at(0, -2, -1))
|
1380
1360
|
end
|
1381
1361
|
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
### ----------------------------------------------------------------
|
1386
|
-
###
|
1362
|
+
# ------------------------------------------------------------------
|
1363
|
+
# join
|
1364
|
+
# ------------------------------------------------------------------
|
1387
1365
|
|
1388
1366
|
class N < C::Node
|
1389
|
-
def initialize
|
1367
|
+
def initialize(s)
|
1390
1368
|
@s = s
|
1391
1369
|
end
|
1392
1370
|
def to_s
|
@@ -1394,25 +1372,25 @@ module NodeListArrayQueryTests
|
|
1394
1372
|
end
|
1395
1373
|
end
|
1396
1374
|
def test_join
|
1397
|
-
|
1375
|
+
# empty
|
1398
1376
|
list = _List[]
|
1399
1377
|
assert_equal('', list.join)
|
1400
1378
|
assert_equal('', list.join('.'))
|
1401
1379
|
|
1402
|
-
|
1380
|
+
# one
|
1403
1381
|
a = N.new('a')
|
1404
1382
|
list = _List[a]
|
1405
1383
|
assert_equal('a', list.join)
|
1406
1384
|
assert_equal('a', list.join('.'))
|
1407
1385
|
|
1408
|
-
|
1386
|
+
# two
|
1409
1387
|
a = N.new('a')
|
1410
1388
|
b = N.new('b')
|
1411
1389
|
list = _List[a, b]
|
1412
1390
|
assert_equal('ab', list.join)
|
1413
1391
|
assert_equal('a.b', list.join('.'))
|
1414
1392
|
|
1415
|
-
|
1393
|
+
# two_by_two
|
1416
1394
|
a = N.new('a')
|
1417
1395
|
b = N.new('b')
|
1418
1396
|
c = N.new('c')
|
@@ -1428,24 +1406,24 @@ end
|
|
1428
1406
|
module NodeListModifierTests
|
1429
1407
|
include NodeListTest
|
1430
1408
|
def test_push_none
|
1431
|
-
|
1409
|
+
# empty
|
1432
1410
|
list = _List[]
|
1433
1411
|
assert_same(list, list.push)
|
1434
1412
|
assert_same_list([], list)
|
1435
1413
|
|
1436
|
-
|
1414
|
+
# one
|
1437
1415
|
a = C::Int.new
|
1438
1416
|
list = _List[a]
|
1439
1417
|
assert_same(list, list.push)
|
1440
1418
|
assert_same_list([a], list)
|
1441
1419
|
|
1442
|
-
|
1420
|
+
# two
|
1443
1421
|
a, b = 2.of{C::Int.new}
|
1444
1422
|
list = _List[a, b]
|
1445
1423
|
assert_same(list, list.push)
|
1446
1424
|
assert_same_list([a, b], list)
|
1447
1425
|
|
1448
|
-
|
1426
|
+
# three
|
1449
1427
|
a, b, c = 3.of{C::Int.new}
|
1450
1428
|
list = _List[a, b, c]
|
1451
1429
|
assert_same(list, list.push)
|
@@ -1453,25 +1431,25 @@ module NodeListModifierTests
|
|
1453
1431
|
end
|
1454
1432
|
|
1455
1433
|
def test_push_one
|
1456
|
-
|
1434
|
+
# empty
|
1457
1435
|
a = C::Int.new
|
1458
1436
|
list = _List[]
|
1459
1437
|
assert_same(list, list.push(a))
|
1460
1438
|
assert_same_list([a], list)
|
1461
1439
|
|
1462
|
-
|
1440
|
+
# one
|
1463
1441
|
a, b = 2.of{C::Int.new}
|
1464
1442
|
list = _List[a]
|
1465
1443
|
assert_same(list, list.push(b))
|
1466
1444
|
assert_same_list([a, b], list)
|
1467
1445
|
|
1468
|
-
|
1446
|
+
# two
|
1469
1447
|
a, b, c = 3.of{C::Int.new}
|
1470
1448
|
list = _List[a, b]
|
1471
1449
|
assert_same(list, list.push(c))
|
1472
1450
|
assert_same_list([a, b, c], list)
|
1473
1451
|
|
1474
|
-
|
1452
|
+
# three
|
1475
1453
|
a, b, c, d = 4.of{C::Int.new}
|
1476
1454
|
list = _List[a, b, c]
|
1477
1455
|
assert_same(list, list.push(d))
|
@@ -1479,25 +1457,25 @@ module NodeListModifierTests
|
|
1479
1457
|
end
|
1480
1458
|
|
1481
1459
|
def test_push_two
|
1482
|
-
|
1460
|
+
# empty
|
1483
1461
|
a, b = 2.of{C::Int.new}
|
1484
1462
|
list = _List[]
|
1485
1463
|
assert_same(list, list.push(a, b))
|
1486
1464
|
assert_same_list([a, b], list)
|
1487
1465
|
|
1488
|
-
|
1466
|
+
# one
|
1489
1467
|
a, b, c = 3.of{C::Int.new}
|
1490
1468
|
list = _List[a]
|
1491
1469
|
assert_same(list, list.push(b, c))
|
1492
1470
|
assert_same_list([a, b, c], list)
|
1493
1471
|
|
1494
|
-
|
1472
|
+
# two
|
1495
1473
|
a, b, c, d = 4.of{C::Int.new}
|
1496
1474
|
list = _List[a, b]
|
1497
1475
|
assert_same(list, list.push(c, d))
|
1498
1476
|
assert_same_list([a, b, c, d], list)
|
1499
1477
|
|
1500
|
-
|
1478
|
+
# three
|
1501
1479
|
a, b, c, d, e = 5.of{C::Int.new}
|
1502
1480
|
list = _List[a, b, c]
|
1503
1481
|
assert_same(list, list.push(d, e))
|
@@ -1505,25 +1483,25 @@ module NodeListModifierTests
|
|
1505
1483
|
end
|
1506
1484
|
|
1507
1485
|
def test_push_three
|
1508
|
-
|
1486
|
+
# empty
|
1509
1487
|
a, b, c = 3.of{C::Int.new}
|
1510
1488
|
list = _List[]
|
1511
1489
|
assert_same(list, list.push(a, b, c))
|
1512
1490
|
assert_same_list([a, b, c], list)
|
1513
1491
|
|
1514
|
-
|
1492
|
+
# one
|
1515
1493
|
a, b, c, d = 4.of{C::Int.new}
|
1516
1494
|
list = _List[a]
|
1517
1495
|
assert_same(list, list.push(b, c, d))
|
1518
1496
|
assert_same_list([a, b, c, d], list)
|
1519
1497
|
|
1520
|
-
|
1498
|
+
# two
|
1521
1499
|
a, b, c, d, e = 5.of{C::Int.new}
|
1522
1500
|
list = _List[a, b]
|
1523
1501
|
assert_same(list, list.push(c, d, e))
|
1524
1502
|
assert_same_list([a, b, c, d, e], list)
|
1525
1503
|
|
1526
|
-
|
1504
|
+
# three
|
1527
1505
|
a, b, c, d, e, f = 6.of{C::Int.new}
|
1528
1506
|
list = _List[a, b, c]
|
1529
1507
|
assert_same(list, list.push(d, e, f))
|
@@ -1531,7 +1509,7 @@ module NodeListModifierTests
|
|
1531
1509
|
end
|
1532
1510
|
|
1533
1511
|
def test_push_attached
|
1534
|
-
|
1512
|
+
# one
|
1535
1513
|
a1 = C::Int.new
|
1536
1514
|
b1 = C::Int.new
|
1537
1515
|
a = _List[a1]
|
@@ -1542,7 +1520,7 @@ module NodeListModifierTests
|
|
1542
1520
|
assert_same(a1, a[0])
|
1543
1521
|
assert_copy(b1, a[1])
|
1544
1522
|
|
1545
|
-
|
1523
|
+
# many
|
1546
1524
|
a1 = C::Int.new
|
1547
1525
|
b1, b2, b3, b4 = 4.of{C::Int.new}
|
1548
1526
|
a = _List[a1]
|
@@ -1558,24 +1536,24 @@ module NodeListModifierTests
|
|
1558
1536
|
end
|
1559
1537
|
|
1560
1538
|
def test_unshift_none
|
1561
|
-
|
1539
|
+
# empty
|
1562
1540
|
list = _List[]
|
1563
1541
|
assert_same(list, list.unshift)
|
1564
1542
|
assert_same_list([], list)
|
1565
1543
|
|
1566
|
-
|
1544
|
+
# one
|
1567
1545
|
a = C::Int.new
|
1568
1546
|
list = _List[a]
|
1569
1547
|
assert_same(list, list.unshift)
|
1570
1548
|
assert_same_list([a], list)
|
1571
1549
|
|
1572
|
-
|
1550
|
+
# two
|
1573
1551
|
a, b = 2.of{C::Int.new}
|
1574
1552
|
list = _List[a, b]
|
1575
1553
|
assert_same(list, list.unshift)
|
1576
1554
|
assert_same_list([a, b], list)
|
1577
1555
|
|
1578
|
-
|
1556
|
+
# three
|
1579
1557
|
a, b, c = 3.of{C::Int.new}
|
1580
1558
|
list = _List[a, b, c]
|
1581
1559
|
assert_same(list, list.unshift)
|
@@ -1583,25 +1561,25 @@ module NodeListModifierTests
|
|
1583
1561
|
end
|
1584
1562
|
|
1585
1563
|
def test_unshift_one
|
1586
|
-
|
1564
|
+
# empty
|
1587
1565
|
a = C::Int.new
|
1588
1566
|
list = _List[]
|
1589
1567
|
assert_same(list, list.unshift(a))
|
1590
1568
|
assert_same_list([a], list)
|
1591
1569
|
|
1592
|
-
|
1570
|
+
# one
|
1593
1571
|
a, b = 2.of{C::Int.new}
|
1594
1572
|
list = _List[a]
|
1595
1573
|
assert_same(list, list.unshift(b))
|
1596
1574
|
assert_same_list([b, a], list)
|
1597
1575
|
|
1598
|
-
|
1576
|
+
# two
|
1599
1577
|
a, b, c = 3.of{C::Int.new}
|
1600
1578
|
list = _List[a, b]
|
1601
1579
|
assert_same(list, list.unshift(c))
|
1602
1580
|
assert_same_list([c, a, b], list)
|
1603
1581
|
|
1604
|
-
|
1582
|
+
# three
|
1605
1583
|
a, b, c, d = 4.of{C::Int.new}
|
1606
1584
|
list = _List[a, b, c]
|
1607
1585
|
assert_same(list, list.unshift(d))
|
@@ -1609,25 +1587,25 @@ module NodeListModifierTests
|
|
1609
1587
|
end
|
1610
1588
|
|
1611
1589
|
def test_unshift_two
|
1612
|
-
|
1590
|
+
# empty
|
1613
1591
|
a, b = 2.of{C::Int.new}
|
1614
1592
|
list = _List[]
|
1615
1593
|
assert_same(list, list.unshift(a, b))
|
1616
1594
|
assert_same_list([a, b], list)
|
1617
1595
|
|
1618
|
-
|
1596
|
+
# one
|
1619
1597
|
a, b, c = 3.of{C::Int.new}
|
1620
1598
|
list = _List[a]
|
1621
1599
|
assert_same(list, list.unshift(b, c))
|
1622
1600
|
assert_same_list([b, c, a], list)
|
1623
1601
|
|
1624
|
-
|
1602
|
+
# two
|
1625
1603
|
a, b, c, d = 4.of{C::Int.new}
|
1626
1604
|
list = _List[a, b]
|
1627
1605
|
assert_same(list, list.unshift(c, d))
|
1628
1606
|
assert_same_list([c, d, a, b], list)
|
1629
1607
|
|
1630
|
-
|
1608
|
+
# three
|
1631
1609
|
a, b, c, d, e = 5.of{C::Int.new}
|
1632
1610
|
list = _List[a, b, c]
|
1633
1611
|
assert_same(list, list.unshift(d, e))
|
@@ -1635,25 +1613,25 @@ module NodeListModifierTests
|
|
1635
1613
|
end
|
1636
1614
|
|
1637
1615
|
def test_unshift_three
|
1638
|
-
|
1616
|
+
# empty
|
1639
1617
|
a, b, c = 3.of{C::Int.new}
|
1640
1618
|
list = _List[]
|
1641
1619
|
assert_same(list, list.unshift(a, b, c))
|
1642
1620
|
assert_same_list([a, b, c], list)
|
1643
1621
|
|
1644
|
-
|
1622
|
+
# one
|
1645
1623
|
a, b, c, d = 4.of{C::Int.new}
|
1646
1624
|
list = _List[a]
|
1647
1625
|
assert_same(list, list.unshift(b, c, d))
|
1648
1626
|
assert_same_list([b, c, d, a], list)
|
1649
1627
|
|
1650
|
-
|
1628
|
+
# two
|
1651
1629
|
a, b, c, d, e = 5.of{C::Int.new}
|
1652
1630
|
list = _List[a, b]
|
1653
1631
|
assert_same(list, list.unshift(c, d, e))
|
1654
1632
|
assert_same_list([c, d, e, a, b], list)
|
1655
1633
|
|
1656
|
-
|
1634
|
+
# three
|
1657
1635
|
a, b, c, d, e, f = 6.of{C::Int.new}
|
1658
1636
|
list = _List[a, b, c]
|
1659
1637
|
assert_same(list, list.unshift(d, e, f))
|
@@ -1661,7 +1639,7 @@ module NodeListModifierTests
|
|
1661
1639
|
end
|
1662
1640
|
|
1663
1641
|
def test_unshift_attached
|
1664
|
-
|
1642
|
+
# one
|
1665
1643
|
a1 = C::Int.new
|
1666
1644
|
b1 = C::Int.new
|
1667
1645
|
a = _List[a1]
|
@@ -1672,7 +1650,7 @@ module NodeListModifierTests
|
|
1672
1650
|
assert_copy(b1, a[0])
|
1673
1651
|
assert_same(a1, a[1])
|
1674
1652
|
|
1675
|
-
|
1653
|
+
# many
|
1676
1654
|
a1 = C::Int.new
|
1677
1655
|
b1, b2, b3, b4 = 4.of{C::Int.new}
|
1678
1656
|
a = _List[a1]
|
@@ -1688,26 +1666,26 @@ module NodeListModifierTests
|
|
1688
1666
|
end
|
1689
1667
|
|
1690
1668
|
def test_pop
|
1691
|
-
|
1669
|
+
# empty
|
1692
1670
|
list = _List[]
|
1693
1671
|
assert_same(nil, list.pop)
|
1694
1672
|
assert_same_list([], list)
|
1695
1673
|
|
1696
|
-
|
1674
|
+
# one
|
1697
1675
|
a = C::Int.new
|
1698
1676
|
list = _List[a]
|
1699
1677
|
assert_same(a, list.pop)
|
1700
1678
|
assert_same_list([], list)
|
1701
1679
|
assert_nil(a.parent)
|
1702
1680
|
|
1703
|
-
|
1681
|
+
# two
|
1704
1682
|
a, b = 2.of{C::Int.new}
|
1705
1683
|
list = _List[a, b]
|
1706
1684
|
assert_same(b, list.pop)
|
1707
1685
|
assert_same_list([a], list)
|
1708
1686
|
assert_nil(b.parent)
|
1709
1687
|
|
1710
|
-
|
1688
|
+
# three
|
1711
1689
|
a, b, c = 3.of{C::Int.new}
|
1712
1690
|
list = _List[a, b, c]
|
1713
1691
|
assert_same(c, list.pop)
|
@@ -1716,27 +1694,27 @@ module NodeListModifierTests
|
|
1716
1694
|
end
|
1717
1695
|
|
1718
1696
|
def test_pop_none
|
1719
|
-
|
1697
|
+
# empty
|
1720
1698
|
list = _List[]
|
1721
1699
|
ret = list.pop(0)
|
1722
1700
|
assert_same_list([], ret)
|
1723
1701
|
assert_same_list([], list)
|
1724
1702
|
|
1725
|
-
|
1703
|
+
# one
|
1726
1704
|
a = C::Int.new
|
1727
1705
|
list = _List[a]
|
1728
1706
|
ret = list.pop(0)
|
1729
1707
|
assert_same_list([], ret)
|
1730
1708
|
assert_same_list([a], list)
|
1731
1709
|
|
1732
|
-
|
1710
|
+
# two
|
1733
1711
|
a, b = 2.of{C::Int.new}
|
1734
1712
|
list = _List[a, b]
|
1735
1713
|
ret = list.pop(0)
|
1736
1714
|
assert_same_list([], ret)
|
1737
1715
|
assert_same_list([a, b], list)
|
1738
1716
|
|
1739
|
-
|
1717
|
+
# three
|
1740
1718
|
a, b, c = 3.of{C::Int.new}
|
1741
1719
|
list = _List[a, b, c]
|
1742
1720
|
ret = list.pop(0)
|
@@ -1745,13 +1723,13 @@ module NodeListModifierTests
|
|
1745
1723
|
end
|
1746
1724
|
|
1747
1725
|
def test_pop_one
|
1748
|
-
|
1726
|
+
# empty
|
1749
1727
|
list = _List[]
|
1750
1728
|
ret = list.pop(1)
|
1751
1729
|
assert_same_list([], ret)
|
1752
1730
|
assert_same_list([], list)
|
1753
1731
|
|
1754
|
-
|
1732
|
+
# one
|
1755
1733
|
a = C::Int.new
|
1756
1734
|
list = _List[a]
|
1757
1735
|
ret = list.pop(1)
|
@@ -1759,7 +1737,7 @@ module NodeListModifierTests
|
|
1759
1737
|
assert_same_list([], list)
|
1760
1738
|
assert_nil(a.parent)
|
1761
1739
|
|
1762
|
-
|
1740
|
+
# two
|
1763
1741
|
a, b = 2.of{C::Int.new}
|
1764
1742
|
list = _List[a, b]
|
1765
1743
|
ret = list.pop(1)
|
@@ -1767,7 +1745,7 @@ module NodeListModifierTests
|
|
1767
1745
|
assert_same_list([a], list)
|
1768
1746
|
assert_nil(b.parent)
|
1769
1747
|
|
1770
|
-
|
1748
|
+
# three
|
1771
1749
|
a, b, c = 3.of{C::Int.new}
|
1772
1750
|
list = _List[a, b, c]
|
1773
1751
|
ret = list.pop(1)
|
@@ -1777,13 +1755,13 @@ module NodeListModifierTests
|
|
1777
1755
|
end
|
1778
1756
|
|
1779
1757
|
def test_pop_two
|
1780
|
-
|
1758
|
+
# empty
|
1781
1759
|
list = _List[]
|
1782
1760
|
ret = list.pop(2)
|
1783
1761
|
assert_same_list([], ret)
|
1784
1762
|
assert_same_list([], list)
|
1785
1763
|
|
1786
|
-
|
1764
|
+
# one
|
1787
1765
|
a = C::Int.new
|
1788
1766
|
list = _List[a]
|
1789
1767
|
ret = list.pop(2)
|
@@ -1791,7 +1769,7 @@ module NodeListModifierTests
|
|
1791
1769
|
assert_same_list([], list)
|
1792
1770
|
assert_nil(a.parent)
|
1793
1771
|
|
1794
|
-
|
1772
|
+
# two
|
1795
1773
|
a, b = 2.of{C::Int.new}
|
1796
1774
|
list = _List[a, b]
|
1797
1775
|
ret = list.pop(2)
|
@@ -1800,7 +1778,7 @@ module NodeListModifierTests
|
|
1800
1778
|
assert_nil(a.parent)
|
1801
1779
|
assert_nil(b.parent)
|
1802
1780
|
|
1803
|
-
|
1781
|
+
# three
|
1804
1782
|
a, b, c = 3.of{C::Int.new}
|
1805
1783
|
list = _List[a, b, c]
|
1806
1784
|
ret = list.pop(2)
|
@@ -1810,14 +1788,24 @@ module NodeListModifierTests
|
|
1810
1788
|
assert_nil(c.parent)
|
1811
1789
|
end
|
1812
1790
|
|
1791
|
+
def test_pop_bad
|
1792
|
+
# too many args
|
1793
|
+
a, b = 2.of{C::Int.new}
|
1794
|
+
list = _List[a, b]
|
1795
|
+
assert_raises(ArgumentError){list.pop(1, 2)}
|
1796
|
+
assert_same_list([a, b], list)
|
1797
|
+
assert_same(list, a.parent)
|
1798
|
+
assert_same(list, b.parent)
|
1799
|
+
end
|
1800
|
+
|
1813
1801
|
def test_shift
|
1814
|
-
|
1802
|
+
# empty
|
1815
1803
|
list = _List[]
|
1816
1804
|
ret = list.shift
|
1817
1805
|
assert_nil(ret)
|
1818
1806
|
assert_same_list([], list)
|
1819
1807
|
|
1820
|
-
|
1808
|
+
# one
|
1821
1809
|
a = C::Int.new
|
1822
1810
|
list = _List[a]
|
1823
1811
|
ret = list.shift
|
@@ -1825,7 +1813,7 @@ module NodeListModifierTests
|
|
1825
1813
|
assert_same_list([], list)
|
1826
1814
|
assert_nil(a.parent)
|
1827
1815
|
|
1828
|
-
|
1816
|
+
# two
|
1829
1817
|
a, b = 2.of{C::Int.new}
|
1830
1818
|
list = _List[a, b]
|
1831
1819
|
ret = list.shift
|
@@ -1833,7 +1821,7 @@ module NodeListModifierTests
|
|
1833
1821
|
assert_same_list([b], list)
|
1834
1822
|
assert_nil(a.parent)
|
1835
1823
|
|
1836
|
-
|
1824
|
+
# three
|
1837
1825
|
a, b, c = 3.of{C::Int.new}
|
1838
1826
|
list = _List[a, b, c]
|
1839
1827
|
ret = list.shift
|
@@ -1843,27 +1831,27 @@ module NodeListModifierTests
|
|
1843
1831
|
end
|
1844
1832
|
|
1845
1833
|
def test_shift_none
|
1846
|
-
|
1834
|
+
# empty
|
1847
1835
|
list = _List[]
|
1848
1836
|
ret = list.shift(0)
|
1849
1837
|
assert_same_list([], ret)
|
1850
1838
|
assert_same_list([], list)
|
1851
1839
|
|
1852
|
-
|
1840
|
+
# one
|
1853
1841
|
a = C::Int.new
|
1854
1842
|
list = _List[a]
|
1855
1843
|
ret = list.shift(0)
|
1856
1844
|
assert_same_list([], ret)
|
1857
1845
|
assert_same_list([a], list)
|
1858
1846
|
|
1859
|
-
|
1847
|
+
# two
|
1860
1848
|
a, b = 2.of{C::Int.new}
|
1861
1849
|
list = _List[a, b]
|
1862
1850
|
ret = list.shift(0)
|
1863
1851
|
assert_same_list([], ret)
|
1864
1852
|
assert_same_list([a, b], list)
|
1865
1853
|
|
1866
|
-
|
1854
|
+
# three
|
1867
1855
|
a, b, c = 3.of{C::Int.new}
|
1868
1856
|
list = _List[a, b, c]
|
1869
1857
|
ret = list.shift(0)
|
@@ -1872,13 +1860,13 @@ module NodeListModifierTests
|
|
1872
1860
|
end
|
1873
1861
|
|
1874
1862
|
def test_shift_one
|
1875
|
-
|
1863
|
+
# empty
|
1876
1864
|
list = _List[]
|
1877
1865
|
ret = list.shift(1)
|
1878
1866
|
assert_same_list([], ret)
|
1879
1867
|
assert_same_list([], list)
|
1880
1868
|
|
1881
|
-
|
1869
|
+
# one
|
1882
1870
|
a = C::Int.new
|
1883
1871
|
list = _List[a]
|
1884
1872
|
ret = list.shift(1)
|
@@ -1886,7 +1874,7 @@ module NodeListModifierTests
|
|
1886
1874
|
assert_same_list([], list)
|
1887
1875
|
assert_nil(a.parent)
|
1888
1876
|
|
1889
|
-
|
1877
|
+
# two
|
1890
1878
|
a, b = 2.of{C::Int.new}
|
1891
1879
|
list = _List[a, b]
|
1892
1880
|
ret = list.shift(1)
|
@@ -1894,7 +1882,7 @@ module NodeListModifierTests
|
|
1894
1882
|
assert_same_list([b], list)
|
1895
1883
|
assert_nil(a.parent)
|
1896
1884
|
|
1897
|
-
|
1885
|
+
# three
|
1898
1886
|
a, b, c = 3.of{C::Int.new}
|
1899
1887
|
list = _List[a, b, c]
|
1900
1888
|
ret = list.shift(1)
|
@@ -1904,13 +1892,13 @@ module NodeListModifierTests
|
|
1904
1892
|
end
|
1905
1893
|
|
1906
1894
|
def test_shift_two
|
1907
|
-
|
1895
|
+
# empty
|
1908
1896
|
list = _List[]
|
1909
1897
|
ret = list.shift(2)
|
1910
1898
|
assert_same_list([], ret)
|
1911
1899
|
assert_same_list([], list)
|
1912
1900
|
|
1913
|
-
|
1901
|
+
# one
|
1914
1902
|
a = C::Int.new
|
1915
1903
|
list = _List[a]
|
1916
1904
|
ret = list.shift(2)
|
@@ -1918,7 +1906,7 @@ module NodeListModifierTests
|
|
1918
1906
|
assert_same_list([], list)
|
1919
1907
|
assert_nil(a.parent)
|
1920
1908
|
|
1921
|
-
|
1909
|
+
# two
|
1922
1910
|
a, b = 2.of{C::Int.new}
|
1923
1911
|
list = _List[a, b]
|
1924
1912
|
ret = list.shift(2)
|
@@ -1927,7 +1915,7 @@ module NodeListModifierTests
|
|
1927
1915
|
assert_nil(a.parent)
|
1928
1916
|
assert_nil(b.parent)
|
1929
1917
|
|
1930
|
-
|
1918
|
+
# three
|
1931
1919
|
a, b, c = 3.of{C::Int.new}
|
1932
1920
|
list = _List[a, b, c]
|
1933
1921
|
ret = list.shift(2)
|
@@ -1937,11 +1925,19 @@ module NodeListModifierTests
|
|
1937
1925
|
assert_nil(b.parent)
|
1938
1926
|
end
|
1939
1927
|
|
1940
|
-
|
1941
|
-
|
1942
|
-
|
1943
|
-
|
1944
|
-
|
1928
|
+
def test_shift_bad
|
1929
|
+
# too many args
|
1930
|
+
a, b = 2.of{C::Int.new}
|
1931
|
+
list = _List[a, b]
|
1932
|
+
assert_raises(ArgumentError){list.shift(1, 2)}
|
1933
|
+
assert_same_list([a, b], list)
|
1934
|
+
assert_same(list, a.parent)
|
1935
|
+
assert_same(list, b.parent)
|
1936
|
+
end
|
1937
|
+
|
1938
|
+
# ------------------------------------------------------------------
|
1939
|
+
# insert
|
1940
|
+
# ------------------------------------------------------------------
|
1945
1941
|
|
1946
1942
|
def test_insert_one_into_one
|
1947
1943
|
a1, a2 = 2.of{C::Int.new}
|
@@ -1949,11 +1945,11 @@ module NodeListModifierTests
|
|
1949
1945
|
a = _List[a1]
|
1950
1946
|
b = _List[b1]
|
1951
1947
|
|
1952
|
-
|
1948
|
+
# beginning
|
1953
1949
|
a.insert(0, a2)
|
1954
1950
|
assert_same_list([a2, a1], a)
|
1955
1951
|
|
1956
|
-
|
1952
|
+
# end
|
1957
1953
|
b.insert(1, b2)
|
1958
1954
|
assert_same_list([b1, b2], b)
|
1959
1955
|
end
|
@@ -1964,11 +1960,11 @@ module NodeListModifierTests
|
|
1964
1960
|
a = _List[a1]
|
1965
1961
|
b = _List[b1]
|
1966
1962
|
|
1967
|
-
|
1963
|
+
# beginning
|
1968
1964
|
a.insert(0, a2, a3)
|
1969
1965
|
assert_same_list([a2, a3, a1], a)
|
1970
1966
|
|
1971
|
-
|
1967
|
+
# end
|
1972
1968
|
b.insert(1, b2, b3)
|
1973
1969
|
assert_same_list([b1, b2, b3], b)
|
1974
1970
|
end
|
@@ -1979,11 +1975,11 @@ module NodeListModifierTests
|
|
1979
1975
|
a = _List[a1]
|
1980
1976
|
b = _List[b1]
|
1981
1977
|
|
1982
|
-
|
1978
|
+
# beginning
|
1983
1979
|
a.insert(0, a2, a3, a4)
|
1984
1980
|
assert_same_list([a2, a3, a4, a1], a)
|
1985
1981
|
|
1986
|
-
|
1982
|
+
# end
|
1987
1983
|
b.insert(1, b2, b3, b4)
|
1988
1984
|
assert_same_list([b1, b2, b3, b4], b)
|
1989
1985
|
end
|
@@ -1994,16 +1990,16 @@ module NodeListModifierTests
|
|
1994
1990
|
a = _List[a1]
|
1995
1991
|
b = _List[b1]
|
1996
1992
|
|
1997
|
-
|
1993
|
+
# beginning
|
1998
1994
|
a.insert(0, a2, a3, a4, a5)
|
1999
1995
|
assert_same_list([a2, a3, a4, a5, a1], a)
|
2000
1996
|
|
2001
|
-
|
1997
|
+
# end
|
2002
1998
|
b.insert(1, b2, b3, b4, b5)
|
2003
1999
|
assert_same_list([b1, b2, b3, b4, b5], b)
|
2004
2000
|
end
|
2005
2001
|
|
2006
|
-
def
|
2002
|
+
def test_insert_one_into_two
|
2007
2003
|
a1, a2, a3 = 3.of{C::Int.new}
|
2008
2004
|
b1, b2, b3 = 3.of{C::Int.new}
|
2009
2005
|
c1, c2, c3 = 3.of{C::Int.new}
|
@@ -2011,16 +2007,16 @@ module NodeListModifierTests
|
|
2011
2007
|
b = _List[b1, b2]
|
2012
2008
|
c = _List[c1, c2]
|
2013
2009
|
|
2014
|
-
|
2010
|
+
# beginning
|
2015
2011
|
a.insert(0, a3)
|
2016
2012
|
assert_same_list([a3, a1, a2], a)
|
2017
2013
|
|
2018
|
-
|
2014
|
+
# end
|
2019
2015
|
b.insert(2, b3)
|
2020
2016
|
assert_same_list([b1, b2, b3], b)
|
2021
2017
|
|
2022
|
-
|
2023
|
-
c.
|
2018
|
+
# middle
|
2019
|
+
c.insert(1, c3)
|
2024
2020
|
assert_same_list([c1, c3, c2], c)
|
2025
2021
|
end
|
2026
2022
|
|
@@ -2033,15 +2029,15 @@ module NodeListModifierTests
|
|
2033
2029
|
b = _List[b1, b2]
|
2034
2030
|
c = _List[c1, c2]
|
2035
2031
|
|
2036
|
-
|
2032
|
+
# beginning
|
2037
2033
|
a.insert(0, a3, a4)
|
2038
2034
|
assert_same_list([a3, a4, a1, a2], a)
|
2039
2035
|
|
2040
|
-
|
2036
|
+
# end
|
2041
2037
|
b.insert(2, b3, b4)
|
2042
2038
|
assert_same_list([b1, b2, b3, b4], b)
|
2043
2039
|
|
2044
|
-
|
2040
|
+
# middle
|
2045
2041
|
c.insert(1, c3, c4)
|
2046
2042
|
assert_same_list([c1, c3, c4, c2], c)
|
2047
2043
|
end
|
@@ -2054,15 +2050,15 @@ module NodeListModifierTests
|
|
2054
2050
|
b = _List[b1, b2]
|
2055
2051
|
c = _List[c1, c2]
|
2056
2052
|
|
2057
|
-
|
2053
|
+
# beginning
|
2058
2054
|
a.insert(0, a3, a4, a5)
|
2059
2055
|
assert_same_list([a3, a4, a5, a1, a2], a)
|
2060
2056
|
|
2061
|
-
|
2057
|
+
# end
|
2062
2058
|
b.insert(2, b3, b4, b5)
|
2063
2059
|
assert_same_list([b1, b2, b3, b4, b5], b)
|
2064
2060
|
|
2065
|
-
|
2061
|
+
# middle
|
2066
2062
|
c.insert(1, c3, c4, c5)
|
2067
2063
|
assert_same_list([c1, c3, c4, c5, c2], c)
|
2068
2064
|
end
|
@@ -2075,21 +2071,21 @@ module NodeListModifierTests
|
|
2075
2071
|
b = _List[b1, b2]
|
2076
2072
|
c = _List[c1, c2]
|
2077
2073
|
|
2078
|
-
|
2074
|
+
# beginning
|
2079
2075
|
a.insert(0, a3, a4, a5, a6)
|
2080
2076
|
assert_same_list([a3, a4, a5, a6, a1, a2], a)
|
2081
2077
|
|
2082
|
-
|
2078
|
+
# end
|
2083
2079
|
b.insert(2, b3, b4, b5, b6)
|
2084
2080
|
assert_same_list([b1, b2, b3, b4, b5, b6], b)
|
2085
2081
|
|
2086
|
-
|
2082
|
+
# middle (after)
|
2087
2083
|
c.insert(1, c3, c4, c5, c6)
|
2088
2084
|
assert_same_list([c1, c3, c4, c5, c6, c2], c)
|
2089
2085
|
end
|
2090
2086
|
|
2091
2087
|
def test_insert_attached
|
2092
|
-
|
2088
|
+
# one
|
2093
2089
|
a1 = C::Int.new
|
2094
2090
|
b1 = C::Int.new
|
2095
2091
|
a = _List[a1]
|
@@ -2099,7 +2095,7 @@ module NodeListModifierTests
|
|
2099
2095
|
assert_same(a1, a[0])
|
2100
2096
|
assert_copy(b1, a[1])
|
2101
2097
|
|
2102
|
-
|
2098
|
+
# many
|
2103
2099
|
a1 = C::Int.new
|
2104
2100
|
b1, b2, b3, b4 = 4.of{C::Int.new}
|
2105
2101
|
a = _List[a1]
|
@@ -2113,11 +2109,9 @@ module NodeListModifierTests
|
|
2113
2109
|
assert_same(a1, a[4])
|
2114
2110
|
end
|
2115
2111
|
|
2116
|
-
|
2117
|
-
|
2118
|
-
|
2119
|
-
### ----------------------------------------------------------------
|
2120
|
-
###
|
2112
|
+
# ------------------------------------------------------------------
|
2113
|
+
# concat
|
2114
|
+
# ------------------------------------------------------------------
|
2121
2115
|
|
2122
2116
|
def test_concat_zero_on_zero
|
2123
2117
|
a = _List[]
|
@@ -2156,7 +2150,7 @@ module NodeListModifierTests
|
|
2156
2150
|
|
2157
2151
|
assert_same(a, a.concat(b))
|
2158
2152
|
assert_same_list([b1], b)
|
2159
|
-
|
2153
|
+
#
|
2160
2154
|
assert_equal(1, a.length)
|
2161
2155
|
assert_copy(b1, a[0])
|
2162
2156
|
end
|
@@ -2169,7 +2163,7 @@ module NodeListModifierTests
|
|
2169
2163
|
|
2170
2164
|
assert_same(a, a.concat(b))
|
2171
2165
|
assert_same_list([b1], b)
|
2172
|
-
|
2166
|
+
#
|
2173
2167
|
assert_equal(2, a.length)
|
2174
2168
|
assert_same(a1, a[0])
|
2175
2169
|
assert_copy(b1, a[1])
|
@@ -2183,7 +2177,7 @@ module NodeListModifierTests
|
|
2183
2177
|
|
2184
2178
|
assert_same(a, a.concat(b))
|
2185
2179
|
assert_same_list([b1], b)
|
2186
|
-
|
2180
|
+
#
|
2187
2181
|
assert_equal(3, a.length)
|
2188
2182
|
assert_same(a1, a[0])
|
2189
2183
|
assert_same(a2, a[1])
|
@@ -2197,7 +2191,7 @@ module NodeListModifierTests
|
|
2197
2191
|
|
2198
2192
|
assert_same(a, a.concat(b))
|
2199
2193
|
assert_same_list([b1, b2], b)
|
2200
|
-
|
2194
|
+
#
|
2201
2195
|
assert_equal(2, a.length)
|
2202
2196
|
assert_copy(b1, a[0])
|
2203
2197
|
assert_copy(b2, a[1])
|
@@ -2211,7 +2205,7 @@ module NodeListModifierTests
|
|
2211
2205
|
|
2212
2206
|
assert_same(a, a.concat(b))
|
2213
2207
|
assert_same_list([b1, b2], b)
|
2214
|
-
|
2208
|
+
#
|
2215
2209
|
assert_equal(3, a.length)
|
2216
2210
|
assert_same(a1, a[0])
|
2217
2211
|
assert_copy(b1, a[1])
|
@@ -2226,7 +2220,7 @@ module NodeListModifierTests
|
|
2226
2220
|
|
2227
2221
|
assert_same(a, a.concat(b))
|
2228
2222
|
assert_same_list([b1, b2], b)
|
2229
|
-
|
2223
|
+
#
|
2230
2224
|
assert_equal(4, a.length)
|
2231
2225
|
assert_same(a1, a[0])
|
2232
2226
|
assert_same(a2, a[1])
|
@@ -2234,11 +2228,9 @@ module NodeListModifierTests
|
|
2234
2228
|
assert_copy(b2, a[3])
|
2235
2229
|
end
|
2236
2230
|
|
2237
|
-
|
2238
|
-
|
2239
|
-
|
2240
|
-
### ----------------------------------------------------------------
|
2241
|
-
###
|
2231
|
+
# ------------------------------------------------------------------
|
2232
|
+
# delete_at
|
2233
|
+
# ------------------------------------------------------------------
|
2242
2234
|
|
2243
2235
|
def test_delete_at_one
|
2244
2236
|
a1 = C::Int.new
|
@@ -2250,14 +2242,14 @@ module NodeListModifierTests
|
|
2250
2242
|
end
|
2251
2243
|
|
2252
2244
|
def test_delete_at_two
|
2253
|
-
|
2245
|
+
# delete_at 0
|
2254
2246
|
a1, a2 = 2.of{C::Int.new}
|
2255
2247
|
a = _List[a1, a2]
|
2256
2248
|
assert_same(a1, a.delete_at(0))
|
2257
2249
|
assert_nil(a1.parent)
|
2258
2250
|
assert_same_list([a2], a)
|
2259
2251
|
|
2260
|
-
|
2252
|
+
# delete_at 1
|
2261
2253
|
a1, a2 = 2.of{C::Int.new}
|
2262
2254
|
a = _List[a1, a2]
|
2263
2255
|
assert_same(a2, a.delete_at(1))
|
@@ -2266,21 +2258,21 @@ module NodeListModifierTests
|
|
2266
2258
|
end
|
2267
2259
|
|
2268
2260
|
def test_delete_at_three
|
2269
|
-
|
2261
|
+
# delete at 0
|
2270
2262
|
a1, a2, a3 = 3.of{C::Int.new}
|
2271
2263
|
a = _List[a1, a2, a3]
|
2272
2264
|
assert_same(a1, a.delete_at(0))
|
2273
2265
|
assert_nil(a1.parent)
|
2274
2266
|
assert_same_list([a2, a3], a)
|
2275
2267
|
|
2276
|
-
|
2268
|
+
# delete at 1
|
2277
2269
|
a1, a2, a3 = 3.of{C::Int.new}
|
2278
2270
|
a = _List[a1, a2, a3]
|
2279
2271
|
assert_same(a2, a.delete_at(1))
|
2280
2272
|
assert_nil(a2.parent)
|
2281
2273
|
assert_same_list([a1, a3], a)
|
2282
2274
|
|
2283
|
-
|
2275
|
+
# delete at 2
|
2284
2276
|
a1, a2, a3 = 3.of{C::Int.new}
|
2285
2277
|
a = _List[a1, a2, a3]
|
2286
2278
|
assert_same(a3, a.delete_at(2))
|
@@ -2289,7 +2281,7 @@ module NodeListModifierTests
|
|
2289
2281
|
end
|
2290
2282
|
|
2291
2283
|
def test_delete_at_four
|
2292
|
-
|
2284
|
+
# delete at 1
|
2293
2285
|
a1, a2, a3, a4 = 4.of{C::Int.new}
|
2294
2286
|
a = _List[a1, a2, a3, a4]
|
2295
2287
|
assert_same(a2, a.delete_at(1))
|
@@ -2297,11 +2289,9 @@ module NodeListModifierTests
|
|
2297
2289
|
assert_same_list([a1, a3, a4], a)
|
2298
2290
|
end
|
2299
2291
|
|
2300
|
-
|
2301
|
-
|
2302
|
-
|
2303
|
-
### ----------------------------------------------------------------
|
2304
|
-
###
|
2292
|
+
# ------------------------------------------------------------------
|
2293
|
+
# clear
|
2294
|
+
# ------------------------------------------------------------------
|
2305
2295
|
|
2306
2296
|
def test_clear_empty
|
2307
2297
|
assert_same(empty, empty.clear)
|
@@ -2341,11 +2331,9 @@ module NodeListModifierTests
|
|
2341
2331
|
assert_nil(l2.parent)
|
2342
2332
|
end
|
2343
2333
|
|
2344
|
-
|
2345
|
-
|
2346
|
-
|
2347
|
-
### ----------------------------------------------------------------
|
2348
|
-
###
|
2334
|
+
# ------------------------------------------------------------------
|
2335
|
+
# replace
|
2336
|
+
# ------------------------------------------------------------------
|
2349
2337
|
|
2350
2338
|
def test_replace_none_with_none
|
2351
2339
|
a = _List[]
|
@@ -2441,7 +2429,7 @@ module NodeListModifierTests
|
|
2441
2429
|
end
|
2442
2430
|
|
2443
2431
|
def test_replace_with_attached
|
2444
|
-
|
2432
|
+
# one
|
2445
2433
|
a1 = C::Int.new
|
2446
2434
|
a = _List[a1]
|
2447
2435
|
b1 = C::Int.new
|
@@ -2451,7 +2439,7 @@ module NodeListModifierTests
|
|
2451
2439
|
assert_equal(1, a.length)
|
2452
2440
|
assert_copy(b1, a[0])
|
2453
2441
|
|
2454
|
-
|
2442
|
+
# many
|
2455
2443
|
a1 = C::Int.new
|
2456
2444
|
a = _List[a1]
|
2457
2445
|
b1, b2, b3, b4 = 4.of{C::Int.new}
|
@@ -2466,7 +2454,7 @@ module NodeListModifierTests
|
|
2466
2454
|
end
|
2467
2455
|
end
|
2468
2456
|
|
2469
|
-
|
2457
|
+
# Make concrete test classes.
|
2470
2458
|
NodeListTest.submodules.each do |test_module|
|
2471
2459
|
test_module.name =~ /^NodeList/ or
|
2472
2460
|
raise "NodeListTest submodule name does not start with 'NodeList': #{test_module.name}"
|
@@ -2474,7 +2462,7 @@ NodeListTest.submodules.each do |test_module|
|
|
2474
2462
|
%w[NodeArray NodeChain].each do |list_class|
|
2475
2463
|
test_class = test_module.name.sub(/^NodeList/, list_class)
|
2476
2464
|
eval "
|
2477
|
-
class #{test_class} < Test
|
2465
|
+
class #{test_class} < Minitest::Test
|
2478
2466
|
def _List
|
2479
2467
|
C::#{list_class}
|
2480
2468
|
end
|