@@ -599,6 +599,31 @@ Rebol [
599
599
--assert "34" = take/part skip s 2 -5 ;@@ https://github.com/Oldes/Rebol-issues/issues/373
600
600
--assert "56" = take/part s 10
601
601
602
+ --test-- "take/part string! with negative part"
603
+ ;@@ https://github.com/red/red/issues/4078
604
+ s: "123" --assert "" == take/part s -1
605
+ s: "123" --assert "1" == take/part skip s 1 -1
606
+ s: "123" --assert "2" == take/part skip s 2 -1
607
+ s: "123" --assert "3" == take/part skip s 3 -1
608
+ s: "123" --assert "1" == take/part skip s 1 -2
609
+ s: "123" --assert "12" == take/part skip s 2 -2
610
+ s: "123" --assert "23" == take/part skip s 3 -2
611
+ s: "123" --assert "1" == take/part skip s 1 -3
612
+ s: "123" --assert "12" == take/part skip s 2 -3
613
+ s: "123" --assert "123" == take/part skip s 3 -3
614
+ s: "123" --assert "1" == take/part s skip s 1
615
+ s: "123" --assert "1" == take/part skip s 1 s
616
+ s: "123" --assert "2" == take/part skip s 1 skip s 2
617
+ s: "123" --assert "2" == take/part skip s 2 skip s 1
618
+ s: "123" --assert "3" == take/part skip s 2 skip s 3
619
+ s: "123" --assert "3" == take/part skip s 3 skip s 2
620
+ s: "123" --assert "12" == take/part s skip s 2
621
+ s: "123" --assert "12" == take/part skip s 2 s
622
+ s: "123" --assert "23" == take/part skip s 1 skip s 3
623
+ s: "123" --assert "23" == take/part skip s 3 skip s 1
624
+ s: "123" --assert "123" == take/part s skip s 3
625
+ s: "123" --assert "123" == take/part skip s 3 s
626
+
602
627
--test-- "take/part any-block!"
603
628
--assert [1 2 ] = take/part [1 2 3 4 ] 2
604
629
;@@ https://github.com/Oldes/Rebol-issues/issues/2174
@@ -608,12 +633,44 @@ Rebol [
608
633
--assert ":a/b" = mold take/part quote : a/b/c 2
609
634
--assert "a/b:" = mold take/part quote a/b/c: 2
610
635
636
+ --test-- "take/part block! with negative part"
637
+ ;@@ https://github.com/red/red/issues/4078
638
+ s: [1 2 3 ] --assert [ ] == take/part s -1
639
+ s: [1 2 3 ] --assert [1 ] == take/part skip s 1 -1
640
+ s: [1 2 3 ] --assert [2 ] == take/part skip s 2 -1
641
+ s: [1 2 3 ] --assert [3 ] == take/part skip s 3 -1
642
+ s: [1 2 3 ] --assert [1 ] == take/part skip s 1 -2
643
+ s: [1 2 3 ] --assert [1 2 ] == take/part skip s 2 -2
644
+ s: [1 2 3 ] --assert [2 3 ] == take/part skip s 3 -2
645
+ s: [1 2 3 ] --assert [1 ] == take/part skip s 1 -3
646
+ s: [1 2 3 ] --assert [1 2 ] == take/part skip s 2 -3
647
+ s: [1 2 3 ] --assert [1 2 3 ] == take/part skip s 3 -3
648
+ s: [1 2 3 ] --assert [1 ] == take/part s skip s 1
649
+ s: [1 2 3 ] --assert [1 ] == take/part skip s 1 s
650
+ s: [1 2 3 ] --assert [2 ] == take/part skip s 1 skip s 2
651
+ s: [1 2 3 ] --assert [2 ] == take/part skip s 2 skip s 1
652
+ s: [1 2 3 ] --assert [3 ] == take/part skip s 2 skip s 3
653
+ s: [1 2 3 ] --assert [3 ] == take/part skip s 3 skip s 2
654
+ s: [1 2 3 ] --assert [1 2 ] == take/part s skip s 2
655
+ s: [1 2 3 ] --assert [1 2 ] == take/part skip s 2 s
656
+ s: [1 2 3 ] --assert [2 3 ] == take/part skip s 1 skip s 3
657
+ s: [1 2 3 ] --assert [2 3 ] == take/part skip s 3 skip s 1
658
+ s: [1 2 3 ] --assert [1 2 3 ] == take/part s skip s 3
659
+ s: [1 2 3 ] --assert [1 2 3 ] == take/part skip s 3 s
660
+
611
661
--test-- "take/last"
612
662
;@@ https://github.com/Oldes/Rebol-issues/issues/177
613
663
--assert #"c" = take/last str: "abc"
614
664
--assert "ab" = str
615
665
--assert 3 = take/last blk: [1 2 3 ]
616
666
--assert [1 2 ] = blk
667
+ ;@@ https://github.com/Oldes/Rebol-issues/issues/2542
668
+ --assert none? take/last tail "123"
669
+ --assert none? take/last tail [1 2 3 ]
670
+ --assert "123" = take/last/part tail "123" -3
671
+ --assert "" = take/last/part tail "123" 3
672
+ --assert [1 2 3 ] = take/last/part tail [1 2 3 ] -3
673
+ --assert [] = take/last/part tail [1 2 3 ] 3
617
674
618
675
;@@ https://github.com/Oldes/Rebol-issues/issues/171
619
676
--test-- "take/deep block!"
@@ -1242,6 +1299,66 @@ Rebol [
1242
1299
1243
1300
===end-group===
1244
1301
1302
+
1303
+ ===start-group=== "Series with index past its tail"
1304
+ ;@@ https://github.com/Oldes/Rebol-issues/issues/2543
1305
+ --test-- "any-string"
1306
+ src: %ABC
1307
+ dir: tail src
1308
+ --assert 4 = index? dir
1309
+ --assert %ABC = copy/part dir -3
1310
+ --assert empty? clear src
1311
+ --assert 4 = index? dir
1312
+ --assert %"" = copy/part dir -3
1313
+ --test-- "any-block"
1314
+ src: [A B C]
1315
+ dir: tail src
1316
+ --assert 4 = index? dir
1317
+ --assert [A B C] = copy/part dir -3
1318
+ --assert empty? clear src
1319
+ --assert 4 = index? dir
1320
+ --assert [] = copy/part dir -3
1321
+
1322
+ --test-- "Red's test (strings)"
1323
+ ;@@ https://github.com/red/red/issues/3369
1324
+ test : does [a: copy "12345678" b: skip a 2 c: skip a 6 remove/part a 4 ]
1325
+ test
1326
+ --assert all [a = "5678" b = "78" c = "" ]
1327
+ test change c 1
1328
+ --assert all [a = "56781" b = "781" c = "" ]
1329
+ test clear c
1330
+ --assert all [a = "5678" b = "78" c = "" ]
1331
+ test remove c
1332
+ --assert all [a = "5678" b = "78" c = "" ]
1333
+ test change/part c 99 -1
1334
+ --assert all [a = "56799" b = "799" c = "" ]
1335
+ test insert c 1
1336
+ --assert all [a = "56781" b = "781" c = "" ]
1337
+ test
1338
+ --assert none? last c
1339
+ --assert none? take/last c
1340
+ --test-- "Red's test (blocks)"
1341
+ ;@@ https://github.com/red/red/issues/3369
1342
+ test : does [a: copy [1 2 3 4 5 6 7 8 ] b: skip a 2 c: skip a 6 remove/part a 4 ]
1343
+ test
1344
+ --assert all [a = [5 6 7 8 ] b = [7 8 ] c = []]
1345
+ test change c 1
1346
+ --assert all [a = [5 6 7 8 1 ] b = [7 8 1 ] c = []]
1347
+ test clear c
1348
+ --assert all [a = [5 6 7 8 ] b = [7 8 ] c = []]
1349
+ test remove c
1350
+ --assert all [a = [5 6 7 8 ] b = [7 8 ] c = []]
1351
+ test change/part c 99 -1
1352
+ --assert all [a = [5 6 7 99 ] b = [7 99 ] c = []]
1353
+ test insert c 1
1354
+ --assert all [a = [5 6 7 8 1 ] b = [7 8 1 ] c = []]
1355
+ test
1356
+ --assert none? last c
1357
+ --assert none? take/last c
1358
+
1359
+ ===end-group===
1360
+
1361
+
1245
1362
===start-group=== "ANY-OF & ALL-OF"
1246
1363
;@@ https://github.com/Oldes/Rebol-issues/issues/637
1247
1364
--test-- "any-of"
@@ -1279,7 +1396,7 @@ Rebol [
1279
1396
--assert not past? b
1280
1397
===end-group===
1281
1398
1282
- ===start-group=== "SNGLE ?"
1399
+ ===start-group=== "SINGLE ?"
1283
1400
--test-- "single? block"
1284
1401
;@@ https://github.com/Oldes/Rebol-issues/issues/875
1285
1402
--assert single? [a]
0 commit comments