Skip to content

Commit d23057d

Browse files
committed
wip, split specs into multiple
1 parent b5c2c20 commit d23057d

File tree

1 file changed

+286
-16
lines changed

1 file changed

+286
-16
lines changed

Diff for: core/array/shared/slice.rb

+286-16
Original file line numberDiff line numberDiff line change
@@ -534,22 +534,292 @@ def to.to_int() -2 end
534534
end
535535

536536
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
553823
end
554824
end
555825

0 commit comments

Comments
 (0)