
    3hh                         S SK r S SKJr  S SKJr  S SKJrJr  S SKJ	r	   " S S5      r
 " S S	\
\5      r " S
 S\
\5      rg)    N)StringIO)OrderedDict)PyTestCTest)supportc                   z    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rSrg)
TestDecode   c                     U R                  S[        R                  S9nU R                  U[        R                  5        U R	                  U[        R                  " S5      5        g )Nz1.1)parse_float)loadsdecimalDecimalassertIsInstanceassertEqualselfrvals     C/opt/python-3.13.8/usr/lib/python3.13/test/test_json/test_decode.pytest_decimalTestDecode.test_decimal	   sE    zz%W__z=dGOO4wu56    c                 |    U R                  S[        S9nU R                  U[        5        U R                  US5        g )N1)	parse_intg      ?)r   floatr   r   r   s     r   
test_floatTestDecode.test_float   s4    zz#z/dE*s#r   c                     S H8  nU R                  U R                  5         U R                  U5        S S S 5        M:     g ! , (       d  f       ML  = f)N)u   1０u   0.０u   0e０assertRaisesJSONDecodeErrorr   )r   nums     r   test_nonascii_digits_rejected(TestDecode.test_nonascii_digits_rejected   s:    6C""4#7#78

3 98 788   A  
A	c                 F    U R                  U R                  S5      S5        g )N   1   r   r   r   s    r   
test_bytesTestDecode.test_bytes   s    D)1-r   c                 v    S H3  u  pU R                  U R                  U[        R                  S9U5        M5     g )N))InfinityINFINITY)z	-Infinityz	-INFINITY)NaNNAN)parse_constant)r   r   strupper)r   constantexpecteds      r   test_parse_constantTestDecode.test_parse_constant   s7    #
H
 

8CII
>#
r   c                     S H8  nU R                  U R                  5         U R                  U5        S S S 5        M:     g ! , (       d  f       ML  = f)N)nanr2   naNinfinityr0   inFiniTyr    )r   r6   s     r   test_constant_invalid_case%TestDecode.test_constant_invalid_case&   sA    
H ""4#7#78

8$ 98
 98r&   c                     U R                  U R                  S5      0 5        U R                  U R                  S5      / 5        U R                  U R                  S5      S5        g )N{}z[]z"" r*   r+   s    r   test_empty_objectsTestDecode.test_empty_objects-   sM    D)2.D)2.D)2.r   c                    Sn/ SQnU R                  U R                  U5      [        U5      5        U R                  U R                  US S9U5        U R                  U R                  R	                  [        U5      S S9U5        U R                  U[        S9nU R                  U[        U5      5        U R                  [        U5      [        5        U R                  U R                  U[        S S9[        U5      5        U R                  U R                  S[        S9[        5       5        U R                  U R                  S	[        S9[        S
[        5       4/5      5        g )Nz?{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}))xkdr)   )kcw   )art   )hxm   )qrt   )pad   )hoy   c                     U $ N xs    r   <lambda>3TestDecode.test_object_pairs_hook.<locals>.<lambda>7   s    1r   )object_pairs_hookc                     U $ rU   rV   rW   s    r   rY   rZ   9   s    Ar   c                     g rU   rV   rW   s    r   rY   rZ   ?   s    $r   )r[   object_hookrB   z{"empty": {}}empty)r   r   evaljsonloadr   r   type)r   spods       r   test_object_pairs_hook!TestDecode.test_object_pairs_hook2   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    U R                  S5      nU R                  USSS.5        g )Nz,{   "key"    :    "value"    ,  "k":"v"    }valuev)keyk)r   r   r   s     r   test_decoder_optimizations%TestDecode.test_decoder_optimizationsH   s(     zzHIg378r   c                     U" U5      n[        US   5      [        US   5      su  pEu  pgU R                  XF5        U R                  XW5        g )Nr   r)   )sortedassertIs)r   sourcer   r   abcds           r   check_keys_reuseTestDecode.check_keys_reuseO   sB    V}Q&a/aar   c                     SnU R                  XR                  5        U R                  R                  R	                  5       nU R                  XR
                  5        U R                  UR                  5        g )Nu2   [{"a_key": 1, "b_é": 2}, {"a_key": 3, "b_é": 4}])rx   r   ra   decoderJSONDecoderdecodeassertFalsememo)r   rd   r{   s      r   test_keys_reuseTestDecode.test_keys_reuseU   sU    Da,))##//1a0&r   c                 Z    SnSnU R                  U R                  X R                  U5        g )Nz
[1, 2, 3]5z
Extra dataassertRaisesRegexr"   r   r   rd   msgs      r   test_extra_dataTestDecode.test_extra_data\   s(    t33S**aHr   c                 Z    SnSnU R                  U R                  X R                  U5        g )Nz	["abc\y"]escaper   r   s      r   test_invalid_escapeTestDecode.test_invalid_escapea   s(    t33S**aHr   c                 f    SnSS/ 0 S 4 H$  nU R                  [        XR                  U5        M&     g )Nzthe JSON object must be strr)   gQ	@)r   	TypeErrorr   )r   r   rj   s      r   test_invalid_input_type"TestDecode.test_invalid_input_typef   s2    +r2t,E""9c::uE -r   c                    SR                  S5      R                  S5      nU R                  U R                  5       nU R	                  U5        S S S 5        U R                  S[        WR                  5      5        U R                  U R                  5       nU R                  R                  [        U5      5        S S S 5        U R                  S[        UR                  5      5        SR                  S5      R                  S5      nSU S3nU R                  U R	                  U5      S5        U R                  U R                  R                  [        U5      5      S5        g ! , (       d  f       GN= f! , (       d  f       N= f)Nz[1,2,3]z	utf-8-sigzutf-8BOMrC   "u   ﻿)encoder}   r!   r"   r   assertInr4   	exceptionra   rb   r   r   )r   bom_jsoncmbom
bom_in_strs        r   test_string_with_utf8_bom$TestDecode.test_string_with_utf8_bomk   s   ##K077@t334JJx  5eS./t334IINN8H-. 5eS./ii$++G4QZ
J/:(<=xH 54 54s   E$%E6$
E36
Fc                 |    U R                   R                  5       nU R                  [        UR                  SS5        g )N*aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai<)ra   r|   r!   
ValueError
raw_decode)r   rw   s     r   test_negative_indexTestDecode.test_negative_indexz   s,    II!!#*allFFCr   c                    Sn[         R                  " U5         U R                  SU-  5        U R                  [        5         U R                  SUS-   -  5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Ni  r   r)   )r   adjust_int_max_str_digitsr   r!   r   )r   	maxdigitss     r   test_limit_intTestDecode.test_limit_int~   se    	..y9JJsY'"":.

3)a-01 / :9.. :9s#   *A=A,A=,
A:	6A==
BrV   N)__name__
__module____qualname____firstlineno__r   r   r$   r,   r8   r?   rD   rg   rn   rx   r   r   r   r   r   r   r   __static_attributes__rV   r   r   r	   r	      s]    7
$
 .%/
B,9'I
I
F
ID2r   r	   c                       \ rS rSrSrg)TestPyDecode   rV   Nr   r   r   r   r   rV   r   r   r   r      s    r   r   c                       \ rS rSrSrg)TestCDecode   rV   Nr   rV   r   r   r   r      s    dr   r   )r   ior   collectionsr   test.test_jsonr   r   testr   r	   r   r   rV   r   r   <module>r      s7      # ( {2 {2| -:v , **e *r   