a  ze/@sNddlZddlmZmZGdddZGdddeeZGdddeeZdS) N)PyTestCTestc@s,eZdZddZddZddZddZd S) TestScanstringcCs|jjj}||dddd||dddd||dddd||d d dd ||d d dd ||dd dd||dd dd||dd dd||dd dd||dd dd||dd dd||dd dd||dd dd||dd dd||d d!dd"||d#d dd$||d%d dd&||d'd dd(||d)d dd*||d+d dd,dS)-Nu"z𝄠x"T)z𝄠xz"\u007b"){z<"A JSON payload should be an object or array, not a string.")z:A JSON payload should be an object or array, not a string.<z["Unclosed array")zUnclosed arrayz["extra comma",])z extra commaz["double extra comma",,])zdouble extra commaz["Comma after the close"],)zComma after the closez["Extra close"]])z Extra closer z{"Extra comma": true,})z Extra commar z:{"Extra value after close": true} "misplaced quoted value")zExtra value after closez{"Illegal expression": 1 + 2})zIllegal expressionrz{"Illegal invocation": alert()})zIllegal invocationrz+{"Numbers cannot have leading zeroes": 013})z"Numbers cannot have leading zeroes%z{"Numbers cannot be hex": 0x14})zNumbers cannot be hexrz2[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]r)zToo deepz{"Missing colon" null})z Missing colonz{"Double colon":: null})z Double colonz {"Comma instead of colon", null})zComma instead of colonz!["Colon instead of comma": false])zColon instead of commarz["Bad value", truth])z Bad value )jsondecoder scanstring assertEqual)selfrrR/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_json/test_scanstring.pytest_scanstrings                     zTestScanstring.test_scanstringcsvjjjfdd}|dd|dd|dd|d d |d d |d d|dd|dd|dd dS)Ncs |dd|t|fdS)NrT)rlen)Zgivenexpectrrrr assertScanZs z2TestScanstring.test_surrogates..assertScanz"z\ud834\u0079x"uzyxz"z\ud834\udd20x"rz"z\ud834\ud834\udd20x"u z𝄠xz "z\ud834x"uzxu"z\ud834x12345"u zx12345z "z\udd20x"uzxu "zx"uzxu "z\udd20x"u"zx")rrr)rr"rr!rtest_surrogatesXs         zTestScanstring.test_surrogatesc Cs\|jjj}gd}|D]@}|j|j|d||ddWdq1sL0YqdS)N)z"\"z"\x"z"\u"z"\u0"z"\u01"z"\u012"z"\uz012"z"\u0z12"z"\u01z2"z"\u012z"z"\u0x12"z"\u0X12"z "\ud834\"z "\ud834\u"z "\ud834\ud"z "\ud834\udd"z "\ud834\udd2"z"\ud834\uzdd2"z"\ud834\udzd2"z"\ud834\uddz2"z"\ud834\udd2z"z"\ud834\u0x20"z"\ud834\u0X20")msgrT)rrr assertRaisesZJSONDecodeError)rrZ bad_escapessrrrtest_bad_escapeshs  zTestScanstring.test_bad_escapescCsD|t&|jjdtjdWdn1s60YdS)Nsxxxr)r% OverflowErrorrrrsysmaxsize)rrrr test_overflows zTestScanstring.test_overflowN)__name__ __module__ __qualname__rr#r'r+rrrrrsRrc@s eZdZdS)TestPyScanstringNr,r-r.rrrrr/r/c@s eZdZdS)TestCScanstringNr0rrrrr2r1r2)r)Ztest.test_jsonrrrr/r2rrrrs