a 8êdgQ#ã@sXddlmZmZgd¢ZdddœZGdd„dƒZGdd „d eeƒZGd d „d eeƒZd 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$["AZ control characters in string"]zwhy not have a string payload?z,spec doesn't specify any nesting limitations)ééc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚTestFailc CshttƒD]Z\}}|d}|tvr,| |¡qz| |¡Wn|jyNYq0| d ||¡¡qdS)Nrz(Expected failure for fail{0}.json: {1!r})Ú enumerateÚJSONDOCSÚSKIPSÚloadsÚJSONDecodeErrorZfailÚformat)ÚselfÚidxÚdoc©rú4/usr/local/lib/python3.9/test/test_json/test_fail.pyÚ test_failuresQs zTestFail.test_failurescCsDdddœ}| td¡| |¡Wdƒn1s60YdS)Nré)Úa)rrz5keys must be str, int, float, bool or None, not tuple)ÚassertRaisesRegexÚ TypeErrorÚdumps)r ÚdatarrrÚtest_non_string_keys_dict^s  ÿz"TestFail.test_non_string_keys_dictcCsBddl}| td¡| |¡Wdƒn1s40YdS)Nrz.Object of type module is not JSON serializable)Úsysrrr)r rrrrÚtest_not_serializableds ÿzTestFail.test_not_serializablec Cs¾gd¢}|ddg7}|D] \}}}| |j¡}| |¡Wdƒn1sN0Y|j}| |j|¡| |j|¡| |jd¡| |j|d¡| t |ƒd||d|f¡qdS)N))ÚúExpecting valuer)ú[rr)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":rr$)z {"spam":42ré )z {"spam":42,r&é )ú"r"r)z"spamr"rrú%s: line 1 column %d (char %d)© Z assertRaisesr r Ú exceptionZ assertEqualÚmsgÚposÚlinenoÚcolnoÚstr©r Ú test_casesrr.rÚcmÚerrrrrÚtest_truncated_inputjs$þ(  ÿÿzTestFail.test_truncated_inputc Cs²gd¢}|D] \}}}| |j¡}| |¡Wdƒn1sB0Y|j}| |j|¡| |j|¡| |jd¡| |j|d¡| t |ƒd||d|f¡q dS)N))z[,rr)z {"spam":[}ré )z[42:rr )z [42 "spam"rr!)z[42,]rr!)z {"spam":[42}rr))z["]r"r)z["spam":rr#)z ["spam",]rr$)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":}rr$)z [{"spam":]rr8)z{"spam":42 "ham"rr))z [{"spam":42]rr))z {"spam":42,}r&r)rr+r,r3rrrÚtest_unexpected_dataŒs(  ÿÿzTestFail.test_unexpected_datac Cs¾gd¢}|ddg7}|D] \}}}| |j¡}| |¡Wdƒn1sN0Y|j}| |j|¡| |j|¡| |jd¡| |j|d¡| t |ƒd||d|f¡qdS)N))z[]]ú Extra datar)z{}}r:r)z[],[]r:r)z{},{}r:r)z 42,"spam"r:r)z "spam",42r:érr+r,r3rrrÚtest_extra_data°s$þ(  ÿÿzTestFail.test_extra_datac Cs¬gd¢}|D]š\}}}}| |j¡}| |¡Wdƒn1sD0Y|j}| |jd¡| |j|¡| |j|¡| |j|¡| t |ƒd|||f¡q dS)N))ú!rrr)z !rrr)z !rrr)z !r!r;r(rz,Expecting value: line %s column %d (char %d)r,)r r4rÚlineÚcolrr5r6rrrÚ test_linecolÇs( ÿÿzTestFail.test_linecolN) Ú__name__Ú __module__Ú __qualname__rrrr7r9r<r@rrrrrPs "$rc@s eZdZdS)Ú TestPyFailN©rArBrCrrrrrDÚórDc@s eZdZdS)Ú TestCFailNrErrrrrGÛrFrGN)Ztest.test_jsonrrrr rrDrGrrrrÚsHþ