U
    Æ½„ba  ã                   @   s  d dl mZ d dlZd dlZd dlmZ zd dlmZ W n ek
rP   dZY nX zd dl	m
Z
 W n4 ek
r–   G dd„ deƒZG dd	„ d	eƒZY nX e
dd
gƒZe
d	ddgƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdd„ dd„ dd„ gZG dd„ dejƒZdS )é    )Úabsolute_importN)ÚStringIO)Úmock)Ú
namedtuplec                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚValuec                 G   s   t  | |¡S ©N©ÚtupleÚ__new__©ÚclsÚargs© r   úD/tmp/pip-unpacked-wheel-9yxrzpkm/simplejson/tests/test_namedtuple.pyr
      s    zValue.__new__c                 C   s   d| d iS )NÚvaluer   r   ©Úselfr   r   r   Ú_asdict   s    zValue._asdictN©Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚPointc                 G   s   t  | |¡S r   r   r   r   r   r   r
      s    zPoint.__new__c                 C   s   | d | d dœS )Nr   é   )ÚxÚyr   r   r   r   r   r      s    zPoint._asdictNr   r   r   r   r   r      s   r   r   r   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	DuckValuec                 G   s   t |Ž | _d S r   )r   r   ©r   r   r   r   r   Ú__init__   s    zDuckValue.__init__c                 C   s
   | j  ¡ S r   )r   r   r   r   r   r   r   "   s    zDuckValue._asdictN©r   r   r   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	DuckPointc                 G   s   t |Ž | _d S r   )r   Úpointr   r   r   r   r   &   s    zDuckPoint.__init__c                 C   s
   | j  ¡ S r   )r!   r   r   r   r   r   r   )   s    zDuckPoint._asdictNr   r   r   r   r   r    %   s   r    c                   @   s   e Zd ZdZdS )ÚDeadDuckN©r   r   r   r   r   r   r   r   r"   ,   s   r"   c                   @   s   e Zd ZdZdS )ÚDeadDictNr#   r   r   r   r   r$   /   s   r$   c                 C   s   | S r   r   ©Úvr   r   r   Ú<lambda>3   ó    r'   c                 C   s   | gS r   r   r%   r   r   r   r'   4   r(   c                 C   s
   d| igS )NÚkeyr   r%   r   r   r   r'   5   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S )ÚTestNamedTuplec                 C   s    t dƒtddƒtdƒtddƒfD ]z}| ¡ }|  |t t |¡¡¡ |  |t tj|dd�¡¡ |  |t tj|dd�¡¡ |  |t tj|ddd�¡¡ q d S ©Nr   é   T©Únamedtuple_as_objectF)Útuple_as_array)r.   r/   )	r   r   r   r    r   ÚassertEqualÚjsonÚloadsÚdumps)r   r&   Údr   r   r   Útest_namedtuple_dumps9   s    $þÿþz$TestNamedTuple.test_namedtuple_dumpsc              
   C   sV   t dƒtddƒfD ]>}t|ƒ}|  |t tj|dd�¡¡ | jttj|ddd� qd S ©Nr   r,   Fr-   )r/   r.   )	r   r   Úlistr0   r1   r2   r3   ÚassertRaisesÚ	TypeError)r   r&   Úlr   r   r   Útest_namedtuple_dumps_falseF   s    þ ÿz*TestNamedTuple.test_namedtuple_dumps_falsec                 C   sà   t dƒtddƒtdƒtddƒfD ]º}| ¡ }tƒ }t ||¡ |  |t 	| 
¡ ¡¡ tƒ }tj||dd� |  |t 	| 
¡ ¡¡ tƒ }tj||dd� |  |t 	| 
¡ ¡¡ tƒ }tj||ddd� |  |t 	| 
¡ ¡¡ q d S r+   )r   r   r   r    r   r   r1   Údumpr0   r2   Úgetvalue)r   r&   r4   Úsior   r   r   Útest_namedtuple_dumpO   s,    $þ
ÿþz#TestNamedTuple.test_namedtuple_dumpc              	   C   sj   t dƒtddƒfD ]R}t|ƒ}tƒ }tj||dd� |  |t | ¡ ¡¡ | j	t
tj|tƒ ddd� qd S r6   )r   r   r7   r   r1   r<   r0   r2   r=   r8   r9   )r   r&   r:   r>   r   r   r   Útest_namedtuple_dump_falsed   s    þ ÿz)TestNamedTuple.test_namedtuple_dump_falsec                 C   sb   t D ]X}| jttj|tƒ ƒtƒ dd� tƒ }tj|tƒ ƒ|dd� |  t 	|i ƒ¡| 
¡ ¡ qd S ©NTr-   )ÚCONSTRUCTORSr8   r9   r1   r<   r"   r   r$   r0   r3   r=   )r   Úfr>   r   r   r   Útest_asdict_not_callable_dumpo   s       ÿþz,TestNamedTuple.test_asdict_not_callable_dumpc                 C   sN   t D ]D}| jttj|tƒ ƒdd� |  t |i ƒ¡tj|tƒ ƒdd�¡ qd S rA   )rB   r8   r9   r1   r3   r"   r0   r$   )r   rC   r   r   r   Útest_asdict_not_callable_dumpsy   s      ÿþz-TestNamedTuple.test_asdict_not_callable_dumpsc              	   C   s�   t s&ttdƒrt d¡‚ntdƒ d S t  ¡ }|  t|dƒ¡ |  t|jƒ¡ |  	t
| ¡ tƒ¡ |  t¡� tjd|iddd� W 5 Q R X d S )	NÚSkipTestzunittest.mock requiredzunittest.mock not availabler   é   TF)r.   Zfor_json)r   ÚhasattrÚunittestrF   ÚprintZMockÚ
assertTrueÚcallabler   ZassertFalseÚ
isinstanceÚdictr8   r9   r1   r3   )r   Zfaker   r   r   Ú test_asdict_does_not_return_dict�   s    
	z/TestNamedTuple.test_asdict_does_not_return_dictN)
r   r   r   r5   r;   r?   r@   rD   rE   rO   r   r   r   r   r*   8   s   	
r*   )Ú
__future__r   rI   Z
simplejsonr1   Zsimplejson.compatr   r   ÚImportErrorÚcollectionsr   r	   r   r   Úobjectr   r    r"   rN   r$   rB   ZTestCaser*   r   r   r   r   Ú<module>   s.   
ý