
 X                 @   sj   d  d l  m Z d  d l m Z m Z m Z m Z m Z d  d l Z	 d d   Z
 Gd d   d e  Z d S)    )TestCase)StringIO	long_typebbinary_typePY3Nc             C   s&   t  r" t |  t  r" |  j d  S|  S)Nascii)r   
isinstancer   decode)s r   W/home/ubuntu/projects/ifolica/lib/python3.4/site-packages/simplejson/tests/test_dump.pyas_text_type   s    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 d   Z	 d d   Z
 d d   Z d S)TestDumpc             C   s3   t    } t j i  |  |  j | j   d  d  S)Nz{})r   jsondumpassertEqualgetvalue)selfsior   r   r   	test_dump   s    	zTestDump.test_dumpc             C   s   x d  d d g D] } |  j  t j t j |   | k  |  j  t j t j | g   d | k  |  j  t j t j i | d 6  d | k  q Wd  S)NTFr   a)Z
assertTruer   loadsdumps)r   cr   r   r   test_constants   s    %,zTestDump.test_constantsc          
   C   s  t  d  d f d d d d d t d  d f g } xz | D]r \ } } |  j t j t j i | | 6  i | | 6 |  j t j t j i | | 6d d  i | | 6 q: W|  j t t j i d t 6 xi  i d d 6i d t  d  6d d 6g D] } x d d g D] } t |  } d | t <t d d   | j	   D  } |  j t j t j | d d d |  |  |  j t j t j i | d 6d d d |  i | d 6 |  j t j t j | g d d d |  | g  qWq Wd  S)Nbytes      ?1.0
   10TtrueFfalsenulld   Z100	sort_keys   otherZderp   Zherpc             s   s'   |  ] \ } } t  |  | f Vq d  S)N)r   ).0keyvalr   r   r   	<genexpr>*   s    z.TestDump.test_stringify_key.<locals>.<genexpr>Zskipkeys )r   r   )r   r    )Tztrue)Fzfalse)Nr#   )
r   r   r   r   r   r   ZassertRaises	TypeErrordictitems)r   r0   kexpectvr%   Zv0Zv1r   r   r   test_stringify_key   s:    "1
!($zTestDump.test_stringify_keyc             C   s   |  j  t j i   d  d  S)Nz{})r   r   r   )r   r   r   r   
test_dumps5   s    zTestDump.test_dumpsc             C   s   |  j  t j i d d 6d d 6d d d  |  j  t j i d d 6t d  d 6d	 d 6d t d
  6d d 6d d d  d  S)NFTr%   z{"false": true, "true": false}g      @r(      g      @r&      r   7z3{"2": 3.0, "4.0": 5, "6": true, "7": 0, "false": 1})r   r   r   r   )r   r   r   r   test_encode_truefalse8   s    

zTestDump.test_encode_truefalsec             C   sA   d d d d d g } t  j t  j |   } |  j | d  d  S)Noner&   twor(   three   four   fiver6   z6{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5})r:   r&   )r;   r(   )r<   r=   )r>   r?   )r@   r6   )r   r   OrderedDictr   )r   r0   r   r   r   r   test_ordered_dictF   s
    zTestDump.test_ordered_dictc             C   sN   Gd d   d t   } t j d d d g d | d  } |  j | d  d	 S)
a  
        A test against the regression mentioned at `github issue 29`_.

        The indent parameter should accept any type which pretends to be
        an instance of int or long when it comes to being multiplied by
        strings, even if it is not actually an int or long, for
        backwards compatibility.

        .. _github issue 29:
           http://github.com/simplejson/simplejson/issue/29
        c               @   s.   e  Z d  Z d Z d d   Z d d   Z d S)z@TestDump.test_indent_unknown_type_acceptance.<locals>.AwesomeIntz'An awesome reimplementation of integersc             _   s<   t  |  d k r8 t | d t  r8 | d |  _ q8 n  d  S)Nr   )lenr	   int_int)r   argskwargsr   r   r   __init__^   s    zITestDump.test_indent_unknown_type_acceptance.<locals>.AwesomeInt.__init__c             S   s*   t  |  d  r |  j | St d   d  S)NrE   zOTo do non-awesome things with this object, please construct it from an integer!)hasattrrE   NotImplementedError)r   r'   r   r   r   __mul__i   s    zHTestDump.test_indent_unknown_type_acceptance.<locals>.AwesomeInt.__mul__N)__name__
__module____qualname____doc__rH   rK   r   r   r   r   
AwesomeInt[   s   rP   r   r&   r(   indentr=   z[
   0,
   1,
   2
]N)objectr   r   r   )r   rP   r   r   r   r   #test_indent_unknown_type_acceptanceN   s    $z,TestDump.test_indent_unknown_type_acceptancec             C   s3   d g d } |  j  t j t j |   |  d  S)Nr   i )r   r   r   r   )r   lstr   r   r   test_accumulatorv   s    zTestDump.test_accumulatorc             C   s   x t  d d  D] } t d d   t  |  D  } t   } t j | | d d |  j | j   t j | d d  |  j t j | j    |  q Wd  S)Nr(       c             s   s!   |  ] } t  |  | f Vq d  S)N)str)r)   xr   r   r   r,   ~   s    z*TestDump.test_sort_keys.<locals>.<genexpr>r%   T)	ranger/   r   r   r   r   r   r   r   )r   Znum_keyspr   r   r   r   test_sort_keys{   s    	%zTestDump.test_sort_keysN)rL   rM   rN   r   r   r4   r5   r9   rB   rS   rU   r[   r   r   r   r   r   
   s   (r   )Zunittestr   Zsimplejson.compatr   r   r   r   r   
simplejsonr   r   r   r   r   r   r   <module>   s   (