@@ -534,22 +534,292 @@ def to.to_int() -2 end
534
534
end
535
535
536
536
ruby_version_is "3.0" do
537
- it "can be sliced with Enumerator::ArithmeticSequence" do
538
- a = [ 0 , 1 , 2 , 3 , 4 , 5 ]
539
- a . send ( @method , eval ( "(0..).step(1)" ) ) . should == [ 0 , 1 , 2 , 3 , 4 , 5 ]
540
- a . send ( @method , eval ( "(0..).step(2)" ) ) . should == [ 0 , 2 , 4 ]
541
- a . send ( @method , eval ( "(0..).step(3)" ) ) . should == [ 0 , 3 ]
542
- a . send ( @method , eval ( "(0..).step(10)" ) ) . should == [ 0 ]
543
- a . send ( @method , eval ( "(0..1).step(2)" ) ) . should == [ 0 ]
544
- a . send ( @method , eval ( "(..0).step(1)" ) ) . should == [ 0 ]
545
- a . send ( @method , eval ( "(...0).step(1)" ) ) . should == [ ]
546
- a . send ( @method , eval ( "(2..).step(2)" ) ) . should == [ 2 , 4 ]
547
- a . send ( @method , eval ( "(2..-2).step(2)" ) ) . should == [ 2 , 4 ]
548
- a . send ( @method , eval ( "(2...-2).step(2)" ) ) . should == [ 2 ]
549
- a . send ( @method , eval ( "(2..).step(-2)" ) ) . should == [ 2 , 0 ]
550
- a . send ( @method , eval ( "(2..).step(-3)" ) ) . should == [ 2 ]
551
- a . send ( @method , eval ( "(..-2).step(2)" ) ) . should == [ 0 , 2 , 4 ]
552
- a . send ( @method , eval ( "(...-2).step(2)" ) ) . should == [ 0 , 2 ]
537
+ describe "can be sliced with Enumerator::ArithmeticSequence" do
538
+ before :each do
539
+ @array = [ 0 , 1 , 2 , 3 , 4 , 5 ]
540
+ end
541
+
542
+ it "has endless range and positive steps" do
543
+ @array . send ( @method , eval ( "(0..).step(1)" ) ) . should == [ 0 , 1 , 2 , 3 , 4 , 5 ]
544
+ @array . send ( @method , eval ( "(0..).step(2)" ) ) . should == [ 0 , 2 , 4 ]
545
+ @array . send ( @method , eval ( "(0..).step(10)" ) ) . should == [ 0 ]
546
+
547
+ @array . send ( @method , eval ( "(2..).step(1)" ) ) . should == [ 2 , 3 , 4 , 5 ]
548
+ @array . send ( @method , eval ( "(2..).step(2)" ) ) . should == [ 2 , 4 ]
549
+ @array . send ( @method , eval ( "(2..).step(10)" ) ) . should == [ 2 ]
550
+
551
+ @array . send ( @method , eval ( "(-3..).step(1)" ) ) . should == [ 3 , 4 , 5 ]
552
+ @array . send ( @method , eval ( "(-3..).step(2)" ) ) . should == [ 3 , 5 ]
553
+ @array . send ( @method , eval ( "(-3..).step(10)" ) ) . should == [ 3 ]
554
+ end
555
+
556
+ it "has beginless range and positive steps" do
557
+ # end with zero index
558
+ @array . send ( @method , eval ( "(..0).step(1)" ) ) . should == [ 0 ]
559
+ @array . send ( @method , eval ( "(...0).step(1)" ) ) . should == [ ]
560
+
561
+ @array . send ( @method , eval ( "(..0).step(2)" ) ) . should == [ 0 ]
562
+ @array . send ( @method , eval ( "(...0).step(2)" ) ) . should == [ ]
563
+
564
+ @array . send ( @method , eval ( "(..0).step(10)" ) ) . should == [ 0 ]
565
+ @array . send ( @method , eval ( "(...0).step(10)" ) ) . should == [ ]
566
+
567
+ # end with positive index
568
+ @array . send ( @method , eval ( "(..3).step(1)" ) ) . should == [ 0 , 1 , 2 , 3 ]
569
+ @array . send ( @method , eval ( "(...3).step(1)" ) ) . should == [ 0 , 1 , 2 ]
570
+
571
+ @array . send ( @method , eval ( "(..3).step(2)" ) ) . should == [ 0 , 2 ]
572
+ @array . send ( @method , eval ( "(...3).step(2)" ) ) . should == [ 0 , 2 ]
573
+
574
+ @array . send ( @method , eval ( "(..3).step(10)" ) ) . should == [ 0 ]
575
+ @array . send ( @method , eval ( "(...3).step(10)" ) ) . should == [ 0 ]
576
+
577
+ # end with negative index
578
+ @array . send ( @method , eval ( "(..-2).step(1)" ) ) . should == [ 0 , 1 , 2 , 3 , 4 , ]
579
+ @array . send ( @method , eval ( "(...-2).step(1)" ) ) . should == [ 0 , 1 , 2 , 3 ]
580
+
581
+ @array . send ( @method , eval ( "(..-2).step(2)" ) ) . should == [ 0 , 2 , 4 ]
582
+ @array . send ( @method , eval ( "(...-2).step(2)" ) ) . should == [ 0 , 2 ]
583
+
584
+ @array . send ( @method , eval ( "(..-2).step(10)" ) ) . should == [ 0 ]
585
+ @array . send ( @method , eval ( "(...-2).step(10)" ) ) . should == [ 0 ]
586
+ end
587
+
588
+ it "has endless range and negative steps" do
589
+ @array . send ( @method , eval ( "(0..).step(-1)" ) ) . should == [ 0 ]
590
+ @array . send ( @method , eval ( "(0..).step(-2)" ) ) . should == [ 0 ]
591
+ @array . send ( @method , eval ( "(0..).step(-10)" ) ) . should == [ 0 ]
592
+
593
+ @array . send ( @method , eval ( "(2..).step(-1)" ) ) . should == [ 2 , 1 , 0 ]
594
+ @array . send ( @method , eval ( "(2..).step(-2)" ) ) . should == [ 2 , 0 ]
595
+ @array . send ( @method , eval ( "(2..).step(-10)" ) ) . should == [ 0 ] # ???
596
+
597
+ @array . send ( @method , eval ( "(-3..).step(-1)" ) ) . should == [ 3 , 2 , 1 , 0 ]
598
+ @array . send ( @method , eval ( "(-3..).step(-2)" ) ) . should == [ 3 , 1 ]
599
+ @array . send ( @method , eval ( "(-3..).step(-10)" ) ) . should == [ 0 ] # ???
600
+ end
601
+
602
+ # ????????
603
+ it "has beginless range and negative steps" do
604
+ # end with zero index
605
+ @array . send ( @method , eval ( "(..0).step(-1)" ) ) . should == [ 5 , 4 , 3 , 2 , 1 , 0 ]
606
+ @array . send ( @method , eval ( "(...0).step(-1)" ) ) . should == [ 5 , 4 , 3 , 2 , 1 , 0 ]
607
+
608
+ @array . send ( @method , eval ( "(..0).step(-2)" ) ) . should == [ 5 , 3 , 1 ]
609
+ @array . send ( @method , eval ( "(...0).step(-2)" ) ) . should == [ 5 , 3 , 1 ]
610
+
611
+ @array . send ( @method , eval ( "(..0).step(-10)" ) ) . should == [ 0 ]
612
+ @array . send ( @method , eval ( "(...0).step(-10)" ) ) . should == [ 0 ]
613
+
614
+ # end with positive index
615
+ @array . send ( @method , eval ( "(..3).step(-1)" ) ) . should == [ 5 , 4 , 3 ]
616
+ @array . send ( @method , eval ( "(...3).step(-1)" ) ) . should == [ 5 , 4 , 3 ]
617
+
618
+ @array . send ( @method , eval ( "(..3).step(-2)" ) ) . should == [ 5 , 3 ]
619
+ @array . send ( @method , eval ( "(...3).step(-2)" ) ) . should == [ 5 , 3 ]
620
+
621
+ @array . send ( @method , eval ( "(..3).step(-10)" ) ) . should == [ 3 ]
622
+ @array . send ( @method , eval ( "(...3).step(-10)" ) ) . should == [ 3 ]
623
+
624
+ # end with negative index
625
+ @array . send ( @method , eval ( "(..-2).step(-1)" ) ) . should == [ 5 , 4 ]
626
+ @array . send ( @method , eval ( "(...-2).step(-1)" ) ) . should ==[ 5 , 4 ]
627
+
628
+ @array . send ( @method , eval ( "(..-2).step(-2)" ) ) . should == [ 5 ]
629
+ @array . send ( @method , eval ( "(...-2).step(-2)" ) ) . should == [ 5 ]
630
+
631
+ @array . send ( @method , eval ( "(..-2).step(-10)" ) ) . should == [ 4 ]
632
+ @array . send ( @method , eval ( "(...-2).step(-10)" ) ) . should == [ 4 ]
633
+ end
634
+
635
+ it "has closed range and positive steps" do
636
+ # start and end with 0
637
+ @array . send ( @method , eval ( "(0..0).step(1)" ) ) . should == [ 0 ]
638
+ @array . send ( @method , eval ( "(0...0).step(1)" ) ) . should == [ ]
639
+
640
+ @array . send ( @method , eval ( "(0..0).step(2)" ) ) . should == [ 0 ]
641
+ @array . send ( @method , eval ( "(0...0).step(2)" ) ) . should == [ ]
642
+
643
+ @array . send ( @method , eval ( "(0..0).step(10)" ) ) . should == [ 0 ]
644
+ @array . send ( @method , eval ( "(0...0).step(10)" ) ) . should == [ ]
645
+
646
+ # start and end with positive index
647
+ @array . send ( @method , eval ( "(1..3).step(1)" ) ) . should == [ 1 , 2 , 3 ]
648
+ @array . send ( @method , eval ( "(1...3).step(1)" ) ) . should == [ 1 , 2 ]
649
+
650
+ @array . send ( @method , eval ( "(1..3).step(2)" ) ) . should == [ 1 , 3 ]
651
+ @array . send ( @method , eval ( "(1...3).step(2)" ) ) . should == [ 1 ]
652
+
653
+ @array . send ( @method , eval ( "(1..3).step(10)" ) ) . should == [ 1 ]
654
+ @array . send ( @method , eval ( "(1...3).step(10)" ) ) . should == [ 1 ]
655
+
656
+ # start with positive index, end with negative index
657
+ @array . send ( @method , eval ( "(1..-2).step(1)" ) ) . should == [ 1 , 2 , 3 , 4 ]
658
+ @array . send ( @method , eval ( "(1...-2).step(1)" ) ) . should == [ 1 , 2 , 3 ]
659
+
660
+ @array . send ( @method , eval ( "(1..-2).step(2)" ) ) . should == [ 1 , 3 ]
661
+ @array . send ( @method , eval ( "(1...-2).step(2)" ) ) . should == [ 1 , 3 ]
662
+
663
+ @array . send ( @method , eval ( "(1..-2).step(10)" ) ) . should == [ 1 ]
664
+ @array . send ( @method , eval ( "(1...-2).step(10)" ) ) . should == [ 1 ]
665
+
666
+ # start with negative index, end with positive index
667
+ @array . send ( @method , eval ( "(-4..4).step(1)" ) ) . should == [ 2 , 3 , 4 ]
668
+ @array . send ( @method , eval ( "(-4...4).step(1)" ) ) . should == [ 2 , 3 ]
669
+
670
+ @array . send ( @method , eval ( "(-4..4).step(2)" ) ) . should == [ 2 , 4 ]
671
+ @array . send ( @method , eval ( "(-4...4).step(2)" ) ) . should == [ 2 ]
672
+
673
+ @array . send ( @method , eval ( "(-4..4).step(10)" ) ) . should == [ 2 ]
674
+ @array . send ( @method , eval ( "(-4...4).step(10)" ) ) . should == [ 2 ]
675
+
676
+ # start with negative index, end with negative index
677
+ @array . send ( @method , eval ( "(-4..-2).step(1)" ) ) . should == [ 2 , 3 , 4 ]
678
+ @array . send ( @method , eval ( "(-4...-2).step(1)" ) ) . should == [ 2 , 3 ]
679
+
680
+ @array . send ( @method , eval ( "(-4..-2).step(2)" ) ) . should == [ 2 , 4 ]
681
+ @array . send ( @method , eval ( "(-4...-2).step(2)" ) ) . should == [ 2 ]
682
+
683
+ @array . send ( @method , eval ( "(-4..-2).step(10)" ) ) . should == [ 2 ]
684
+ @array . send ( @method , eval ( "(-4...-2).step(10)" ) ) . should == [ 2 ]
685
+ end
686
+
687
+ it "has closed range and negative steps" do
688
+ # start and end with 0
689
+ @array . send ( @method , eval ( "(0..0).step(-1)" ) ) . should == [ 0 ]
690
+ @array . send ( @method , eval ( "(0...0).step(-1)" ) ) . should == [ ]
691
+
692
+ @array . send ( @method , eval ( "(0..0).step(-2)" ) ) . should == [ 0 ]
693
+ @array . send ( @method , eval ( "(0...0).step(-2)" ) ) . should == [ ]
694
+
695
+ @array . send ( @method , eval ( "(0..0).step(-10)" ) ) . should == [ 0 ]
696
+ @array . send ( @method , eval ( "(0...0).step(-10)" ) ) . should == [ ]
697
+
698
+ # start and end with positive index
699
+ @array . send ( @method , eval ( "(1..3).step(-1)" ) ) . should == [ ]
700
+ @array . send ( @method , eval ( "(1...3).step(-1)" ) ) . should == [ ]
701
+
702
+ @array . send ( @method , eval ( "(1..3).step(-2)" ) ) . should == [ ]
703
+ @array . send ( @method , eval ( "(1...3).step(-2)" ) ) . should == [ ]
704
+
705
+ @array . send ( @method , eval ( "(1..3).step(-10)" ) ) . should == [ ]
706
+ @array . send ( @method , eval ( "(1...3).step(-10)" ) ) . should == [ ]
707
+
708
+ # start with positive index, end with negative index
709
+ @array . send ( @method , eval ( "(1..-2).step(-1)" ) ) . should == [ ]
710
+ @array . send ( @method , eval ( "(1...-2).step(-1)" ) ) . should == [ ]
711
+
712
+ @array . send ( @method , eval ( "(1..-2).step(-2)" ) ) . should == [ ]
713
+ @array . send ( @method , eval ( "(1...-2).step(-2)" ) ) . should == [ ]
714
+
715
+ @array . send ( @method , eval ( "(1..-2).step(-10)" ) ) . should == [ ]
716
+ @array . send ( @method , eval ( "(1...-2).step(-10)" ) ) . should == [ ]
717
+
718
+ # start with negative index, end with positive index
719
+ @array . send ( @method , eval ( "(-4..4).step(-1)" ) ) . should == [ ]
720
+ @array . send ( @method , eval ( "(-4...4).step(-1)" ) ) . should == [ ]
721
+
722
+ @array . send ( @method , eval ( "(-4..4).step(-2)" ) ) . should == [ ]
723
+ @array . send ( @method , eval ( "(-4...4).step(-2)" ) ) . should == [ ]
724
+
725
+ @array . send ( @method , eval ( "(-4..4).step(-10)" ) ) . should == [ ]
726
+ @array . send ( @method , eval ( "(-4...4).step(-10)" ) ) . should == [ ]
727
+
728
+ # start with negative index, end with negative index
729
+ @array . send ( @method , eval ( "(-4..-2).step(-1)" ) ) . should == [ ]
730
+ @array . send ( @method , eval ( "(-4...-2).step(-1)" ) ) . should == [ ]
731
+
732
+ @array . send ( @method , eval ( "(-4..-2).step(-2)" ) ) . should == [ ]
733
+ @array . send ( @method , eval ( "(-4...-2).step(-2)" ) ) . should == [ ]
734
+
735
+ @array . send ( @method , eval ( "(-4..-2).step(-10)" ) ) . should == [ ]
736
+ @array . send ( @method , eval ( "(-4...-2).step(-10)" ) ) . should == [ ]
737
+ end
738
+
739
+ it "has inverted closed range and positive steps" do
740
+ # start and end with positive index
741
+ @array . send ( @method , eval ( "(3..1).step(1)" ) ) . should == [ ]
742
+ @array . send ( @method , eval ( "(3...1).step(1)" ) ) . should == [ ]
743
+
744
+ @array . send ( @method , eval ( "(3..1).step(2)" ) ) . should == [ ]
745
+ @array . send ( @method , eval ( "(3...1).step(2)" ) ) . should == [ ]
746
+
747
+ @array . send ( @method , eval ( "(3..1).step(10)" ) ) . should == [ ]
748
+ @array . send ( @method , eval ( "(3...1).step(10)" ) ) . should == [ ]
749
+
750
+ # start with negative index, end with positive index
751
+ @array . send ( @method , eval ( "(-2..1).step(1)" ) ) . should == [ ]
752
+ @array . send ( @method , eval ( "(-2...1).step(1)" ) ) . should == [ ]
753
+
754
+ @array . send ( @method , eval ( "(-2..1).step(2)" ) ) . should == [ ]
755
+ @array . send ( @method , eval ( "(-2...1).step(2)" ) ) . should == [ ]
756
+
757
+ @array . send ( @method , eval ( "(-2..1).step(10)" ) ) . should == [ ]
758
+ @array . send ( @method , eval ( "(-2...1).step(10)" ) ) . should == [ ]
759
+
760
+ # start with positive index, end with negative index
761
+ @array . send ( @method , eval ( "(4..-4).step(1)" ) ) . should == [ ]
762
+ @array . send ( @method , eval ( "(4...-4).step(1)" ) ) . should == [ ]
763
+
764
+ @array . send ( @method , eval ( "(4..-4).step(2)" ) ) . should == [ ]
765
+ @array . send ( @method , eval ( "(4...-4).step(2)" ) ) . should == [ ]
766
+
767
+ @array . send ( @method , eval ( "(4..-4).step(10)" ) ) . should == [ ]
768
+ @array . send ( @method , eval ( "(4...-4).step(10)" ) ) . should == [ ]
769
+
770
+ # start with negative index, end with negative index
771
+ @array . send ( @method , eval ( "(-2..-4).step(1)" ) ) . should == [ ]
772
+ @array . send ( @method , eval ( "(-2...-4).step(1)" ) ) . should == [ ]
773
+
774
+ @array . send ( @method , eval ( "(-2..-4).step(2)" ) ) . should == [ ]
775
+ @array . send ( @method , eval ( "(-2...-4).step(2)" ) ) . should == [ ]
776
+
777
+ @array . send ( @method , eval ( "(-2..-4).step(10)" ) ) . should == [ ]
778
+ @array . send ( @method , eval ( "(-2...-4).step(10)" ) ) . should == [ ]
779
+ end
780
+
781
+ # ????????
782
+ it "has inverted closed range and negative steps" do
783
+ # start and end with positive index
784
+ @array . send ( @method , eval ( "(3..1).step(-1)" ) ) . should == [ 3 , 2 , 1 ]
785
+ @array . send ( @method , eval ( "(3...1).step(-1)" ) ) . should == [ 2 , 1 ]
786
+
787
+ @array . send ( @method , eval ( "(3..1).step(-2)" ) ) . should == [ 3 , 1 ]
788
+ @array . send ( @method , eval ( "(3...1).step(-2)" ) ) . should == [ 2 ]
789
+
790
+ @array . send ( @method , eval ( "(3..1).step(-10)" ) ) . should == [ 1 ]
791
+ @array . send ( @method , eval ( "(3...1).step(-10)" ) ) . should == [ 1 ]
792
+
793
+ # start with negative index, end with positive index
794
+ @array . send ( @method , eval ( "(-2..1).step(-1)" ) ) . should == [ 4 , 3 , 2 , 1 ]
795
+ @array . send ( @method , eval ( "(-2...1).step(-1)" ) ) . should == [ 3 , 2 , 1 ]
796
+
797
+ @array . send ( @method , eval ( "(-2..1).step(-2)" ) ) . should == [ 4 , 2 ]
798
+ @array . send ( @method , eval ( "(-2...1).step(-2)" ) ) . should == [ 3 , 1 ]
799
+
800
+ @array . send ( @method , eval ( "(-2..1).step(-10)" ) ) . should == [ 1 ]
801
+ @array . send ( @method , eval ( "(-2...1).step(-10)" ) ) . should == [ 1 ]
802
+
803
+ # start with positive index, end with negative index
804
+ @array . send ( @method , eval ( "(4..-4).step(-1)" ) ) . should == [ 4 , 3 , 2 ]
805
+ @array . send ( @method , eval ( "(4...-4).step(-1)" ) ) . should == [ 3 , 2 ]
806
+
807
+ @array . send ( @method , eval ( "(4..-4).step(-2)" ) ) . should == [ 4 , 2 ]
808
+ @array . send ( @method , eval ( "(4...-4).step(-2)" ) ) . should == [ 3 ]
809
+
810
+ @array . send ( @method , eval ( "(4..-4).step(-10)" ) ) . should == [ 2 ]
811
+ @array . send ( @method , eval ( "(4...-4).step(-10)" ) ) . should == [ 2 ]
812
+
813
+ # start with negative index, end with negative index
814
+ @array . send ( @method , eval ( "(-2..-4).step(-1)" ) ) . should == [ 4 , 3 , 2 ]
815
+ @array . send ( @method , eval ( "(-2...-4).step(-1)" ) ) . should == [ 3 , 2 ]
816
+
817
+ @array . send ( @method , eval ( "(-2..-4).step(-2)" ) ) . should == [ 4 , 2 ]
818
+ @array . send ( @method , eval ( "(-2...-4).step(-2)" ) ) . should == [ 3 ]
819
+
820
+ @array . send ( @method , eval ( "(-2..-4).step(-10)" ) ) . should == [ 2 ]
821
+ @array . send ( @method , eval ( "(-2...-4).step(-10)" ) ) . should == [ 2 ]
822
+ end
553
823
end
554
824
end
555
825
0 commit comments