o
    ȷe                     @   sH   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 deZ	dS )    N)TestCase)bPY3c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestScanStringc                 C   s   |  tjj d S )N)_test_scanstring
simplejsondecoderpy_scanstringself r   W/var/www/ideatree/venv/lib/python3.10/site-packages/simplejson/tests/test_scanstring.pytest_py_scanstring   s   z!TestScanString.test_py_scanstringc                 C   s<   t jjsd S | t jj | tt jddd t d S )Nz""r   )r   r   c_scanstringr   
assertTrue
isinstancestrr
   r   r   r   test_c_scanstring   s   "z TestScanString.test_c_scanstringc              	   C   s  t jdkr| |ddd dd n| |ddd dd | |ddd dd | |d	dd dd
 | |ddd dd | |ddd dd | |ddd dd | |ddd dd | |ddd dd | |ddd dd | |ddd dd | |ddd dd | |ddd dd | |ddd dd | |d dd dd! | |d"d#d dd$ | |d%dd dd& | |d'dd dd( | |d)dd dd* | |d+dd dd, | |d-dd dd. tttd/d0D ]}| ||d1 d/d d2|df | t||d1 d/d d q| t|d3d/d d | t|d4d/d d | t|d5d/d d | t|d6d/d d | t|d7d/d d | t|d8d/d d | t|d9d/d d | t|d:d/d d t jdkr| t|d;d/d d | t|d<d/d d d S d S )=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")sys
maxunicodeassertEqualmapchrrangeassertRaises
ValueError)r   
scanstringcr   r   r   r      s   


zTestScanString._test_scanstringc                 C   s0   |  ttjjddd |  ttjjtd d S )Nxxxr   u   xxÿ)	r2   r3   jsonr   r4   UnicodeDecodeErrorencoderencode_basestring_asciir   r
   r   r   r   test_issue3623   s   zTestScanString.test_issue3623c                 C   s<   t tdt tdd }|d usJ | ttjjd|d  d S )Nmaxsizemaxintr6   r   )getattrr,   r2   OverflowErrorr7   r   r4   )r   r<   r   r   r   test_overflow   s
   zTestScanString.test_overflowc                    s   t jj d fdd	}|dd |dd |dd	 |d
d |dd |dd |ddddg |ddddg |dddgdddgdd t ddd d t ddd d d S )NTc                    sZ   | g}t s|r|| d |D ]}  | dd d\}}t| | || qd S )Nutf8r   T)r   appendencoder.   len)givenexpect	test_utf8givensrescountr4   r   r   r   
assertScan   s   z2TestScanString.test_surrogates.<locals>.assertScanz"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)rG   z	"z\ud83x"r   z"z\ud834\udd2x")T)r7   r   r4   joinr2   r3   )r   rL   r   rK   r   test_surrogates   sZ   	

zTestScanString.test_surrogatesN)	__name__
__module____qualname__r   r   r   r;   r@   rN   r   r   r   r   r      s    	lr   )
r,   unittestr   r   r7   simplejson.decodersimplejson.compatr   r   r   r   r   r   r   <module>   s    