
    daf                         d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	  G d d      Z
 G d d	e
e      Z G d
 de
e      Zy)    N)StringIO)OrderedDict)PyTestCTest)supportc                   l    e 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 Zd Zd Zd Zy)
TestDecodec                     | j                  dt        j                        }| j                  |t        j                         | j	                  |t        j                  d             y )Nz1.1)parse_float)loadsdecimalDecimalassertIsInstanceassertEqualselfrvals     5/root/Python-3.12.4/Lib/test/test_json/test_decode.pytest_decimalzTestDecode.test_decimal	   sE    zz%W__z=dGOO4wu56    c                     | j                  dt              }| j                  |t               | j                  |d       y )N1)	parse_intg      ?)r   floatr   r   r   s     r   
test_floatzTestDecode.test_float   s4    zz#z/dE*s#r   c                 F    | j                  | j                  d      d       y )N   1   r   r   r   s    r   
test_byteszTestDecode.test_bytes   s    D)1-r   c                 z    dD ]6  \  }}| j                  | j                  |t        j                        |       8 y )N))InfinityINFINITY)z	-Infinityz	-INFINITY)NaNNAN)parse_constant)r   r   strupper)r   constantexpecteds      r   test_parse_constantzTestDecode.test_parse_constant   s>    #
 	Hh
 

8CII
>	r   c                     dD ]7  }| j                  | j                        5  | j                  |       d d d        9 y # 1 sw Y   DxY w)N)nanr&   naNinfinityr$   inFiniTy)assertRaisesJSONDecodeErrorr   )r   r*   s     r   test_constant_invalid_casez%TestDecode.test_constant_invalid_case    sO    
 	%H ""4#7#78 %

8$% %	%% %s	   >A	c                     | j                  | j                  d      i        | j                  | j                  d      g        | j                  | j                  d      d       y )N{}z[]z"" r   r    s    r   test_empty_objectszTestDecode.test_empty_objects'   sM    D)2.D)2.D)2.r   c                    d}g d}| j                  | j                  |      t        |             | j                  | j                  |d       |       | j                  | j                  j	                  t        |      d       |       | j                  |t              }| j                  |t        |             | j                  t        |      t               | j                  | j                  |t        d       t        |             | j                  | j                  dt              t                      | j                  | j                  d	t              t        d
t               fg             y )Nz?{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}))xkdr   )kcw   )art   )hxm   )qrt   )pad   )hoy   c                     | S N xs    r   <lambda>z3TestDecode.test_object_pairs_hook.<locals>.<lambda>1   s    1 r   )object_pairs_hookc                     | S rH   rI   rJ   s    r   rL   z3TestDecode.test_object_pairs_hook.<locals>.<lambda>3   s    A r   c                      y rH   rI   rJ   s    r   rL   z3TestDecode.test_object_pairs_hook.<locals>.<lambda>9   s    r   )rM   object_hookr6   z{"empty": {}}empty)r   r   evaljsonloadr   r   type)r   spods       r   test_object_pairs_hookz!TestDecode.test_object_pairs_hook,   s9   M1AQ0AEqI:E ( GHI	KZZ[Z9[^,b;/A0> $ @$Q	) 	DKH$	(O6A $ C$w&>%?@	Br   c                 P    | j                  d      }| j                  |ddd       y )Nz,{   "key"    :    "value"    ,  "k":"v"    }valuev)keyk)r   r   r   s     r   test_decoder_optimizationsz%TestDecode.test_decoder_optimizationsB   s(     zzHIg378r   c                      ||      }t        |d         t        |d         c\  }}\  }}| j                  ||       | j                  ||       y )Nr   r   )sortedassertIs)r   sourcer   r   abcds           r   check_keys_reusezTestDecode.check_keys_reuseI   sJ    V}Q&a/AAaar   c                     d}| j                  || j                         | j                  j                  j	                         }| j                  ||j
                         | j                  |j                         y )Nu2   [{"a_key": 1, "b_é": 2}, {"a_key": 3, "b_é": 4}])rh   r   rS   decoderJSONDecoderdecodeassertFalsememo)r   rV   rj   s      r   test_keys_reusezTestDecode.test_keys_reuseO   sY    Da,))##//1a0&r   c                 \    d}d}| j                  | j                  || j                  |       y )Nz
[1, 2, 3]5z
Extra dataassertRaisesRegexr3   r   r   rV   msgs      r   test_extra_datazTestDecode.test_extra_dataV   s*    t33S$**aHr   c                 \    d}d}| j                  | j                  || j                  |       y )Nz	["abc\y"]escaperq   rs   s      r   test_invalid_escapezTestDecode.test_invalid_escape[   s*    t33S$**aHr   c                 d    d}ddg i d fD ]$  }| j                  t        || j                  |       & y )Nzthe JSON object must be strr   gQ	@)rr   	TypeErrorr   )r   rt   r[   s      r   test_invalid_input_typez"TestDecode.test_invalid_input_type`   s;    +r2t, 	FE""9c4::uE	Fr   c                    dj                  d      j                  d      }| j                  | j                        5 }| j	                  |       d d d        | j                  dt        j                               | j                  | j                        5 }| j                  j                  t        |             d d d        | j                  dt        |j                               dj                  d      j                  d      }d| d}| j                  | j	                  |      d       | j                  | j                  j                  t        |            d       y # 1 sw Y   xY w# 1 sw Y   xY w)Nz[1,2,3]z	utf-8-sigzutf-8BOMr7   "u   ﻿)encoderl   r2   r3   r   assertInr(   	exceptionrS   rT   r   r   )r   bom_jsoncmbom
bom_in_strs        r   test_string_with_utf8_bomz$TestDecode.test_string_with_utf8_bome   s#   ##K077@t334 	!JJx 	!eS./t334 	/IINN8H-.	/eS./ii$++G4QZ
J/:(<=xH	! 	!	/ 	/s   E$%E1$E.1E:c                 |    | j                   j                         }| j                  t        |j                  dd       y )N*aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai<)rS   rk   r2   
ValueError
raw_decode)r   rg   s     r   test_negative_indexzTestDecode.test_negative_indext   s,    II!!#*allFFCr   c                    d}t        j                  |      5  | j                  d|z         | j                  t              5  | j                  d|dz   z         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Ni  r   r   )r   adjust_int_max_str_digitsr   r2   r   )r   	maxdigitss     r   test_limit_intzTestDecode.test_limit_intx   sw    	..y9 	2JJsY'"":. 2

3)a-012	2 	22 2	2 	2s#   *A7A+A7+A4	0A77B N)__name__
__module____qualname__r   r   r!   r,   r4   r8   rY   r_   rh   ro   ru   rx   r{   r   r   r   rI   r   r   r	   r	      sX    7
$
.%/
B,9'I
I
F
ID2r   r	   c                       e Zd Zy)TestPyDecodeNr   r   r   rI   r   r   r   r          r   r   c                       e Zd Zy)TestCDecodeNr   rI   r   r   r   r      r   r   r   )r   ior   collectionsr   test.test_jsonr   r   testr   r	   r   r   rI   r   r   <module>r      s7      # ( u2 u2p -:v , **e *r   