U
    •¢](  ã                   @   s2   d Z ddlZG dd„ dejƒZedkr.e ¡  dS )zTests for josepy.interfaces.é    Nc                   @   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d„ Zdd„ Zdd„ Zdd„ ZdS )ÚJSONDeSerializableTestc                    s¤   ddl m} G dd„ d|ƒ‰ G ‡ fdd„d|ƒ}G dd„ d|ƒ}ˆ d	ƒ| _ˆ d
ƒ| _|| j| jƒ| _|| j| jƒ| _ˆ | jggƒ| _ˆ dƒ| _ˆ | _|| _	|| _
d S )Nr   ©ÚJSONDeSerializablec                   @   s(   e Zd Zdd„ Zdd„ Zedd„ ƒZdS )z+JSONDeSerializableTest.setUp.<locals>.Basicc                 S   s
   || _ d S ©N©Úv)Úselfr   © r	   ú8/usr/lib/python3/dist-packages/josepy/interfaces_test.pyÚ__init__   s    z4JSONDeSerializableTest.setUp.<locals>.Basic.__init__c                 S   s   | j S r   r   ©r   r	   r	   r
   Úto_partial_json   s    z;JSONDeSerializableTest.setUp.<locals>.Basic.to_partial_jsonc                 S   s   | |ƒS r   r	   ©ÚclsÚjobjr	   r	   r
   Ú	from_json   s    z5JSONDeSerializableTest.setUp.<locals>.Basic.from_jsonN©Ú__name__Ú
__module__Ú__qualname__r   r   Úclassmethodr   r	   r	   r	   r
   ÚBasic   s   r   c                       s,   e Zd Zdd„ Zdd„ Ze‡ fdd„ƒZdS )z.JSONDeSerializableTest.setUp.<locals>.Sequencec                 S   s   || _ || _d S r   ©ÚxÚy©r   r   r   r	   r	   r
   r      s    z7JSONDeSerializableTest.setUp.<locals>.Sequence.__init__c                 S   s   | j | jgS r   r   r   r	   r	   r
   r      s    z>JSONDeSerializableTest.setUp.<locals>.Sequence.to_partial_jsonc                    s   | ˆ   |d ¡ˆ   |d ¡ƒS )Nr   é   )r   r   ©r   r	   r
   r       s     ÿz8JSONDeSerializableTest.setUp.<locals>.Sequence.from_jsonNr   r	   r   r	   r
   ÚSequence   s   r   c                   @   s(   e Zd Zdd„ Zdd„ Zedd„ ƒZdS )z-JSONDeSerializableTest.setUp.<locals>.Mappingc                 S   s   || _ || _d S r   r   r   r	   r	   r
   r   &   s    z6JSONDeSerializableTest.setUp.<locals>.Mapping.__init__c                 S   s   | j | jiS r   r   r   r	   r	   r
   r   *   s    z=JSONDeSerializableTest.setUp.<locals>.Mapping.to_partial_jsonc                 S   s   d S r   r	   r   r	   r	   r
   r   -   s    z7JSONDeSerializableTest.setUp.<locals>.Mapping.from_jsonNr   r	   r	   r	   r
   ÚMapping%   s   r   Úfoo1Úfoo2©Zfoo)Újosepy.interfacesr   Úbasic1Úbasic2ÚseqÚmappingÚnestedÚtupler   r   r   )r   r   r   r   r	   r   r
   ÚsetUp   s    


zJSONDeSerializableTest.setUpc                 C   s   |   | j ¡ ddg¡ d S ©Nr    r!   )ÚassertEqualr&   Úto_jsonr   r	   r	   r
   Útest_to_json_sequence=   s    z,JSONDeSerializableTest.test_to_json_sequencec                 C   s   |   | j ¡ ddi¡ d S r+   )r,   r'   r-   r   r	   r	   r
   Útest_to_json_mapping@   s    z+JSONDeSerializableTest.test_to_json_mappingc                 C   s"   t ƒ }|  |  |¡ ¡ |k¡ d S r   )ÚobjectÚ
assertTruer   r-   )r   Z
mock_valuer	   r	   r
   Útest_to_json_otherC   s    z)JSONDeSerializableTest.test_to_json_otherc                 C   s   |   | j ¡ dgg¡ d S )Nr    )r,   r(   r-   r   r	   r	   r
   Útest_to_json_nestedG   s    z*JSONDeSerializableTest.test_to_json_nestedc                 C   s   |   | j ¡ d¡ d S )Nr"   )r,   r)   r-   r   r	   r	   r
   Útest_to_jsonJ   s    z#JSONDeSerializableTest.test_to_jsonc                 C   s    ddl m} |  t|jd¡ d S )Nr   r   Zxxx)r#   r   ÚassertRaisesÚ	TypeErrorr   ©r   r   r	   r	   r
   Útest_from_json_not_implementedM   s    z5JSONDeSerializableTest.test_from_json_not_implementedc                 C   sj   | j  d¡}|  t|| j ƒ¡ |  t|j| jƒ¡ |  t|j| jƒ¡ |  |jjd¡ |  |jjd¡ d S )Nú["foo1", "foo2"]r    r!   )	r   Z
json_loadsr1   Ú
isinstancer   r   r   r,   r   )r   r&   r	   r	   r
   Útest_json_loadsQ   s    z&JSONDeSerializableTest.test_json_loadsc                 C   s   |   d| j ¡ ¡ d S )Nr9   )r,   r&   Z
json_dumpsr   r	   r	   r
   Útest_json_dumpsY   s    z&JSONDeSerializableTest.test_json_dumpsc                 C   s   |   | j ¡ d¡ d S )Nz[
    "foo1",
    "foo2"
])r,   r&   Zjson_dumps_prettyr   r	   r	   r
   Útest_json_dumps_pretty\   s    ÿz-JSONDeSerializableTest.test_json_dumps_prettyc                 C   sh   ddl m} |  d| | j¡¡ | | j¡}|  t|ƒd¡ |  |d | jk¡ |  |d | jk¡ d S )Nr   r   r    é   r   )	r#   r   r,   Újson_dump_defaultr$   r&   Úlenr1   r%   )r   r   r   r	   r	   r
   Útest_json_dump_default`   s     
ÿz-JSONDeSerializableTest.test_json_dump_defaultc                 C   s"   ddl m} |  t|jtƒ ¡ d S )Nr   r   )r#   r   r5   r6   r?   r0   r7   r	   r	   r
   Ú!test_json_dump_default_type_errork   s      ÿz8JSONDeSerializableTest.test_json_dump_default_type_errorN)r   r   r   r*   r.   r/   r2   r3   r4   r8   r;   r<   r=   rA   rB   r	   r	   r	   r
   r      s   5r   Ú__main__)Ú__doc__ZunittestZTestCaser   r   Úmainr	   r	   r	   r
   Ú<module>   s   l