a  zeQ#@sXddlmZmZgdZdddZGdddZGdd d eeZGd d d eeZd S) )PyTestCTest)"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@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)TestFailc CshttD]Z\}}|d}|tvr,||qz||Wn|jyNYq0|d||qdS)Nrz(Expected failure for fail{0}.json: {1!r}) enumerateJSONDOCSSKIPSloadsJSONDecodeErrorZfailformat)selfidxdocrL/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_json/test_fail.py test_failuresQs zTestFail.test_failurescCsDddd}|td||Wdn1s60YdS)Nr)a)rrz5keys must be str, int, float, bool or None, not tuple)assertRaisesRegex TypeErrordumps)r datarrrtest_non_string_keys_dict^s  z"TestFail.test_non_string_keys_dictcCsBddl}|td||Wdn1s40YdS)Nrz.Object of type module is not JSON serializable)sysrrr)r rrrrtest_not_serializableds zTestFail.test_not_serializablec Csgd}|ddg7}|D]\}}}||j}||Wdn1sN0Y|j}||j|||j|||jd||j|d|t |d||d|fqdS)N))Expecting valuer)[rr)z[42Expecting ',' 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 assertEqualmsgposlinenocolnostrr test_casesrr.rcmerrrrrtest_truncated_inputjs$(  zTestFail.test_truncated_inputc Csgd}|D]\}}}||j}||Wdn1sB0Y|j}||j|||j|||jd||j|d|t |d||d|fq 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,r3rrrtest_unexpected_datas(  zTestFail.test_unexpected_datac Csgd}|ddg7}|D]\}}}||j}||Wdn1sN0Y|j}||j|||j|||jd||j|d|t |d||d|fqdS)N))z[]] Extra datar)z{}}r:r)z[],[]r:r)z{},{}r:r)z 42,"spam"r:r)z "spam",42r:rr+r,r3rrrtest_extra_datas$(  zTestFail.test_extra_datac Csgd}|D]\}}}}||j}||Wdn1sD0Y|j}||jd||j|||j|||j||t |d|||fq dS)N))!rrr)z !rrr)z !rrr)z !r!r;r(rz,Expecting value: line %s column %d (char %d)r,)r r4rlinecolrr5r6rrr test_linecols( zTestFail.test_linecolN) __name__ __module__ __qualname__rrrr7r9r<r@rrrrrPs "$rc@s eZdZdS) TestPyFailNrArBrCrrrrrDrDc@s eZdZdS) TestCFailNrErrrrrGrFrGN)Ztest.test_jsonrrrr rrDrGrrrrsH