
    dafj                         d dl Z d dlZd dlZd dlZd dlmZ d Zd Z G d de j                        Z	e
dk(  r e j                          yy)    N)	ALWAYS_EQc              #   d   K   | |z
  |z  dk  r!|| |z
  |z  z  }| |k7  r|  | |z  } | |k7  ry y y w)Nr    startstopsteps      */root/Python-3.12.4/Lib/test/test_range.pypyranger   
   sO     ! 	%%tmKTME tm	 "s   *00c                 @    || |z
  |z  z  }t        ||z
  | |z
  |       S N)r   r   s      r
   pyrange_reversedr      s.    UT\T!!D4$;te44    c                       e Zd Zd dZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z y)!	RangeTestNc           	         |,t        j                  ||      }t        j                  ||      }t               }t        j                  |||      }t	        |      D ]  \  }\  }}	||	k(  r||k(  r#| j                  dj                  |||	             7|	|k(  r#| j                  dj                  |||             _| j                  dj                  |||	|              y )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_equalz RangeTest.assert_iterators_equal   s     !!"e,B!!"e,B8%%b"A"5) 	JIAv1Avh		 88>w18MOh		 ((.w1(=? 		 006w1a0HJ	Jr   c           
      6   | j                  t        t        d            g d       | j                  t        t        dd            g d       | j                  t        t        d            g        | j                  t        t        d            g        | j                  t        t        ddd            g d	       | j                  t        t        dd
d            g d       d}d}d}| j                  t        t        ||dz               ||dz   g       | j                  t        t        |dz   |d            |dz   |dz   g       | j                  t        t        |dz   |d            |dz   |dz   g       t        t        |||            }| j                  ||       | j	                  ||       | j                  t        |      d       t        t        |||             }| j                  ||       | j	                  ||       | j                  t        |      d       t        t        | | |             }| j                  | |       | j	                  | |       | j                  t        |      d       | j                  t        t               | j                  t        t        dddd       | j                  t        t        ddd       | j                  t        t        ddd       | j                  t        t        ddd       | j                  t        t        ddd       | j                  t        t        ddd       | j                  t        t        dd       | j                  t        t        ddd       | j                  t        t        dt        j                  t        j                  dz
              d       t        t        j                   t        j                  d      }| j                  t        |      t        j                         y )N   )r         r(      )r(   r)   r'      r   
   )r(   r+      )r*   r)   d   2   r)   r0   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_rangezRangeTest.test_range.   s%   eAh3eAqk*L9eAh,eBi"-eAr1o.	:eAr2./@eAqsm,q!A#h7eAaCB/01Q3!*=eAaCB/01Q3!*=5Aq>"aC S1%5Ar?#aC 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           	          | j                  t        d      5  t                d d d        | j                  t        d      5  t        dddddd       d d d        y # 1 sw Y   9xY w# 1 sw Y   y xY w)	Nz)range expected at least 1 argument, got 0z)range expected at most 3 arguments, got 6r(   r)   r'   r+   r*      )assertRaisesRegexrB   r=   r   s    r
   %test_range_constructor_error_messagesz/RangeTest.test_range_constructor_error_messages^   sv    ##;
 	 G		 ##;
 	$ !Q1a#		$ 	$	 		$ 	$s   A A&A#&A/c           	      j   t        ddd      }| j                  t        |      d       | j                  t        t        |            d       t        ddd      }| j                  t        |      d       | j                  t        t        |            d       | j	                  |       t        ddd      }| j                  t        |      d       | j                  t        t        |            d       | j	                  |       t        ddd      }| j                  t        |      d       | j                  t        t        |            d       | j                  |       t        ddz         t        dddz         t        dddz  d	      fD ].  }| j                  t        |      g        | j	                  |       0 t        d
t        j                  z        }t        dt        j                  z        }t        dt        j                  z        }| j                  t        t        ||dz               ||dz   g       | j                  t        t        |dz   |d	            |dz   |dz   g       | j                  t        t        |dz   |d            |dz   |dz   g       t        t        |||            }| j                  ||       | j                  ||       | j                  t        |      d       | j                  |d   |       | j                  |d	   ||z          t        t        |||             }| j                  ||       | j                  ||       | j                  t        |      d       | j                  |d   |       | j                  |d	   ||z
         t        t        | | |             }| j                  | |       | j                  | |       | j                  t        |      d       | j                  |d   |        | j                  |d	   | |z
         y )N      Fx:^V l   
  Fx:^V r'   r+   r   r,   r)   r2   r0   r-   r3   r(   r4   )r=   r;   r@   r<   assertFalse
assertTrueintrD   rE   r>   r?   )r   r#   rF   rG   rH   rI   s         r
   test_large_operandsz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[[ !eAqsm,q!A#h7eAaCB/01Q3!*=eAaCB/01Q3!*=5Aq>"aC S1%Q#R!A#&5Ar?#aC S1%Q#R!A#&5!aR!$%qb#!S!S1%Q!$R1"Q$'r   c                    d }t         j                   }t         j                  }||z
  }t        ||      }| j                  ||       | j	                  ||       | j                  t        t        |       | j                  |       | j                   ||      |       | j                  |d   |       t         j                  dz   }| j                  ||   ||z          | j                  |||dz    d   ||z          | j                  t              5  || dz
      d d d        | j                  t              5  ||    d d d        d}dt         j                  z  }||z
  }t        ||      }| j                  ||       | j	                  ||       | j                  t        t        |       | j                  |       | j                   ||      |       | j                  |d   |       t         j                  dz   }| j                  ||   ||z          | j                  |||dz    d   ||z          | j                  t              5  || dz
      d d d        | j                  t              5  ||    d d d        d}t         j                  dz  }dt         j                  z  }d||z
  |z  z   }t        |||      }| j                  ||       | j	                  ||       | j                  t        t        |       | j                  |       | j                   ||      |       | j                  |d   |       t         j                  dz   }| j                  ||   |||z  z          | j                  |||dz    d   |||z  z          | j                  t              5  || dz
      d d d        | j                  t              5  ||    d d d        t         j                  dz  }d}dt         j                  z  }d||z
  |z  z   }t        |||      }| j                  ||       | j	                  ||       | j                  t        t        |       | j                  |       | j                   ||      |       | j                  |d   |       t         j                  dz   }| j                  ||   |||z  z          | j                  |||dz    d   |||z  z          | j                  t              5  || dz
      d d d        | j                  t              5  ||    d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   y xY w)Nc                 v    	 t        |       }|S # t        $ r  | d   | d   z
  }d| d   | d   z
  |z  z   }Y |S w xY w)Nr(   r   r0   )r@   OverflowError)r#   lengthr	   s      r
   
_range_lenz.RangeTest.test_large_range.<locals>._range_len   sY    6Q M ! 6tad{quqt|45M6s    %88r   r(   r)   r-   r4   )rD   rE   r=   r>   r?   rA   rY   r@   rT   r;   
IndexError)r   r[   rF   rG   expected_lenr#   idxrH   s           r
   test_large_rangezRangeTest.test_large_range   s   	 [[LKK1u!QKaA-a0A51q!kk!m33'3s1ua!C%0z* 	|mAo	z* 	lO	 O1u!QKaA-a0A51q!kk!m33'3s1ua!C%0z* 	|mAo	z* 	lO	 KKOckkMAEa<'!QNaA-a0A51q!kk!m3CE+3s1ua!SU)4z* 	|mAo	z* 	lO	 KKOs{{NAEa<'!QNaA-a0A51q!kk!m3CE+3s1ua!SU)4z* 	|mAo	z* 	lO	 	u	 		 	 	 		 	"	 		 	"	 		 	s`   
T)8T6
U.U
UU*3
U7V)T36U UUU'*U47V Vc           	         | j                  t        t               | j                  t        t        dddd       | j                  t        t        ddd       t	        dt
        j                  z        }| j                  t        t        ||dz   t	        d             | j                  t        t        ddd       | j                  t        t        dd	d	       | j                  t        t        dd
       | j                  t        t        ddd
       | j                  t        t        d       | j                  t        t        dd       | j                  t        t        dd       | j                  t        t        dd       | j                  t        t        ddd       | j                  t        t        ddd       | j                  t        t        ddd       | j                  t        t        ddd       | j                  t        t        ddd       | j                  t        t        ddd       | j                  t        t        ddd       y )Nr(   r)   r'   r+   r   r-   r6   r7   r8   r9   r:   r5   )rA   rB   r=   rC   rU   rD   rE   )r   rF   s     r
   test_invalid_invocationz!RangeTest.test_invalid_invocation   s   )U+)UAq!Q7*eQ15S[[ !*eQA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                 0   t        d      }| j                  |j                  d      d       | j                  |j                  d      d       | j                  t        |j                  d       t        dd      }| j                  |j                  d      d       | j                  |j                  d      d       | j                  t        |j                          G d dt               G fdd	      }t        d
      }| j                  |j                   |              t        dd      }| j                  |j                  d      d       | j                  t        ddd      j                  d
      d       | j                  t        ddd      j                  d      d       | j                  t        d      j                  d      d       | j                  t        d      j                  d      d       | j                  t        t        dddz  d      j                  ddz         | j                  t        dddz  d      j                  ddz  dz         ddz         | j                  t        d      j                  t              d       y )Nr)   r   r(   r4   r'   c                       e Zd Zy)$RangeTest.test_index.<locals>.BadExcN)__name__
__module____qualname__r   r   r
   BadExcrd     s    r   rh   c                       e Zd Z fdZy)$RangeTest.test_index.<locals>.BadCmpc                     |dk(  r        y)Nr)   Fr   )r   otherrh   s     r
   __eq__z+RangeTest.test_index.<locals>.BadCmp.__eq__  s    A: (Nr   Nre   rf   rg   rm   )rh   s   r
   BadCmprj     s    r   ro   r+   r-   r,   r/   rR   l   Fx:^V r2   W   V   )	r=   r;   indexrA   rC   countrB   	Exceptionr   )r   uro   rF   rh   s       @r
   
test_indexz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                    dt         j                  z  }d} G d d      }| j                  t        t	         ||       ||dz                     |g       | j                  t        t	         ||       ||dz                     |g        G d d      }| j                  t        t         |               G d d	      }| j                  t        t         |              | j                  t	        d
      d  |d       t	        d             | j                  t              5  t	        dd
      d  |         d d d        | j                  t              5  t	        dd
      d  |         d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY w)Nr)   r:   c                       e Zd Zd Zd Zy)+RangeTest.test_user_index_method.<locals>.Ic                 $    t        |      | _        y r   )rU   n)r   r|   s     r
   __init__z4RangeTest.test_user_index_method.<locals>.I.__init__:  s    Qr   c                     | j                   S r   )r|   rO   s    r
   	__index__z5RangeTest.test_user_index_method.<locals>.I.__index__<  s    vvr   N)re   rf   rg   r}   r   r   r   r
   Irz   9  s     r   r   r(   c                       e Zd Zd Zy),RangeTest.test_user_index_method.<locals>.IXc                     t         r   )RuntimeErrorrO   s    r
   r   z6RangeTest.test_user_index_method.<locals>.IX.__index__C  s    ""r   Nre   rf   rg   r   r   r   r
   IXr   B  s    #r   r   c                       e Zd Zd Zy),RangeTest.test_user_index_method.<locals>.INc                      y)Nznot a numberr   rO   s    r
   r   z6RangeTest.test_user_index_method.<locals>.IN.__index__I  s    %r   Nr   r   r   r
   INr   H  s    &r   r   r-   r*   r   )rD   rE   r;   r<   r=   rA   r   rB   )r   bignumsmallnumr   r   r   s         r
   test_user_index_methodz RangeTest.test_user_index_method4  sJ   3;;	 	
 	eAfIq!}=>IeAhK8a<ABXJO	# 	# 	,rt4	& 	& 	)UBD1 	r5AaD)584|, 	 !RL"$	  y) 	 !RL"$	  	 	  	 	  	 s    E0E<0E9<Fc           	      2   | j                  t        d      j                  d      d       | j                  t        d      j                  d      d       | j                  t        d      j                  d      d       | j                  t        d      j                  d      d       | j                  t        d      j                  d      d       | j                  t	        t        d      j                  d            t
               | j                  t	        t        d      j                  d            t
               | j                  t        d      j                  d      d       | j                  t        d      j                  d      d       | j                  t        d      j                  d      d       | j                  t        dddz  d      j                  ddz        d       | j                  t        dddz  d      j                  ddz  dz         d       | j                  t        d	      j                  t              d	       | j                  t        t        t        j                  t        j                  d	z               d	       y )
Nr'   r0   r   r(   r)   rR   r2   rq   r-   )r;   r=   rt   assertIstyperU   rs   r   r@   rD   rE   rO   s    r
   
test_countz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           	          | j                  t        t        d            d       | j                  t        t        dd            d       | j                  t        t        ddd            d       y )Nr(   zrange(0, 1)r)   zrange(1, 2)r'   zrange(1, 2, 3))r;   reprr=   rO   s    r
   	test_reprzRangeTest.test_repri  sS    eAh7eAqk*M:eAq!n-/?@r   c                 r   ddddddddz  ddz  dz   fg}t        t        j                  d	z         D ]x  }|D ]q  }| j                  ||
      5  t        | }| j	                  t        t        j                  t        j                  ||                  t        |             d d d        s z y # 1 sw Y   xY w)N   r      ir-      r'   r0   r      r'   r4   r)   r)   r)   A   r(   )prototest)r=   pickleHIGHEST_PROTOCOLsubTestr;   r<   loadsdumps)r   	testcasesr   trJ   s        r
   test_picklingzRangeTest.test_picklingn  s    GY *q"uaeAg.>@	622Q67 	.E .\\A\6 .q	A$$T&,,v||Au7M*N%O%)!W.. ..	.. .s   AB--B6c                 v   g d}dD ]K  }||dz
  |dz
  fd|z  d|z  dz   f|dz
  |dz
  df| dz   | dfdd|dz
  fdd| fd|dz
  |dz
  fd| | fgz  }M t        t        j                  dz         D ]   }|D ]  }| j                  ||	      5  t	        t        |       x}}t        t        |       }t        j                  ||      }t        j                  |      }| j                  t        |      t        |             | j                  t        |      |       t        j                  |      }	 t        |       t        j                  ||      }t        j                  |      }| j                  t        |      |dd         d d d         # y # t        $ r Y d d d        3w xY w# 1 sw Y   AxY w)
N)r   r   r   r   r   r   )l        l            r'   r(   r+   r)   r4   r0   )r   r   )r=   r   r   r   iterr<   r   r   r;   r   nextStopIteration)	r   r   Mr   r   ititorgdatads	            r
   test_iterator_picklingz 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7 	9E 9\\\3 9!%eQi0Bq	?DR/AaB$$T%[$r(;$$T"Xt4aB!R R/AaB$$T"XtABx8!9 99	9 ) ! 9 9!9 9s2   B$F.3F>A	F.	F+	F.*F+	+F..F8c                 j   t        t        j                  dz         D ]  }| j                  |      5  t	        t        d            }|j                  d       t        j                  ||      }t        j                  |      }| j                  t        |      d       d d d         y # 1 sw Y   xY w)Nr(   )r   l       l       )
r=   r   r   r   r   __setstate__r   r   r;   r   )r   r   r   r   s       r
   (test_iterator_pickling_overflowing_indexz2RangeTest.test_iterator_pickling_overflowing_index  s    622Q67 	6EE* 6%	*+	*LLU+\\!_  b956 6	66 6s   A,B))B2	c                 z   t        t        j                  dz         D ]  }t        ddz  ddz  dz         }t        |      }	 t	        |      }|ddz  dz   k(  rnt        j
                  ||      }t        j                  |      }| j                  t        |      g        | j                  t        |      g         y )Nr(   r)   r   	r=   r   r   r   r   r   r   r;   r<   r   r   rJ   r"   r   i2s         r
    test_exhausted_iterator_picklingz*RangeTest.test_exhausted_iterator_pickling  s    622Q67 
	+EaeQU1W%AQAG2a<  Q&AaBT!Wb)T"Xr*
	+r   c                 Z   t        t        j                  dz         D ]  }t        d      }t        |      }	 t	        |      }|dk(  rnt        j
                  ||      }t        j                  |      }| j                  t        |      g        | j                  t        |      g         y )Nr(   r      r   r   s         r
   &test_large_exhausted_iterator_picklingz0RangeTest.test_large_exhausted_iterator_pickling  s    622Q67 
	+Eb	AQAG7  Q&AaBT!Wb)T"Xr*
	+r   c                 ~    g d}|D ]4  }t        j                  |      }| j                  t        |      g d       6 y )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_compatz'RangeTest.test_iterator_unpickle_compat  s;    
	  	5AaBT"X|4	5r   c                 2   t        t        ddd            }|j                  d       | j                  t	        |      g d       t        t        ddd            }|j                  d       | j                  t	        |      ddg       t        t        ddz   dd            }|j                  d       | j                  t	        |      g d       t        t        dddz  d            }|j                  d	       | j                  t	        |      ddg       y )
Nr-   r   r)   r   r'      r   l           l    )r   r=   r   r;   r<   reversed)r   r   s     r
   test_iterator_setstatez 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                 r    | j                  t              5  t        g dd       d d d        y # 1 sw Y   y xY w)Nr(   r0   )rA   rB   r=   rO   s    r
   test_odd_bugzRangeTest.test_odd_bug  s3     y) 	"a	 	 	s   -6c                 >   | j                  dt        d             | j                  dt        d             | j                  dt        d             | j                  t        t        d              G d d      }| j                   |       t        d             | j                  t	         |             t        d              G d dt              }| j                   |d	      t        d
             | j                   |d	      t        t        d
                   y )Nr6   r'   Ty      ?        c                       e Zd Zd Zd Zy) RangeTest.test_types.<locals>.C2c                      yNr(   r   rO   s    r
   __int__z(RangeTest.test_types.<locals>.C2.__int__  s    ar   c                      yr   r   rO   s    r
   r   z*RangeTest.test_types.<locals>.C2.__index__  s    r   N)re   rf   rg   r   r   r   r   r
   C2r     s    ')r   r   c                       e Zd Zd Zy) RangeTest.test_types.<locals>.C3c                      y)NTr   )r   rl   s     r
   rm   z'RangeTest.test_types.<locals>.C3.__eq__  s    Dr   Nrn   r   r   r
   C3r     s    0r   r   r   r-   )r>   r=   r   r?   rU   r<   )r   r   r   s      r
   
test_typesz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                 &   t        ddd      }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       t        ddd      }| j                  d|       | j                  d|       | j                  d	|       | j                  d|       t        ddd
      }| j                  d|       | j                  d	|       | j                  d|       y )Nr   e   r)   r(   c   r2   r0   r4   ir=   r>   r?   r   rJ   s     r
   test_strided_limitszRangeTest.test_strided_limits  s    !S!aAaQc1a !S"ab!c1a !S"c1a a r   c                     t        d      }| j                  d|       | j                  d|       t        dd      }| j                  d|       | j                  d|       | j                  d|       y )Nr   r(   rp   r0   )r=   r?   r   s     r
   
test_emptyzRangeTest.test_empty  sf    !HAA!SMAQAr   c           
         dD cg c]"  }| | dz  d|dz  |fD ]  }dD ]  }||z   	  $ }}}}|D cg c]  }|D ]  }dD ]  }|||f	   }}}}|dgz  }|D ]  \  }}}t        |||      }	t        |||      }
dj                  |||      }| j                  |	|
|d	       t	        t        |||            }	t        |||      }
d
j                  |||      }| j                  |	|
|d	        y c c}}}w c c}}}w )N)l        l            r)   r   )r4   r0   r   r(   r)   )         i   r4   r0   r(   r)   )r   l    r(   zrange({}, {}, {})r2   )r   zreversed(range({}, {}, {})))r=   r   r   r%   r   r   )r   r   basejigglelimitsr   endr	   test_rangesiter1iter2r   s               r
   test_range_iteratorszRangeTest.test_range_iterators  s    *3 3 !rA2q5!QT153 13  - 3- 3- 3 3
 %+C C "(C#AC   sD) C) C) C C 	,-- + 
	JE3%d+EE3-E)00TBG''ugS'IU5#t45E$UC6E3::5#tLG''ugS'I
	J3Cs
   'C5C<c                     t        t        t        d                  }| j                  t        |ddd       t        t        t        ddz                    }| j                  t        |ddd       y )Nr   r(   r'   i  )r   r   r=   rA   rB   )r   rangeiter_typelong_rangeiter_types      r
   test_range_iterators_invocationz)RangeTest.test_range_iterators_invocation/  s\     d58n-)^Q1="4a4i(8#9:)%8!QBr   c           	      j    d fd	}t        d      t        d      t        ddd      t        ddd      t        t        j                  dz   t        j                  dz         fD ]L   |dd	        |dd
        |dd	        |d
d        |dd        |ddd	        |dd        |ddd       N y )Nc                     t        | ||      }j                  t        |         t              |          j                  t        |         t        t              |                y r   )slicer;   r<   r@   )r   r   r	   r"   rJ   r   s       r
   checkz#RangeTest.test_slice.<locals>.check8  sU    eT4(AT!A$Za4S1YDGAJ8r   r-   r   r(   	   r'      r,   r)   r      r   r0   r2   r   )r=   rD   rE   )r   r   rJ   s   ` @r
   
test_slicezRangeTest.test_slice7  s    	9 )(1a.1b/As{{2~6	 	A !QK!RL!QK"bM#sO"c1!RL"b"	r   c                 X   t        d      }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       t        ddd      }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       t        ddd	      }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       t        ddd
      }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       y )Nr-   r   r(   g      @gffffff@r0    r   r)   r4   r   r   s     r
   test_containsz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           	      *   t        d      t        d      t        ddd      t        ddd      t        t        j                  dz   t        j                  dz         fD ]5  }| j                  t	        t        |            t	        |      d d d          7 y )	Nr-   r   r(   r   r'   r   r,   r0   )r=   rD   rE   r;   r<   r   r   s     r
   test_reverse_iterationz RangeTest.test_reverse_iterationm  sx    )(1a.1b/As{{2~6	 	?A T(1+.Q">	?r   c                     t        t        ddd      j                  d       }h d}|D ]  }|D ]  }|dhz
  D ]
  }||||       y )Nr(   r   r)   r   >   Nr   r(   r)   r*   r   r   r   r   r   r   r   r   r/   r4   r0   r   )r=   r   indices)r   rJ   valuesr"   jks         r
   test_issue11845zRangeTest.test_issue11845v  sf    5B?**2./6 	A 1# Aa!eH	r   c                    t        d      t        dd      t        ddd      t        d      t        dd      t        ddd      t        ddd      t        d      t        dd	d      t        ddd      t        ddd      g}t        t        t        |            }|D cg c]  }|D ]  }||k(  	  }}}|D cg c]  }|D ]  }||k(  	  }}}| j	                  ||       |D cg c]  }|D ]  }||k7  	  }}}| j	                  ||D cg c]  }|  c}       |D ]3  }|D ],  }||k(  s	| j	                  t        |      t        |             . 5 | j                  t        d      d
k(  d       | j                  d
t        d      k(  d       | j                  t        d      ddgk(  d       | j	                  t        dddz  dz
  d      t        dddz  d             | j	                  t        t        dddz  dz
  d            t        t        dddz  d                   | j                  t        dddz  d      t        dddz  dz   d             | j	                  t        ddz  ddz  ddz  z
  ddz        t        ddz  ddz  ddz               | j	                  t        t        ddz  ddz  ddz  z
  ddz              t        t        ddz  ddz  ddz                     | j                  t        ddz  ddz  ddz        t        ddz  ddz  dz   ddz               | j                  t              5  t        d      t        d      k   d d d        | j                  t              5  t        d      t        d      kD   d d d        | j                  t              5  t        d      t        d      k   d d d        | j                  t              5  t        d      t        d      k\   d d d        y c c}}w c c}}w c c}}w c c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   nxY w# 1 sw Y   y xY w)Nr   r0   r(   r'   r*   rM   r)   r.   r+   r   Fr2         r   )
r=   r<   maptupler;   hashr   assertNotEqualrA   rB   )	r   r   test_tuplesrF   rG   	ranges_eq	tuples_eq	ranges_ner#   s	            r
   test_comparisonz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+FQQ!VFVF	F%0F+FQQ!VFVF	FI. &1F+FQQ!VFVF	FI$>qU$>?  	7A  76$$T!Wd1g67	7 	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   O98O?%P
P
9P.P#P(P4PP%(P14P=c                 ^   | j                  t        d      ddd       | j                  t        d      ddd       | j                  t        d      ddd       | j                  t        ddd      ddd       | j                  t        ddd      ddd       | j                  t        ddd      ddd       | j                  t        ddd      ddd       | j                  t        d      ddd       | j                  t        d	d      ddd       | j                  t        d	dd      ddd       y )
Nr   r(   r-   rp   r'   r0   r,   TF)assert_attrsr=   rO   s    r
   test_attributesz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                    | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j	                  t        |j                        t               | j	                  t        |j                        t               | j	                  t        |j                        t               | j                  t              5  d|_        d d d        | j                  t              5  d|_        d d d        | j                  t              5  d|_        d d d        | j                  t              5  |`d d d        | j                  t              5  |`d d d        | j                  t              5  |`d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   nxY w# 1 sw Y   ZxY w# 1 sw Y   y xY w)Nr   r-   r(   )	r;   r   r   r	   r   r   rU   rA   AttributeError)r   rangeobjr   r   r	   s        r
   r  zRangeTest.assert_attrs  s   /--d8>>*C0d8==)3/d8==)3/~. 	HN	~. 	HM	~. 	HM	 ~. 		~. 		~. 		 		 		 		 		 		 		 	sH   %F 
F,/F8G4GG F),F58GGGG%r   )!re   rf   rg   r%   rK   rP   rV   r_   ra   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  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__)unittestrD   r   r   test.supportr   r   r   TestCaser   re   mainr   r   r
   <module>r     sO     
   "5
}
!! }
~ zHMMO r   