
ํยะZ(  ใ               @   sE   d  Z  d d l Z Gd d   d e j  Z e d k rA e j   d S)zTests for josepy.interfaces.้    Nc               @   s    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 } Gd d   d |    G  f d d   d |  } Gd 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)N)r   )r   r   r   r   ฺto_partial_json   s    z;JSONDeSerializableTest.setUp.<locals>.Basic.to_partial_jsonc             S   s
   |  |  S)Nr   )ฺ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)N)ฺxฺy)r   r   r   r   r   r   r      s    	z7JSONDeSerializableTest.setUp.<locals>.Sequence.__init__c             S   s   |  j  |  j g S)N)r   r   )r   r   r   r   r	      s    z>JSONDeSerializableTest.setUp.<locals>.Sequence.to_partial_jsonc                s'   |    j  | d    j  | d   S)Nr   ้   )r   )r
   r   )r   r   r   r       s    z8JSONDeSerializableTest.setUp.<locals>.Sequence.from_jsonN)r   r   r   r   r	   r   r   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)N)r   r   )r   r   r   r   r   r   r   &   s    	z6JSONDeSerializableTest.setUp.<locals>.Mapping.__init__c             S   s   |  j  |  j i S)N)r   r   )r   r   r   r   r	   *   s    z=JSONDeSerializableTest.setUp.<locals>.Mapping.to_partial_jsonc             S   s   d  S)Nr   )r
   r   r   r   r   r   -   s    z7JSONDeSerializableTest.setUp.<locals>.Mapping.from_jsonN)r   r   r   r   r	   r   r   r   r   r   r   ฺMapping%   s   r   ฺfoo1ฺfoo2ฺfoo)r   )ฺ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  |  j j   d d g  d  S)Nr   r   )ฺassertEqualr   ฺto_json)r   r   r   r   ฺtest_to_json_sequence=   s    z,JSONDeSerializableTest.test_to_json_sequencec             C   s#   |  j  |  j j   d d i  d  S)Nr   r   )r"   r   r#   )r   r   r   r   ฺtest_to_json_mapping@   s    z+JSONDeSerializableTest.test_to_json_mappingc             C   s/   t    } |  j |  j |  j   | k  d  S)N)ฺobjectฺ
assertTruer   r#   )r   Z
mock_valuer   r   r   ฺtest_to_json_otherC   s    	z)JSONDeSerializableTest.test_to_json_otherc             C   s#   |  j  |  j 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  |  j j   d  d  S)Nr   )zfoo)r"   r    r#   )r   r   r   r   ฺtest_to_jsonJ   s    z#JSONDeSerializableTest.test_to_jsonc             C   s*   d d l  m } |  j 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   s   |  j  j d  } |  j t | |  j    |  j t | j |  j   |  j t | j |  j   |  j | j j d  |  j | j j d  d  S)Nz["foo1", "foo2"]r   r   )	r   Z
json_loadsr'   ฺ
isinstancer   r   r   r"   r   )r   r   r   r   r   ฺtest_json_loadsQ   s    z&JSONDeSerializableTest.test_json_loadsc             C   s   |  j  d |  j j    d  S)Nz["foo1", "foo2"])r"   r   Z
json_dumps)r   r   r   r   ฺtest_json_dumpsY   s    z&JSONDeSerializableTest.test_json_dumpsc             C   s   |  j  |  j j   d  d  S)Nz[
    "foo1",
    "foo2"
])r"   r   Zjson_dumps_pretty)r   r   r   r   ฺtest_json_dumps_pretty\   s    z-JSONDeSerializableTest.test_json_dumps_prettyc             C   s   d d l  m } |  j d | j |  j   | j |  j  } |  j t |  d  |  j | d |  j k  |  j | d |  j k  d  S)Nr   )r   r   ้   r   )	r   r   r"   ฺjson_dump_defaultr   r   ฺlenr'   r   )r   r   r   r   r   r   ฺtest_json_dump_default`   s    z-JSONDeSerializableTest.test_json_dump_defaultc             C   s-   d d l  m } |  j t | j t    d  S)Nr   )r   )r   r   r+   r,   r3   r&   )r   r   r   r   r   ฺ!test_json_dump_default_type_errork   s    z8JSONDeSerializableTest.test_json_dump_default_type_errorN)r   r   r   r!   r$   r%   r(   r)   r*   r-   r/   r0   r1   r5   r6   r   r   r   r   r      s   5r   ฺ__main__)ฺ__doc__ZunittestZTestCaser   r   ฺmainr   r   r   r   ฺ<module>   s   l