U
    Æ½„b�  ã                   @   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   úA/tmp/pip-unpacked-wheel-9yxrzpkm/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}dddddddg}|   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})Zxkdé   )Zkcwé   )Zarté   )Zhxmé   )Zqrté   )Úpadé   )Z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 r4   r   r5   r   r   r   r7   I   r8   )r9   Úobject_hook)r   r   r'   ÚevalÚOrderedDictÚtype)r   r   ÚpZ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   r=   r   r'   r   rB   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   r=   r   r   r   rB   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 )NZ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   Zdoc1Zdoc2Z	doc_asciiZ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ÚexpectZexpect_non_asciir   r   r   Ú$test_ensure_ascii_linebreak_encodingh   s    
z0TestUnicode.test_ensure_ascii_linebreak_encodingc                 C   sB  |   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 )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Ú
maxunicoderB   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   ÚcZ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   ã�“ã‚“ã�«ã�¡ã‚�rH   )
ÚcodecsÚBOM_UTF8r   r   r   r   Úloadr   Údecoder'   )r   ÚcontentZ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+   r?   rC   rD   rF   rG   rL   rQ   rU   r\   r   r   r   r   r      s$   r   )rO   rV   Zunittestr   Z
simplejsonr   Zsimplejson.compatr   r   r   r   r   r   r   r   r   Ú<module>   s
   