o
    �O5[t(  ã                   @   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   úL/var/www/html/env/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Únulléd   Ú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     