o
    h                     @   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
   d/var/www/html/magazine_api/magazine_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}))Zxkd   )Zkcw   )art   )Zhxm   )Zqrt   )pad   )Zhoy   c                 S      | S r   r
   xr
   r
   r   <lambda>4       z3TestDecode.test_object_pairs_hook.<locals>.<lambda>object_pairs_hookc                 S   r<   r   r
   r=   r
   r
   r   r?   6   r@   c                 S   s   d S r   r
   r=   r
   r
   r   r?   =   r@   )rB   object_hook)r!   r   r   r/   loadr   r   type)r   r1   pZodr
   r
   r   test_object_pairs_hook/   s$   
z!TestDecode.test_object_pairs_hookc                 C   sF   ||}t |d t |d \}}\}}| || | || d S )Nr   r3   )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)encoderL   r   r   r0   r
   r
   r   test_keys_reuse_strF   s   
zTestDecode.test_keys_reuse_strc                 C   s   d}|  |tj d S )NrM   )rL   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": {}}rA      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   rV   rW   r   r!   r   r   )r   rZ   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)	r7   r8   r:   i1234Z	128931233Z	472389423)r+   )	r   rV   rW   ZassertRaises
ValueError	scan_oncerX   rH   id)r   jir>   ydiffr
   r
   r   test_bounds_checkingn   s   
zTestDecode.test_bounds_checkingN)r   r   r   hasattrr   r   r$   r(   r-   r2   rG   rL   rP   rQ   rS   r[   r^   rl   r
   r
   r
   r   r      s    
r   )
__future__r   r   Zunittestr   Z
simplejsonr   Zsimplejson.compatr   r   r   r   r   r   r
   r
   r
   r   <module>   s    