
    :bh                         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                   r    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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     D/opt/python-3.12.12/usr/lib/python3.12/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                     dD ]7  }| j                  | j                        5  | j                  |       d d d        9 y # 1 sw Y   DxY w)N)u   1０u   0.０u   0e０assertRaisesJSONDecodeErrorr   )r   nums     r   test_nonascii_digits_rejectedz(TestDecode.test_nonascii_digits_rejected   s:    6C""4#7#78

3 98 788	   >A	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   s9    #
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+   inFiniTyr   )r   r1   s     r   test_constant_invalid_casez%TestDecode.test_constant_invalid_case&   sA    
H ""4#7#78

8$ 98
 98r"   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>7   s    1r   )object_pairs_hookc                     | S rM   rN   rO   s    r   rQ   z3TestDecode.test_object_pairs_hook.<locals>.<lambda>9   s    Ar   c                      y rM   rN   rO   s    r   rQ   z3TestDecode.test_object_pairs_hook.<locals>.<lambda>?   s    $r   )rR   object_hookr;   z{"empty": {}}empty)r   r   evaljsonloadr   r   type)r   spods       r   test_object_pairs_hookz!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    | 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_optimizationsH   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_reuseO   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}])rm   r   rX   decoderJSONDecoderdecodeassertFalsememo)r   r[   ro   s      r   test_keys_reusezTestDecode.test_keys_reuseU   sY    Da,))##//1a0&r   c                 \    d}d}| j                  | j                  || j                  |       y )Nz
[1, 2, 3]5z
Extra dataassertRaisesRegexr   r   r   r[   msgs      r   test_extra_datazTestDecode.test_extra_data\   s*    t33S$**aHr   c                 \    d}d}| j                  | j                  || j                  |       y )Nz	["abc\y"]escaperv   rx   s      r   test_invalid_escapezTestDecode.test_invalid_escapea   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	@)rw   	TypeErrorr   )r   ry   r`   s      r   test_invalid_input_typez"TestDecode.test_invalid_input_typef   s4    +r2t,E""9c4::uE -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BOMr<   "u   ﻿)encoderq   r   r   r   assertInr/   	exceptionrX   rY   r   r   )r   bom_jsoncmbom
bom_in_strs        r   test_string_with_utf8_bomz$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$%E1$E.1E:c                 |    | j                   j                         }| j                  t        |j                  dd       y )N*aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai<)rX   rp   r   
ValueError
raw_decode)r   rl   s     r   test_negative_indexzTestDecode.test_negative_indexz   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   r   r   )r   	maxdigitss     r   test_limit_intzTestDecode.test_limit_int~   se    	..y9JJsY'"":.

3)a-01 / :9.. :9s#   *A7A+A7+A4	0A77B N)__name__
__module____qualname__r   r   r!   r(   r3   r9   r=   r^   rd   rm   rt   rz   r}   r   r   r   r   rN   r   r   r	   r	      s]    7
$
 .%/
B,9'I
I
F
ID2r   r	   c                       e Zd Zy)TestPyDecodeNr   r   r   rN   r   r   r   r          r   r   c                       e Zd Zy)TestCDecodeNr   rN   r   r   r   r      r   r   r   )r   ior   collectionsr   test.test_jsonr   r   testr   r	   r   r   rN   r   r   <module>r      s7      # ( {2 {2| -:v , **e *r   