U
    4Je                     @   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-52sb2ggr/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                   @   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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   s~   t D ]t}| jttj|t t dd t }tj|t |dd | t	|i |
  | jttj|tt dd qd S NTr-   )CONSTRUCTORSr8   r9   r1   r<   r"   r   r$   r0   r3   r=   r   )r   fr>   r   r   r   test_asdict_not_callable_dumpo   s*    z,TestNamedTuple.test_asdict_not_callable_dumpc                 C   sf   t D ]\}| jttj|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"   r   r0   r$   r   rC   r   r   r   test_asdict_not_callable_dumps   s       z-TestNamedTuple.test_asdict_not_callable_dumpsc                 C   s8   t D ].}| tj|tdd dt|tj qd S )Nc                 S   s   | j S r   )r   r%   r   r   r   r'      r(   zATestNamedTuple.test_asdict_unbound_method_dumps.<locals>.<lambda>)default)rB   r0   r1   r3   r   r   rE   r   r   r    test_asdict_unbound_method_dumps   s
    z/TestNamedTuple.test_asdict_unbound_method_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unittestrI   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   rF   rH   rR   r   r   r   r   r*   8   s   	r*   )
__future__r   rL   Z
simplejsonr1   Zsimplejson.compatr   r   ImportErrorcollectionsr   r	   r   r   objectr   r    r"   rQ   r$   rB   ZTestCaser*   r   r   r   r   <module>   s.   
