U
    M»{j=  ã                   @   st   d dl mZ d dlZd dlmZ d dl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   s   dS )Nz
bad decode© )ÚselfÚencodingr	   r	   ú[/var/www/html/bwave/python/venv/lib/python3.8/site-packages/simplejson/tests/test_decode.pyÚdecode   s    zMisbehavingBytesSubtype.decodec                 C   s   dS )Nzbad __str__r	   ©r
   r	   r	   r   Ú__str__   s    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d„ ZdS )Ú
TestDecodeÚassertIsc                 C   s   |   ||k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}dddddddg}|   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})Zxkdé   )Zkcwé   )Úarté   )Zhxmé   )Zqrté   )Úpadé   )Zhoyé   c                 S   s   | S ©Nr	   ©Úxr	   r	   r   Ú<lambda>5   ó    z3TestDecode.test_object_pairs_hook.<locals>.<lambda>©Úobject_pairs_hookc                 S   s   | S r9   r	   r:   r	   r	   r   r<   7   r=   c                 S   s   d S r9   r	   r:   r	   r	   r   r<   >   r=   )r?   Úobject_hook)r   r   r   r,   Úloadr   r   Útype)r
   r.   ÚpZodr	   r	   r   Útest_object_pairs_hook0   s,      ÿÿÿ
þýz!TestDecode.test_object_pairs_hookc                 C   sF   ||ƒ}t |d ƒt |d ƒ \}}\}}|  ||¡ |  ||¡ d S )Nr   r0   )Úsortedr   )r
   Úsourcer   r    r   r   ÚcÚdr	   r	   r   Úcheck_keys_reuseA   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)ÚencoderI   r   r   r-   r	   r	   r   Útest_keys_reuse_strG   s    
zTestDecode.test_keys_reuse_strc                 C   s   d}|   |tj¡ d S )NrJ   )rI   r   r   r-   r	   r	   r   Útest_keys_reuse_unicodeK   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_stringsO   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": {}}r>   é   z 
{"a": {}})r   ÚdecoderÚJSONDecoderr   Ú
raw_decodeÚdict)r
   Úclsr	   r	   r   Útest_raw_decodeU   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   rS   rT   r   r   r   r   )r
   rW   Údatar	   r	   r   Útest_bytes_decodec   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)	r4   r5   r7   éÿÿÿÿéþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿiúÿÿÿÚ1234Z	128931233Z	472389423)r(   )	r   rS   rT   ÚassertRaisesÚ
ValueErrorÚ	scan_oncerU   rE   Úid)r
   ÚjÚir;   ÚyÚdiffr	   r	   r   Útest_bounds_checkingo   s    
zTestDecode.test_bounds_checkingc                 C   sP   t tddd„ ƒƒ }dd|d   }|  t |¡t|ƒ¡ |  ttj|d ¡ d S )NZget_int_max_str_digitsc                   S   s   dS )NiÌ  r	   r	   r	   r	   r   r<   |   r=   z-TestDecode.test_bounded_int.<locals>.<lambda>r"   Ú0r0   )ÚgetattrÚsysr   r   r   Úintrb   rc   )r
   Zmax_str_digitsr.   r	   r	   r   Útest_bounded_intz   s    zTestDecode.test_bounded_intN)r   r   r   Úhasattrr   r   r!   r%   r*   r/   rD   rI   rM   rN   rP   rX   r[   rj   ro   r	   r	   r	   r   r      s   
r   )Ú
__future__r   r   Zunittestr   rm   Z
simplejsonr   Zsimplejson.compatr   r   r   r   r   r   r	   r	   r	   r   Ú<module>   s   