o
    TÃiA  ã                   @   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	S )
ÚTestScanStringc                 C   s   |   tjj¡ d S )N)Ú_test_scanstringÚhjsonÚdecoderÚ
scanstring©Úself© r   úO/home/ubuntu/.local/lib/python3.10/site-packages/hjson/tests/test_scanstring.pyÚtest_py_scanstring   s   z!TestScanString.test_py_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õd S )3Niÿÿ  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)ÚsysÚ
maxunicodeÚassertEqualÚmapÚchrÚrangeÚassertRaisesÚ
ValueError)r   r	   Ú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Ã¿)	r*   r+   Újsonr   r	   ÚUnicodeDecodeErrorÚencoderÚencode_basestring_asciir   r
   r   r   r   Útest_issue3623r   s   ÿÿzTestScanString.test_issue3623c                    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©r	   r   r   r   Ú
assertScan{   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í ´xz
"z\udd20x"u   zí´ xu   "zí ´x"u   "z\ud834í´ x12345"Ú u   zí ´u	   í´ x12345u   "zí ´\udd20x"u   í´ xu   "zí ´u   í´ x"F)r9   z	"z\ud83x"r   z"z\ud834\udd2x")T)r.   r   r	   Újoinr*   r+   )r   r>   r   r=   r   Útest_surrogatesx   sZ   	þþþþþþþþý
ÿ
ÿzTestScanString.test_surrogatesN)Ú__name__Ú
__module__Ú__qualname__r   r   r2   rA   r   r   r   r   r      s
    	^r   )
r$   Úunittestr   r   r.   Úhjson.decoderÚhjson.compatr   r   r   r   r   r   r   Ú<module>   s    