o
    ȷe                     @   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   T/var/www/ideatree/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    