
 X                 @   sd   d  d l  Z  d  d l m Z d  d l Z d  d l Z d  d l m Z m Z Gd d   d e  Z	 d S)    N)TestCase)bPY3c               @   sX   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   |  j  t j j  d  S)N)_test_scanstring
simplejsondecoderZpy_scanstring)self r
   ]/home/ubuntu/projects/ifolica/lib/python3.4/site-packages/simplejson/tests/test_scanstring.pytest_py_scanstring   s    z!TestScanString.test_py_scanstringc             C   s'   t  j j s d  S|  j t  j j  d  S)N)r   r   Zc_scanstringr   )r	   r
   r
   r   test_c_scanstring   s    z TestScanString.test_c_scanstringc             C   s7  t  j d k r1 |  j | d d d  d  dJ  n |  j | d d d  d  dK  |  j | d d d  d  dL  |  j | d d d  d  dM  |  j | d d d  d  dN  |  j | d d d  d  dO  |  j | d d d  d  dP  |  j | d d d  d  dQ  |  j | d d d  d  dR  |  j | d d d  d  dS  |  j | d d d  d  dT  |  j | d" d d  d  dU  |  j | d$ d d  d  dV  |  j | d& d d  d  dW  |  j | d) d d  d  dX  |  j | d+ d d  d  dY  |  j | d. d d  d  dZ  |  j | d1 d d  d  d[  |  j | d4 d d  d  d\  |  j | d7 d d  d  d]  |  j | d9 d d  d  d^  xi t t t d< d=   D]O } |  j | | d> d< d  d?  | d f  |  j t | | d> d< d  d  qW|  j t | d@ d< d  d  |  j t | dA d< d  d  |  j t | dB d< d  d  |  j t | dC d< d  d  |  j t | dD d< d  d  |  j t | dE d< d  d  |  j t | dF d< d  d  |  j t | dG d< d  d  t  j d k r3|  j t | dH d< d  d  |  j t | dI d< d  d  n  d  S)_Ni  u   "z𝄠x"   T   z𝄠x      z"\u007b"{   z<"A JSON payload should be an object or array, not a string.":A JSON payload should be an object or array, not a string.<   z["Unclosed array"   Unclosed array   z["extra comma",]extra comma   z["double extra comma",,]double extra comma   z["Comma after the close"],Comma after the close   z["Extra close"]]Extra closez{"Extra comma": true,}Extra commaz:{"Extra value after close": true} "misplaced quoted value"Extra value after close   z{"Illegal expression": 1 + 2}Illegal expressionz{"Illegal invocation": alert()}Illegal invocationz+{"Numbers cannot have leading zeroes": 013}"Numbers cannot have leading zeroes%   z{"Numbers cannot be hex": 0x14}Numbers cannot be hexz2[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]Too deep   z{"Missing colon" null}Missing colon   z{"Double colon":: null}Double colon   z {"Comma instead of colon", null}Comma instead of colon   z!["Colon instead of comma": false]Colon instead of commaz["Bad value", truth]	Bad value   r      "F a\z\uz\u0z\u01z\u012z\u0123z	\ud834\u"z\ud834\x0123")r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r    r   )r!   r"   )r#   r   )r$   r   )r%   r&   )r'   r   )r(   r)   )r*   r+   )r,   r-   )r.   r/   )r0   r/   )r1   r2   )sys
maxunicodeassertEqualmapchrrangeassertRaises
ValueError)r	   
scanstringcr
   r
   r   r      s    
		zTestScanString._test_scanstringc             C   sB   |  j  t t j j d d d  |  j  t t j j t d   d  S)Nxxxr   u   xxÿ)	r>   r?   jsonr   r@   UnicodeDecodeErrorencoderZencode_basestring_asciir   )r	   r
   r
   r   test_issue3623   s    	zTestScanString.test_issue3623c             C   sT   t  t d t  t d d    } | d  k	 s0 t  |  j t t j j d | d  d  S)NmaxsizeZmaxintrB   r   )getattrr8   AssertionErrorr>   OverflowErrorrC   r   r@   )r	   rG   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 j d d g   | d d j d d g   | d j d d g  d j d d g  d d  j t   d d d  d   j t   d d d  d  d  S)NTc                s   |  g } t  r/ | r/ | j |  j d   n  xO | D]G }    |  d d  d  \ } }  j t |   |   j | |  q6 Wd  S)Nutf8r   T)r   appendencoder:   len)Zgivenexpect	test_utf8Zgivensrescount)r@   r	   r
   r   
assertScan   s    	z2TestScanString.test_surrogates.<locals>.assertScanz"z\ud834\u0079x"u   zyxz"z\ud834\udd20x"u   z𝄠xz"z\ud834\ud834\udd20x"u	   z𝄠xz
"z\ud834x"u   zxz
"z\udd20x"u   zxu   "zx"u   "z\ud834x12345"r5   u   zu	   x12345u   "z\udd20x"u   xu   "zu   x"rQ   Fz	"z\ud83x"r   z"z\ud834\udd2x")rC   r   r@   joinr>   r?   )r	   rT   r
   )r@   r	   r   test_surrogates   sD    			zTestScanString.test_surrogatesN)	__name__
__module____qualname__r   r   r   rF   rK   rV   r
   r
   r
   r   r      s   	lr   )
r8   Zunittestr   r   rC   Zsimplejson.decoderZsimplejson.compatr   r   r   r
   r
   r
   r   <module>   s
   