
    8tf                     N    d dl Z d dlmZ d dlZd dlZd dlmZmZ  G d de      Z	y)    N)TestCase)bPY3c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestScanStringc                 V    | j                  t        j                  j                         y )N)_test_scanstring
simplejsondecoderpy_scanstringselfs    j/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/simplejson/tests/test_scanstring.pytest_py_scanstringz!TestScanString.test_py_scanstring   s    j00>>?    c                    t         j                  j                  sy | j                  t         j                  j                         | j	                  t        t         j                  j                  dd      d   t                     y )Nz""r   )r
   r   c_scanstringr	   
assertTrue
isinstancestrr   s    r   test_c_scanstringz TestScanString.test_c_scanstring   sZ    !!..j00==>
:#5#5#B#B4#KA#NPSTUr   c           	         t         j                  dk(  r| j                   |ddd d      d       n| j                   |ddd d      d       | j                   |ddd d      d       | j                   |d	dd d      d
       | j                   |ddd d      d       | j                   |ddd d      d       | j                   |ddd d      d       | j                   |ddd d      d       | j                   |ddd d      d       | j                   |ddd d      d       | j                   |ddd d      d       | j                   |ddd d      d       | j                   |ddd d      d       | j                   |ddd d      d       | j                   |d dd d      d!       | j                   |d"d#d d      d$       | j                   |d%dd d      d&       | j                   |d'dd d      d(       | j                   |d)dd d      d*       | j                   |d+dd d      d,       | j                   |d-dd d      d.       t        t        t        d/d0            D ]?  }| j                   ||d1z   d/d d2      |df       | j                  t        ||d1z   d/d d       A | j                  t        |d3d/d d       | j                  t        |d4d/d d       | j                  t        |d5d/d d       | j                  t        |d6d/d d       | j                  t        |d7d/d d       | j                  t        |d8d/d d       | j                  t        |d9d/d d       | j                  t        |d:d/d d       t         j                  dkD  r4| j                  t        |d;d/d d       | j                  t        |d<d/d d       | j                  t        j                  |d=d/d d       | j                  t        j                  |d>d/d d       y )?Ni  u   "z𝄠x"   T)   z𝄠x   )r      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   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	   z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+, 	4A1s7AtU3A AGQd4		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                     | j                  t        t        j                  j                  ddd       | j                  t
        t        j                  j                  t        d             y )Nxxxr   u   xxÿ)	r7   r8   r9   r   r;   UnicodeDecodeErrorencoderencode_basestring_asciir   r   s    r   test_issue3623zTestScanString.test_issue3623   sJ    *dll&=&=ua	!,,,>>(	Mr   c           	          t        t        dt        t        dd             }|J | j                  t        t        j
                  j                  d|dz          y )Nmaxsizemaxintr>   r   )getattrr1   r7   OverflowErrorr9   r   r;   )r   rD   s     r   test_overflowzTestScanString.test_overflow   sJ    #y'#x*FG"""-)@)@%!A+	'r   c                     t         j                  j                  d fd	} |dd        |dd        |dd        |d	d
        |dd        |dd
        |ddj                  ddg              |ddj                  ddg              |dj                  ddg      dj                  ddg      d        j	                  t
        ddd d        j	                  t
        ddd d       y )NTc                     | g}t         s"|r |j                  | j                  d             |D ]=  }  | dd d      \  }}j                  t	        |       |       j                  ||       ? y )Nutf8r   T)r   appendencoder3   len)givenexpect	test_utf8givensrescountr;   r   s         r   
assertScanz2TestScanString.test_surrogates.<locals>.assertScan   sk    WF9ell623 .)%D$?e  UU3  f-.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"r.   u   zu	   x12345u   "z\udd20x"u   xu   "zu   x"F)rQ   z	"z\ud83x"r   z"z\ud834\udd2x")T)r9   r   r;   joinr7   r8   )r   rU   r;   s   ` @r   test_surrogateszTestScanString.test_surrogates   s   \\,,
	. 	!	 	!	 	(!	# 		 		 		
 	%HHj/23	5 	 HHj*-.	0
 	HHk;/0HHj*-.	
 	*$mQd	D*$&:AtT	Kr   N)	__name__
__module____qualname__r   r   r	   rB   rH   rW    r   r   r   r      s'    @VnW`M'0Kr   r   )
r1   unittestr   r
   r9   simplejson.decodersimplejson.compatr   r   r   r[   r   r   <module>r_      s$    
    $@KX @Kr   