a
    äze®  ã                   @   sb   d dl Z d dlZd dlZd dlZd dlZd dlmZ dd„ ZG dd„ dejƒZ	e
dkr^e ¡  dS )é    N)Údefaultdictc                   C   s   t S ©N)Úlist© r   r   ú+/usr/lib/python3.9/test/test_defaultdict.pyÚfoobar   s    r   c                   @   sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestDefaultDictc              
   C   sî  t ƒ }|  |jd ¡ t|_|d  d¡ |  |ddgi¡ |d  d¡ |  |dddgi¡ |d  |d  |  |ddgg g dœ¡ |  |d |d   uo¦|d un  ¡ t tddd	}|  |jt¡ |  |ddd	œ¡ |  |d
 d¡ |  |d d¡ |  |d g ¡ |  d
|¡ |  d
| ¡ ¡ |  d|¡ |  d| ¡ ¡ |  d|¡ |  d| ¡ ¡ |  d|¡ |  d| ¡ ¡ d |_|  |jd ¡ z|d  W n4 t	yÐ } z|  |j
d¡ W Y d }~nd }~0 0 |  d¡ |  tt d¡ d S )Né   é*   é   é   é   )r	   r   r   é   é   )ÚfooÚbarr   r   é   )r   zd2[15] didn't raise KeyError)r   ÚassertEqualÚdefault_factoryr   ÚappendÚ
assertTrueZassertInÚkeysZassertNotInÚKeyErrorÚargsÚfailÚassertRaisesÚ	TypeError)ÚselfÚd1Úd2Úerrr   r   r   Ú
test_basic   sB    *$
zTestDefaultDict.test_basicc                 C   s2   t ƒ }|  t|jd¡ t|_|  | d¡g ¡ d S ©Nr
   )r   r   r   Ú__missing__r   r   r   )r   r   r   r   r   Útest_missing4   s    zTestDefaultDict.test_missingc                 C   sÂ   t ƒ }|  |jd ¡ |  t|ƒd¡ |  tt|ƒƒ|¡ d|d< |  t|ƒd¡ t tƒ}|  |jt¡ d|d< |  t|ƒd¡ dd	„ }t |ƒ}|  |j|u ¡ |d
  |  t|ƒdt|ƒ ¡ d S )Nzdefaultdict(None, {})é)   é   zdefaultdict(None, {11: 41})r
   r	   z$defaultdict(<class 'int'>, {12: 42})c                   S   s   dS )Né+   r   r   r   r   r   r   E   ó    z&TestDefaultDict.test_repr.<locals>.foor   zdefaultdict(%s, {13: 43}))r   r   r   ÚreprÚevalÚintr   )r   r   r   r   Úd3r   r   r   Ú	test_repr:   s    zTestDefaultDict.test_reprc              	   C   s¸   t ƒ }dd„ }t |ddiƒ}t ¡ }z‚t|dƒ}z^t||d t||d | d¡ |  | ¡ t|ƒd ¡ |  | ¡ t|ƒd ¡ W | 	¡  n
| 	¡  0 W t
 |¡ nt
 |¡ 0 d S )	Nc                   S   s   dS r"   r   r   r   r   r   r   M   r(   z'TestDefaultDict.test_print.<locals>.foor   r   úw+©Úfiler   Ú
)r   ÚtempfileÚmktempÚopenÚprintÚseekr   Úreadliner)   ÚcloseÚosÚremove)r   r   r   r   ÚtfnÚfr   r   r   Ú
test_printK   s    

zTestDefaultDict.test_printc                 C   sò   t ƒ }| ¡ }|  t|ƒt ¡ |  |jd ¡ |  |i ¡ t|_| ¡ }|  t|ƒt ¡ |  |jt¡ |  |i ¡ |d  | ¡ }|  t|ƒt ¡ |  |jt¡ |  |dg i¡ |d  |  |g g dœ¡ t ƒ }d|d< | ¡ }|  |d d¡ d S )Nr
   r	   )r
   r	   Úa)r   Úcopyr   Útyper   r   )r   r   r   r,   Zd4ÚdÚer   r   r   Ú	test_copy`   s*    zTestDefaultDict.test_copyc                 C   s`   t tddiƒ}t |¡}|  |jt¡ |  ||¡ t|_t |¡}|  |jt¡ |  ||¡ d S ©Nr   )r   r   r?   r   r   r   ©r   r   r   r   r   r   Útest_shallow_copyy   s    

z!TestDefaultDict.test_shallow_copyc                 C   sx   t tddgiƒ}t |¡}|  |jt¡ |  ||¡ |  |d |d u¡ t|_t |¡}|  |jt¡ |  ||¡ d S rD   )r   r   r?   Údeepcopyr   r   r   r   rE   r   r   r   Útest_deep_copyƒ   s    

zTestDefaultDict.test_deep_copyc              
   C   sX   t ƒ }z|d  W n6 tyH } z|  |jd d¡ W Y d }~nd }~0 0 |  d¡ d S )N)r   r   zexpected KeyError)r   r   r   r   r   )r   r   r    r   r   r   Útest_keyerror_without_factoryŽ   s    (z-TestDefaultDict.test_keyerror_without_factoryc              	   C   s|   G dd„ dt ƒ}|ƒ }|  t|ƒd¡ t ¡ }z<t|dƒ}zt||d W | ¡  n
| ¡  0 W t 	|¡ nt 	|¡ 0 d S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )z0TestDefaultDict.test_recursive_repr.<locals>.subc                 S   s   | j | _d S r   )Ú_factoryr   ©r   r   r   r   Ú__init__š   s    z9TestDefaultDict.test_recursive_repr.<locals>.sub.__init__c                 S   s   g S r   r   rK   r   r   r   rJ   œ   s    z9TestDefaultDict.test_recursive_repr.<locals>.sub._factoryN)Ú__name__Ú
__module__Ú__qualname__rL   rJ   r   r   r   r   Úsub™   s   rP   zBsub\(<bound method .*sub\._factory of sub\(\.\.\., \{\}\)>, \{\}\)r.   r/   )
r   ZassertRegexr)   r2   r3   r4   r5   r8   r9   r:   )r   rP   rA   r;   r<   r   r   r   Útest_recursive_repr—   s    
ÿ
z#TestDefaultDict.test_recursive_reprc                 C   s   |   tti ¡ d S r   )r   r   r   rK   r   r   r   Útest_callable_arg¯   s    z!TestDefaultDict.test_callable_argc                 C   sJ   t tƒ}|d  ttjd ƒD ]&}t ||¡}t |¡}|  ||¡ qd S rD   )r   r+   ÚrangeÚpickleÚHIGHEST_PROTOCOLÚdumpsÚloadsr   )r   rA   ÚprotoÚsÚor   r   r   Útest_pickling²   s    
zTestDefaultDict.test_picklingc                 C   s  t tdddœƒ}t tdddœƒ}||B }|  |jt¡ |  |ddddœ¡ |  t|ƒg d¢¡ ||B }|  |jt¡ |  |ddddœ¡ |  t|ƒg d¢¡ |t|ƒB }|  |jt¡ |  |ddddœ¡ |  t|ƒg d¢¡ t|ƒ|B }|  |jt¡ |  |ddddœ¡ |  t|ƒg d¢¡ |  	t
¡  |t| ¡ ƒB  W d   ƒ n1 sR0    Y  |  	t
¡  t| ¡ ƒ|B  W d   ƒ n1 sŽ0    Y  |t| ¡ ƒO }|  |jt¡ |  |ddddœ¡ |  t|ƒg d¢¡ |  	t
¡ |d O }W d   ƒ n1 s0    Y  d S )	Nr   r   )r   r   ZzeroZone)r   r   )r   r   r   )r   r   r   )r   r+   ÚstrZassertIsr   ZassertDictEqualr   r   Údictr   r   Úitems)r   ÚirY   Zi_sZs_iZi_dsZds_ir   r   r   Ú
test_unionº   s8    00zTestDefaultDict.test_unionN)rM   rN   rO   r!   r$   r-   r=   rC   rF   rH   rI   rQ   rR   r[   r`   r   r   r   r   r      s   $
	r   Ú__main__)r9   r?   rT   r2   ZunittestÚcollectionsr   r   ZTestCaser   rM   Úmainr   r   r   r   Ú<module>   s    S