U
    O5[æ  ã                   @   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ÚdecoderZpy_scanstring©Úself© r   úB/usr/lib/python3/dist-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   Zc_scanstringr   Z
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 )=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Ã¿)	r/   r0   Újsonr   r1   ÚUnicodeDecodeErrorÚencoderZencode_basestring_asciir   r	   r   r   r   Útest_issue3623‡   s    ÿ ÿzTestScanString.test_issue3623c                 C   s<   t tdt tdd ƒƒ}|d k	s t‚|  ttjjd|d ¡ d S )NÚmaxsizeZmaxintr3   r   )Úgetattrr)   ÚAssertionErrorr/   ÚOverflowErrorr4   r   r1   )r
   r8   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 ]2} ˆ | dd dƒ\}}ˆ t| ƒ|¡ ˆ ||¡ q"d S )NÚutf8r   T)r   ÚappendÚencoder+   Úlen)ZgivenZexpectÚ	test_utf8ZgivensÚresÚcount©r1   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"r&   u   zí ´u	   í´ x12345u   "zí ´\udd20x"u   í´ xu   "zí ´u   í´ x"F)rA   z	"z\ud83x"r   z"z\ud834\udd2x")T)r4   r   r1   Újoinr/   r0   )r
   rE   r   rD   r   Útest_surrogates”   sj    	þþþþþþþþý    ÿ    ÿzTestScanString.test_surrogatesN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r7   r<   rG   r   r   r   r   r      s   	lr   )
r)   Zunittestr   r   r4   Zsimplejson.decoderZsimplejson.compatr   r   r   r   r   r   r   Ú<module>   s
   