o
    HXîh‚  ã                   @   sh   	 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r2e ¡  dS dS )é    N)Údefaultdictc                   C   s   t S ©N)Úlist© r   r   ú?/opt/python-3.10.19/usr/lib/python3.10/test/test_defaultdict.pyÚfoobar   ó   r   c                   @   sd   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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oS|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 n t	yç } z|  |j
d¡ W Y d }~n
d }~ww |  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   sF   *€ÿ
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   s    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 ƒ }| ¡ }|  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_copyK   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_copyd   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 r3   )r   r   r.   Údeepcopyr   r   r   r   r4   r   r   r   Útest_deep_copyn   s   

zTestDefaultDict.test_deep_copyc              
   C   sZ   t ƒ }z|d  W n ty% } z|  |jd d¡ W Y d }~d S d }~ww |  d¡ d S )N)r   r   zexpected KeyError)r   r   r   r   r   )r   r   r!   r   r   r   Útest_keyerror_without_factoryy   s    €ÿz-TestDefaultDict.test_keyerror_without_factoryc                 C   s*   G dd„ dt ƒ}|ƒ }|  t|ƒd¡ 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   r:   r   r   r   r9   ‡   r   z9TestDefaultDict.test_recursive_repr.<locals>.sub._factoryN)Ú__name__Ú
__module__Ú__qualname__r;   r9   r   r   r   r   Úsub„   s    r?   zBsub\(<bound method .*sub\._factory of sub\(\.\.\., \{\}\)>, \{\}\))r   ZassertRegexr(   )r   r?   r0   r   r   r   Útest_recursive_repr‚   s
   
ÿz#TestDefaultDict.test_recursive_reprc                 C   s   |   tti ¡ d S r   )r   r   r   r:   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 r3   )r   r*   ÚrangeÚpickleÚHIGHEST_PROTOCOLÚdumpsÚloadsr   )r   r0   Ú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 s¨w   Y  |  	t
¡ t| ¡ ƒ|B  W d   ƒ n1 sÅw   Y  |t| ¡ ƒO }|  |jt¡ |  |ddddœ¡ |  t|ƒg d¢¡ |  	t
¡ |d O }W d   ƒ d S 1 sw   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   ÚirH   Zi_sZs_iZi_dsZds_ir   r   r   Ú
test_union™   s>   ÿÿ
$ÿzTestDefaultDict.test_unionN)r<   r=   r>   r"   r$   r,   r2   r5   r7   r8   r@   rA   rJ   rO   r   r   r   r   r	      s    $
	r	   Ú__main__)Úosr.   rC   ÚtempfileZunittestÚcollectionsr   r   ZTestCaser	   r<   Úmainr   r   r   r   Ú<module>   s     2ÿ