a
    zekK                     @   sV   d dl mZmZ d dlZd dlZd dlZdZdZG dd dejZ	e
dkrRe  dS )    )support	seq_testsNFc                       s   e Zd ZeZdd Z fddZdd Z fddZ fd	d
Z	 fddZ
 fddZdd Zdd Zdd Zdd Zdd Zdd Zejdd Zdd Zejdd  Zejd!d" Zejd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Z  ZS )/	TupleTestc                 C   s@   d}d}|  t| |d  W d    n1 s20    Y  d S )N z(tuple indices must be integers or slicesa)assertRaisesRegex	TypeError)selftmsgr   r   %/usr/lib/python3.9/test/test_tuple.pytest_getitem_error   s    zTupleTest.test_getitem_errorc                    s   t    | t d d}t|}| ||u  | tg d | tg dd | tdd | tdd | tdd tdD d	 d S )
Nr   )r             Zspam)spr   mc                 s   s   | ]}|d  r|V  qdS )r   Nr   .0xr   r   r   	<genexpr>&       z.TupleTest.test_constructors.<locals>.<genexpr>
   )r   r         	   )supertest_constructorsassertEqualtuple
assertTruerange)r	   Zt0_3Zt0_3_bis	__class__r   r   r      s    
zTupleTest.test_constructorsc                 C   s:   |  td tdd W d    n1 s,0    Y  d S )Nzkeyword argumentr   )Zsequence)r   r   r!   r	   r   r   r   test_keyword_args)   s    zTupleTest.test_keyword_argsc                    s"   t    | d | d d S )NT)*   )r   
test_truthr"   r&   r$   r   r   r)   -   s    

zTupleTest.test_truthc                    s>   t    | tdd | tdd | tdd d S )Nr   r   r   r   r   r   r   r   )r   test_lenr    lenr&   r$   r   r   r,   2   s    
zTupleTest.test_lenc                    s,   t    d}|}|d7 }| ||u d S )Nr   r   r   r   )r   	test_iaddr"   r	   uu2r$   r   r   r0   8   s
    
zTupleTest.test_iaddc                    s,   t    d}|}|d9 }| ||u d S )Nr.   r   )r   	test_imulr"   r1   r$   r   r   r4   ?   s
    
zTupleTest.test_imulc                 C   s*   dd }|  tt| ttd d S )Nc                  s   s   t dD ]
} | V  qd S )N  )r#   )ir   r   r   fH   s    z(TupleTest.test_tupleresizebug.<locals>.fr5   )r    listr!   r#   )r	   r7   r   r   r   test_tupleresizebugF   s    zTupleTest.test_tupleresizebugc                    sL    fdd}|ddd |ddd |d	d
d |ddd |ddd d S )Nc                    sF   t | }tjdkr|n|}||krBd| d| d| } | d S )N    z
FAIL hash(z) ==  != )hashr   	NHASHBITSfail)r
   Ze32Ze64gotexpectedr   r&   r   r   check_one_exactQ   s
    z2TupleTest.test_hash_exact.<locals>.check_one_exactr   is,l   {tYxYN} r*   im<iHl"$/K r   r   i lOP+c
+ )      ?im{l"$w(P-)rC   r   )r   )      i_*lteL r   )r	   rA   r   r&   r   test_hash_exactP   s    zTupleTest.test_hash_exactc                    s  ddl m} tsd S d0 fdd	d1fdd	}|dt|tdd	d
dddd ttddttd }|dt||dd
dddd ~dd tdD }|dt||d	d
dddd ~|dt|dd	gdd
dddd |dt|ddgdd
dddd |d t|d!dd
d"d# d$}tt|}t||d%d
}|t||| t||| | tt| }|d&|d'dd(d ~~~d)}	d*d t|	 |	d+ D }
|
d,d |
D  }t||
d%d
}|t||
d	d
 }|t||
dd
 }|
}|d-d || D 7 }||||7 }|||d%d
7 }||||7 }|||||7 }|||||7 }|||||7 }|||dd
7 }|d.|ddd/d d S )2Nr   )productc                    s  ddl m} t|}t||\}}||}	|t|	 }
|
| | }t|	 d }~	|
|f}d}d}|d ur||krd}d| d}|d ur||krd}|d	| d
| d7 }|str| |  d|dd|dd}|d|
dd|d7 }trdd l}t	||j
d n
 | d S )Nr   )Counterr   Fr   Tz	FAIL z > ; zFAIL r;   z	; pileup ,z mean z.1f zcoll z z z+.1f)file)collectionsrI   r-   r   Zcollision_statsmaxvaluesJUST_SHOW_HASH_RESULTSsysprint
__stdout__r>   )tagZnbinshashesr@   zlimitrI   ZnballsmeanZsdevcZ
collisionszZpileupr?   Zfailedprefixr   rR   r&   r   r   tryone_innerp   s0    
z2TupleTest.test_hash_optional.<locals>.tryone_innerc           	         s   t j}ttt|}| d| d d|> ||dkr8|n|| |dkr|d | d dfdd|D || d	 | d
 d fdd|D || d S )NrJ   z-bit hash codesr   r:   z; 32-bit upper hash codesl        c                    s   g | ]}| ? qS r   r   r   h)shiftr   r   
<listcomp>   r   z@TupleTest.test_hash_optional.<locals>.tryone.<locals>.<listcomp>l    z; 32-bit lower hash codesc                    s   g | ]}| @ qS r   r   r]   )maskr   r   r`      r   )r   r=   r8   mapr<   )	rU   ZxsZnative32Znative64Zhi32Zlo32rW   r=   rV   )r\   )ra   r_   r   tryone   s.    z,TupleTest.test_hash_optional.<locals>.tryonezrange(100) by 3d   r   )repeatrB   )rE   r   ir   z-10 .. 8 by 4rE   c                 S   s   g | ]}|d > qS )<   r   )r   nr   r   r   r`      r   z0TupleTest.test_hash_optional.<locals>.<listcomp>z0..99 << 60 by 3)iD  r   z[-3, 3] by 18   )r   r   )rF   r   z[0, 0.5] by 18rC   )r   r   )r   r   )   r   z4-char tuplesabcdefghijklmnopqrstuvwxyzg      @)rW   2   r   zold tuple test)r   r   )4   1   r   c                 S   s   g | ]}|d kr|qS )rf   r   r   r   r   r   r`      r   r   c                 S   s   g | ]
}|fqS r   r   r   r   r   r   r   r`      r   c                 S   s   g | ]
}|fqS r   r   rp   r   r   r   r`      r   znew tuple test)   r   )NN)NNNNN)	itertoolsrH   RUN_ALL_HASH_TESTSr8   r#   zip)r	   rH   rc   ZcandsLNbaseZxpZinpsrh   ABZL2ZL3ZL4Tr   )r	   r\   r   test_hash_optionalf   s|      	
zTupleTest.test_hash_optionalc                 C   sj   t  }d}| |}| |}| t|t| | t|t| | t|d | t|d d S )Nr+   z()z	(0, 1, 2))r!   	type2testr    strrepr)r	   Zl0l2Za0Za2r   r   r   	test_repr   s    

zTupleTest.test_reprc                 C   s&   t   t   | t || d S N)gccollectZassertFalse
is_trackedr	   r
   r   r   r   _not_tracked
  s    zTupleTest._not_trackedc                 C   s8   |  t|| t  t  |  t|| d S r   )r"   r   r   r   r   r   r   r   _tracked  s    zTupleTest._trackedc                 C   s   ddg   }}}|  d |  d |  d |  d |  ddd	tf |  t f |  d|f|d
f | g f | dgf | i f | t f | |||f d S )N      ?r   r   )r   r   r   )r   r   r   r   r   )NTFr   r/   )r   intobjectr   set)r	   r   yrZ   r   r   r   test_track_literals  s    



zTupleTest.test_track_literalsc                    s^  ddg   }}}|r| j n| j}|   | g  | t  | d||g | dd d||fD  | td||g | dd d||fD  |t fddd||fD  |   |g |   ||gg |   ||ig |   dd |||fD  |   d	d |||fD  |  t fd
d|||fD  d S )Nr   r   r   c                 s   s   | ]
}|V  qd S r   r   r   objr   r   r   r   3  r   z0TupleTest.check_track_dynamic.<locals>.<genexpr>c                 s   s   | ]}t |gV  qd S r   r!   r   r   r   r   r   5  r   c                 3   s   | ]} |gV  qd S r   r   r   tpr   r   r   6  r   c                 s   s   | ]
}|V  qd S r   r   r   r   r   r   r   ;  r   c                 s   s   | ]}t |gV  qd S r   r   r   r   r   r   r   <  r   c                 3   s   | ]} |gV  qd S r   r   r   r   r   r   r   =  r   )r   r   r   r!   )r	   r   Zalways_trackr   r   rZ   checkr   r   r   check_track_dynamic+  s     
 zTupleTest.check_track_dynamicc                 C   s   |  td d S )NF)r   r!   r&   r   r   r   test_track_dynamic?  s    zTupleTest.test_track_dynamicc                 C   s    G dd dt }| |d d S )Nc                   @   s   e Zd ZdS )z.TupleTest.test_track_subtypes.<locals>.MyTupleN__name__
__module____qualname__r   r   r   r   MyTupleG  s   r   T)r!   r   )r	   r   r   r   r   test_track_subtypesD  s    zTupleTest.test_track_subtypesc                 C   s    |  tdd tdD  d S )Nc                 s   s   | ]}t  V  qd S r   )r   r   )r   r6   r   r   r   r   N  r   z)TupleTest.test_bug7466.<locals>.<genexpr>e   )r   r!   r#   r&   r   r   r   test_bug7466K  s    zTupleTest.test_bug7466c                    s     fdd}|d |d d S )Nc                    s4   d|  }t |} |dddg|   d  d S )Nr*   (z, 0))r~   r    join)rh   lr   r&   r   r   r   R  s
    z(TupleTest.test_repr_large.<locals>.checkr   i@B r   )r	   r   r   r&   r   test_repr_largeP  s    zTupleTest.test_repr_largec                 C   s   |  g d}ttjd D ]}t|}t||}t|}| t|t| | |  ||  | t|}t	| t||}| |  ||  |dd   qd S N)rE   r   rF   r   r   )
r|   r#   pickleHIGHEST_PROTOCOLiterdumpsloadsr    typenextr	   dataprotoZitorgditr   r   r   test_iterator_pickleZ  s    

zTupleTest.test_iterator_picklec                 C   s   |  g d}ttjd D ]}t|}t||}t|}| t|t| | |  ||  t| t|}t	| t||}| |  ||  t|dd   qd S r   )
r|   r#   r   r   reversedr   r   r    r   r   r   r   r   r   test_reversed_picklej  s    

zTupleTest.test_reversed_picklec                 C   sL   G dd dt }| t dg|d  W d    n1 s>0    Y  d S )Nc                   @   s   e Zd ZdS )z+TupleTest.test_no_comdat_folding.<locals>.TNr   r   r   r   r   rz   |  r   rz   r   r   )r!   ZassertRaisesr   )r	   rz   r   r   r   test_no_comdat_foldingx  s    z TupleTest.test_no_comdat_foldingc                 C   sF   |  ddg}|  g d}|  ddg}| || | || d S )Nr   r   )r   r   r   r   )r|   Z
assertLess)r	   r   brY   r   r   r   test_lexicographic_ordering  s
    z%TupleTest.test_lexicographic_ordering)r   r   r   r!   r|   r   r   r'   r)   r,   r0   r4   r9   rG   r{   r   r   r   r   Zcpython_onlyr   r   r   r   r   r   r   r   r   r   __classcell__r   r   r$   r   r      s:   
 




r   __main__)testr   r   Zunittestr   r   rs   rQ   Z
CommonTestr   r   mainr   r   r   r   <module>   s   
   V