U
    O5[                     @   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 n4 e	k
rl   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)
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   B/usr/lib/python3/dist-packages/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>.       r&   c                 C   s   | gS r   r   r$   r   r   r   r&   /   r'   c                 C   s
   d| igS )Nkeyr   r$   r   r   r   r&   0   r'   c                   @   s<   e Z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_dumps4   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   listr/   r0   r1   r2   assertRaises	TypeError)r   r%   lr   r   r   test_namedtuple_dumps_falseA   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   r0   dumpr/   r1   getvalue)r   r%   r3   sior   r   r   test_namedtuple_dumpJ   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 r5   )r   r   r6   r   r0   r;   r/   r1   r<   r7   r8   )r   r%   r9   r=   r   r   r   test_namedtuple_dump_false_   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,   )CONSTRUCTORSr7   r8   r0   r;   r!   r   r#   r/   r2   r<   )r   fr=   r   r   r   test_asdict_not_callable_dumpj   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 r@   )rA   r7   r8   r0   r2   r!   r/   r#   )r   rB   r   r   r   test_asdict_not_callable_dumpst   s      z-TestNamedTuple.test_asdict_not_callable_dumpsN)	r   r   r   r4   r:   r>   r?   rC   rD   r   r   r   r   r)   3   s   	
r)   )Z
__future__r   ZunittestZ
simplejsonr0   Zsimplejson.compatr   collectionsr   ImportErrorr   r   r   objectr   r   r!   dictr#   rA   ZTestCaser)   r   r   r   r   <module>   s&   