o
    KXî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 ]-\}}|d }|tv r|  |¡ qz|  |¡ W n
 | jy'   Y qw |  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   úB/opt/python-3.10.19/usr/lib/python3.10/test/test_json/test_fail.pyÚtest_failuresQ   s   
ÿözTestFail.test_failuresc                 C   sF   dddœ}|   td¡ |  |¡ W d   ƒ d S 1 sw   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   sD   dd l }|  td¡ |  |¡ W d   ƒ d S 1 sw   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   ó¾   g d¢}|ddg7 }|D ]P\}}}|   | j¡}|  |¡ W d   ƒ n1 s'w   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 ]P\}}}|   | j¡}|  |¡ W d   ƒ n1 s!w   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   r9   )z{"spam":42 "ham"r    r*   )z[{"spam":42]r    r*   )z{"spam":42,}r'   r*   r   r,   r-   r4   r   r   r   Útest_unexpected_dataŒ   s    ÿ
ÿÿøzTestFail.test_unexpected_datac              	   C   r   )N))z[]]ú
Extra datar   )z{}}r;   r   )z[],[]r;   r   )z{},{}r;   r   )z	42,"spam"r;   r   )z	"spam",42r;   é   r   r,   r-   r4   r   r   r   Útest_extra_data°   s(   þÿ
ÿÿøzTestFail.test_extra_datac              	   C   s¬   g d¢}|D ]M\}}}}|   | j¡}|  |¡ W d   ƒ n1 s"w   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   r5   r   ÚlineÚcolr   r6   r7   r   r   r   Útest_linecolÇ   s    ÿ
ÿÿøzTestFail.test_linecolN)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r8   r:   r=   rA   r   r   r   r   r   P   s    "$r   c                   @   ó   e Zd ZdS )Ú
TestPyFailN©rB   rC   rD   r   r   r   r   rF   Ú   ó    rF   c                   @   rE   )Ú	TestCFailNrG   r   r   r   r   rI   Û   rH   rI   N)Ztest.test_jsonr   r   r   r	   r   rF   rI   r   r   r   r   Ú<module>   s    Hþ 