o
    Ti                     @   sL   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
G dd deZdS )    )TestCase)StringIO	long_typebbinary_typePY3Nc                 C   s   t rt| tr| dS | S )Nascii)r   
isinstancer   decode)s r   I/home/ubuntu/.local/lib/python3.10/site-packages/hjson/tests/test_dump.pyas_text_type   s   
r   c                   @   sT   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   s&   t  }ti | | | d d S Nz{})r   jsondumpJSONassertEqualgetvalue)selfsior   r   r   	test_dump   s   zTestDump.test_dumpc              	   C   sj   dD ]0}|  tt||u  |  tt|gd |u  |  ttd|id |u  qd S )N)NTFr   a)
assertTruer   loads	dumpsJSON)r   cr   r   r   test_constants   s
    $zTestDump.test_constantsc                 C   sB  t ddfdddddtddfg}|D ]&\}}| tt||i||i | ttj||id	d
||i q| ttjtdi i ddit ddddifD ]M}dD ]H}t|}d|t< tdd |	 D }| ttj|d	|d| | ttjd|id	|dd|i | ttj|gd	|d|g qUqQd S )Nbytes)g      ?z1.0)
   10)Ttrue)Ffalse)Nnulld   100T	sort_keys   otherderpherp   )FTc                 s   s     | ]\}}t ||fV  qd S N)r   ).0keyvalr   r   r   	<genexpr>*   s    z.TestDump.test_stringify_key.<locals>.<genexpr>)skipkeysr'    )
r   r   r   r   r   r   assertRaises	TypeErrordictitems)r   r7   kexpectvr'   v0v1r   r   r   test_stringify_key   sJ   

zTestDump.test_stringify_keyc                 C   s   |  ti d d S r   )r   r   r   r   r   r   r   
test_dumps5   s   zTestDump.test_dumpsc                 C   sR   |  tjdddddd |  tjdddtd	dd
tddddiddd d S )NFT)TFr&   z{"false": true, "true": false}r,   g      @g      @   r(      7r   z3{"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   s(   g d}t t |}| |d d S )N))oner(   )twor,   )three   )four   )fiver@   z6{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5})r   r   OrderedDictr   )r   r7   r   r   r   r   test_ordered_dictF   s   zTestDump.test_ordered_dictc                 C   s6   G dd dt }tjg d|dd}| |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                 _   s0   t |dkrt|d tr|d | _d S d S 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| S td)NrO   zOTo do non-awesome things with this object, please construct it from an integer!)hasattrrO   NotImplementedError)r   r)   r   r   r   __mul__i   s   

zHTestDump.test_indent_unknown_type_acceptance.<locals>.AwesomeInt.__mul__N)__name__
__module____qualname____doc__rR   rU   r   r   r   r   
AwesomeInt[   s    rZ   )r   r(   r,   rG   )indentz[
   0,
   1,
   2
]N)objectr   r   r   )r   rZ   r   r   r   r   #test_indent_unknown_type_acceptanceN   s   z,TestDump.test_indent_unknown_type_acceptancec                 C   s&   dgd }|  tt|| d S )Nr   i )r   r   r   r   )r   lstr   r   r   test_accumulatorv   s   
zTestDump.test_accumulatorc                 C   sp   t ddD ]0}tdd t |D }t }tj||dd | | tj|dd | t| | qd S )Nr,       c                 s   s    | ]	}t ||fV  qd S r-   )str)r.   xr   r   r   r1   ~   s    z*TestDump.test_sort_keys.<locals>.<genexpr>Tr&   )	ranger6   r   r   r   r   r   r   r   )r   num_keyspr   r   r   r   test_sort_keys{   s   zTestDump.test_sort_keysN)rV   rW   rX   r   r   r=   r?   rC   rL   r]   r_   rf   r   r   r   r   r   
   s    (r   )unittestr   hjson.compatr   r   r   r   r   hjsonr   r   r   r   r   r   r   <module>   s
    