U
    M»{jJ)  ã                   @   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   s   dS )NzFAIL!© ©Úselfr
   r
   úY/var/www/html/bwave/python/venv/lib/python3.8/site-packages/simplejson/tests/test_dump.pyÚ__str__   s    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   s   dS )Nz
bad decoder
   )r   Úencodingr
   r
   r   Údecode
   s    zMisbehavingBytesSubtype.decodec                 C   s   dS )Nzbad __str__r
   r   r
   r
   r   r      s    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 ]`}|   t t |¡¡|k¡ |   t t |g¡¡d |k¡ |   t t d|i¡¡d |k¡ qd S )N)NTFr   Úa)Z
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 ]L\}}|  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 ]š}dD ]�}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¡ qªq¢d S )Nr   )g      ð?z1.0)é
   Ú10)TÚtrue)FÚfalse)NÚnulléd   Ú100T©Ú	sort_keysé   ÚotherZderpZherpé   )FTc                 s   s   | ]\}}t |ƒ|fV  qd S ©N)r   )Ú.0ÚkeyÚvalr
   r
   r   Ú	<genexpr>9   s     z.TestDump.test_stringify_key.<locals>.<genexpr>)Úskipkeysr4   Ú )
r   r   r#   r!   r(   r)   ÚassertRaisesÚ	TypeErrorÚdictÚitems)r   rB   ÚkÚexpectÚvr4   Zv0Zv1r
   r
   r   Útest_stringify_key%   sF    

úþþþþþ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   s†   |   tjdddœdd�d¡ |   t t ddiddidœ¡¡d	did
didœ¡ |   tjdddtdƒddtdƒdddidd�d¡ d S )NFT)TFr3   z{"false": true, "true": false}é   r   )Zk1Zk2r/   Ú0r7   g      @g      @r5   é   Ú7z3{"2": 3.0, "4.0": 5, "6": true, "7": 0, "false": 1})r#   r!   r)   r(   r   r   r
   r
   r   Útest_encode_truefalseG   s4     ÿþý    üúøzTestDump.test_encode_truefalsec                 C   s.   dddddg}t  t  |¡¡}|  |d¡ d S )N)Úoner5   )Útwor7   )Úthreeé   )Úfouré   )ÚfiverH   z6{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5})r!   r)   ÚOrderedDictr#   )r   rB   r   r
   r
   r   Útest_ordered_dict[   s    þzTestDump.test_ordered_dictc                 C   s8   G dd„ dt ƒ}tjdddg|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                 _   s(   t |ƒdkr$t|d tƒr$|d | _d S )Nr   )Úlenr   ÚintÚ_int)r   ÚargsÚkwargsr
   r
   r   Ú__init__s   s    zITestDump.test_indent_unknown_type_acceptance.<locals>.AwesomeInt.__init__c                 S   s    t | dƒr| j| S tdƒ‚d S )NrX   zOTo do non-awesome things with this object, please construct it from an integer!)ÚhasattrrX   ÚNotImplementedError)r   r6   r
   r
   r   Ú__mul__~   s    

zHTestDump.test_indent_unknown_type_acceptance.<locals>.AwesomeInt.__mul__N)r   r   r   Ú__doc__r[   r^   r
   r
   r
   r   Ú
AwesomeIntp   s   r`   r   r5   r7   rP   )Úindentz[
   0,
   1,
   2
]N)Úobjectr!   r)   r#   )r   r`   r   r
   r
   r   Ú#test_indent_unknown_type_acceptancec   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 ]`}tdd„ t |ƒD ƒƒ}tƒ }tj||dd� |  | ¡ tj|dd�¡ |  t | ¡ ¡|¡ q
d S )Nr7   é    c                 s   s   | ]}t |ƒ|fV  qd S r8   )Ústr)r9   Úxr
   r
   r   r<   “   s     z*TestDump.test_sort_keys.<locals>.<genexpr>Tr3   )	ÚrangerA   r   r!   r"   r#   r$   r)   r(   )r   Z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 Ã¢Â‚Â¬rl   )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r°| jttjtdƒd d� | jttjtdƒd d� |   tjtdƒd td�d¡ nL|   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   r?   ÚUnicodeDecodeErrorr   r@   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¡ nR|   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 )	Nrq   z
["\u20ac"]rr   rs   rt   z
["\u00a4"]r   ru   rw   r   r
   r
   r   Útest_bytes_nestedÏ   s<    ÿÿÿÿÿþÿÿ ÿzTestDump.test_bytes_nestedc                 C   sd  |   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rê| 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¡ nv|   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 )Nrq   rl   z{"\u20ac": 42}rr   rs   rt   z{"\u00a4": 42}r   ru   T)r   r=   r    rw   r   r
   r
   r   Útest_bytes_keyæ   sL    ÿÿÿÿ ÿÿþÿÿ ÿ ÿzTestDump.test_bytes_keyN)r   r   r   r&   r+   rF   rG   rL   rU   rc   re   rk   rn   rp   ry   rz   r{   r
   r
   r
   r   r      s   (	r   )Zunittestr   Zsimplejson.compatr   r   r   r   r   r   Z
simplejsonr!   r	   r   r   r   r   r
   r
   r
   r   Ú<module>   s    