@@ -288,6 +288,14 @@ def compare_to_reference_set(nums, set, seqset)
288
288
assert_equal SequenceSet [ "1:*" ] , SequenceSet . new ( "5:*" ) << ( 1 ..4 )
289
289
end
290
290
291
+ test "#append" do
292
+ assert_equal "1,5" , SequenceSet . new ( "1" ) . append ( "5" ) . string
293
+ assert_equal "*,1" , SequenceSet . new ( "*" ) . append ( 1 ) . string
294
+ assert_equal "1:6,4:9" , SequenceSet . new ( "1:6" ) . append ( "4:9" ) . string
295
+ assert_equal "1:4,5:*" , SequenceSet . new ( "1:4" ) . append ( 5 ..) . string
296
+ assert_equal "5:*,1:4" , SequenceSet . new ( "5:*" ) . append ( 1 ..4 ) . string
297
+ end
298
+
291
299
test "#merge" do
292
300
seqset = -> { SequenceSet . new _1 }
293
301
assert_equal seqset [ "1,5" ] , seqset [ "1" ] . merge ( "5" )
@@ -525,6 +533,7 @@ def test_inspect((expected, input, freeze))
525
533
data "single number" , {
526
534
input : "123456" ,
527
535
elements : [ 123_456 ] ,
536
+ entries : [ 123_456 ] ,
528
537
ranges : [ 123_456 ..123_456 ] ,
529
538
numbers : [ 123_456 ] ,
530
539
to_s : "123456" ,
@@ -536,6 +545,7 @@ def test_inspect((expected, input, freeze))
536
545
data "single range" , {
537
546
input : "1:3" ,
538
547
elements : [ 1 ..3 ] ,
548
+ entries : [ 1 ..3 ] ,
539
549
ranges : [ 1 ..3 ] ,
540
550
numbers : [ 1 , 2 , 3 ] ,
541
551
to_s : "1:3" ,
@@ -547,6 +557,7 @@ def test_inspect((expected, input, freeze))
547
557
data "simple numbers list" , {
548
558
input : "1,3,5" ,
549
559
elements : [ 1 , 3 , 5 ] ,
560
+ entries : [ 1 , 3 , 5 ] ,
550
561
ranges : [ 1 ..1 , 3 ..3 , 5 ..5 ] ,
551
562
numbers : [ 1 , 3 , 5 ] ,
552
563
to_s : "1,3,5" ,
@@ -558,6 +569,7 @@ def test_inspect((expected, input, freeze))
558
569
data "numbers and ranges list" , {
559
570
input : "1:3,5,7:9,46" ,
560
571
elements : [ 1 ..3 , 5 , 7 ..9 , 46 ] ,
572
+ entries : [ 1 ..3 , 5 , 7 ..9 , 46 ] ,
561
573
ranges : [ 1 ..3 , 5 ..5 , 7 ..9 , 46 ..46 ] ,
562
574
numbers : [ 1 , 2 , 3 , 5 , 7 , 8 , 9 , 46 ] ,
563
575
to_s : "1:3,5,7:9,46" ,
@@ -569,6 +581,7 @@ def test_inspect((expected, input, freeze))
569
581
data "just *" , {
570
582
input : "*" ,
571
583
elements : [ :* ] ,
584
+ entries : [ :* ] ,
572
585
ranges : [ :* ..] ,
573
586
numbers : RangeError ,
574
587
to_s : "*" ,
@@ -580,6 +593,7 @@ def test_inspect((expected, input, freeze))
580
593
data "range with *" , {
581
594
input : "4294967000:*" ,
582
595
elements : [ 4_294_967_000 ..] ,
596
+ entries : [ 4_294_967_000 ..] ,
583
597
ranges : [ 4_294_967_000 ..] ,
584
598
numbers : RangeError ,
585
599
to_s : "4294967000:*" ,
@@ -591,6 +605,7 @@ def test_inspect((expected, input, freeze))
591
605
data "* sorts last" , {
592
606
input : "5,*,7" ,
593
607
elements : [ 5 , 7 , :* ] ,
608
+ entries : [ 5 , :* , 7 ] ,
594
609
ranges : [ 5 ..5 , 7 ..7 , :* ..] ,
595
610
numbers : RangeError ,
596
611
to_s : "5,*,7" ,
@@ -602,6 +617,7 @@ def test_inspect((expected, input, freeze))
602
617
data "out of order" , {
603
618
input : "46,7:6,15,3:1" ,
604
619
elements : [ 1 ..3 , 6 ..7 , 15 , 46 ] ,
620
+ entries : [ 46 , 6 ..7 , 15 , 1 ..3 ] ,
605
621
ranges : [ 1 ..3 , 6 ..7 , 15 ..15 , 46 ..46 ] ,
606
622
numbers : [ 1 , 2 , 3 , 6 , 7 , 15 , 46 ] ,
607
623
to_s : "46,7:6,15,3:1" ,
@@ -613,6 +629,7 @@ def test_inspect((expected, input, freeze))
613
629
data "adjacent" , {
614
630
input : "1,2,3,5,7:9,10:11" ,
615
631
elements : [ 1 ..3 , 5 , 7 ..11 ] ,
632
+ entries : [ 1 , 2 , 3 , 5 , 7 ..9 , 10 ..11 ] ,
616
633
ranges : [ 1 ..3 , 5 ..5 , 7 ..11 ] ,
617
634
numbers : [ 1 , 2 , 3 , 5 , 7 , 8 , 9 , 10 , 11 ] ,
618
635
to_s : "1,2,3,5,7:9,10:11" ,
@@ -624,6 +641,7 @@ def test_inspect((expected, input, freeze))
624
641
data "overlapping" , {
625
642
input : "1:5,3:7,10:9,10:11" ,
626
643
elements : [ 1 ..7 , 9 ..11 ] ,
644
+ entries : [ 1 ..5 , 3 ..7 , 9 ..10 , 10 ..11 ] ,
627
645
ranges : [ 1 ..7 , 9 ..11 ] ,
628
646
numbers : [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 9 , 10 , 11 ] ,
629
647
to_s : "1:5,3:7,10:9,10:11" ,
@@ -635,6 +653,7 @@ def test_inspect((expected, input, freeze))
635
653
data "contained" , {
636
654
input : "1:5,3:4,9:11,10" ,
637
655
elements : [ 1 ..5 , 9 ..11 ] ,
656
+ entries : [ 1 ..5 , 3 ..4 , 9 ..11 , 10 ] ,
638
657
ranges : [ 1 ..5 , 9 ..11 ] ,
639
658
numbers : [ 1 , 2 , 3 , 4 , 5 , 9 , 10 , 11 ] ,
640
659
to_s : "1:5,3:4,9:11,10" ,
@@ -646,6 +665,7 @@ def test_inspect((expected, input, freeze))
646
665
data "array" , {
647
666
input : [ "1:5,3:4" , 9 ..11 , "10" , 99 , :* ] ,
648
667
elements : [ 1 ..5 , 9 ..11 , 99 , :* ] ,
668
+ entries : [ 1 ..5 , 9 ..11 , 99 , :* ] ,
649
669
ranges : [ 1 ..5 , 9 ..11 , 99 ..99 , :* ..] ,
650
670
numbers : RangeError ,
651
671
to_s : "1:5,9:11,99,*" ,
@@ -657,6 +677,7 @@ def test_inspect((expected, input, freeze))
657
677
data "nested array" , {
658
678
input : [ [ "1:5" , [ 3 ..4 ] , [ [ [ 9 ..11 , "10" ] , 99 ] , :* ] ] ] ,
659
679
elements : [ 1 ..5 , 9 ..11 , 99 , :* ] ,
680
+ entries : [ 1 ..5 , 9 ..11 , 99 , :* ] ,
660
681
ranges : [ 1 ..5 , 9 ..11 , 99 ..99 , :* ..] ,
661
682
numbers : RangeError ,
662
683
to_s : "1:5,9:11,99,*" ,
@@ -668,6 +689,7 @@ def test_inspect((expected, input, freeze))
668
689
data "empty" , {
669
690
input : nil ,
670
691
elements : [ ] ,
692
+ entries : [ ] ,
671
693
ranges : [ ] ,
672
694
numbers : [ ] ,
673
695
to_s : "" ,
@@ -680,6 +702,26 @@ def test_inspect((expected, input, freeze))
680
702
assert_equal data [ :elements ] , SequenceSet . new ( data [ :input ] ) . elements
681
703
end
682
704
705
+ test "#each_element" do |data |
706
+ seqset = SequenceSet . new ( data [ :input ] )
707
+ array = [ ]
708
+ assert_equal seqset , seqset . each_element { array << _1 }
709
+ assert_equal data [ :elements ] , array
710
+ assert_equal data [ :elements ] , seqset . each_element . to_a
711
+ end
712
+
713
+ test "#entries" do |data |
714
+ assert_equal data [ :entries ] , SequenceSet . new ( data [ :input ] ) . entries
715
+ end
716
+
717
+ test "#each_entry" do |data |
718
+ seqset = SequenceSet . new ( data [ :input ] )
719
+ array = [ ]
720
+ assert_equal seqset , seqset . each_entry { array << _1 }
721
+ assert_equal data [ :entries ] , array
722
+ assert_equal data [ :entries ] , seqset . each_entry . to_a
723
+ end
724
+
683
725
test "#ranges" do |data |
684
726
assert_equal data [ :ranges ] , SequenceSet . new ( data [ :input ] ) . ranges
685
727
end
0 commit comments