U
    O5[                     @   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   αΩ)jsonZJSONEncoderencodeassertEqual)selfencoderusjujs r   ?/usr/lib/python3/dist-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Z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   )Z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 r1   r   r2   r   r   r   r4   I   r5   )r6   Z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   r9   r   r%   r   r>   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   r9   r   r   r   r>   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s2Z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")ZassertRaisesr   ZJSONDecodeErrorr%   sys
maxunicoder>   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   こんにちわrD   )
codecsBOM_UTF8r   r   r   r   loadr   decoder%   )r   Z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;   r?   r@   rB   rC   rG   rJ   rN   rT   r   r   r   r   r      s$   r   )rH   rO   Zunittestr   Z
simplejsonr   Zsimplejson.compatr   r   r   r   r   r   r   r   r   <module>   s
   