B
    18™\Q#  ã            "   @   s˜   d dl mZmZ dddddddd	d
dddddddddddddddddddddd d!d"d#g"Zd$d%d&œZG d'd(„ d(ƒZG d)d*„ d*eeƒZG d+d,„ d,eeƒZd-S ).é    )ÚPyTestÚCTestz<"A JSON payload should be an object or array, not a string."z["Unclosed array"z%{unquoted_key: "keys must be quoted"}z["extra comma",]z["double extra comma",,]z[   , "<-- missing value"]z["Comma after the close"],z["Extra close"]]z{"Extra comma": true,}z:{"Extra value after close": true} "misplaced quoted value"z{"Illegal expression": 1 + 2}z{"Illegal invocation": alert()}z+{"Numbers cannot have leading zeroes": 013}z{"Numbers cannot be hex": 0x14}z"["Illegal backslash escape: \x15"]z[\naked]z"["Illegal backslash escape: \017"]z2[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]z{"Missing colon" null}z{"Double colon":: null}z {"Comma instead of colon", null}z!["Colon instead of comma": false]z["Bad value", truth]z['single quote']z["	tab	character	in	string	"]z&["tab\   character\   in\  string\  "]z["line
break"]z["line\
break"]z[0e]z[0e+]z[0e+-1]z({"Comma instead if closing brace": true,z["mismatch"}z$["AZ control characters in string"]zwhy not have a string payload?z,spec doesn't specify any nesting limitations)é   é   c               @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚTestFailc          	   C   sn   xht tƒD ]\\}}|d }|tkr.|  |¡ q
y|  |¡ W n | jk
rR   Y q
X |  d ||¡¡ q
W d S )Nr   z(Expected failure for fail{0}.json: {1!r})Ú	enumerateÚJSONDOCSÚSKIPSÚloadsÚJSONDecodeErrorÚfailÚformat)ÚselfÚidxÚdoc© r   ú\/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_json/test_fail.pyÚtest_failuresQ   s    
zTestFail.test_failuresc          	   C   s0   dddœ}|   td¡ |  |¡ W d Q R X d S )Nr   é   )Úa)r   r   z5keys must be str, int, float, bool or None, not tuple)ÚassertRaisesRegexÚ	TypeErrorÚdumps)r   Údatar   r   r   Útest_non_string_keys_dict^   s    
z"TestFail.test_non_string_keys_dictc          	   C   s.   dd l }|  td¡ |  |¡ W d Q R X d S )Nr   z.Object of type module is not JSON serializable)Úsysr   r   r   )r   r   r   r   r   Útest_not_serializabled   s    zTestFail.test_not_serializablec             C   sÈ   ddddddddd	d
dddddg}|ddg7 }x”|D ]Œ\}}}|   | j¡}|  |¡ W d Q R X |j}|  |j|¡ |  |j|¡ |  |jd¡ |  |j|d ¡ |  t	|ƒd||d |f ¡ q4W d S )N)Ú zExpecting valuer   )ú[zExpecting valuer   )z[42zExpecting ',' delimiteré   )z[42,zExpecting valueé   )z["zUnterminated string starting atr   )z["spamzUnterminated string starting atr   )z["spam"zExpecting ',' delimiteré   )z["spam",zExpecting valueé   )ú{z1Expecting property name enclosed in double quotesr   )z{"zUnterminated string starting atr   )z{"spamzUnterminated string starting atr   )z{"spam"zExpecting ':' delimiterr!   )z{"spam":zExpecting valuer"   )z
{"spam":42zExpecting ',' delimiteré
   )z{"spam":42,z1Expecting property name enclosed in double quotesé   )ú"zUnterminated string starting atr   )z"spamzUnterminated string starting atr   r   z%s: line 1 column %d (char %d))
ÚassertRaisesr   r
   Ú	exceptionÚassertEqualÚmsgÚposÚlinenoÚcolnoÚstr)r   Ú
test_casesr   r*   r   ÚcmÚerrr   r   r   Útest_truncated_inputj   s:    
zTestFail.test_truncated_inputc             C   sÈ   ddddddddd	d
dddddddddddg}x”|D ]Œ\}}}|   | j¡}|  |¡ W d Q R X |j}|  |j|¡ |  |j|¡ |  |jd¡ |  |j|d ¡ |  t	|ƒd||d |f ¡ q4W d S )N)z[,zExpecting valuer   )z
{"spam":[}zExpecting valueé	   )z[42:zExpecting ',' delimiterr   )z
[42 "spam"zExpecting ',' delimiterr    )z[42,]zExpecting valuer    )z{"spam":[42}zExpecting ',' delimiterr%   )z["]zUnterminated string starting atr   )z["spam":zExpecting ',' delimiterr!   )z	["spam",]zExpecting valuer"   )z{:z1Expecting property name enclosed in double quotesr   )z{,z1Expecting property name enclosed in double quotesr   )z{42z1Expecting property name enclosed in double quotesr   )z[{]z1Expecting property name enclosed in double quotesr   )z{"spam",zExpecting ':' delimiterr!   )z{"spam"}zExpecting ':' delimiterr!   )z	[{"spam"]zExpecting ':' delimiterr"   )z	{"spam":}zExpecting valuer"   )z
[{"spam":]zExpecting valuer3   )z{"spam":42 "ham"zExpecting ',' delimiterr%   )z[{"spam":42]zExpecting ',' delimiterr%   )z{"spam":42,}z1Expecting property name enclosed in double quotesr%   r   z%s: line 1 column %d (char %d))
r'   r   r
   r(   r)   r*   r+   r,   r-   r.   )r   r/   r   r*   r   r0   r1   r   r   r   Útest_unexpected_dataŒ   s@    
zTestFail.test_unexpected_datac          
   C   s²   ddddg}|ddg7 }x”|D ]Œ\}}}|   | j¡}|  |¡ W d Q R X |j}|  |j|¡ |  |j|¡ |  |jd¡ |  |j|d ¡ |  t	|ƒd||d |f ¡ qW d S )	N)z[]]z
Extra datar   )z{}}z
Extra datar   )z[],[]z
Extra datar   )z{},{}z
Extra datar   )z	42,"spam"z
Extra datar   )z	"spam",42z
Extra dataé   r   z%s: line 1 column %d (char %d))
r'   r   r
   r(   r)   r*   r+   r,   r-   r.   )r   r/   r   r*   r   r0   r1   r   r   r   Útest_extra_data°   s$    
zTestFail.test_extra_datac          
   C   s    ddddg}xŽ|D ]†\}}}}|   | j¡}|  |¡ W d Q R X |j}|  |jd¡ |  |j|¡ |  |j|¡ |  |j|¡ |  t	|ƒd|||f ¡ qW d S )N)ú!r   r   r   )z !r   r   r   )z
!r   r   r   )z
  

     !r    r5   r$   zExpecting valuez,Expecting value: line %s column %d (char %d))
r'   r   r
   r(   r)   r*   r+   r,   r-   r.   )r   r/   r   ÚlineÚcolr   r0   r1   r   r   r   Útest_linecolÇ   s    
zTestFail.test_linecolN)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r2   r4   r6   r:   r   r   r   r   r   P   s   "$r   c               @   s   e Zd ZdS )Ú
TestPyFailN)r;   r<   r=   r   r   r   r   r>   Ú   s    r>   c               @   s   e Zd ZdS )Ú	TestCFailN)r;   r<   r=   r   r   r   r   r?   Û   s    r?   N)Ztest.test_jsonr   r   r   r	   r   r>   r?   r   r   r   r   Ú<module>   sP    