
    4jB/                     N    S SK r S SKJr  S SKrS SKrS SKJrJr   " S S\5      r	g)    N)TestCase)bPY3c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestScanString   c                 V    U R                  [        R                  R                  5        g )N)_test_scanstring
simplejsondecoderpy_scanstringselfs    _/root/lseg-credit/backend/venv/lib/python3.13/site-packages/simplejson/tests/test_scanstring.pytest_py_scanstring!TestScanString.test_py_scanstring   s    j00>>?    c                    [         R                  R                  (       d  g U R                  [         R                  R                  5        U R	                  [        [         R                  R                  SS5      S   [        5      5        g )Nz""r   )r   r   c_scanstringr
   
assertTrue
isinstancestrr   s    r   test_c_scanstring TestScanString.test_c_scanstring   sZ    !!..j00==>
:#5#5#B#B4#KA#NPSTUr   c           	         [         R                  S:X  a  U R                  U" SSS S5      S5        OU R                  U" SSS S5      S5        U R                  U" SSS S5      S5        U R                  U" S	SS S5      S
5        U R                  U" SSS S5      S5        U R                  U" SSS S5      S5        U R                  U" SSS S5      S5        U R                  U" SSS S5      S5        U R                  U" SSS S5      S5        U R                  U" SSS S5      S5        U R                  U" SSS S5      S5        U R                  U" SSS S5      S5        U R                  U" SSS S5      S5        U R                  U" SSS S5      S5        U R                  U" S SS S5      S!5        U R                  U" S"S#S S5      S$5        U R                  U" S%SS S5      S&5        U R                  U" S'SS S5      S(5        U R                  U" S)SS S5      S*5        U R                  U" S+SS S5      S,5        U R                  U" S-SS S5      S.5        [        [        [        S/S05      5       H?  nU R                  U" US1-   S/S S25      US45        U R                  [        XS1-   S/S S5        MA     U R                  [        US3S/S S5        U R                  [        US4S/S S5        U R                  [        US5S/S S5        U R                  [        US6S/S S5        U R                  [        US7S/S S5        U R                  [        US8S/S S5        U R                  [        US9S/S S5        U R                  [        US:S/S S5        [         R                  S:  a4  U R                  [        US;S/S S5        U R                  [        US<S/S S5        U R                  [        R                  US=S/S S5        U R                  [        R                  US>S/S S5        g )?Ni  u   "z𝄠x"   T)   z𝄠x   )r      z"\u007b"){r   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   r      "F a\\u\u0\u01\u012\u0123z	\ud834\u"z\ud834\x0123"z\u-123"z\u EDD")
sys
maxunicodeassertEqualmapchrrangeassertRaises
ValueErrorjsonJSONDecodeError)r   
scanstringcs      r   r
   TestScanString._test_scanstring   s   >>U",at<$& ,at<$& 	{AtT2	 	UWXZ^`deO	Q 	*AtT:#	% 	)1dD9 	" 	11dDA'	) 	3QdC*	, 	)1dD9 	" 	/D$? 	" 	SUVX\^bc,	. 	64F'	) 	8!T4H'	) 	DatT7	9 	8!T4H*	, 	KRQUW[\	 	/D$?"	$ 	0!T4@!	# 	91dDI+	- 	:AtTJ+	- 	-q$=	  S%d+,A1s7AtU3A GQd4	 - 	*j"atD*j#q$E*j$4F*j%D$G*j&!T4H*j'1dDI*j(AtTJ*j)QdK>>E!j(-D$Hj(*;QdL 	$..
J4QUV$..
J4QUVr   c                     U R                  [        [        R                  R                  SSS5        U R                  [
        [        R                  R                  [        S5      5        g )Nxxxr   u   xxÿ)	r>   r?   r@   r   rB   UnicodeDecodeErrorencoderencode_basestring_asciir   r   s    r   test_issue3623TestScanString.test_issue3623   sJ    *dll&=&=ua	!,,,>>(	Mr   c           	          [        [        S[        [        SS 5      5      nUc   eU R                  [        [        R
                  R                  SUS-   5        g )NmaxsizemaxintrF   r   )getattrr8   r>   OverflowErrorr@   r   rB   )r   rM   s     r   test_overflowTestScanString.test_overflow   sJ    #y'#x*FG"""-)@)@%!A+	'r   c                    S H  u  pU R                  [        R                  5       n[        R                  R	                  XS S5        S S S 5        U R                  WR                  R                  US-
  SU< SU< SUR                  R                  < SUS-
  < 35        U R                  S[        UR                  5      5        M     g ! , (       d  f       N= f)	N))z"abc"d   )abcrT   )r0   rT   )rU   )r0   rV   Tr   zscanstring(z, z) pos=z, expected zUnterminated string)
r>   r@   rA   r   rB   r:   	exceptionposassertInr   )r   sendcms       r   )test_end_out_of_bounds_is_jsondecodeerror8TestScanString.test_end_out_of_bounds_is_jsondecodeerror   s    
FA ""4#7#78B''d; 9R\\--sQwbll&6&6aAB MM/R\\1BC
 98s   "C
C	c                   ^ ^ [         R                  R                  mSUU 4S jjnU" SS5        U" SS5        U" SS5        U" S	S
5        U" SS5        U" SS
5        U" SSR                  SS/5      5        U" SSR                  SS/5      5        U" SR                  SS/5      SR                  SS/5      SS9  T R	                  [
        TSSS S5        T R	                  [
        TSSS S5        g )NTc                    > U /n[         (       d'  U(       a   UR                  U R                  S5      5        U H<  n T" U SS S5      u  pETR                  [	        U 5      U5        TR                  XA5        M>     g )Nutf8r   T)r   appendencoder:   len)givenexpect	test_utf8givensrescountrB   r   s         r   
assertScan2TestScanString.test_surrogates.<locals>.assertScan   sd    WF39ell623)%D$?  UU3  -  r   z"z\ud834\u0079x"u   zyxz"z\ud834\udd20x"r   z"z\ud834\ud834\udd20x"u	   z𝄠xz
"z\ud834x"u   zxz
"z\udd20x"u   zxu   "zx"u   "z\ud834x12345"r0   u   zu	   x12345u   "z\udd20x"u   xu   "zu   x"F)rg   z	"z\ud83x"r   z"z\ud834\udd2x")T)r@   r   rB   joinr>   r?   )r   rk   rB   s   ` @r   test_surrogatesTestScanString.test_surrogates   s"   \\,,
	. 	. 	!	 	!	 	(!	# 		 		 		
 	%HHj/23	5 	 HHj*-.	0
 	HHk;/0HHj*-.	
 	*$mQd	D*$&:AtT	Kr   c                    [         R                  R                  c  g S nSnS nSU" S5      4SU" S5      4SU" S5      4SU" S5      4S	U" S5      4S
U4SU4SU" S5      4SU" S5      4SU" S5      4SU" S5      4SU4SU4/nU H  u  pVU" [         R                  R                  U5      nU" [         R                  R                  U5      nU R	                  XvSU< SU< SU< 35        U R	                  XSU< SU< SU< 35        M     [         R                  R                  [         R                  R                  4 H9  n	U R	                  U	" SSS S5      S5        U R	                  U	" SSS S5      S5        M;     g )Nc                      U " USS S5        g ! [         R                   a3  nUR                  [        U5      R	                  S5      S   4s S nA$ S nAff = f)Nr   T:)r@   rA   rX   r   split)rB   rZ   es      r   get_exc8TestScanString.test_escape_error_parity.<locals>.get_exc   sS    51at,  '' 5s1v||C03445s    A(A
AA)rV   zUnterminated string starting atc                 
    U S4$ )NzInvalid \uXXXX escape sequence )rX   s    r   INVALID8TestScanString.test_escape_error_parity.<locals>.INVALID   s    :;;r   r3   r   r4   r5   r6   z\uXXXXr7   z\ud834z\ud834\ur   z	\ud834\uxz\ud834\udd2z\ud834\udd2xz\ud834\udd1ezprefix\ud834\udd1ezpy_scanstring(z) expected z, got zc_scanstring(z\u0123"T)u   ģ   z\ud834\udd1e")u   𝄞   )r   r   r   r   r:   )
r   ru   UNTERMINATEDry   casesrZ   expectedpyrC   rB   s
             r   test_escape_error_parity'TestScanString.test_escape_error_parity   s    **2	 ?	<
 WQZ gaj!wqz"
#$ &&GAJ'WQZ(wqz*
+ -$l3-
0 !KA++991=B
**77;AR2/0 Q1./ ! &--;;%--::<J;46  -q$=#%<r   rx   N)__name__
__module____qualname____firstlineno__r   r   r
   rJ   rQ   r]   rn   r   __static_attributes__rx   r   r   r   r      s4    @VnW`M'D(0KdF%r   r   )
r8   unittestr   r   r@   simplejson.decodersimplejson.compatr   r   r   rx   r   r   <module>r      s"    
    $\%X \%r   