o
    ȷe                     @   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
   S/var/www/ideatree/venv/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 )N2   [{"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    