U
    M»{j  ã                   @   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   ú_/var/www/html/bwave/python/venv/lib/python3.8/site-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>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MockZ
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   rQ   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"   rP   r$   rB   ZTestCaser*   r   r   r   r   Ú<module>   s.   
ý