@@ -288,6 +288,14 @@ def compare_to_reference_set(nums, set, seqset)
288288 assert_equal SequenceSet [ "1:*" ] , SequenceSet . new ( "5:*" ) << ( 1 ..4 )
289289 end
290290
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+
291299 test "#merge" do
292300 seqset = -> { SequenceSet . new _1 }
293301 assert_equal seqset [ "1,5" ] , seqset [ "1" ] . merge ( "5" )
@@ -525,6 +533,7 @@ def test_inspect((expected, input, freeze))
525533 data "single number" , {
526534 input : "123456" ,
527535 elements : [ 123_456 ] ,
536+ entries : [ 123_456 ] ,
528537 ranges : [ 123_456 ..123_456 ] ,
529538 numbers : [ 123_456 ] ,
530539 to_s : "123456" ,
@@ -536,6 +545,7 @@ def test_inspect((expected, input, freeze))
536545 data "single range" , {
537546 input : "1:3" ,
538547 elements : [ 1 ..3 ] ,
548+ entries : [ 1 ..3 ] ,
539549 ranges : [ 1 ..3 ] ,
540550 numbers : [ 1 , 2 , 3 ] ,
541551 to_s : "1:3" ,
@@ -547,6 +557,7 @@ def test_inspect((expected, input, freeze))
547557 data "simple numbers list" , {
548558 input : "1,3,5" ,
549559 elements : [ 1 , 3 , 5 ] ,
560+ entries : [ 1 , 3 , 5 ] ,
550561 ranges : [ 1 ..1 , 3 ..3 , 5 ..5 ] ,
551562 numbers : [ 1 , 3 , 5 ] ,
552563 to_s : "1,3,5" ,
@@ -558,6 +569,7 @@ def test_inspect((expected, input, freeze))
558569 data "numbers and ranges list" , {
559570 input : "1:3,5,7:9,46" ,
560571 elements : [ 1 ..3 , 5 , 7 ..9 , 46 ] ,
572+ entries : [ 1 ..3 , 5 , 7 ..9 , 46 ] ,
561573 ranges : [ 1 ..3 , 5 ..5 , 7 ..9 , 46 ..46 ] ,
562574 numbers : [ 1 , 2 , 3 , 5 , 7 , 8 , 9 , 46 ] ,
563575 to_s : "1:3,5,7:9,46" ,
@@ -569,6 +581,7 @@ def test_inspect((expected, input, freeze))
569581 data "just *" , {
570582 input : "*" ,
571583 elements : [ :* ] ,
584+ entries : [ :* ] ,
572585 ranges : [ :* ..] ,
573586 numbers : RangeError ,
574587 to_s : "*" ,
@@ -580,6 +593,7 @@ def test_inspect((expected, input, freeze))
580593 data "range with *" , {
581594 input : "4294967000:*" ,
582595 elements : [ 4_294_967_000 ..] ,
596+ entries : [ 4_294_967_000 ..] ,
583597 ranges : [ 4_294_967_000 ..] ,
584598 numbers : RangeError ,
585599 to_s : "4294967000:*" ,
@@ -591,6 +605,7 @@ def test_inspect((expected, input, freeze))
591605 data "* sorts last" , {
592606 input : "5,*,7" ,
593607 elements : [ 5 , 7 , :* ] ,
608+ entries : [ 5 , :* , 7 ] ,
594609 ranges : [ 5 ..5 , 7 ..7 , :* ..] ,
595610 numbers : RangeError ,
596611 to_s : "5,*,7" ,
@@ -602,6 +617,7 @@ def test_inspect((expected, input, freeze))
602617 data "out of order" , {
603618 input : "46,7:6,15,3:1" ,
604619 elements : [ 1 ..3 , 6 ..7 , 15 , 46 ] ,
620+ entries : [ 46 , 6 ..7 , 15 , 1 ..3 ] ,
605621 ranges : [ 1 ..3 , 6 ..7 , 15 ..15 , 46 ..46 ] ,
606622 numbers : [ 1 , 2 , 3 , 6 , 7 , 15 , 46 ] ,
607623 to_s : "46,7:6,15,3:1" ,
@@ -613,6 +629,7 @@ def test_inspect((expected, input, freeze))
613629 data "adjacent" , {
614630 input : "1,2,3,5,7:9,10:11" ,
615631 elements : [ 1 ..3 , 5 , 7 ..11 ] ,
632+ entries : [ 1 , 2 , 3 , 5 , 7 ..9 , 10 ..11 ] ,
616633 ranges : [ 1 ..3 , 5 ..5 , 7 ..11 ] ,
617634 numbers : [ 1 , 2 , 3 , 5 , 7 , 8 , 9 , 10 , 11 ] ,
618635 to_s : "1,2,3,5,7:9,10:11" ,
@@ -624,6 +641,7 @@ def test_inspect((expected, input, freeze))
624641 data "overlapping" , {
625642 input : "1:5,3:7,10:9,10:11" ,
626643 elements : [ 1 ..7 , 9 ..11 ] ,
644+ entries : [ 1 ..5 , 3 ..7 , 9 ..10 , 10 ..11 ] ,
627645 ranges : [ 1 ..7 , 9 ..11 ] ,
628646 numbers : [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 9 , 10 , 11 ] ,
629647 to_s : "1:5,3:7,10:9,10:11" ,
@@ -635,6 +653,7 @@ def test_inspect((expected, input, freeze))
635653 data "contained" , {
636654 input : "1:5,3:4,9:11,10" ,
637655 elements : [ 1 ..5 , 9 ..11 ] ,
656+ entries : [ 1 ..5 , 3 ..4 , 9 ..11 , 10 ] ,
638657 ranges : [ 1 ..5 , 9 ..11 ] ,
639658 numbers : [ 1 , 2 , 3 , 4 , 5 , 9 , 10 , 11 ] ,
640659 to_s : "1:5,3:4,9:11,10" ,
@@ -646,6 +665,7 @@ def test_inspect((expected, input, freeze))
646665 data "array" , {
647666 input : [ "1:5,3:4" , 9 ..11 , "10" , 99 , :* ] ,
648667 elements : [ 1 ..5 , 9 ..11 , 99 , :* ] ,
668+ entries : [ 1 ..5 , 9 ..11 , 99 , :* ] ,
649669 ranges : [ 1 ..5 , 9 ..11 , 99 ..99 , :* ..] ,
650670 numbers : RangeError ,
651671 to_s : "1:5,9:11,99,*" ,
@@ -657,6 +677,7 @@ def test_inspect((expected, input, freeze))
657677 data "nested array" , {
658678 input : [ [ "1:5" , [ 3 ..4 ] , [ [ [ 9 ..11 , "10" ] , 99 ] , :* ] ] ] ,
659679 elements : [ 1 ..5 , 9 ..11 , 99 , :* ] ,
680+ entries : [ 1 ..5 , 9 ..11 , 99 , :* ] ,
660681 ranges : [ 1 ..5 , 9 ..11 , 99 ..99 , :* ..] ,
661682 numbers : RangeError ,
662683 to_s : "1:5,9:11,99,*" ,
@@ -668,6 +689,7 @@ def test_inspect((expected, input, freeze))
668689 data "empty" , {
669690 input : nil ,
670691 elements : [ ] ,
692+ entries : [ ] ,
671693 ranges : [ ] ,
672694 numbers : [ ] ,
673695 to_s : "" ,
@@ -680,6 +702,26 @@ def test_inspect((expected, input, freeze))
680702 assert_equal data [ :elements ] , SequenceSet . new ( data [ :input ] ) . elements
681703 end
682704
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+
683725 test "#ranges" do |data |
684726 assert_equal data [ :ranges ] , SequenceSet . new ( data [ :input ] ) . ranges
685727 end
0 commit comments