
    0hhj                         S SK r S SKrS SKrS SKrS SKJr  S rS r " S S\ R                  5      r	\
S:X  a  \ R                  " 5         gg)    N)	ALWAYS_EQc              #   b   #    X-
  U-  S:  a   XU-
  U-  -  nX:w  a  U v   X-  n X:w  a  M  g g g 7f)Nr    startstopsteps      8/opt/python-3.13.8/usr/lib/python3.13/test/test_range.pypyranger   
   sD     ! 	%%mKME m	 "s   (//c                 :    XU-
  U-  -  n[        X-
  X-
  U* 5      $ N)r   r   s      r
   pyrange_reversedr      s(    T\T!!D4;te44    c                       \ rS rSrS"S jrS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S  r!S!r"g)#	RangeTest   Nc           	         Ub,  [         R                  " X5      n[         R                  " X$5      n[        5       n[         R                  " XUS9n[	        U5       H  u  nu  pX:X  a  M  X:X  a#  U R                  SR                  X7U	5      5        M7  X:X  a#  U R                  SR                  X8U5      5        M_  U R                  SR                  X7X5      5        M     g )N)	fillvaluez;{}: iterator ended unexpectedly at position {}; expected {}z/{}: unexpected excess element {} at position {}z5{}: wrong element at position {}; expected {}, got {})	itertoolsisliceobjectzip_longest	enumeratefailformat)
selfxsystest_idlimitsentinelpairsixys
             r
   assert_iterators_equal RangeTest.assert_iterators_equal   s     !!",B!!",B8%%bA"5)IAvv		 88>w18MO		 ((.w1(=? 		 006w10HJ *r   c           
      &   U R                  [        [        S5      5      / SQ5        U R                  [        [        SS5      5      / SQ5        U R                  [        [        S5      5      / 5        U R                  [        [        S5      5      / 5        U R                  [        [        SSS5      5      / S	Q5        U R                  [        [        SS
S5      5      / SQ5        SnSnSnU R                  [        [        XS-   5      5      XS-   /5        U R                  [        [        US-   US5      5      US-   US-   /5        U R                  [        [        US-   US5      5      US-   US-   /5        [        [        XU5      5      nU R                  X5        U R	                  X$5        U R                  [        U5      S5        [        [        X!U* 5      5      nU R                  X$5        U R	                  X5        U R                  [        U5      S5        [        [        U* U* U* 5      5      nU R                  U* U5        U R	                  U* U5        U R                  [        U5      S5        U R                  [        [        5        U R                  [        [        SSSS5        U R                  [        [        SSS5        U R                  [        [        SSS5        U R                  [        [        SSS5        U R                  [        [        SSS5        U R                  [        [        SSS5        U R                  [        [        SS5        U R                  [        [        SSS5        U R                  [        [        S[        R                  [        R                  S-
  5      5      S5        [        [        R                  * [        R                  S5      nU R                  [        U5      [        R                  5        g )N   )r         r*      )r*   r+   r)      r   
   )r*   r-      )r,   r+   d   2   r+   r2   r-           g       @      ?}Ô%IT\nTspam*   )assertEquallistrangeassertInassertNotInlenassertRaises	TypeError
ValueErrorsysmaxsize)r   abcseqrs         r
   
test_rangeRangeTest.test_range.   s   eAh3eAqk*L9eAh,eBi"-eAr1o.	:eAr2./@eAsm,qA#h7eAaCB/01Q3!*=eAaCB/01Q3!*=5q>"a S1%5r?#a S1%5!aR!$%qb#!S!S1%)U+)UAq!Q7*eQ15)UCA6)UAsA6)UAq#6)UE5%@)UAv6)UAr6:U1ckk3;;q=ABAF3;;,Q/Q-r   c           	          U R                  [        S5         [        5         S S S 5        U R                  [        S5         [        SSSSSS5        S S S 5        g ! , (       d  f       N>= f! , (       d  f       g = f)	Nz)range expected at least 1 argument, got 0z)range expected at most 3 arguments, got 6r*   r+   r)   r-   r,      )assertRaisesRegexrD   r?   r   s    r
   %test_range_constructor_error_messages/RangeTest.test_range_constructor_error_messages^   sl    ##;
 G	
 ##;
 !Q1a#	
 

 

 
s   A A+
A(+
A9c           	      Z   [        SSS5      nU R                  [        U5      S5        U R                  [        [        U5      5      S5        [        SSS5      nU R                  [        U5      S5        U R                  [        [        U5      5      S5        U R	                  U5        [        SSS5      nU R                  [        U5      S5        U R                  [        [        U5      5      S5        U R	                  U5        [        SSS5      nU R                  [        U5      S5        U R                  [        [        U5      5      S5        U R                  U5        [        SS-  * 5      [        SSS-  * 5      [        SSS-  S	5      4 H/  nU R                  [        U5      / 5        U R	                  U5        M1     [        S
[        R                  -  5      n[        S[        R                  -  5      n[        S[        R                  -  5      nU R                  [        [        X"S-   5      5      X"S-   /5        U R                  [        [        US-   US	5      5      US-   US-   /5        U R                  [        [        US-   US5      5      US-   US-   /5        [        [        X#U5      5      nU R                  X%5        U R                  X55        U R                  [        U5      S5        U R                  US   U5        U R                  US	   X$-   5        [        [        X2U* 5      5      nU R                  X55        U R                  X%5        U R                  [        U5      S5        U R                  US   U5        U R                  US	   X4-
  5        [        [        U* U* U* 5      5      nU R                  U* U5        U R                  U* U5        U R                  [        U5      S5        U R                  US   U* 5        U R                  US	   U* U-
  5        g )N      Fx:^V l   
  Fx:^V r)   r-   r   r.   r+   r4   r2   r/   r5   r*   r6   )r?   r=   rB   r>   assertFalse
assertTrueintrF   rG   r@   rA   )r   r$   rH   rI   rJ   rK   s         r
   test_large_operandsRangeTest.test_large_operandsk   s|   &)Q'Q#T!Wq))VQ'Q#T!Wq)&)R(Q#T!Wq))VR(Q#T!Wq) C.AsF7#1c62&(A T!Wb)Q	( S[[ !ckk!"S[[ !eAsm,qA#h7eAaCB/01Q3!*=eAaCB/01Q3!*=5q>"a S1%Q#R!#&5r?#a S1%Q#R!#&5!aR!$%qb#!S!S1%Q!$R1"Q$'r   c                    S n[         R                  * n[         R                  nX2-
  n[        X#5      nU R                  X%5        U R	                  X55        U R                  [        [        U5        U R                  U5        U R                  U" U5      U5        U R                  US   U5        [         R                  S-   nU R                  XV   X&-   5        U R                  XVUS-    S   X&-   5        U R                  [        5         XT* S-
       S S S 5        U R                  [        5         XT     S S S 5        SnS[         R                  -  nX2-
  n[        X#5      nU R                  X%5        U R	                  X55        U R                  [        [        U5        U R                  U5        U R                  U" U5      U5        U R                  US   U5        [         R                  S-   nU R                  XV   X&-   5        U R                  XVUS-    S   X&-   5        U R                  [        5         XT* S-
       S S S 5        U R                  [        5         XT     S S S 5        Sn[         R                  S-  nS[         R                  -  nSX2-
  U-  -   n[        X#U5      nU R                  X%5        U R	                  X55        U R                  [        [        U5        U R                  U5        U R                  U" U5      U5        U R                  US   U5        [         R                  S-   nU R                  XV   X&U-  -   5        U R                  XVUS-    S   X&U-  -   5        U R                  [        5         XT* S-
       S S S 5        U R                  [        5         XT     S S S 5        [         R                  S-  nSnS[         R                  -  nSX2-
  U-  -   n[        X#U5      nU R                  X%5        U R	                  X55        U R                  [        [        U5        U R                  U5        U R                  U" U5      U5        U R                  US   U5        [         R                  S-   nU R                  XV   X&U-  -   5        U R                  XVUS-    S   X&U-  -   5        U R                  [        5         XT* S-
       S S S 5        U R                  [        5         XT     S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nc                 x     [        U 5      nU$ ! [         a     U S   U S   -
  nSU S   U S   -
  U-  -   n U$ f = f)Nr*   r   r2   )rB   OverflowError)r$   lengthr	   s      r
   
_range_len.RangeTest.test_large_range.<locals>._range_len   sY    6Q M ! 6tad{quqt|45M6s    &99r   r*   r+   r/   r6   )rF   rG   r?   r@   rA   rC   r^   rB   rX   r=   
IndexError)r   r`   rH   rI   expected_lenr$   idxrJ   s           r
   test_large_rangeRangeTest.test_large_range   su   	 [[LKKu!Ka-a0A51q!kk!m's1ua!%0z*mAo +z*O + Ou!Ka-a0A51q!kk!m's1ua!%0z*mAo +z*O + KKOckkMAEa<'!Na-a0A51q!kk!mE+s1ua!U)4z*mAo +z*O + KKOs{{NAEa<'!Na-a0A51q!kk!mE+s1ua!U)4z*mAo +z*O +*u +***  +***" +***" +***s`   		T/T5	T%T7	U	'U	U-3U>
T
T"%
T47
U	
U
U*-
U;>
Vc           	         U R                  [        [        5        U R                  [        [        SSSS5        U R                  [        [        SSS5        [	        S[
        R                  -  5      nU R                  [        [        XS-   [	        S5      5        U R                  [        [        SSS5        U R                  [        [        SS	S	5        U R                  [        [        SS
5        U R                  [        [        SSS
5        U R                  [        [        S5        U R                  [        [        SS5        U R                  [        [        SS5        U R                  [        [        SS5        U R                  [        [        SSS5        U R                  [        [        SSS5        U R                  [        [        SSS5        U R                  [        [        SSS5        U R                  [        [        SSS5        U R                  [        [        SSS5        U R                  [        [        SSS5        g )Nr*   r+   r)   r-   r   r/   r8   r9   r:   r;   r<   r7   )rC   rD   r?   rE   rY   rF   rG   )r   rH   s     r
   test_invalid_invocation!RangeTest.test_invalid_invocation   s   )U+)UAq!Q7*eQ15S[[ !*eQAs1v>)UBB7)UE5%@)UAv6)UAr6: 	)UC0)UAs3)UC3)UC5)UAq#6)UAsA6)UAsC8)UCA6)UCC8)UCa8)UCc:r   c                 2  ^ [        S5      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  [        UR                  S5        [        SS5      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  [        UR                  5         " S S[        5      m " U4S jS	5      n[        S
5      nU R                  TUR                  U" 5       5        [        SS5      nU R                  UR                  S5      S5        U R                  [        SSS5      R                  S
5      S5        U R                  [        SSS5      R                  S5      S5        U R                  [        S5      R                  S5      S5        U R                  [        S5      R                  S5      S5        U R                  [        [        SSS-  S5      R                  SS-  5        U R                  [        SSS-  S5      R                  SS-  S-   5      SS-  5        U R                  [        S5      R                  [        5      S5        g )Nr+   r   r*   r6   r)   c                       \ rS rSrSrg)$RangeTest.test_index.<locals>.BadExci  r   N)__name__
__module____qualname____firstlineno____static_attributes__r   r   r
   BadExcrl     s    r   rr   c                   "   > \ rS rSrU 4S jrSrg)$RangeTest.test_index.<locals>.BadCmpi  c                     > US:X  a  T" 5       eg)Nr+   Fr   )r   otherrr   s     r
   __eq__+RangeTest.test_index.<locals>.BadCmp.__eq__  s    A: (Nr   r   Nrm   rn   ro   rp   rw   rq   )rr   s   r
   BadCmprt     s     r   rz   r-   r/   r.   r1   rV   l   Fx:^V r4   W   V   )	r?   r=   indexrC   rE   countrD   	Exceptionr   )r   urz   rH   rr   s       @r
   
test_indexRangeTest.test_index  s   !HQ'Q'*aggq1"aLQ'Q')QWW-	Y 		 	 !H&!''684"aLQ'q"a..q115q#r*004a8v,,Q/3v,,Z8*E*eAq#vq&9&?&?BGq!S&!,221b57;QUCr3Q7r   c                 $   S[         R                  -  nSn " S S5      nU R                  [        [	        U" U5      U" US-   5      5      5      U/5        U R                  [        [	        U" U5      U" US-   5      5      5      U/5         " S S5      nU R                  [        [        U" 5       5         " S S	5      nU R                  [        [        U" 5       5        U R                  [	        S
5      S U" S5       [	        S5      5        U R                  [        5         [	        SS
5      S U" 5          S S S 5        U R                  [        5         [	        SS
5      S U" 5          S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)Nr+   r<   c                        \ rS rSrS rS rSrg)+RangeTest.test_user_index_method.<locals>.Ii9  c                 $    [        U5      U l        g r   )rY   n)r   r   s     r
   __init__4RangeTest.test_user_index_method.<locals>.I.__init__:  s    Qr   c                     U R                   $ r   r   rR   s    r
   	__index__5RangeTest.test_user_index_method.<locals>.I.__index__<  s    vvr   r   N)rm   rn   ro   rp   r   r   rq   r   r   r
   Ir   9  s     r   r   r*   c                       \ rS rSrS rSrg),RangeTest.test_user_index_method.<locals>.IXiB  c                     [         er   )RuntimeErrorrR   s    r
   r   6RangeTest.test_user_index_method.<locals>.IX.__index__C  s    ""r   r   Nrm   rn   ro   rp   r   rq   r   r   r
   IXr   B  s    #r   r   c                       \ rS rSrS rSrg),RangeTest.test_user_index_method.<locals>.INiH  c                     g)Nznot a numberr   rR   s    r
   r   6RangeTest.test_user_index_method.<locals>.IN.__index__I  s    %r   r   Nr   r   r   r
   INr   H  s    &r   r   r/   r,   r   )rF   rG   r=   r>   r?   rC   r   rD   )r   bignumsmallnumr   r   r   s         r
   test_user_index_method RangeTest.test_user_index_method4  s:   3;;	 	
 	eAfIq!}=>IeAhK8a<ABXJO	# 	# 	,rt4	& 	& 	)UBD1 	r5AaD)584|,!RL"$ - y)!RL"$ *) -, *)s    E0F0
E>
Fc           	      2   U R                  [        S5      R                  S5      S5        U R                  [        S5      R                  S5      S5        U R                  [        S5      R                  S5      S5        U R                  [        S5      R                  S5      S5        U R                  [        S5      R                  S5      S5        U R                  [	        [        S5      R                  S5      5      [
        5        U R                  [	        [        S5      R                  S5      5      [
        5        U R                  [        S5      R                  S5      S5        U R                  [        S5      R                  S5      S5        U R                  [        S5      R                  S5      S5        U R                  [        SSS-  S5      R                  SS-  5      S5        U R                  [        SSS-  S5      R                  SS-  S-   5      S5        U R                  [        S	5      R                  [        5      S	5        U R                  [        [        [        R                  [        R                  S	-   5      5      S	5        g )
Nr)   r2   r   r*   r+   rV   r4   r|   r/   )r=   r?   r   assertIstyperY   r~   r   rB   rF   rG   rR   s    r
   
test_countRangeTest.test_countW  s   q+Q/q*A.q*A.q*A.q*A.d58>>"-.4d58>>!,-s3v,,Q/3v,,V4a8q*A.q!S&!,221b591=q!S&!,221b57;Q?r3R8U3;;B?@"Er   c           	          U R                  [        [        S5      5      S5        U R                  [        [        SS5      5      S5        U R                  [        [        SSS5      5      S5        g )Nr*   zrange(0, 1)r+   zrange(1, 2)r)   zrange(1, 2, 3))r=   reprr?   rR   s    r
   	test_reprRangeTest.test_repri  sS    eAh7eAqk*M:eAq!n-/?@r   c                    SSSSSSSS-  SS-  S-   4/n[        [        R                  S	-   5       Hx  nU Ho  nU R                  X#S
9   [        U6 nU R	                  [        [        R                  " [        R                  " XB5      5      5      [        U5      5        S S S 5        Mq     Mz     g ! , (       d  f       M  = f)N   r      ir/      r)   r2   r      r)   r6   r+   r+   r+   A   r*   )prototest)r?   pickleHIGHEST_PROTOCOLsubTestr=   r>   loadsdumps)r   	testcasesr   trL   s        r
   test_picklingRangeTest.test_picklingn  s    GY *q"uaeAg.>@	622Q67E\\\6q	A$$T&,,v||A7M*N%O%)!W. 76  866s   AB..
B=c                    / SQnS HL  nUUS-
  US-
  4SU-  SU-  S-   4US-
  US-
  S4U* S-   U* S4SSUS-
  4SSU* 4SUS-
  US-
  4SU* U* 4/-  nMN     [        [        R                  S-   5       GH!  nU GH  nU R                  X4S	9   [	        [        U6 5      =pV[        [        U6 5      n[        R                  " XS5      n[        R                  " U5      nU R                  [        U5      [        U5      5        U R                  [        U5      U5        [        R                  " U5      n [        U5        [        R                  " XS5      n[        R                  " U5      nU R                  [        U5      USS  5        S S S 5        GM     GM$     g ! [         a     S S S 5        GM7  f = f! , (       d  f       GMK  = f)
N)r   r   r   r   r   r   )l        l            r)   r*   r-   r+   r6   r2   )r   r   )r?   r   r   r   iterr>   r   r   r=   r   nextStopIteration)	r   r   Mr   r   ititorgdatads	            r
   test_iterator_pickling RangeTest.test_iterator_picklingx  s   !	A1ac
QqS!A#a%L1ac11qb"~Aqsb"qb\AaC1QB|	 I  622Q67E\\\3!%eQi0Bq	?DR/AaB$$T%[$r(;$$T"Xt4aB!R R/AaB$$T"XtABx8! 43  8 ) !  43! 43s2   B%F42F=A
F4
F1	$F40F1	1F44
Gc                 v   [        [        R                  S-   5       H  nU R                  US9   [	        [        S5      5      nUR                  S5        [        R                  " X!5      n[        R                  " U5      nU R                  [        U5      S5        S S S 5        M     g ! , (       d  f       M  = f)Nr*   )r   l       l       )
r?   r   r   r   r   __setstate__r   r   r=   r   )r   r   r   r   s       r
   (test_iterator_pickling_overflowing_index2RangeTest.test_iterator_pickling_overflowing_index  s    622Q67EE*%	*+	*LL+\\!_  b95 +* 8**s   A-B))
B8	c                    [        [        R                  S-   5       H  n[        SS-  SS-  S-   5      n[        U5      n [	        U5      nUSS-  S-   :X  a  OM  [        R
                  " X15      n[        R                  " U5      nU R                  [        U5      / 5        U R                  [        U5      / 5        M     g )Nr*   r+   r   	r?   r   r   r   r   r   r   r=   r>   r   r   rL   r#   r   i2s         r
    test_exhausted_iterator_pickling*RangeTest.test_exhausted_iterator_pickling  s    622Q67EaeQU1W%AQAG2a<  Q&AaBT!Wb)T"Xr* 8r   c                 d   [        [        R                  S-   5       H  n[        S5      n[        U5      n [	        U5      nUS:X  a  OM  [        R
                  " X15      n[        R                  " U5      nU R                  [        U5      / 5        U R                  [        U5      / 5        M     g )Nr*   r      r   r   s         r
   &test_large_exhausted_iterator_pickling0RangeTest.test_large_exhausted_iterator_pickling  s    622Q67Eb	AQAG7  Q&AaBT!Wb)T"Xr* 8r   c                     / SQnU H6  n[         R                  " U5      nU R                  [        U5      / SQ5        M8     g )N)
s<   c__builtin__
iter
(c__builtin__
xrange
(I10
I20
I2
tRtRI2
b.s6   c__builtin__
iter
(c__builtin__
xrange
(K
KKtRtRKb.s6   c__builtin__
iter
c__builtin__
xrange
K
KKRRKb.s/   cbuiltins
iter
cbuiltins
range
K
KKRRKb.s<   1       builtinsiterbuiltinsrangeK
KKRRKb.sd   c__builtin__
iter
(c__builtin__
xrange
(L-36893488147419103232L
I20
I2
tRtRL18446744073709551623L
b.sa   c__builtin__
iter
(c__builtin__
xrange
(L-36893488147419103232L
KKtRtRL18446744073709551623L
b.sH   c__builtin__
iter
c__builtin__
xrange
	        KKRR	       b.sA   cbuiltins
iter
cbuiltins
range
	        KKRR	       b.sN   C       builtinsiterbuiltinsrange	        KKRR	       b.         )r   r   r=   r>   )r   r   r   r   s       r
   test_iterator_unpickle_compat'RangeTest.test_iterator_unpickle_compat  s6    
	 AaBT"X|4 r   c                 2   [        [        SSS5      5      nUR                  S5        U R                  [	        U5      / SQ5        [        [        SSS5      5      nUR                  S5        U R                  [	        U5      SS/5        [        [        SS-  * SS5      5      nUR                  S5        U R                  [	        U5      / SQ5        [        [        SSS-  S5      5      nUR                  S	5        U R                  [	        U5      SS/5        g )
Nr/   r   r+   r   r)      r   l           l    )r   r?   r   r=   r>   reversed)r   r   s     r
   test_iterator_setstate RangeTest.test_iterator_setstate  s    %B"#
b<0eBA&'
bB8,%BA&'
	"b<0eB2q)*
	"bB8,r   c                 |    U R                  [        5         [        / SS5        S S S 5        g ! , (       d  f       g = f)Nr*   r2   )rC   rD   r?   rR   s    r
   test_odd_bugRangeTest.test_odd_bug  s*     y)"a *))s   -
;c                 >   U R                  S[        S5      5        U R                  S[        S5      5        U R                  S[        S5      5        U R                  [        [        S5      5         " S S5      nU R                  U" 5       [        S5      5        U R                  [	        U" 5       5      [        S5      5         " S S[        5      nU R                  U" S	5      [        S
5      5        U R                  U" S	5      [        [        S
5      5      5        g )Nr8   r)   Ty      ?        c                        \ rS rSrS rS rSrg) RangeTest.test_types.<locals>.C2i  c                     gNr*   r   rR   s    r
   __int__(RangeTest.test_types.<locals>.C2.__int__  s    ar   c                     gr   r   rR   s    r
   r   *RangeTest.test_types.<locals>.C2.__index__  s    r   r   N)rm   rn   ro   rp   r   r   rq   r   r   r
   C2r     s    ')r   r   c                       \ rS rSrS rSrg) RangeTest.test_types.<locals>.C3i  c                     g)NTr   )r   rv   s     r
   rw   'RangeTest.test_types.<locals>.C3.__eq__  s    Dr   r   Nry   r   r   r
   C3r     s    0r   r   r   r/   )r@   r?   r   rA   rY   r>   )r   r   r   s      r
   
test_typesRangeTest.test_types  s     	c58$dE!H%dE!H%iq*	* 	* 	uQx(c"$iq*	1 	1bfeBi(bfd59o.r   c                 &   [        SSS5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        [        SSS5      nU R                  SU5        U R                  SU5        U R                  S	U5        U R                  SU5        [        SSS
5      nU R                  SU5        U R                  S	U5        U R                  SU5        g )Nr   e   r+   r*   c   r4   r2   r6   ir?   r@   rA   r   rL   s     r
   test_strided_limitsRangeTest.test_strided_limits  s    !S!aAaQc1a !S"ab!c1a !S"c1a a r   c                     [        S5      nU R                  SU5        U R                  SU5        [        SS5      nU R                  SU5        U R                  SU5        U R                  SU5        g )Nr   r*   r{   r2   )r?   rA   r   s     r
   
test_emptyRangeTest.test_empty  sf    !HAA!SMAQAr   c           
         S VVVs/ s H(  nU* U* S-  SUS-  U4  H  nS  H  nX#-   PM	     M     M*     nnnnU VVVs/ s H  nU  H  nS  H  nXVU4PM	     M     M     nnnnUS/-  nU H  u  pVn[        XVU5      n	[        XVU5      n
SR                  XVU5      nU R                  XUSS	9  [	        [        XVU5      5      n	[        XVU5      n
S
R                  XVU5      nU R                  XUSS	9  M     g s  snnnf s  snnnf )N)l        l            r+   r   )r6   r2   r   r*   r+   )         i   r6   r2   r*   r+   )r  l    r*   zrange({}, {}, {})r4   )r    zreversed(range({}, {}, {})))r?   r   r   r&   r   r   )r   r   basejigglelimitsr   endr	   test_rangesiter1iter2r   s               r
   test_range_iteratorsRangeTest.test_range_iterators  sL    *3)a !rA2q5!QT15d 1f - !2  5  ) 	 3
 %+C$*5"(3#A4 D) $B *"( *$* 	 C 	,-- +E%d+EE-E)00TBG''gS'IU5t45E$U6E3::5tLG''gS'I !,3Cs   /C8 "C?c                     [        [        [        S5      5      5      nU R                  [        USSS5        [        [        [        SS-  5      5      5      nU R                  [        USSS5        g )Nr   r*   r)   i  )r   r   r?   rC   rD   )r   rangeiter_typelong_rangeiter_types      r
   test_range_iterators_invocation)RangeTest.test_range_iterators_invocation/  s\     d58n-)^Q1="4a4i(8#9:)%8!QBr   c           	      r  ^ ^ SUU 4S jjn[        S5      [        S5      [        SSS5      [        SSS5      [        [        R                  S-   [        R                  S-   5      4 HM  mU" SS	5        U" SS
5        U" SS	5        U" S
S5        U" SS5        U" SSS	5        U" SS5        U" SSS5        MO     g )Nc                    > [        XU5      nTR                  [        TU   5      [        T5      U   5        TR                  [        TU   5      [        [        T5      U   5      5        g r   )slicer=   r>   rB   )r   r   r	   r#   rL   r   s       r
   check#RangeTest.test_slice.<locals>.check8  sS    e4(AT!A$Za4S1YDGAJ8r   r/   r   r*   	   r)      r.   r+   r      r   r2   r4   r   )r?   rF   rG   )r   r  rL   s   ` @r
   
test_sliceRangeTest.test_slice7  s    	9 	9 )(1a.1b/As{{2~6	A !QK!RL!QK"bM#sO"c1!RL"b"r   c                 X   [        S5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        [        SSS5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        [        SSS	5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        [        SSS
5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        g )Nr/   r   r*   g      @gffffff@r2    r  r+   r6   r   r   s     r
   test_containsRangeTest.test_containsK  s   "Iaac1a QQQ!Raac1a QQQ!ROaAa a QQQ!RAac1a QQQr   c           	      .   [        S5      [        S5      [        SSS5      [        SSS5      [        [        R                  S-   [        R                  S-   5      4 H6  nU R                  [	        [        U5      5      [	        U5      S S S2   5        M8     g )	Nr/   r   r*   r  r)   r  r.   r2   )r?   rF   rG   r=   r>   r   r   s     r
   test_reverse_iteration RangeTest.test_reverse_iterationm  ss    )(1a.1b/As{{2~6	A T(1+.Q">r   c                     [        [        SSS5      R                  S5      6 n1 SknU H  nU H  nUS1-
   H	  nXXE2     M     M     M!     g )Nr*   r   r+   r   >   Nr   r*   r+   r,   r   r   r   r  r   r  r   r   r1   r6   r2   r   )r?   r  indices)r   rL   valuesr#   jks         r
   test_issue11845RangeTest.test_issue11845v  sS    5B?**2./6A1#AeH &  r   c                    [        S5      [        SS5      [        SSS5      [        S5      [        SS5      [        SSS5      [        SSS5      [        S5      [        SS	S5      [        SSS5      [        SSS5      /n[        [        [        U5      5      nU VVs/ s H  o1  H  oCU:H  PM	     M     nnnU VVs/ s H  o2  H  oCU:H  PM	     M     nnnU R	                  XV5        U VVs/ s H  o1  H  oCU:g  PM	     M     nnnU R	                  Xu Vs/ s H	  o(       + PM     sn5        U H7  nU H.  nX4:X  d  M
  U R	                  [        U5      [        U5      5        M0     M9     U R                  [        S5      S
:H  S5        U R                  S
[        S5      :H  S5        U R                  [        S5      SS/:H  S5        U R	                  [        SSS-  S-
  S5      [        SSS-  S5      5        U R	                  [        [        SSS-  S-
  S5      5      [        [        SSS-  S5      5      5        U R                  [        SSS-  S5      [        SSS-  S-   S5      5        U R	                  [        SS-  SS-  SS-  -
  SS-  5      [        SS-  SS-  SS-  5      5        U R	                  [        [        SS-  SS-  SS-  -
  SS-  5      5      [        [        SS-  SS-  SS-  5      5      5        U R                  [        SS-  SS-  SS-  5      [        SS-  SS-  S-   SS-  5      5        U R                  [        5         [        S5      [        S5      :    S S S 5        U R                  [        5         [        S5      [        S5      :    S S S 5        U R                  [        5         [        S5      [        S5      :*    S S S 5        U R                  [        5         [        S5      [        S5      :    S S S 5        g s  snnf s  snnf s  snnf s  snf ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N}= f! , (       d  f       g = f)Nr   r2   r*   r)   r,   rP   r+   r0   r-   r   Fr4         r   )
r?   r>   maptupler=   hashr   assertNotEqualrC   rD   )	r   r  test_tuplesrH   rI   	ranges_eq	tuples_eq	ranges_ner$   s	            r
   test_comparisonRangeTest.test_comparison  s   Qxq"uQ1~Qxq!eAq!nQ1~uQxq!QQ1~uQ1~7 3uk23 &1F[+Q!V+V[	F%0F[+Q!V+V[	F. &1F[+Q!V+V[	FI$>IqUI$>? A 6$$T!Wd1g6 !  	eAh"ne,bE!Hne,eAh1a&(%0 	q!S&1*a0q!S&!,	.eAq#vz156eAq#vq12	4E!QVQ/!!QVaZ3	5q#vq#v2~q#v>q#vq#vq#v6	8eAsFAsFQUNAsFCDeAsFAsFAsF;<	>E!S&!S&!S&9!!S&!S&1*af=	? y)!HuQx *y)!HuQx *y)!Ha  *y)!Ha  *)Q GF G$>8 *)))))))sH   P<P,PP 
P%P68Q-Q%
P36
Q
Q
Q&c                 ^   U R                  [        S5      SSS5        U R                  [        S5      SSS5        U R                  [        S5      SSS5        U R                  [        SSS5      SSS5        U R                  [        SSS5      SSS5        U R                  [        SSS5      SSS5        U R                  [        SSS5      SSS5        U R                  [        S5      SSS5        U R                  [        S	S5      SSS5        U R                  [        S	SS5      SSS5        g )
Nr   r*   r/   r{   r)   r2   r.   TF)assert_attrsr?   rR   s    r
   test_attributesRangeTest.test_attributes  s   %(Aq!,%)QA.%*aa0%2q/1b!4%2q/1b!4%Ar*B26%Ar*B26%+q!Q/%t,aA6%tT2Aq!<r   c                    U R                  UR                  U5        U R                  UR                  U5        U R                  UR                  U5        U R	                  [        UR                  5      [        5        U R	                  [        UR                  5      [        5        U R	                  [        UR                  5      [        5        U R                  [        5         SUl        S S S 5        U R                  [        5         SUl        S S S 5        U R                  [        5         SUl        S S S 5        U R                  [        5         U?S S S 5        U R                  [        5         U?S S S 5        U R                  [        5         U?S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ns= f! , (       d  f       g = f)Nr   r/   r*   )	r=   r   r   r	   r   r   rY   rC   AttributeError)r   rangeobjr   r   r	   s        r
   r>  RangeTest.assert_attrs  sL   /--d8>>*C0d8==)3/d8==)3/~.HN /~.HM /~.HM / ~. /~. /~. /. /..... /.....sH   %F 
F1/GG4G$G5 
F.1
F?
G
G!$
G25
Hr   r   )#rm   rn   ro   rp   r&   rM   rS   rZ   re   rh   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r%  r.  r;  r?  r>  rq   r   r   r
   r   r      s    J*..`$6(pSj;0"8H! FF$A
.9<6++5$-/0!(J2C(  D?2!j=r   r   __main__)unittestrF   r   r   test.supportr   r   r   TestCaser   rm   mainr   r   r
   <module>rJ     sM     
   "5
}
!! }
~ zMMO r   