
    <eb                         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                     dS dS )    N)	ALWAYS_EQc              #   j   K   | |z
  |z  dk     r"|| |z
  |z  z  }| |k    r| V  | |z  } | |k    d S d S d S )Nr    startstopsteps      &/usr/lib/python3.11/test/test_range.pypyranger   
   sh      !! 	%%tmmKKKTME tmmmm	 "! m    c                 H    || |z
  |z  z  }t          ||z
  | |z
  |           S N)r   r   s      r
   pyrange_reversedr      s1    UT\T!!D4$;te444r   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S )	RangeTestNc           	          |*t          j        ||          }t          j        ||          }t                      }t          j        |||          }t	          |          D ]\  }\  }}	||	k    r||k    r+|                     d                    |||	                     @|	|k    r+|                     d                    |||                     q|                     d                    |||	|                     d S )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   s8    !"e,,B!"e,,B88%b"AAA"5)) 	J 	JIAv1Avvh		 88>w18M8MO O O Oh		 ((.w1(=(=? ? ? ? 		 006w1a0H0HJ J J J	J 	Jr   c           
      
   |                      t          t          d                    g d           |                      t          t          dd                    g d           |                      t          t          d                    g            |                      t          t          d                    g            |                      t          t          ddd                    g d	           |                      t          t          dd
d                    g d           d}d}d}|                      t          t          ||dz                       ||dz   g           |                      t          t          |dz   |d                    |dz   |dz   g           |                      t          t          |dz   |d                    |dz   |dz   g           t          t          |||                    }|                     ||           |                     ||           |                      t          |          d           t          t          |||                     }|                     ||           |                     ||           |                      t          |          d           t          t          | | |                     }|                     | |           |                     | |           |                      t          |          d           |                     t          t                     |                     t          t          dddd           |                     t          t          ddd           |                     t          t          ddd           |                     t          t          ddd           |                     t          t          ddd           |                     t          t          ddd           |                     t          t          dd           |                     t          t          ddd           |                      t          t          dt          j
        t          j
        dz
                      d           t          t          j
         t          j
        d          }|                      t          |          t          j
                   d S )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-   eAhh333eAqkk**LLL999eAhh,,,eBii"---eAr1oo..			:::eAr2..//@@@eAqsmm,,q!A#h777eAaCB//001Q3!*===eAaCB//001Q3!*===5Aq>>""aC   S1%%%5Ar??##aC   S1%%%5!aR!$$%%qb#!S!!!S1%%%)U+++)UAq!Q777*eQ1555)UCA666)UAsA666)UAq#666)UE5%@@@)UAv666)UAr6:::U1ck3;q=AABBAFFF3;,Q//Q-----r   c           	         |                      t          d          5  t                       d d d            n# 1 swxY w Y   |                      t          d          5  t          dddddd           d d d            d S # 1 swxY w Y   d S )	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^   s   ##;
 
 	 	 GGG		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ##;
 
 	$ 	$ !Q1a###		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   7;;A??BBc           	      
   t          ddd          }|                     t          |          d           |                     t          t          |                    d           t          ddd          }|                     t          |          d           |                     t          t          |                    d           |                     |           t          ddd          }|                     t          |          d           |                     t          t          |                    d           |                     |           t          ddd          }|                     t          |          d           |                     t          t          |                    d           |                     |           t          ddz             t          dddz             t          dddz  d	          fD ]:}|                     t          |          g            |                     |           ;t          d
t          j        z            }t          dt          j        z            }t          dt          j        z            }|                     t          t          ||dz                       ||dz   g           |                     t          t          |dz   |d	                    |dz   |dz   g           |                     t          t          |dz   |d                    |dz   |dz   g           t          t          |||                    }| 	                    ||           | 
                    ||           |                     t          |          d           |                     |d         |           |                     |d	         ||z              t          t          |||                     }| 	                    ||           | 
                    ||           |                     t          |          d           |                     |d         |           |                     |d	         ||z
             t          t          | | |                     }| 	                    | |           | 
                    | |           |                     t          |          d           |                     |d         |            |                     |d	         | |z
             d S )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!WWq))))VQ''Q###T!WWq)))&)R((Q###T!WWq))))VR((Q###T!WWq))) C..AsF7##1c62&&( 	  	 A T!WWb)))QS[ !!ck!""S[ !!eAqsmm,,q!A#h777eAaCB//001Q3!*===eAaCB//0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          ||          }|                     ||           |                     ||           |                     t          t          |           |                     |           | 	                     ||          |           | 	                    |d         |           t           j        dz   }| 	                    ||         ||z              | 	                    |||dz            d         ||z              |                     t                    5  || dz
            d d d            n# 1 swxY w Y   |                     t                    5  ||          d d d            n# 1 swxY w Y   d}dt           j        z  }||z
  }t          ||          }|                     ||           |                     ||           |                     t          t          |           |                     |           | 	                     ||          |           | 	                    |d         |           t           j        dz   }| 	                    ||         ||z              | 	                    |||dz            d         ||z              |                     t                    5  || dz
            d d d            n# 1 swxY w Y   |                     t                    5  ||          d d d            n# 1 swxY w Y   d}t           j        dz  }dt           j        z  }d||z
  |z  z   }t          |||          }|                     ||           |                     ||           |                     t          t          |           |                     |           | 	                     ||          |           | 	                    |d         |           t           j        dz   }| 	                    ||         |||z  z              | 	                    |||dz            d         |||z  z              |                     t                    5  || dz
            d d d            n# 1 swxY w Y   |                     t                    5  ||          d d d            n# 1 swxY w Y   t           j        dz  }d}dt           j        z  }d||z
  |z  z   }t          |||          }|                     ||           |                     ||           |                     t          t          |           |                     |           | 	                     ||          |           | 	                    |d         |           t           j        dz   }| 	                    ||         |||z  z              | 	                    |||dz            d         |||z  z              |                     t                    5  || dz
            d d d            n# 1 swxY w Y   |                     t                    5  ||          d d d            d S # 1 swxY w Y   d S )Nc                     	 t          |           }n8# t          $ r+ | d         | d         z
  }d| d         | d         z
  |z  z   }Y nw xY w|S )Nr(   r   r0   )r@   OverflowError)r#   lengthr	   s      r
   
_range_lenz.RangeTest.test_large_range.<locals>._range_len   sf    6Q  6 6 6tad{quqt|456 Ms    2AA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K1u!QKKaA-a000A5551q!!!k!m33'''3s1u9a!C%000z** 	 	|mAo	 	 	 	 	 	 	 	 	 	 	 	 	 	 	z** 	 	lOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 O1u!QKKaA-a000A5551q!!!k!m33'''3s1u9a!C%000z** 	 	|mAo	 	 	 	 	 	 	 	 	 	 	 	 	 	 	z** 	 	lOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 KOckMAEa<'!QNNaA-a000A5551q!!!k!m3CE+++3s1u9a!SU)444z** 	 	|mAo	 	 	 	 	 	 	 	 	 	 	 	 	 	 	z** 	 	lOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 KOs{NAEa<'!QNNaA-a000A5551q!!!k!m3CE+++3s1u9a!SU)444z** 	 	|mAo	 	 	 	 	 	 	 	 	 	 	 	 	 	 	z** 	 	lOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   EE!E?	FFFK--K14K1	L''L+.L+RR #R 	SSS2YYY0	ZZ
Z
c           	         |                      t          t                     |                      t          t          dddd           |                      t          t          ddd           t	          dt
          j        z            }|                      t          t          ||dz   t	          d                     |                      t          t          ddd           |                      t          t          dd	d	           |                      t          t          dd
           |                      t          t          ddd
           |                      t          t          d           |                      t          t          dd           |                      t          t          dd           |                      t          t          dd           |                      t          t          ddd           |                      t          t          ddd           |                      t          t          ddd           |                      t          t          ddd           |                      t          t          ddd           |                      t          t          ddd           |                      t          t          ddd           d S )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77*eQ1555S[ !!*eQAs1vv>>>)UBB777)UE5%@@@)UAv666)UAr6::: 	)UC000)UAs333)UC333)UC555)UAq#666)UAsA666)UAsC888)UCA666)UCC888)UCa888)UCc:::::r   c                 N   t          d          }|                     |                    d          d           |                     |                    d          d           |                     t          |j        d           t          dd          }|                     |                    d          d           |                     |                    d          d           |                     t          |j                    G d dt                     G fdd	          }t          d
          }|                     |j         |                       t          dd          }|                     |                    d          d           |                     t          ddd                              d
          d           |                     t          ddd                              d          d           |                     t          d                              d          d           |                     t          d                              d          d           |                     t          t          dddz  d          j        ddz             |                     t          dddz  d                              ddz  dz             ddz             |                     t          d                              t                    d           d S )Nr)   r   r(   r4   r'   c                       e Zd ZdS )$RangeTest.test_index.<locals>.BadExcN)__name__
__module____qualname__r   r   r
   BadExcrd     s        Dr   rh   c                       e Zd Z fdZdS )$RangeTest.test_index.<locals>.BadCmpc                 (    |dk    r
             dS )Nr)   Fr   )r   otherrh   s     r
   __eq__z+RangeTest.test_index.<locals>.BadCmp.__eq__  s    A:: &((Nur   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   !HHQ'''Q'''*agq111"aLLQ'''Q''')QW---	 	 	 	 	Y 	 	 		 	 	 	 	 	 	 	 	 	 !HH&!'6688444"aLLQ'''q"a..q111555q#r**0044a888v,,Q//333v,,Z88*EEE*eAq#vq&9&9&?BGGGq!S&!,,221b57;;QUCCCr33Q77777r   c                    dt           j        z  }d} G d d          }|                     t          t	           ||           ||dz                                 |g           |                     t          t	           ||           ||dz                                 |g            G d d          }|                     t          t           |                        G d d	          }|                     t          t           |                       |                     t	          d
          d  |d                   t	          d                     |                     t                    5  t	          dd
          d  |                      d d d            n# 1 swxY w Y   |                     t                    5  t	          dd
          d  |                      d d d            d S # 1 swxY w Y   d S )Nr)   r:   c                       e Zd Zd Zd ZdS )+RangeTest.test_user_index_method.<locals>.Ic                 .    t          |          | _        d S 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	    vr   N)re   rf   rg   r}   r   r   r   r
   Irz   9  s2                 r   r   r(   c                       e Zd Zd ZdS ),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dS ),RangeTest.test_user_index_method.<locals>.INc                     dS )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  s   3;	 	 	 	 	 	 	 	
 	eAAfIIqq!}}==>>IIIeAAhKK8a<AABBXJOOO	# 	# 	# 	# 	# 	# 	# 	# 	,rrtt444	& 	& 	& 	& 	& 	& 	& 	& 	)UBBDD111 	r5AAaDD5)588444|,, 	  	 !RLL""$$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  y)) 	  	 !RLL""$$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s$   4!F!!F%(F%!G44G8;G8c           	         |                      t          d                              d          d           |                      t          d                              d          d           |                      t          d                              d          d           |                      t          d                              d          d           |                      t          d                              d          d           |                     t	          t          d                              d                    t
                     |                     t	          t          d                              d                    t
                     |                      t          d                              d          d           |                      t          d                              d          d           |                      t          d                              d          d           |                      t          dddz  d                              ddz            d           |                      t          dddz  d                              ddz  dz             d           |                      t          d	                              t                    d	           |                      t          t          t          j
        t          j
        d	z                       d	           d S )
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  st   q++Q///q**A...q**A...q**A...q**A...d588>>"--..444d588>>!,,--s333v,,Q//333v,,V44a888q**A...q!S&!,,221b5991===q!S&!,,221b57;;Q???r33R888U3;B??@@"EEEEEr   c           	      ,   |                      t          t          d                    d           |                      t          t          dd                    d           |                      t          t          ddd                    d           d S )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  sy    eAhh777eAqkk**M:::eAq!nn--/?@@@@@r   c                    ddddddddz  ddz  dz   fg}t          t          j        d	z             D ]}|D ]}|                     ||
          5  t          | }|                     t          t          j        t          j        ||                              t          |                     d d d            n# 1 swxY w Y   d S )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2Q677 	. 	.E . .\\A\66 . .q	A$$T&,v|Au7M7M*N*N%O%O%)!WW. . .. . . . . . . . . . . . . . ..	. 	.s   AB99B= B=c                    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  }Lt          t          j        dz             D ]x}|D ]q}|                     ||	          5  t	          t          |           x}}t          t          |           }t          j        ||          }t          j        |          }|                     t          |          t          |                     |                     t          |          |           t          j        |          }	 t          |           n# t          $ r Y d d d            w xY wt          j        ||          }t          j        |          }|                     t          |          |dd                     d d d            n# 1 swxY w Y   szd S )
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  su   ! ! !	 	 	A1ac
QqS!A#a%L1ac11qb"~Aqsb"qb\AaC1QB|	 II 62Q677 	9 	9E 9 9\\\33 9 9!%eQi0Bq	??DR//AaB$$T%[[$r((;;;$$T"XXt444aB!R( ! ! ! 9 9 9 9 9 9 9!R//AaB$$T"XXtABBx888!9 9 9 9 9 9 9 9 9 9 9 9 9 9 99	9 	9s8   B?GEG
E7	(G6E7	7AGG!Gc                 V   t          t          j        dz             D ]
}|                     |          5  t	          t          d                    }|                                \  }}}|                     |d           |                    d           |                                \  }}}|                     |d           t          j        ||          }t          j	        |          }|                     t          |          d           d d d            n# 1 swxY w Y   d S )Nr(   )r   l       r   l       )r=   r   r   r   r   
__reduce__r;   __setstate__r   r   r   )r   r   r   _r^   r   s         r
   (test_iterator_pickling_overflowing_indexz2RangeTest.test_iterator_pickling_overflowing_index  sH   62Q677 
	6 
	6EE** 	6 	6%	**++MMOO	1c  a(((	***MMOO	1c  i000LU++\!__  b9555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6
	6 
	6s   CDD 	#D 	c                    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        |          }|                     t          |          g            |                     t          |          g            d S )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2Q677 
	+ 
	+EaeQU1W%%AQAGG2a<< Q&&AaBT!WWb)))T"XXr****
	+ 
	+r   c                    t          t          j        dz             D ]}t          d          }t          |          }	 t	          |          }|dk    rnt          j        ||          }t          j        |          }|                     t          |          g            |                     t          |          g            d S )Nr(   r   T   r   r   s         r
   &test_large_exhausted_iterator_picklingz0RangeTest.test_large_exhausted_iterator_pickling  s    62Q677 
	+ 
	+Eb		AQAGG77 Q&&AaBT!WWb)))T"XXr****
	+ 
	+r   c                     |                      t                    5  t          g dd           d d d            d S # 1 swxY w Y   d S )Nr(   r0   )rA   rB   r=   rO   s    r
   test_odd_bugzRangeTest.test_odd_bug  s     y)) 	 	"a	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   :>>c                    |                      dt          d                     |                      dt          d                     |                      dt          d                     |                      t          t          d                      G d d          }|                      |            t          d                     |                      t	           |                      t          d                      G d dt                    }|                       |d	          t          d
                     |                       |d	          t          t          d
                               d S )Nr6   r'   Ty      ?        c                       e Zd Zd Zd ZdS ) RangeTest.test_types.<locals>.C2c                     dS Nr(   r   rO   s    r
   __int__z(RangeTest.test_types.<locals>.C2.__int__  s    aar   c                     dS 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dS ) RangeTest.test_types.<locals>.C3c                     dS )NTr   )r   rl   s     r
   rm   z'RangeTest.test_types.<locals>.C3.__eq__  s    DDr   Nrn   r   r   r
   C3r     s        00000r   r   r   r-   )r>   r=   r   r?   rU   r<   )r   r   r   s      r
   
test_typeszRangeTest.test_types  sX    	c588$$$dE!HH%%%dE!HH%%%iq***	* 	* 	* 	* 	* 	* 	* 	* 	uQxx(((c""$$iiq***	1 	1 	1 	1 	1 	1 	1 	1bbffeBii(((bbffd599oo.....r   c                    t          ddd          }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           t          ddd          }|                     d|           |                     d|           |                     d	|           |                     d|           t          ddd
          }|                     d|           |                     d	|           |                     d|           d S )Nr   e   r)   r(   c   r2   r0   r4   ir=   r>   r?   r   rJ   s     r
   test_strided_limitszRangeTest.test_strided_limits  sK   !S!aAaQc1a   !S"ab!c1a   !S"c1a   a     r   c                     t          d          }|                     d|           |                     d|           t          dd          }|                     d|           |                     d|           |                     d|           d S )Nr   r(   rp   r0   )r=   r?   r   s     r
   
test_emptyzRangeTest.test_empty  s    !HHAA!SMMAQAr   c                    d dD             fdD             }|D ]\  }}}t          |||          }t          |||          }d                    |||          }|                     |||d           t	          t          |||                    }t          |||          }d                    |||          }|                     |||d           d S )Nc                 F    g | ]}| | d z  d|d z  |fD ]}dD ]}||z   S )r)   r   )r4   r0   r   r(   r)   r   ).0r   basejiggles       r
   
<listcomp>z2RangeTest.test_range_iterators.<locals>.<listcomp>  so     3 3 3 !rA2q5!QT153 3 13 3  - 3 3 3 3 3r   )l        l            c                 .    g | ]}D ]}d D ]}|||fS ))l         i   r4   r0   r(   r)   r   )r   r   endr	   limitss       r
   r   z2RangeTest.test_range_iterators.<locals>.<listcomp>  sh     C C C "(C C#AC C   sD) C C C C Cr   zrange({}, {}, {})r2   )r   zreversed(range({}, {}, {})))r=   r   r   r%   reversedr   )	r   test_rangesr   r   r	   iter1iter2r   r   s	           @r
   test_range_iteratorszRangeTest.test_range_iterators  s-   3 3)3 3 3C C C C$*C C C
 !, 
	J 
	JE3%d++EE3--E)00TBBG''ugS'IIIU5#t4455E$UC66E3::5#tLLG''ugS'IIII
	J 
	Jr   c                 (   t          t          t          d                              }|                     t          |ddd           t          t          t          ddz                                }|                     t          |ddd           d S )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88nn--)^Q1==="4a4i(8(8#9#9::)%8!QBBBBBr   c           	          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 ]d |dd	            |dd
            |dd	            |d
d            |dd            |ddd	            |dd            |ddd           ed S )Nc                 4   t          | ||          }                    t          |                   t                    |                                        t          |                   t          t                    |                              d S r   )slicer;   r<   r@   )r   r   r	   r"   rJ   r   s       r
   checkz#RangeTest.test_slice.<locals>.check  st    eT4((AT!A$ZZa444S1YYDGGAJ88888r   r-   r   r(   	   r'      r,   r)   r      r   r0   r2   r   )r=   rD   rE   )r   r   rJ   s   ` @r
   
test_slicezRangeTest.test_slice  s   	9 	9 	9 	9 	9 	9 	9 ))((1a..1b//As{2~66	 	 	A E!QKKKE!RLLLE!QKKKE"bMMME#sOOOE"c1E!RLLLE"b"	 	r   c                 Z   t          d          }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           t          ddd          }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           t          ddd	          }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           t          ddd
          }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           d S )Nr-   r   r(   g      @gffffff@r0    r   r)   r4   r   r   s     r
   test_containszRangeTest.test_contains.  s   "IIaac1a   QQQ!Raac1a   QQQ!ROOaAa   a   QQQ!RAac1a   QQQr   c           	      f   t          d          t          d          t          ddd          t          ddd          t          t          j        dz   t          j        dz             fD ]H}|                     t	          t          |                    t	          |          d d d                    Id S )	Nr-   r   r(   r   r'   r   r,   r0   )r=   rD   rE   r;   r<   r   r   s     r
   test_reverse_iterationz RangeTest.test_reverse_iterationP  s    ))((1a..1b//As{2~66	 	? 	?A T(1++..Q">>>>	? 	?r   c                     t          t          ddd                              d           }h d}|D ]}|D ]}|dhz
  D ]}||||          d S )Nr(      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_issue11845Y  s    5B??**2../6 6 6 	 	A  1#  Aa!eHHH	 	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                              fd
D             }fdD             }|                     ||           fdD             }|                     |d |D                        D ]=}D ]8}||k    r0|                     t          |          t          |                     9>|                     t          d          dk    d           |                     dt          d          k    d           |                     t          d          ddgk    d           |                     t          dddz  dz
  d          t          dddz  d                     |                     t          t          dddz  dz
  d                    t          t          dddz  d                               |                     t          dddz  d          t          dddz  dz   d                     |                     t          ddz  ddz  ddz  z
  ddz            t          ddz  ddz  ddz                       |                     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                                 |                     t          ddz  ddz  ddz            t          ddz  ddz  dz   ddz                       |                     t                    5  t          d          t          d          k      d d d            n# 1 swxY w Y   |                     t                    5  t          d          t          d          k     d d d            n# 1 swxY w Y   |                     t                    5  t          d          t          d          k     d d d            n# 1 swxY w Y   |                     t                    5  t          d          t          d          k     d d d            d S # 1 swxY w Y   d S )Nr   r0   r(   r'   r*   rM   r)   r.   r+   c                 &    g | ]}D ]}||k    	S r   r   r   rF   rG   r   s      r
   r   z-RangeTest.test_comparison.<locals>.<listcomp>k  *    FFF+FFQQ!VFFFFr   c                 &    g | ]}D ]}||k    	S r   r   )r   rF   rG   test_tupless      r
   r   z-RangeTest.test_comparison.<locals>.<listcomp>l  r  r   c                 &    g | ]}D ]}||k    	S r   r   r  s      r
   r   z-RangeTest.test_comparison.<locals>.<listcomp>p  r  r   c                     g | ]}| S r   r   )r   r#   s     r
   r   z-RangeTest.test_comparison.<locals>.<listcomp>q  s    $>$>$>qU$>$>$>r   r   Fr2         r   )
r=   r<   maptupler;   hashr   assertNotEqualrA   rB   )r   	ranges_eq	tuples_eq	ranges_nerF   rG   r   r	  s         @@r
   test_comparisonzRangeTest.test_comparisonb  s   Qxxq"uQ1~~Qxxq!eAq!nnQ1~~uQxxq!QQ1~~uQ1~~7 3uk2233 GFFF[FFF	FFFF[FFF	I... GFFF[FFF	$>$>I$>$>$>???  	7 	7A  7 766$$T!WWd1gg6667
 	eAhh"ne,,,bE!HHne,,,eAhh1a&(%000 	q!S&1*a00q!S&!,,	. 	. 	.eAq#vz15566eAq#vq1122	4 	4 	4E!QVQ//!!QVaZ33	5 	5 	5q#vq#v2~q#v>>q#vq#vq#v66	8 	8 	8eAsFAsFQUNAsFCCDDeAsFAsFAsF;;<<	> 	> 	>E!S&!S&!S&99!!S&!S&1*af==	? 	? 	? y)) 	  	 !HHuQxx	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 y)) 	  	 !HHuQxx	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 y)) 	! 	!!HHa  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!y)) 	! 	!!HHa  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!sH   !O99O= O=!QQQ0!RR!$R!!S00S47S4c                     |                      t          d          ddd           |                      t          d          ddd           |                      t          d          ddd           |                      t          ddd          ddd           |                      t          ddd          ddd           |                      t          ddd          ddd           |                      t          ddd          ddd           |                      t          d          ddd           |                      t          d	d          ddd           |                      t          d	dd          ddd           d S )
Nr   r(   r-   rp   r'   r0   r,   TF)assert_attrsr=   rO   s    r
   test_attributeszRangeTest.test_attributes  sf   %((Aq!,,,%))QA...%**aa000%2q//1b!444%2q//1b!444%Ar**B2666%Ar**B2666%++q!Q///%t,,aA666%tT22Aq!<<<<<r   c                 F   |                      |j        |           |                      |j        |           |                      |j        |           |                     t          |j                  t                     |                     t          |j                  t                     |                     t          |j                  t                     |                     t                    5  d|_        d d d            n# 1 swxY w Y   |                     t                    5  d|_        d d d            n# 1 swxY w Y   |                     t                    5  d|_        d d d            n# 1 swxY w Y   |                     t                    5  |`d d d            n# 1 swxY w Y   |                     t                    5  |`d d d            n# 1 swxY w Y   |                     t                    5  |`d d d            d S # 1 swxY w Y   d S )Nr   r-   r(   )	r;   r   r   r	   r   r   rU   rA   AttributeError)r   rangeobjr   r   r	   s        r
   r  zRangeTest.assert_attrs  sO   ///------d8>**C000d8=))3///d8=))3///~.. 	 	HN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	~.. 	 	HM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	~.. 	 	HM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ~.. 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	~.. 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	~.. 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sl   3DDD,E  EE%E99E= E=F--F14F1G!!G%(G%HHH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      s       J J J J*.. .. ..`$ $ $6( 6( 6(pS S Sj; ; ;0"8 "8 "8H!  !  ! FF F F$A A A
. . .9 9 9<6 6 6+ + ++ + +  / / /0! ! !(  J J J0C C C  (        D? ? ?  2! 2! 2!j= = =    r   r   __main__)unittestrD   r   r   test.supportr   r   r   TestCaser   re   mainr   r   r
   <module>r!     s     



      " " " " " "  5 5 5
`
 `
 `
 `
 `
! `
 `
 `
D zHMOOOOO r   