
    DUf=                         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e          Z G d d	e          ZdS )
    )absolute_importN)TestCase)StringIObbinary_type)OrderedDictc                   "    e Zd ZddZd Zd ZdS )MisbehavingBytesSubtypeNc                     dS )Nz
bad decode )selfencodings     Y/var/www/html/software/conda/lib/python3.11/site-packages/simplejson/tests/test_decode.pydecodezMisbehavingBytesSubtype.decode   s    |    c                     dS )Nzbad __str__r   r   s    r   __str__zMisbehavingBytesSubtype.__str__   s    }r   c                      t          d          S )Nzbad __bytes__)r   r   s    r   	__bytes__z!MisbehavingBytesSubtype.__bytes__   s    !!!r   N)__name__
__module____qualname__r   r   r   r   r   r   r
   r
   
   sF             " " " " "r   r
   c                   z    e Zd Z eed          sd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd ZdS )
TestDecodeassertIsc                 @    |                      ||u |d|           d S )Nz is )
assertTrue)r   ar   s      r   r   zTestDecode.assertIs   s+    OOAF!!!QQ$788888r   c                     t          j        dt          j                  }|                     t          |t          j                             |                     |t          j        d                     d S )Nz1.1)parse_float)jsonloadsdecimalDecimalr   
isinstanceassertEqualr   rvals     r   test_decimalzTestDecode.test_decimal   s\    z%W_===
499:::wu5566666r   c                     t          j        dt                    }|                     t	          |t                               |                     |d           d S )N1)	parse_intg      ?)r#   r$   floatr   r'   r(   r)   s     r   
test_floatzTestDecode.test_float   sN    z#///
4//000s#####r   c                 `    t          j        d          }|                     |ddd           d S )Nz,{   "key"    :    "value"    ,  "k":"v"    }valuev)keyk)r#   r$   r(   r)   s     r   test_decoder_optimizationsz%TestDecode.test_decoder_optimizations!   s8     zHIIg37788888r   c                 P   d}|                      t          j        |          t          |                     d}|                      t          j        |          t          |                     d}|                      t          j        |          t          |                     d S )Nz{}z[]"")r(   r#   r$   evalr   ss     r   test_empty_objectszTestDecode.test_empty_objects(   s    AQ000AQ000AQ00000r   c                    d}g d}|                      t          j        |          t          |                     |                      t          j        |d           |           |                      t          j        t          |          d           |           t          j        |t                    }|                      |t          |                     |                      t          |          t                     |                      t          j        |t          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 r   r   xs    r   <lambda>z3TestDecode.test_object_pairs_hook.<locals>.<lambda>5   s    1 r   object_pairs_hookc                     | S r   r   rM   s    r   rO   z3TestDecode.test_object_pairs_hook.<locals>.<lambda>7   s    q r   c                     d S r   r   rM   s    r   rO   z3TestDecode.test_object_pairs_hook.<locals>.<lambda>>   s    $ r   )rQ   object_hook)r(   r#   r$   r9   loadr   r   type)r   r;   pods       r   test_object_pairs_hookz!TestDecode.test_object_pairs_hook0   s=   M1 1 1AQ000AEEEqIII8A;;5@[B B BCD	F 	F 	FZ[999[^^,,,b;///A6A0>@ @ @ %Q	) 	) 	) 	) 	)r   c                      ||          }t          |d                   t          |d                   c\  }}\  }}|                     ||           |                     ||           d S )Nr   r?   )sortedr   )r   sourcer$   r*   r    r   cds           r   check_keys_reusezTestDecode.check_keys_reuseA   sd    uV}}Q&a//AAaar   c                 p    d                     d          }|                     |t          j                   d S )N2   [{"a_key": 1, "b_é": 2}, {"a_key": 3, "b_é": 4}]utf8)encoder_   r#   r$   r:   s     r   test_keys_reuse_strzTestDecode.test_keys_reuse_strG   s3    ELLVTTa,,,,,r   c                 J    d}|                      |t          j                   d S )Nra   )r_   r#   r$   r:   s     r   test_keys_reuse_unicodez"TestDecode.test_keys_reuse_unicodeK   s%    Ea,,,,,r   c                 J   |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          dg           |                      t          j        d          dg           d S )Nr8    z[""])r(   r#   r$   r   s    r   test_empty_stringszTestDecode.test_empty_stringsO   s    D))2...E**C000F++bT222G,,se44444r   c                 t   t           j        j        }|                     di idf |                                d                     |                     di idf |t
                                        d                     |                     di idf |                                d                     d S )Nr    	   z	{"a": {}}rP      z 
{"a": {}})r#   decoderJSONDecoderr(   
raw_decodedict)r   clss     r   test_raw_decodezTestDecode.test_raw_decodeU   s    l&2YNCEE]++	- 	- 	- 	2YNC$'''22=AA	C 	C 	C 	2YOCEE-..	0 	0 	0 	0 	0r   c                    t           j        j        }t          d          }|                      |                                |          d           |                      |d                              |          d           |                      |d                               |          d           t          t          d                    }|                      |                                |          d           |                      |d                              |          d           |                      |d                               |          d           d S )Nu   "â¬"u   €latin1)r   u   â¬)r#   rm   rn   r   r(   r   r
   )r   rq   datas      r   test_bytes_decodezTestDecode.test_bytes_decodec   sJ   l&!""d++Y777h///66t<<oNNNd+++22488)DDD&q)9':':;;d++Y777h///66t<<oNNNd+++22488)DDDDDr   c                    t           j                                        }dD ]F}|                     t          |j        d|           |                     t          |j        d|           Gt          ddgt                    \  }}t          |          t          |          z
  }|                     t          |j        ||           |                     t          |j        ||           d S )N)	rE   rG   rI   i1234	128931233	472389423)r4   )	r#   rm   rn   assertRaises
ValueError	scan_oncero   r[   id)r   jirN   ydiffs         r   test_bounds_checkingzTestDecode.test_bounds_checkingo   s    L$$&&2 	C 	CAj!+vqAAAj!,BBBB{K0b9991!uur!uu}*ak1d;;;*alAq99999r   c                     t          t          dd                       }dd|dz
  z  z   }|                     t          j        |          t          |                     |                     t          t          j        |dz              d S )Nget_int_max_str_digitsc                      dS )Ni  r   r   r   r   rO   z-TestDecode.test_bounded_int.<locals>.<lambda>|   s     r   r-   0r?   )getattrsysr(   r#   r$   intr   r   )r   max_str_digitsr;   s      r   test_bounded_intzTestDecode.test_bounded_intz   sz    M&>MMOO#!+,,AA///*dj!c':::::r   N)r   r   r   hasattrr   r   r+   r0   r6   r<   rY   r_   rd   rf   ri   rr   rv   r   r   r   r   r   r   r      s        78Z(( 9	9 	9 	97 7 7
$ $ $
9 9 91 1 1) ) )"  - - -- - -5 5 50 0 0
E 
E 
E	: 	: 	:; ; ; ; ;r   r   )
__future__r   r%   unittestr   r   
simplejsonr#   simplejson.compatr   r   r   r   r
   r   r   r   r   <module>r      s    & & & & & &        



     6 6 6 6 6 6 6 6 6 6 " " " " " "" " " " "k " " "m; m; m; m; m; m; m; m; m; m;r   