a
    óñ"hQ#  ã                   @   sX   d dl mZmZ g d¢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ÚCTest)"z<"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   sh   t tƒD ]Z\}}|d }|tv r,|  |¡ qz|  |¡ W n | jyN   Y q0 |  d ||¡¡ qd S )Nr   z(Expected failure for fail{0}.json: {1!r})Ú	enumerateÚJSONDOCSÚSKIPSÚloadsÚJSONDecodeErrorZfailÚformat)ÚselfÚidxÚdoc© r   ú@/opt/python-3.9.21/usr/lib/python3.9/test/test_json/test_fail.pyÚtest_failuresQ   s    
zTestFail.test_failuresc                 C   sD   dddœ}|   td¡ |  |¡ W d   ƒ n1 s60    Y  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   sB   dd l }|  td¡ |  |¡ W d   ƒ n1 s40    Y  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¾   g d¢}|ddg7 }|D ] \}}}|   | j¡}|  |¡ W d   ƒ n1 sN0    Y  |j}|  |j|¡ |  |j|¡ |  |jd¡ |  |j|d ¡ |  t	|ƒd||d |f ¡ qd S )N))Ú úExpecting valuer   )ú[r   r   )z[42úExpecting ',' delimiteré   )z[42,r   é   )z["úUnterminated string starting atr   )z["spamr"   r   )z["spam"r   é   )z["spam",r   é   )Ú{ú1Expecting property name enclosed in double quotesr   )z{"r"   r   )z{"spamr"   r   )z{"spam"úExpecting ':' delimiterr#   )z{"spam":r   r$   )z
{"spam":42r   é
   )z{"spam":42,r&   é   )ú"r"   r   )z"spamr"   r   r   ú%s: line 1 column %d (char %d)©
ZassertRaisesr   r
   Ú	exceptionZ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²   g d¢}|D ] \}}}|   | j¡}|  |¡ W d   ƒ n1 sB0    Y  |j}|  |j|¡ |  |j|¡ |  |jd¡ |  |j|d ¡ |  t	|ƒd||d |f ¡ qd S )N))z[,r   r   )z
{"spam":[}r   é	   )z[42:r   r    )z
[42 "spam"r   r!   )z[42,]r   r!   )z{"spam":[42}r   r)   )z["]r"   r   )z["spam":r   r#   )z	["spam",]r   r$   )z{:r&   r   )z{,r&   r   )z{42r&   r   )z[{]r&   r   )z{"spam",r'   r#   )z{"spam"}r'   r#   )z	[{"spam"]r'   r$   )z	{"spam":}r   r$   )z
[{"spam":]r   r8   )z{"spam":42 "ham"r   r)   )z[{"spam":42]r   r)   )z{"spam":42,}r&   r)   r   r+   r,   r3   r   r   r   Útest_unexpected_dataŒ   s    (
ÿÿzTestFail.test_unexpected_datac              	   C   s¾   g d¢}|ddg7 }|D ] \}}}|   | j¡}|  |¡ W d   ƒ n1 sN0    Y  |j}|  |j|¡ |  |j|¡ |  |jd¡ |  |j|d ¡ |  t	|ƒd||d |f ¡ qd S )N))z[]]ú
Extra datar   )z{}}r:   r   )z[],[]r:   r   )z{},{}r:   r   )z	42,"spam"r:   r   )z	"spam",42r:   é   r   r+   r,   r3   r   r   r   Útest_extra_data°   s$    þ(
ÿÿzTestFail.test_extra_datac              	   C   s¬   g d¢}|D ]š\}}}}|   | j¡}|  |¡ W d   ƒ n1 sD0    Y  |j}|  |jd¡ |  |j|¡ |  |j|¡ |  |j|¡ |  t	|ƒd|||f ¡ qd S )N))ú!r   r   r   )z !r   r   r   )z
!r   r   r   )z
  

     !r!   r;   r(   r   z,Expecting value: line %s column %d (char %d)r,   )r   r4   r   ÚlineÚcolr   r5   r6   r   r   r   Útest_linecolÇ   s    (
ÿÿzTestFail.test_linecolN)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r7   r9   r<   r@   r   r   r   r   r   P   s   "$r   c                   @   s   e Zd ZdS )Ú
TestPyFailN©rA   rB   rC   r   r   r   r   rD   Ú   ó    rD   c                   @   s   e Zd ZdS )Ú	TestCFailNrE   r   r   r   r   rG   Û   rF   rG   N)Ztest.test_jsonr   r   r   r	   r   rD   rG   r   r   r   r   Ú<module>   s   Hþ 