
    :bht                     `    d dl Z d dlmZmZ  G d d      Z G d dee      Z G d dee      Zy)	    N)PyTestCTestc                   $    e Zd Zd Zd Zd Zd Zy)TestScanstringc                 T   | j                   j                  j                  }| j                   |ddd      d       | j                   |ddd      d       | j                   |ddd      d       | j                   |d	d
d      d       | j                   |dd
d      d       | j                   |dd
d      d       | j                   |dd
d      d       | j                   |dd
d      d       | j                   |dd
d      d       | j                   |dd
d      d       | j                   |dd
d      d       | j                   |dd
d      d       | j                   |dd
d      d       | j                   |dd
d      d       | j                   |d d!d      d"       | j                   |d#d
d      d$       | j                   |d%d
d      d&       | j                   |d'd
d      d(       | j                   |d)d
d      d*       | j                   |d+d
d      d,       y )-Nu   "z𝄠x"   T)   z𝄠x   z"\u007b"){   z<"A JSON payload should be an object or array, not a string.")z:A JSON payload should be an object or array, not a string.<   z["Unclosed array"   )zUnclosed array   z["extra comma",])zextra comma   z["double extra comma",,])zdouble extra comma   z["Comma after the close"],)zComma after the close   z["Extra close"]])zExtra closer   z{"Extra comma": true,})zExtra commar   z:{"Extra value after close": true} "misplaced quoted value")zExtra value after close   z{"Illegal expression": 1 + 2})zIllegal expressionr   z{"Illegal invocation": alert()})zIllegal invocationr   z+{"Numbers cannot have leading zeroes": 013})z"Numbers cannot have leading zeroes%   z{"Numbers cannot be hex": 0x14})zNumbers cannot be hexr   z2[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]r   )zToo deep   z{"Missing colon" null})zMissing colon   z{"Double colon":: null})zDouble colon   z {"Comma instead of colon", null})zComma instead of colon   z!["Colon instead of comma": false])zColon instead of commar   z["Bad value", truth])z	Bad value   )jsondecoder
scanstringassertEqual)selfr   s     H/opt/python-3.12.12/usr/lib/python3.12/test/test_json/test_scanstring.pytest_scanstringzTestScanstring.test_scanstring   s   YY&&11
'D1	! 	{At,	 	UWXZ^_N	P 	*At4"	$ 	)1d3	! 	11d;&	( 	3Q=)	+ 	)1d3	! 	/D9	! 	SUVX\]+	- 	64@&	( 	8!TB&	( 	DaN6	8 	8!TB)	+ 	KRQUV	 	/D9!	# 	0!T: 	" 	91dC*	, 	:AtD*	, 	-q$7	    c                       j                   j                  j                   fd} |dd        |dd        |dd        |dd	        |d
d        |dd        |dd        |dd        |dd	       y )Nc                 P    j                   | dd      |t        |       f       y )Nr   T)r   len)givenexpectr   r   s     r   
assertScanz2TestScanstring.test_surrogates.<locals>.assertScanZ   s(    Zq$7$c%j13r!   z"z\ud834\u0079x"u   zyxz"z\ud834\udd20x"r	   z"z\ud834\ud834\udd20x"u	   z𝄠xz
"z\ud834x"u   zxu   "z\ud834x12345"u   zx12345z
"z\udd20x"u   zxu
   "zx"u   zxu   "z\udd20x"u   "zx")r   r   r   )r   r'   r   s   ` @r   test_surrogateszTestScanstring.test_surrogatesX   s    YY&&11
	3 	'5'8.0DE=*-+-BC=*-%'78&(89<,r!   c                    | j                   j                  j                  }g ddddddddd	d
dddj                  d      ddddddddddddddddj                  d      dd d!d"}|D ]2  }| j	                  | j
                  |#      5   ||d$d%       d d d        4 y # 1 sw Y   ?xY w)&Nz"\"z"\x"z"\u"z"\u0"z"\u01"z"\u012"z"\uz012"z"\u0z12"z"\u01z2"z"\u012z"z"\u0x12"z"\u0X12"z"\u{0}"u   ００００z"\u 123"z"\u-123"z"\u+123"z"\u1_23"z	"\ud834\"z
"\ud834\u"z"\ud834\ud"z"\ud834\udd"z"\ud834\udd2"z"\ud834\uzdd2"z"\ud834\udzd2"z"\ud834\uddz2"z"\ud834\udd2z"z"\ud834\u0x20"z"\ud834\u0X20"z"\ud834\u{0}"z"\ud834\u 123"z"\ud834\u-123"z"\ud834\u+123"z"\ud834\u1_23")msgr   T)r   r   r   formatassertRaisesJSONDecodeError)r   r   bad_escapesss       r   test_bad_escapeszTestScanstring.test_bad_escapesh   s   YY&&11
"
"
"
 "
 	"

 "
 "
 "
 "
 "
 "
 "
 "
 l+"
 "
 "
  !"
" #"
$ %"
& '"
( )"
* +"
, -"
. /"
0 1"
2 3"
4 5"
6 7"
8 9"
: $$\2;"
< ="
> ?"
@ A"
B C"
F A""4#7#7Q"?1a& @? ??s   %B;;C	c                     | j                  t              5  | j                  j                  j	                  dt
        j                  dz          d d d        y # 1 sw Y   y xY w)Ns   xxxr   )r,   OverflowErrorr   r   r   sysmaxsize)r   s    r   test_overflowzTestScanstring.test_overflow   s>    }-II((Q? .--s   8AA N)__name__
__module____qualname__r    r(   r0   r5    r!   r   r   r      s    Pd- ''R@r!   r   c                       e Zd Zy)TestPyScanstringNr6   r7   r8   r9   r!   r   r;   r;          r!   r;   c                       e Zd Zy)TestCScanstringNr<   r9   r!   r   r?   r?      r=   r!   r?   )r3   test.test_jsonr   r   r   r;   r?   r9   r!   r   <module>rA      s0    
 (N@ N@b 5~v 4 2ne 2r!   