o
    HXhkK                     @   sZ   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r+e  dS 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   sB   d}d}|  t| |d  W d    d S 1 sw   Y  d S )N z(tuple indices must be integers or slicesa)assertRaisesRegex	TypeError)selftmsgr   r   9/opt/python-3.10.19/usr/lib/python3.10/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>&   s    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    d S 1 sw   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   r/   8   
   
zTupleTest.test_iaddc                    s,   t    d}|}|d9 }| ||u d S )Nr-   r   )r   	test_imulr!   r0   r#   r   r   r4   ?   r3   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                    sJ   t | }tjdkr|n|}||kr#d| d| d| } | d S 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rC||krCd}d| d}|d urX||krXd}|d	| d
| d7 }|s\tr| |  d|dd|dd}|d|
dd|d7 }trdd l}t	||j
d d S  | d S 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   s2   z2TupleTest.test_hash_optional.<locals>.tryone_innerc           	         s   t j}ttt|}| d| d d|> ||dkr|n|| |dkrN|d | d dfdd|D || d	 | d
 d fdd|D || d S 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>       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`      ra   )r   r=   r8   mapr<   )	rU   ZxsZnative32Znative64Zhi32Zlo32rW   r=   rV   )r\   )rb   r_   r   tryone   s0   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`      ra   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 )rg   r   r   r   r   r   r`      s    r   c                 S      g | ]}|fqS r   r   r   r   r   r   r   r`          c                 S   rq   r   r   rr   r   r   r   r`      rs   znew tuple test)   r   )NN)NNNNN)	itertoolsrH   RUN_ALL_HASH_TESTSr8   r"   zip)r	   rH   rd   ZcandsLNbaseZxpZinpsri   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       | ]}|V  qd S r   r   r   objr   r   r   r   3      z0TupleTest.check_track_dynamic.<locals>.<genexpr>c                 s       | ]}t |gV  qd S r   r    r   r   r   r   r   5      c                 3       | ]} |gV  qd S r   r   r   tpr   r   r   6  r   c                 s   r   r   r   r   r   r   r   r   ;  r   c                 s   r   r   r   r   r   r   r   r   <  r   c                 3   r   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                   @      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  s    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)ri   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 ]F}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 ]J}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   sN   G dd dt }| t dg|d  W d    d S 1 s w   Y  d S )Nc                   @   r   )z+TupleTest.test_no_comdat_folding.<locals>.TNr   r   r   r   r   r}   |  s    r}   r   r   )r    ZassertRaisesr   )r	   r}   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+   r/   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   rv   rQ   Z
CommonTestr   r   mainr   r   r   r   <module>   s    
   V