@@ -744,6 +744,69 @@ def test_slice_to_ascending_slice_e(self) -> None:
744
744
slice_to_ascending_slice_ref (slc , size ),
745
745
)
746
746
747
+ def test_slice_to_ascending_slice_f (self ) -> None :
748
+
749
+ a1 = np .arange (10 )
750
+
751
+ def compare (slc : slice ) -> None :
752
+ slc_asc = slice_to_ascending_slice (slc , len (a1 ))
753
+ self .assertEqual (sorted (a1 [slc ]), list (a1 [slc_asc ]))
754
+
755
+ compare (slice (4 ,))
756
+ compare (slice (6 , 1 , - 1 ))
757
+ compare (slice (6 , 1 , - 2 ))
758
+ compare (slice (6 , None , - 3 ))
759
+ compare (slice (6 , 2 , - 2 ))
760
+ compare (slice (None , 1 , - 1 ))
761
+
762
+ def test_slice_to_ascending_slice_g (self ) -> None :
763
+ self .assertEqual (
764
+ slice_to_ascending_slice (slice (3 , None , - 1 ), 10 ),
765
+ slice (0 , 4 , None )
766
+ )
767
+ self .assertEqual (
768
+ slice_to_ascending_slice (slice (3 , None , - 3 ), 10 ),
769
+ slice (0 , 4 , 3 )
770
+ )
771
+ self .assertEqual (
772
+ slice_to_ascending_slice (slice (- 3 , 0 , - 1 ), 10 ),
773
+ slice (1 , 8 , None )
774
+ )
775
+ self .assertEqual (
776
+ slice_to_ascending_slice (slice (- 3 , None , - 1 ), 10 ),
777
+ slice (0 , 8 , None )
778
+ )
779
+ self .assertEqual (
780
+ slice_to_ascending_slice (slice (- 3 , 0 , - 2 ), 10 ),
781
+ slice (1 , 8 , 2 )
782
+ )
783
+ self .assertEqual (
784
+ slice_to_ascending_slice (slice (- 3 , None , - 2 ), 10 ),
785
+ slice (1 , 8 , 2 )
786
+ )
787
+ self .assertEqual (
788
+ slice_to_ascending_slice (slice (- 3 , None , - 6 ), 10 ),
789
+ slice (1 , 8 , 6 )
790
+ )
791
+
792
+ def test_slice_to_ascending_slice_h (self ) -> None :
793
+ self .assertEqual (
794
+ slice_to_ascending_slice (slice (- 9 , - 1 , 1 ), 10 ),
795
+ slice (- 9 , - 1 , 1 ) # ascenidng
796
+ )
797
+ self .assertEqual (
798
+ slice_to_ascending_slice (slice (- 9 , - 1 , - 1 ), 10 ),
799
+ slice (2 , 2 , None ) # ascending start stop, descending
800
+ )
801
+
802
+ def test_slice_to_ascending_slice_i (self ) -> None :
803
+ self .assertEqual (
804
+ slice_to_ascending_slice (slice (1 , - 10 , - 1 ), 10 ), # [1]
805
+ slice (1 , 2 , None )
806
+ )
807
+
808
+
809
+
747
810
748
811
if __name__ == '__main__' :
749
812
unittest .main ()
0 commit comments