@@ -744,6 +744,69 @@ def test_slice_to_ascending_slice_e(self) -> None:
744744 slice_to_ascending_slice_ref (slc , size ),
745745 )
746746
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+
747810
748811if __name__ == '__main__' :
749812 unittest .main ()
0 commit comments