B
    18™\  ã               @   sf   d Z 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rbe ¡  dS )	z'Unit tests for collections.defaultdict.é    N)Údefaultdictc               C   s   t S )N)Úlist© r   r   úY/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_defaultdict.pyÚfoobar   s    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   k	o¦|d k	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 ¡ y|d  W n2 t	k
rÎ } z|  |j
d¡ W d d }~X Y nX |  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Ú
assertTrueÚassertInÚkeysÚ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|k¡ |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 ¡ }zpt|dƒ}zVt||d t||d | d¡ |  | ¡ t|ƒd ¡ |  | ¡ t|ƒd ¡ W d | 	¡  X W d t
 |¡ X d S )	Nc               S   s   dS )Nr	   r   r   r   r   r   r   M   r(   z'TestDefaultDict.test_print.<locals>.foor   r   z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 k	¡ t|_t |¡}|  |jt¡ |  ||¡ d S )Nr   )r   r   r=   Údeepcopyr   r   r   r   )r   r   r    r   r   r   Útest_deep_copyƒ   s    

zTestDefaultDict.test_deep_copyc          
   C   sV   t ƒ }y|d  W n4 tk
rF } z|  |jd d¡ W d d }~X Y nX |  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   sj   G dd„ dt ƒ}|ƒ }|  t|ƒd¡ t ¡ }z*t|dƒ}zt||d W d | ¡  X W d t 	|¡ X 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 )N)Ú_factoryr   )r   r   r   r   Ú__init__š   s    z9TestDefaultDict.test_recursive_repr.<locals>.sub.__init__c             S   s   g S )Nr   )r   r   r   r   rF   œ   s    z9TestDefaultDict.test_recursive_repr.<locals>.sub._factoryN)Ú__name__Ú
__module__Ú__qualname__rG   rF   r   r   r   r   Úsub™   s   rK   zBsub\(<bound method .*sub\._factory of sub\(\.\.\., \{\}\)>, \{\}\)zw+)r.   )
r   ÚassertRegexr)   r0   r1   r2   r3   r6   r7   r8   )r   rK   r?   r9   r:   r   r   r   Útest_recursive_repr—   s    

z#TestDefaultDict.test_recursive_reprc             C   s   |   tti ¡ d S )N)r   r   r   )r   r   r   r   Útest_callable_arg¯   s    z!TestDefaultDict.test_callable_argc             C   sN   t tƒ}|d  x8ttjd ƒD ]&}t ||¡}t |¡}|  ||¡ q W d S )Nr   )r   r+   ÚrangeÚpickleÚHIGHEST_PROTOCOLÚdumpsÚloadsr   )r   r?   ÚprotoÚsÚor   r   r   Útest_pickling²   s    
zTestDefaultDict.test_picklingN)rH   rI   rJ   r"   r$   r-   r;   rA   rB   rD   rE   rM   rN   rW   r   r   r   r   r      s   $
	r   Ú__main__)Ú__doc__r7   r=   rP   r0   ÚunittestÚcollectionsr   r   ÚTestCaser   rH   Úmainr   r   r   r   Ú<module>   s    -