a
    $Rîh/  ã                   @   sN   d dl Z d dlmZmZ G dd„ dƒZG dd„ deeƒZG dd„ deeƒZdS )	é    N)ÚPyTestÚCTestc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestScanstringc                 C   sž  | j jj}|  |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 S )-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   © r   úF/opt/python-3.9.24/usr/lib/python3.9/test/test_json/test_scanstring.pyÚtest_scanstring   s¢    

þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þzTestScanstring.test_scanstringc                    sv   ˆj jj‰ ‡ ‡fdd„}|ddƒ |ddƒ |ddƒ |d	d
ƒ |ddƒ |ddƒ |ddƒ |ddƒ |dd
ƒ d S )Nc                    s    ˆ  ˆ | ddƒ|t| ƒf¡ d S )Nr   T)r   Úlen)ZgivenÚexpect©r   r   r   r   Ú
assertScanZ   s    
ÿz2TestScanstring.test_surrogates.<locals>.assertScanz"z\ud834\u0079x"u   zí ´yxz"z\ud834\udd20x"r   z"z\ud834\ud834\udd20x"u	   zí ´ð„ xz
"z\ud834x"u   zí ´xu   "z\ud834í´ x12345"u   zí ´í´ x12345z
"z\udd20x"u   zí´ xu
   "zí ´í´ x"u   zí ´í´ xu   "zí ´\udd20x"u   "zí ´x")r   r   r   )r   r"   r   r!   r   Útest_surrogatesX   s    








zTestScanstring.test_surrogatesc              	   C   s\   | j jj}g d¢}|D ]@}| j| j|d ||ddƒ W d   ƒ q1 sL0    Y  qd S )N)z"\"z"\x"z"\u"z"\u0"z"\u01"z"\u012"z"\uz012"z"\u0z12"z"\u01z2"z"\u012z"z"\u0x12"z"\u0X12"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")Úmsgr   T)r   r   r   ÚassertRaisesZJSONDecodeError)r   r   Zbad_escapesÚsr   r   r   Útest_bad_escapesh   s
    
zTestScanstring.test_bad_escapesc                 C   sD   |   t¡& | jj dtjd ¡ W d   ƒ n1 s60    Y  d S )Ns   xxxr   )r%   ÚOverflowErrorr   r   r   ÚsysÚmaxsize)r   r   r   r   Útest_overflow‡   s    zTestScanstring.test_overflowN)Ú__name__Ú
__module__Ú__qualname__r   r#   r'   r+   r   r   r   r   r      s   Rr   c                   @   s   e Zd ZdS )ÚTestPyScanstringN©r,   r-   r.   r   r   r   r   r/   Œ   ó    r/   c                   @   s   e Zd ZdS )ÚTestCScanstringNr0   r   r   r   r   r2      r1   r2   )r)   Ztest.test_jsonr   r   r   r/   r2   r   r   r   r   Ú<module>   s
    