
    <i                     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                   8    \ 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    Z/home/james-whalen/.local/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\z\uz\u0z\u01z\u012z\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ÿ)	r9   r:   r;   r   r=   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maxintrA   r   )getattrr3   r9   OverflowErrorr;   r   r=   )r   rH   s     r   test_overflowTestScanString.test_overflow   sJ    #y'#x*FG"""-)@)@%!A+	'r   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encoder5   len)givenexpect	test_utf8givensrescountr=   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)rV   z	"z\ud83x"r   z"z\ud834\udd2x")T)r;   r   r=   joinr9   r:   )r   rZ   r=   s   ` @r   test_surrogatesTestScanString.test_surrogates   s"   \\,,
	. 	. 	!	 	!	 	(!	# 		 		 		
 	%HHj/23	5 	 HHj*-.	0
 	HHk;/0HHj*-.	
 	*$mQd	D*$&:AtT	Kr    N)__name__
__module____qualname____firstlineno__r   r   r
   rE   rL   r]   __static_attributes__r_   r   r   r   r      s'    @VnW`M'0Kr   r   )
r3   unittestr   r   r;   simplejson.decodersimplejson.compatr   r   r   r_   r   r   <module>rh      s$    
    $@KX @Kr   