o
    �O5[ã  ã                   @   sl   d dl mZ d dlZd dlmZ d dlZd dlmZm	Z	m
Z
 d dlmZ G dd„ de
ƒZG dd	„ d	eƒZdS )
é    )Úabsolute_importN)ÚTestCase)ÚStringIOÚbÚbinary_type)ÚOrderedDictc                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	ÚMisbehavingBytesSubtypeNc                 C   ó   dS )Nz
bad decode© )ÚselfÚencodingr
   r
   úN/var/www/html/env/lib/python3.10/site-packages/simplejson/tests/test_decode.pyÚdecode
   ó   zMisbehavingBytesSubtype.decodec                 C   r	   )Nzbad __str__r
   ©r   r
   r
   r   Ú__str__   r   zMisbehavingBytesSubtype.__str__c                 C   s   t dƒS )Nzbad __bytes__)r   r   r
   r
   r   Ú	__bytes__   s   z!MisbehavingBytesSubtype.__bytes__©N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r
   r
   r
   r   r   	   s    
r   c                   @   s~   e Zd Zeedƒs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 )Ú
TestDecodeÚassertIsc                 C   s   |   ||u d||f ¡ d S )Nz%r is %r)Ú
assertTrue)r   Úar   r
   r
   r   r      s   zTestDecode.assertIsc                 C   s8   t jdtjd�}|  t|tjƒ¡ |  |t d¡¡ d S )Nz1.1)Úparse_float)ÚjsonÚloadsÚdecimalÚDecimalr   Ú
isinstanceÚassertEqual©r   Úrvalr
   r
   r   Útest_decimal   s   zTestDecode.test_decimalc                 C   s.   t jdtd�}|  t|tƒ¡ |  |d¡ d S )NÚ1)Ú	parse_intg      ð?)r   r   Úfloatr   r    r!   r"   r
   r
   r   Ú
test_float   s   zTestDecode.test_floatc                 C   s    t  d¡}|  |dddœ¡ d S )Nz,{   "key"    :    "value"    ,  "k":"v"    }ÚvalueÚv)ÚkeyÚk)r   r   r!   r"   r
   r
   r   Útest_decoder_optimizations    s   
z%TestDecode.test_decoder_optimizationsc                 C   sR   d}|   t |¡t|ƒ¡ d}|   t |¡t|ƒ¡ d}|   t |¡t|ƒ¡ d S )Nz{}z[]ú"")r!   r   r   Úeval©r   Úsr
   r
   r   Útest_empty_objects'   s   zTestDecode.test_empty_objectsc                 C   s¬   d}g d¢}|   t |¡t|ƒ¡ |   tj|dd„ d�|¡ |   tjt|ƒdd„ d�|¡ tj|td�}|   |t|ƒ¡ |   t|ƒt¡ |   tj|t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 r   r
   ©Úxr
   r
   r   Ú<lambda>4   ó    z3TestDecode.test_object_pairs_hook.<locals>.<lambda>©Úobject_pairs_hookc                 S   rA   r   r
   rB   r
   r
   r   rD   6   rE   c                 S   s   d S r   r
   rB   r
   r
   r   rD   =   rE   )rG   Úobject_hook)r!   r   r   r/   Úloadr   r   Útype)r   r1   ÚpÚodr
   r
   r   Útest_object_pairs_hook/   s$   ÿÿ
þýz!TestDecode.test_object_pairs_hookc                 C   sF   ||ƒ}t |d ƒt |d ƒ\}}\}}|  ||¡ |  ||¡ d S )Nr   r4   )Úsortedr   )r   Úsourcer   r#   r   r   ÚcÚdr
   r
   r   Úcheck_keys_reuse@   s   "zTestDecode.check_keys_reusec                 C   s   d  d¡}|  |tj¡ d S )Nõ2   [{"a_key": 1, "b_Ã©": 2}, {"a_key": 3, "b_Ã©": 4}]Úutf8)ÚencoderR   r   r   r0   r
   r
   r   Útest_keys_reuse_strF   s   
zTestDecode.test_keys_reuse_strc                 C   s   d}|   |tj¡ d S )NrS   )rR   r   r   r0   r
   r
   r   Útest_keys_reuse_unicodeJ   s   z"TestDecode.test_keys_reuse_unicodec                 C   sP   |   t d¡d¡ |   t d¡d¡ |   t d¡dg¡ |   t d¡dg¡ d S )Nr.   Ú z[""])r!   r   r   r   r
   r
   r   Útest_empty_stringsN   s   zTestDecode.test_empty_stringsc                 C   sd   t jj}|  di idf|ƒ  d¡¡ |  di idf|td� d¡¡ |  di idf|ƒ  d¡¡ d S )Nr   é	   z	{"a": {}}rF   é   z 
{"a": {}})r   ÚdecoderÚJSONDecoderr!   Ú
raw_decodeÚdict)r   Úclsr
   r
   r   Útest_raw_decodeT   s   

þ
þ

þzTestDecode.test_raw_decodec                 C   s¨   t jj}tdƒ}|  |ƒ  |¡d¡ |  |dd� |¡d¡ |  |d d� |¡d¡ ttdƒƒ}|  |ƒ  |¡d¡ |  |dd� |¡d¡ |  |d d� |¡d¡ d S )Nu   "Ã¢Â‚Â¬"u   â‚¬Úlatin1)r   u   Ã¢Â‚Â¬)r   r\   r]   r   r!   r   r   )r   r`   Údatar
   r
   r   Útest_bytes_decodeb   s   zTestDecode.test_bytes_decodec                 C   s„   t j ¡ }dD ]}|  t|jd|¡ |  t|jd|¡ qtddgtd�\}}t|ƒt|ƒ }|  t|j||¡ |  t|j||¡ d S )N)	r:   r<   r>   éÿÿÿÿéþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿiúÿÿÿÚ1234Ú	128931233Ú	472389423)r+   )	r   r\   r]   ÚassertRaisesÚ
ValueErrorÚ	scan_oncer^   rN   Úid)r   ÚjÚirC   ÚyÚdiffr
   r
   r   Útest_bounds_checkingn   s   
zTestDecode.test_bounds_checkingN)r   r   r   Úhasattrr   r   r$   r(   r-   r2   rM   rR   rV   rW   rY   ra   rd   ru   r
   r
   r
   r   r      s    
r   )Ú
__future__r   r   Úunittestr   Ú
simplejsonr   Úsimplejson.compatr   r   r   r   r   r   r
   r
   r
   r   Ú<module>   s    