a zeޣ@sddlZddlZddlZddlZddlZGdddZGdddeZGdddeZ Gdd d e Z Gd d d e Z Gd d d e ZGddde ZGddde ZGdddejZedkredS)Nc@seZdZddZddZdS) PosReturncCs d|_dS)Nr)posselfrL/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_codeccallbacks.py__init__ szPosReturn.__init__cCs>|j}|}|dkr t|j|}||jkr6t|j|_d|fS)Nr)rlenobjectstart)rexcZoldposZrealposrrrhandles  zPosReturn.handleN)__name__ __module__ __qualname__rrrrrrrsrc@seZdZddZdS)BadStartUnicodeEncodeErrorcCst|dddddg|_dSNasciirbad)UnicodeEncodeErrorrr rrrrrsz#BadStartUnicodeEncodeError.__init__Nrrrrrrrrrsrc@seZdZddZdS)BadObjectUnicodeEncodeErrorcCst|dddddg|_dSr)rrr rrrrr!sz$BadObjectUnicodeEncodeError.__init__Nrrrrrr src@seZdZddZdS)NoEndUnicodeDecodeErrorcCs t|dtdddd|`dSNrrrr)UnicodeDecodeErrorr bytearrayendrrrrr'sz NoEndUnicodeDecodeError.__init__Nrrrrrr&src@seZdZddZdS)BadObjectUnicodeDecodeErrorcCs"t|dtddddg|_dSr)rrrr rrrrr-sz$BadObjectUnicodeDecodeError.__init__Nrrrrrr!,sr!c@seZdZddZdS)NoStartUnicodeTranslateErrorcCst|dddd|`dSNrrrr)UnicodeTranslateErrorrr rrrrr3sz%NoStartUnicodeTranslateError.__init__Nrrrrrr"2sr"c@seZdZddZdS)NoEndUnicodeTranslateErrorcCst|dddd|`dSr#)r$rr rrrrr9sz#NoEndUnicodeTranslateError.__init__Nrrrrrr%8sr%c@seZdZddZdS)NoObjectUnicodeTranslateErrorcCst|dddd|`dSr#)r$rr rrrrr?sz&NoObjectUnicodeTranslateError.__init__Nrrrrrr&>sr&c@s$eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCdDZ$dEdFZ%dGS)HCodecCallbackTestcCs0d}||ddd||ddddS)Nuスパモ änd eggsrxmlcharrefreplaces&スパモ änd eggslatin-1s!スパモ nd eggs assertEqualencode)rsrrrtest_xmlcharrefreplaceEs  z(CodecCallbackTest.test_xmlcharrefreplacecCsddd}td|d}d}||dd|d}||dd|d }||d d|dS) Nc Sst|tstd|g}|j|j|jD]H}z|dtjj t |Wq,t yr|dt |Yq,0q,d ||jfS)Ndon't know how to handle %rz&%s;&#%d;r) isinstancer TypeErrorr r r appendhtmlZentitiesZcodepoint2nameordKeyErrorjoinr lcrrrxmlcharnamereplaceWs   zECodecCallbackTest.test_xmlcharnamereplace..xmlcharnamereplaceztest.xmlcharnamereplaceu«ℜ» = 〈ሴ€〉s0«ℜ» = ⟨ሴ€⟩rs$ℜ = ⟨ሴ€⟩r)sℜ = ⟨ሴ⟩ iso-8859-15codecsregister_errorr+r,)rr;sinsoutrrrtest_xmlcharnamereplaceSs z)CodecCallbackTest.test_xmlcharnamereplacecCsddd}td|d}d}||dd|d}||dd|d }||d d|dS) Nc Ss`t|tstd|g}|j|j|jD]}|t|dt |q,dd ||jfS)Nr/z0x%xz %sz, ) r1rr2r r r r3 unicodedatanamer5r7r8rrruninamereplacevs   z=CodecCallbackTest.test_uninamereplace..uninamereplaceztest.uninamereplaceu ¬ሴ€耀sNNOT SIGN, ETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000rsEETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000r)sAETHIOPIC SYLLABLE SEECJK UNIFIED IDEOGRAPH-8000r<r=)rrEr@rArrrtest_uninamereplacems z%CodecCallbackTest.test_uninamereplacecCsPd}d}||dd|d}||dd|d}||dd|dS) Na¬ሴ€耀􏿿s!a\xac\u1234\u20ac\u8000\U0010ffffrbackslashreplacesa\u1234\u20ac\u8000\U0010ffffr)sa\u1234\u8000\U0010ffffr<r*rr@rArrrtest_backslashescapesz&CodecCallbackTest.test_backslashescapecCsPd}d}||dd|d}||dd|d}||dd|dS) NrGs[a\N{NOT SIGN}\N{ETHIOPIC SYLLABLE SEE}\N{EURO SIGN}\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffr namereplacesPa\N{ETHIOPIC SYLLABLE SEE}\N{EURO SIGN}\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffr)sDa\N{ETHIOPIC SYLLABLE SEE}\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffr<r*rIrrrtest_nameescapesz!CodecCallbackTest.test_nameescapecCsJdd}td|d}d}||dd|d}|t|jdddS)NcSsFt|tstd||j|j|jddkr>d|jdfS|dS)Nr/s)r1rr2r r r rrr relaxedutf8s   z>CodecCallbackTest.test_decoding_callbacks..relaxedutf8ztest.relaxedutf8s abcüu abcüutf-8s)r>r?r+decode assertRaisesr)rrPr@rArrrtest_decoding_callbackss  z)CodecCallbackTest.test_decoding_callbackscCstdddD}d}d}|t|d|d|d}|ttj|d|d |td <d }d }|t|d |d|d|td <|ttj|d |dS)Ncss(|] }t|td|dfVqdS)rMrN)r5bytesupper.0r:rrr rz7CodecCallbackTest.test_charmapencode..ZabcdefghabcsAABBCCstrictrZabcAsXYZ?ZabcDEFsAABBCCXYZXYZXYZreplaceZXYZ)dictr+r>charmap_encoderS UnicodeErrorr5r2)rcharmapr@rArrrtest_charmapencodes  z$CodecCallbackTest.test_charmapencodecCsdd}td|dd}td|d}||ddd ||ddd |d d dd |dd dd|tddtddidd|dddd|dddddS)Ncsjtjj}ttr,fdd|D}n*ttrJfdd|D}n tddd|jfS)Ncsg|]}dtj|qSz<%d>)r5r rXrrOrr rzFCodecCallbackTest.test_callbacks..handler1..csg|]}dj|qSrcr rdrOrrrerr/[%s]r)ranger r r1rrr2r7)r rr9rrOrhandler1s   z2CodecCallbackTest.test_callbacks..handler1z test.handler1csJttstdfddtjjD}dd|jdfS)Nr/csg|]}dj|qSrcrfrdrOrrrerzFCodecCallbackTest.test_callbacks..handler2..rgrr)r1rr2rhr r r7)r r9rrOrhandler2s  z2CodecCallbackTest.test_callbacks..handler2z test.handler2srz[<129>][<128>][<255>]z[<129>][<128>]s \u3042\u3xxxunicode-escapeuあ[<92><117><51>]xxxs \u3042\u3xxuあ[<92><117><51>]xxsabcazrz z[<98>][<99>]ugüßrksg[<252><223>]rkugüßs g[<252><223>])r>r?r+rRcharmap_decoder5r,)rrjrkr-rrrtest_callbackssB        z CodecCallbackTest.test_callbacksc sgd}|D]}td|t|q d|dd|D7}fdddDD]<}dD]2}|D](}z|||Wq`tyYq`0q`qXqPdS) N)r[ignorer]r(rHrKtest.cSsg|] }d|qS)rrr)rXerrrrrrerz6CodecCallbackTest.test_longstrings..csg|] }|qSrr)rXr-r9rrrer)xあuaä)rr) iso-8859-1r<rQutf-7utf-16utf-32)r>r? lookup_errorr,r`)rerrorsrtZuniencrrurtest_longstringss z"CodecCallbackTest.test_longstringsc Cs|jt|g|ddR|jt|g|dgRgd}tt|D]p}|D]f}t|t||urlqRg}tt|D]&}||kr||q||||q||jt|g|RqRqJ||} |t| |dS)Nztoo much)Zspamseggssspam*g?N)rSr2rhr typer3r+str) rexctypeargsmsgZ wrongargsiZwrongargZcallargsjr rrrcheck_exceptionobjectargs"s z+CodecCallbackTest.check_exceptionobjectargscCsp|tgdd|tgdd|tgdd|tgdd|tgd d |tgd d dS) N)rgürkrrMouchz?'ascii' codec can't encode character '\xfc' in position 1: ouch)rrrrz;'ascii' codec can't encode characters in position 1-3: ouch)ruüxrrrz?'ascii' codec can't encode character '\xfc' in position 0: ouch)ruĀxrrrzA'ascii' codec can't encode character '\u0100' in position 0: ouch)ru￿xrrrzA'ascii' codec can't encode character '\uffff' in position 0: ouch)ru𐀀xrrrzE'ascii' codec can't encode character '\U00010000' in position 0: ouch)rrrrrrtest_unicodeencodeerror;s<z)CodecCallbackTest.test_unicodeencodeerrorcCs<|tdtddddgd|tdtddddgddS) NrsgrkrrMrz8'ascii' codec can't decode byte 0xfc in position 1: ouchz6'ascii' codec can't decode bytes in position 1-2: ouch)rrrrrrrtest_unicodedecodeerror[sz)CodecCallbackTest.test_unicodedecodeerrorcCs^|tgdd|tgdd|tgdd|tgdd|tgd d dS) N)rrrMrz4can't translate character '\xfc' in position 1: ouch)ugĀrkrrMrz6can't translate character '\u0100' in position 1: ouch)ug￿rkrrMrz6can't translate character '\uffff' in position 1: ouch)ug𐀀rkrrMrz:can't translate character '\U00010000' in position 1: ouch)rrrrz0can't translate characters in position 1-2: ouch)rr$rrrrtest_unicodetranslateerrorgs2z,CodecCallbackTest.test_unicodetranslateerrorc Cs~|ttjd|ttjtd|ttjtddddd|ttjtdtdddd|ttjtdddddS)Nrrrrwrr) rSr2r> strict_errors Exceptionrrrr$rrrrtest_badandgoodstrictexceptionss2 z1CodecCallbackTest.test_badandgoodstrictexceptionsc Cs|ttjd|ttjtd|ttdddddd|ttdtddddd|tt ddddddS) NrrraあbrrM)rrMab) rSr2r> ignore_errorsr`r+rrrr$rrrrtest_badandgoodignoreexceptionss8 z1CodecCallbackTest.test_badandgoodignoreexceptionsc Cs|ttjd|ttjtd|ttjt|ttjt|ttdddddd|tt dt ddddd |tt ddddd dS) NrrrrrrM)r\rMr)�rM) rSr2r>replace_errorsr`rr!r+rrrr$rrrr test_badandgoodreplaceexceptionssL z2CodecCallbackTest.test_badandgoodreplaceexceptionsc Cs|ttjd|ttjtd|ttjtdtdddd|ttjtddddd}|d 7}d d d |D}| tt dd |dddt |dd dd |Ddt |fdS)Nrrrrrrrw)rr cdirsi''i順i?B@B)iircss|]}t|VqdSNchrrWrrrrYrzOCodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptions..rmbcss|]}d|VqdS)r0NrrWrrrrY r) rSr2r>xmlcharrefreplace_errorsr`rrr$r7r+rr )rcsr-rrr*test_badandgoodxmlcharrefreplaceexceptionss> z|tt dt d |d dd d|d fWdq1s>0YqdS)Nrr) )rwz\u3042) \x0a)rm\x61rN\x00)ÿ\xff)uĀz\u0100)u￿z\uffff)u𐀀z \U00010000u􏿿z \U0010ffffz\ud800z\udfffz \ud800\udfffrrrmrr))ar) r)r)rr)rUrbrM) rSr2r>backslashreplace_errorsr`subTestr+rr r$rr)rtestsr-rirrrr)test_badandgoodbackslashreplaceexceptions sP  $ z;CodecCallbackTest.test_badandgoodbackslashreplaceexceptionsc Cs|ttjd|ttjtd|ttjtdtdddd|ttjtddddgd}|D]n\}}|j|d J| tt dd |d ddt |d|dt |fWdqj1s0YqjdS) Nrrrrrrrw))rwz\N{HIRAGANA LETTER A}r)uﯹzW\N{ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM})u󠁿z\N{CANCEL TAG}rrrrrrmr) rSr2r>namereplace_errorsr`rrr$rr+rr )rrr-rirrr$test_badandgoodnamereplaceexceptionsFs>  z6CodecCallbackTest.test_badandgoodnamereplaceexceptionsc Cstd}|t|d|t|td|t|tdddddD]J}|j|d*|t|td |dddWdqF1s0YqF||td d dd dd |t |t d t d ddd||t d t ddd dddS)Nsurrogateescaperrrr)rmuurruabrM)rMrsab)rrM) r>r|rSr2r`r$rrr+rr)rZsurrogateescape_errorsr-rrr(test_badandgoodsurrogateescapeexceptionstsP  $z:CodecCallbackTest.test_badandgoodsurrogateescapeexceptionsc Cstd}|t|d|t|td|t|tdddddD]j}|j|dJ|t|t|d ddd|t|t|d |dddWdqF1s0YqFd D]N}|j|d .|t|td |dt |dWdq1s0Yqgd }|D]\}}}}|j|||d| |t|d |dddt |d|dt |f| |t|t d|d|ddd|d|ddd|fWdn1s0YqdS)N surrogatepassrrrrr)rQutf-16leutf-16beutf-32leutf-32be)encodingrm)rrrrr))rQrsr)rrsrM)rrsrM)rrsr)rrsr)rQrsr)rrsrM)rrsrM)rrsr)rrsr)rQrsr)rrsrM)rrsrM)rrsr)rrsr)rrrUrrr) r>r|rSr2r`r$rrrr,r r+r)rZsurrogatepass_errorsr~r-rrnrrr&test_badandgoodsurrogatepassexceptionssl  $$ z8CodecCallbackTest.test_badandgoodsurrogatepassexceptionscsfd}d}|D]Ttdfdd|D]}|tdj|dq(dD]\}}|t|j|dqDq dS)N) rfoo)rrMrrrrrNrrrr)rr)rxr<ztest.badhandlercsSrr)rvresrrrz:CodecCallbackTest.test_badhandlerresults..rw)rrrQr)rys+x-)r>r?rSr2r,rR)rresultsZencsr~rUrrrtest_badhandlerresultss$ z(CodecCallbackTest.test_badhandlerresultscCs||tjtd|tjtd|tjtd|tjtd|tjtd|tjtddS)Nr[rqr(rHrK)r+r>rr|rrrrrrrr test_lookupszCodecCallbackTest.test_lookupcCs4dd}td|dD]}|tdj|dqdS)NcSs$t|trd|jfStd|dS)N䉂r/)r1rr r2rOrrr unencrepls  z@CodecCallbackTest.test_unencodablereplacement..unencreplztest.unencreplhandler)rrxr<r)r>r?rSrr,)rrr~rrrtest_unencodablereplacements z-CodecCallbackTest.test_unencodablereplacementcCs&|ttjd|ttjdddS)Nrz test.dummy)rSr2r>r?rrrrtest_badregistercall!sz&CodecCallbackTest.test_badregistercallcCs|ttjdSr)rSr2r>r|rrrrtest_badlookupcall(sz$CodecCallbackTest.test_badlookupcallcCs|ttjddS)N test.unknown)rS LookupErrorr>r|rrrrtest_unknownhandler-sz%CodecCallbackTest.test_unknownhandlercCsJd}ddd|D}tdtjdD]}dD]}|||q2q*dS)N) rr2rirsiriPri rrcSsg|] }t|qSrr)rXrvrrrre8rz;CodecCallbackTest.test_xmlcharrefvalues..test.xmlcharrefreplace)rr<)r(r)r7r>r?rr,)rvr-r~rtrrrtest_xmlcharrefvalues2s z'CodecCallbackTest.test_xmlcharrefvaluesc Cs|tdjdddd}td||tdjdd|tdjdd|td jdd|td jdd|td jdd|td jd ddd}td||tdjddt}td|jd|_| ddddd|_| ddddd|_|t djddd|_| ddddd|_| ddddd|_|t djddd|_| dd ddGdddt }|t tj dd d!di|ttj dd ||ttj dd d!tjdidS)"NrrrcSsdSNrrrOrrrbaddecodereturn1Dsz=CodecCallbackTest.test_decodehelper..baddecodereturn1ztest.baddecodereturn1\rls\x0s\x0ys \Uffffeeees\uyyyyraw-unicode-escapecSsdSN)r\NrrOrrrbaddecodereturn2Nsz=CodecCallbackTest.test_decodehelper..baddecodereturn2ztest.baddecodereturn2test.posreturnrs0z0zrrMr rs\uyyyy0c@seZdZddZdS)z.CodecCallbackTest.test_decodehelper..DcSstdSr ValueErrorrkeyrrr __getitem__ssz:CodecCallbackTest.test_decodehelper..D.__getitem__NrrrrrrrrDrsrr[)rSrrRr>r?r2rrrr+ IndexErrorr^r`rorsys maxunicode)rrrhandlerrrrrtest_decodehelper>s@  z#CodecCallbackTest.test_decodehelperc Csv|tdjdddd}td||tdjdddd}td ||tdjdd t}td |jd |_| d dd d d|_| d dd dd|_|t d jdd d|_| d dd d d|_| d dd dd|_|t d jdd d|_Gdddt }dD]L}|t tj d|ddi|ttj d|||ttj d|ddiq$dS)NrrrcSsdSrrrOrrrbadencodereturn1sz=CodecCallbackTest.test_encodehelper..badencodereturn1ztest.badencodereturn1cSsdSrrrOrrrbadencodereturn2sz=CodecCallbackTest.test_encodehelper..badencodereturn2ztest.badencodereturn2rruÿ0s0rsrrrMsrrc@seZdZddZdS)z.CodecCallbackTest.test_encodehelper..DcSstdSrrrrrrrsz:CodecCallbackTest.test_encodehelper..D.__getitem__Nrrrrrrsr)r[r]r(rHrKrri,)rSrr,r>r?r2rrrr+rr^r`r_r)rrrrrrtrrrtest_encodehelperys6  z#CodecCallbackTest.test_encodehelpercCsBGdddt}|tdjdtjdi|tdjddidS)Nc@seZdZddZdS)z1CodecCallbackTest.test_translatehelper..DcSstdSrrrrrrrsz=CodecCallbackTest.test_translatehelper..D.__getitem__Nrrrrrrsrrrrr)r^rSr translaterrr2)rrrrrtest_translatehelpersz&CodecCallbackTest.test_translatehelpercCsDtddtddtddtddi}d D]}d |}||q(dS) N&z&z>"z")rrrrsz abcghi)r5r)rrartextrrrtest_bug828737sz CodecCallbackTest.test_bug828737c Csgd}dd}td||D]>\}}|t||dWdq 1sT0Yq dd}td||D]\}}|||ddqxdS) N)r)rys++r)rzr)r{r)rl\u123g)rr cSs$t|trd|_dStd|dS)Nrrrr/r1rr r2rOrrr replacings z?CodecCallbackTest.test_mutatingdecodehandler..replacingztest.replacingcSs$t|trd|_dStd|dS)Nrr r/r rOrrrmutatings z>CodecCallbackTest.test_mutatingdecodehandler..mutatingz test.mutatingr)r>r?rSr2rRr+)rZbaddatar rdatarrrrtest_mutatingdecodehandlers    ,  z,CodecCallbackTest.test_mutatingdecodehandlercCsdd}td||dddd|dddd|d d dd |d d dd dd}td||dddd|dddddS)NcSs(t|trd|jdfStd|dS)Nrrr/)r1rr r2rOrrrforward_shorter_than_ends zPCodecCallbackTest.test_crashing_decode_handler..forward_shorter_than_endztest.forward_shorter_than_endsz utf-16-leu����Øsz utf-16-bes z utf-32-leu ���ᄑs z utf-32-becSs*t|trd|_d|jfStd|dS)Nsrr/)r1rr r r2rOrrrreplace_with_long s  zICodecCallbackTest.test_crashing_decode_handler..replace_with_longztest.replace_with_longrrzu�r{u�)r>r?r+rR)rrrrrrtest_crashing_decode_handlersL   z.CodecCallbackTest.test_crashing_decode_handlerc s"tjtjtjtjtjtjtdtdg}tt t fD]Gfdddt }|D]B}|j |d | t||WdqR1s0YqRGfdddt}|D]l}|j |dH| t|f||Wdn1s0YWdq1s0Yqq6dS)NrrcseZdZZdSzACodecCallbackTest.test_fake_error_class..FakeUnicodeErrorNrrr __class__rclsrrFakeUnicodeError+sr)rZ error_classcseZdZZdSrrrrrrr0s)r>rrrrrrr|rrr$rrrSr2r)rhandlersrrrrrtest_fake_error_classs& 0z'CodecCallbackTest.test_fake_error_classN)&rrrr.rBrFrJrLrTrbrprrrrrrrrrrrrrrrrrrrrrrrr rrrrrrrr'CsF 9  (%:.,H ;6  $3r'__main__)r>Z html.entitiesr4rrCZunittestrrrrrrr!r$r"r%r&ZTestCaser'rmainrrrrs,|