o
    ȷet(                     @   sx   d dl mZ d dlmZmZmZmZmZmZ d dl	Z
G dd deZG dd deZdd	 Zd
d ZG dd deZdS )    )TestCase)StringIO	long_typebbinary_type	text_typePY3Nc                   @   s   e Zd Zdd ZdS )MisbehavingTextSubtypec                 C      dS )NzFAIL! selfr   r   Q/var/www/ideatree/venv/lib/python3.10/site-packages/simplejson/tests/test_dump.py__str__      zMisbehavingTextSubtype.__str__N)__name__
__module____qualname__r   r   r   r   r   r	      s    r	   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	MisbehavingBytesSubtypeNc                 C   r
   )Nz
bad decoder   )r   encodingr   r   r   decode
   r   zMisbehavingBytesSubtype.decodec                 C   r
   )Nzbad __str__r   r   r   r   r   r      r   zMisbehavingBytesSubtype.__str__c                 C   s   t dS )Nzbad __bytes__r   r   r   r   r   	__bytes__   s   z!MisbehavingBytesSubtype.__bytes__N)r   r   r   r   r   r   r   r   r   r   r   	   s    
r   c                 C   s   t rt| tr| dS | S )Nascii)r   
isinstancebytesr   )sr   r   r   as_text_type   s   
r   c                 C   s
   |  dS )Niso-8859-15)r   r   r   r   r   decode_iso_8859_15   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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 N{})r   jsondumpassertEqualgetvalue)r   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dumps)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 )Nr   )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 r   )r   ).0keyvalr   r   r   	<genexpr>9   s    z.TestDump.test_stringify_key.<locals>.<genexpr>)skipkeysr8    )
r   r   r&   r$   r,   r-   assertRaises	TypeErrordictitems)r   rG   kexpectvr8   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_dumpsD   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)TFr7   z{"false": true, "true": false}r=   g      @g      @   r9      7r   z3{"2": 3.0, "4.0": 5, "6": true, "7": 0, "false": 1})r&   r$   r-   r   r   r   r   r   test_encode_truefalseG   s"   
zTestDump.test_encode_truefalsec                 C   s(   g d}t t |}| |d d S )N))oner9   )twor=   )three   )four   )fiverO   z6{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5})r$   r-   OrderedDictr&   )r   rG   r   r   r   r   test_ordered_dictU   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__m   s
   zITestDump.test_indent_unknown_type_acceptance.<locals>.AwesomeInt.__init__c                 S   s   t | dr
| j| S td)Nr^   zOTo do non-awesome things with this object, please construct it from an integer!)hasattrr^   NotImplementedError)r   r:   r   r   r   __mul__x   s   

zHTestDump.test_indent_unknown_type_acceptance.<locals>.AwesomeInt.__mul__N)r   r   r   __doc__ra   rd   r   r   r   r   
AwesomeIntj   s    rf   )r   r9   r=   rV   )indentz[
   0,
   1,
   2
]N)objectr$   r-   r&   )r   rf   r   r   r   r   #test_indent_unknown_type_acceptance]   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_accumulator   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   rA      s    z*TestDump.test_sort_keys.<locals>.<genexpr>Tr7   )	rangerF   r   r$   r%   r&   r'   r-   r,   )r   num_keyspr(   r   r   r   test_sort_keys   s   zTestDump.test_sort_keysc                 C   sh   d}|  tt|t| |  tt|gt|g |  tt|dit|di d S )Nzthis is some text*   )r&   r$   r-   r	   )r   textr   r   r   test_misbehaving_text_subtype   s   
z&TestDump.test_misbehaving_text_subtypec                 C   sl   t d}| tt|t| | tt|gt|g | tt|dit|di d S )Nu   this is some data â¬rs   )r   r&   r$   r-   r   )r   datar   r   r   test_misbehaving_bytes_subtype   s   
z'TestDump.test_misbehaving_bytes_subtypec                 C   s  |  ttdd | ttjtd |  tjtdddd |  tjtdddd trY| jttjtdd d | jttjtdd d |  tjtdd tdd d S |  tjtdd dd | jttjtdd d | jttjtdd td d S )	N   â¬z"\u20ac"   ¤
iso-8859-1r   z"\u00a4"r   r   default	r&   r$   r-   r   rD   UnicodeDecodeErrorr   rE   r    r   r   r   r   test_bytes_toplevel   s:   
zTestDump.test_bytes_toplevelc                 C   s  |  ttdgd | ttjtdg |  tjtdgddd |  tjtdgddd tr`| jttjtdgd d | jttjtdgd d |  tjtdgd tdd d S |  tjtdgd dd | jttjtdgd d | jttjtdgd td d S )	Nrx   z
["\u20ac"]ry   rz   r{   z
["\u00a4"]r   r|   r~   r   r   r   r   test_bytes_nested   s:   
zTestDump.test_bytes_nestedc                 C   sf  |  ttddid | ttjtddi |  tjtddiddd |  tjtddiddd trv| jttjtddid d | jttjtddid d | jttjtddid td	 |  tjtddid d
dd d S |  tjtddid dd | jttjtddid d | jttjtddid td	 | jttjtddid d
d d S )Nrx   rs   z{"\u20ac": 42}ry   rz   r{   z{"\u00a4": 42}r   r|   T)r   rB   r#   r~   r   r   r   r   test_bytes_key   sF   
zTestDump.test_bytes_keyN)r   r   r   r)   r/   rM   rN   rR   r[   ri   rk   rr   ru   rw   r   r   r   r   r   r   r   r!      s    (	r!   )unittestr   simplejson.compatr   r   r   r   r   r   
simplejsonr$   r	   r   r   r    r!   r   r   r   r   <module>   s     