o
    éù‹i  ã                   @   sP   d dl Z d dlZd dlmZ d dlZd dlmZmZm	Z	m
Z
 G dd„ deƒZdS )é    N)ÚTestCase)ÚunichrÚ	text_typeÚbÚBytesIOc                   @   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d„ Zdd „ Zd!d"„ Zd#d$„ Zd%S )&ÚTestUnicodec                 C   s>   t jdd}d}| d¡}| |¡}| |¡}|  ||¡ d S )Núutf-8©Úencodingõ   Î±Î©)ÚjsonÚJSONEncoderÚencodeÚassertEqual)ÚselfÚencoderÚuÚsÚjuÚjs© r   úP/opt/alphahud/venv/lib/python3.10/site-packages/simplejson/tests/test_unicode.pyÚtest_encoding1	   s   


zTestUnicode.test_encoding1c                 C   s:   d}|  d¡}tj|dd}tj|dd}|  ||¡ d S )Nr   r   r	   )r   r   Údumpsr   )r   r   r   r   r   r   r   r   Útest_encoding2   s
   
zTestUnicode.test_encoding2c                 C   s   d}t  |¡}|  |d¡ d S )Nr   z"\u03b1\u03a9"©r   r   r   ©r   r   Újr   r   r   Útest_encoding3   s   
zTestUnicode.test_encoding3c                 C   s    d}t  |g¡}|  |d¡ d S )Nr   z["\u03b1\u03a9"]r   r   r   r   r   Útest_encoding4   s   zTestUnicode.test_encoding4c                 C   s*   d}t j|dd}|  |d| d ¡ d S )Nr   F©Úensure_asciiú"r   r   r   r   r   Útest_encoding5"   s   zTestUnicode.test_encoding5c                 C   s,   d}t j|gdd}|  |d| d ¡ d S )Nr   Fr    z["z"]r   r   r   r   r   Útest_encoding6'   s   zTestUnicode.test_encoding6c                 C   s0   d}|   t |¡d¡ |   tj|ddd¡ d S )Nu   ð„ z"\ud834\udd20"Fr    u   "ð„ ")r   r   r   ©r   r   r   r   r   Útest_big_unicode_encode,   s   z#TestUnicode.test_big_unicode_encodec                 C   s4   d}|   t d| d ¡|¡ |   t d¡|¡ d S )Nu   zð„ xr"   z"z\ud834\udd20x")r   r   Úloadsr%   r   r   r   Útest_big_unicode_decode1   s   z#TestUnicode.test_big_unicode_decodec                 C   s8   t ddƒD ]}t|ƒ}d|f }|  t |¡|¡ qd S )Nr   iÿ×  z"\u%04x")Úranger   r   r   r'   )r   Úir   r   r   r   r   Útest_unicode_decode6   s
   
üzTestUnicode.test_unicode_decodec                 C   s˜   d}g d¢}|   t |¡t|ƒ¡ |   tj|dd„ d|¡ tj|tjd}|   |t |¡¡ |   t|ƒtj¡ |   tj|tjdd„ dt |¡¡ d S )Nz?{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}))Úxkdé   )Úkcwé   )Úarté   )Úhxmé   )Úqrté   )Úpadé   )Úhoyé   c                 S   s   | S ©Nr   ©Úxr   r   r   Ú<lambda>B   ó    zATestUnicode.test_object_pairs_hook_with_unicode.<locals>.<lambda>)Úobject_pairs_hookc                 S   s   d S r:   r   r;   r   r   r   r=   I   r>   )r?   Úobject_hook)r   r   r'   ÚevalÚOrderedDictÚtype)r   r   ÚpÚodr   r   r   Ú#test_object_pairs_hook_with_unicode=   s   
þýz/TestUnicode.test_object_pairs_hook_with_unicodec                 C   s    |   t d d¡¡ddi¡ d S )Nu   {"a": "Ã©"}r   Úaõ   Ã©)r   r   r'   r   ©r   r   r   r   Útest_default_encodingM   s   ÿz!TestUnicode.test_default_encodingc                 C   sJ   |   tt d¡ƒt¡ |   tt d¡ƒt¡ |   tt d¡d ƒt¡ d S )Nz""z"a"z["a"]r   )r   rC   r   r'   r   rI   r   r   r   Útest_unicode_preservationQ   s   z%TestUnicode.test_unicode_preservationc                 C   sl   |   ttjg ddƒt¡ |   ttjdddƒt¡ |   ttji ddƒt¡ |   ttjdddƒt¡ d S )NFr    r   Ú )r   rC   r   r   r   rI   r   r   r   Ú'test_ensure_ascii_false_returns_unicodeV   s   z3TestUnicode.test_ensure_ascii_false_returns_unicodec                 C   sp   dt dƒi}ddi}d}d}|  t |¡|¡ |  t |¡|¡ |  tj|dd|¡ |  tj|dd|¡ d S )NÚquuxu   ArrÃƒÂªt sur imagesu   ArrÃªt sur imagesz!{"quux": "Arr\u00eat sur images"}u   {"quux": "ArrÃªt sur images"}Fr    )r   r   r   r   )r   Údoc1Údoc2Ú	doc_asciiÚdoc_unicoder   r   r   Ú+test_ensure_ascii_false_bytestring_encoding]   s   z7TestUnicode.test_ensure_ascii_false_bytestring_encodingc                 C   sj   d}|  d¡}d}d}|  t |¡|¡ |  t |¡|¡ |  tj|dd|¡ |  tj|dd|¡ d S )Nu   â€©â€¨Úutf8z"\u2029\u2028"u   "â€©â€¨"Fr    )r   r   r   r   )r   Ús1Ús2ÚexpectÚexpect_non_asciir   r   r   Ú$test_ensure_ascii_linebreak_encodingh   s   
z0TestUnicode.test_ensure_ascii_linebreak_encodingc                 C   sD  |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ |   tjtjd	¡ tjd
kr |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ |   tjtjd¡ d S d S )Nz"\uz"\u1z"\u12z"\u123z"\u1234z"\u123x"z"\u12x4"z"\u1x34"z"\ux234"iÿÿ  z
"\ud800\u"z"\ud800\u0"z"\ud800\u00"z"\ud800\u000"z"\ud800\u000x"z"\ud800\u00x0"z"\ud800\u0x00"z"\ud800\ux000")ÚassertRaisesr   ÚJSONDecodeErrorr'   ÚsysÚ
maxunicoderI   r   r   r   Útest_invalid_escape_sequencess   s&   
÷z)TestUnicode.test_invalid_escape_sequencesc                 C   sX   t ttddƒƒD ]}|  tj|ddt |¡¡ qd}|  tj|ddd| d ¡ d S )Nr   é   Fr    u   â˜ƒr"   )Úmapr   r)   r   r   r   )r   ÚcÚsnowmanr   r   r   Útest_ensure_ascii_still_worksŠ   s   þ
þz)TestUnicode.test_ensure_ascii_still_worksc                 C   sX   d}t jtt |¡ƒ }|  t t|ƒ¡|¡ || d¡fD ]}|  t 	|¡|¡ qd S )Nu   ã“ã‚“ã«ã¡ã‚rT   )
ÚcodecsÚBOM_UTF8r   r   r   r   Úloadr   Údecoder'   )r   ÚcontentÚjson_docÚdocr   r   r   Útest_strip_bom•   s   ÿzTestUnicode.test_strip_bomN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r#   r$   r&   r(   r+   rF   rJ   rK   rM   rS   rY   r^   rc   rk   r   r   r   r   r      s&    r   )r\   rd   Úunittestr   Ú
simplejsonr   Úsimplejson.compatr   r   r   r   r   r   r   r   r   Ú<module>   s    