a ze@s ddlZddlZddlZddlZddlZddlZddlZddlmZddlm Z z ddl Z Wne yrdZ Yn0z ddl Z Wne ydZ dZ Yn0e e jZ ddZddZGd d d eZGd d d ZGd ddeZGdddeejZGdddeejZGdddeejZGdddeejZGdddeejZGdddeejZGdddeejZGdddeejZGdd d ejZGd!d"d"ejZ Gd#d$d$eejZ!Gd%d&d&ejZ"gd'Z#e#D] Z$e%e$d(kre&e'e$qGd)d*d*ejZ(gd+Z)Gd,d-d-ejZ*Gd.d/d/ejZ+Gd0d1d1ejZ,Gd2d3d3ejZ-Gd4d5d5ejZ.gd6Z/e0ed7re/1d8e0ed9re/1d:d;gZ2Gdd?d?ejZ4Gd@dAdAejZ5GdBdCdCejZ6GdDdEdEeejZ7GdFdGdGeejZ8GdHdIdIejZ9GdJdKdKejZ:GdLdMdMejZ;gdNZZ>Wne ydZ>Yn0e<1dVdWdXge=dV<z ddl?Z?Wne yYn0e<1dYdZge=dY<Gd[d\d\ejZ@iZAd]d^ZBeCeBzdd_lDmEZEWne y@d`daZEYn0GdbdcdcejZFeGejHddkdeGdfdgdgejZIGdhdidiejZJGdjdkdkejZKGdldmdmejZLeMe dudnGdodpdpejZNGdqdrdrejZOGdsdtdtejZPeQdukreRdS)vN)mock)supportcsfdd}|S)Ncs||t|fdSN) assertEquallen)inputexpectcoderselfD/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_codecs.pycheckszcoding_checker..checkr )r r rr r rcoding_checkersrc sddlm}m}m}ddlm}mmmmm }dddGfdddtj }|||||}|d |d f}|} ||d| S) Nr)POINTER WINFUNCTYPEWinDLL)BOOLUINTBYTEWCHARrDWORD ics@eZdZdfdfdfdfdfdfgZdS)z'is_code_page_present..CPINFOEXWZ MaxCharSizeZ DefaultCharZLeadByteZUnicodeDefaultCharZCodePageZ CodePageNameN)__name__ __module__ __qualname__Z_fields_r rZMAX_DEFAULTCHARZ MAX_LEADBYTESZMAX_PATHrrr r CPINFOEXW&s   rZ GetCPInfoExWZkernel32) ctypesrrrZctypes.wintypesrrrrrZ Structure) cprrrrrrZ prototypeZ GetCPInfoExinfor rris_code_page_presents  r#c@s*eZdZdZddZddZd ddZd S) QueuezF queue: write bytes at one end, read bytes from the other end cCs ||_dSr_buffer)r bufferr r r__init__7szQueue.__init__cCs|j|7_dSrr%)r charsr r rwrite:sz Queue.writercCsH|dkr"|j}|jdd|_|S|jd|}|j|d|_|SdSNrr%)r sizesr r rread=sz Queue.readN)r)rrr__doc__r(r*r.r r r rr$3sr$c@seZdZddZddZdS)MixInCheckStateHandlingc Cstt|dD]}t|}||d|}|}||dt|ds||ddddf| ||d | ||t|}|||||dd}| |||qdS)NrT) rangercodecsgetincrementaldecoderdecodegetstateassertIsInstanceintsetstate assertTruer r encodingur-idZpart1stateZpart2r r rcheck_state_handling_decodeIs   z3MixInCheckStateHandling.check_state_handling_decodec Csztt|dD]d}t|}||d|}|}t|}|||||dd}||||qdS)Nr1T)r2rr3getincrementalencoderencoder6r9rr;r r rcheck_state_handling_encode_s   z3MixInCheckStateHandling.check_state_handling_encodeN)rrrrArDr r r rr0Hsr0c@sXeZdZddZddZddZddZd d Zd d Zd dZ dZ ddZ ddZ dS)ReadTestc Cstd}t|j|}d}t||j|D]0\}}|t|g||7}| ||q.| |d| |j dt |j}d}t||j|D](\}}|| t|g7}| ||q| | ddd| |j d|d}t||j|D]*\}}|| t|g7}| ||q | | ddd| |j d||j} | |dtdd| D|jdS)NTcSsg|]}t|gqSr bytes.0cr r r rFz*ReadTest.check_partial..)r$r3 getreaderr<ziprCr*rIr.r bytebufferr4r5r'resetjoin iterdecode) r rZpartialresultsqrresultrLZ partialresultr?encodedr r r check_partialks8  zReadTest.check_partialc sfdddfdd }d}d}d}||d|||d |||dd |||d d |d }g}g}t|D]8\}} ||d d d | ||d d d q|d|dd||d|d d|tdD]} |D]} d | d| d}|} td D]6}| jdd| d| | jdddq4|} td D]2}| jd d| d| jd ddq|q qdS)Ncs"t|j}tj|SrioBytesIOrCr<r3rN)rstreamr r rrNsz)ReadTest.test_readline..getreaderTcs6|}g}|j||d}|s q,||q d|S)N)r,keepends|)readlineappendrR)rr^r,readerlinesline)rNr r readallliness z,ReadTest.test_readline..readalllinesufoo bar baz spam
eggsufoo |bar |baz |spam
|eggszfoo|bar|baz|spam|eggsF )   u
uあrGr_Pazxxx r^xxx)TN)r enumeraterarRr2r`) r rer-Z sexpectedZsexpectednoendsZlineendsZvwZvwor>Zlineendr,rbr )rNr r test_readlinesP          zReadTest.test_readlinecs2gd}d|fdd}|}||d|d|dd|d|}||d|d|dd|dd|dt|ddddd|}||d||dd|d|}|jdd d dd |d d|d|}|jdd d dd |dd |dd|dd d |}|jdd d dd ||dd dg|dd|ddS) N)zHumpty Dumpty sat on a wall, z!Humpty Dumpty had a great fall. z-All the king's horses and all the king's men z#Couldn't put Humpty together again.rGcs"tj}tj|SrrY)r\datar r rrNsz8ReadTest.test_mixed_readline_and_read..getreaderrr1d()r,r)j)rRrr`r.r readlines)r rcrNfr rqrtest_mixed_readline_and_reads: .*z%ReadTest.test_mixed_readline_and_readcCsVgd}td||j}t|j|}t|D]\}}||||q8dS)N)=z:<%!--=================================================== z, BLOG index page: show recent articles, z7 today's articles, or articles of a specific date. z>========================================================--%> z!<%@inputencoding="ISO-8859-1"%> z<%@pagetemplate=TEMPLATE.y%> z$<%@import=import frog.util, frog%> z!<%@import=import frog.objects%> z9<%@import=from frog.storageerrors import StorageError%> z<% rhzimport logging z+log=logging.getLogger("Snakelets.logger") rhrhzuser=self.SessionCtx.user z-storageEngine=self.SessionCtx.storageEngine rhrhz-def readArticlesFromDate(date, count=None): z2 entryids=storageEngine.listBlogEntries(date) z% entryids.reverse() # descending z if count: z# entryids=entryids[:count] z try: z\ return [ frog.objects.BlogEntry.load(storageEngine, date, Id) for Id in entryids ] z except StorageError,x: z6 log.error("Error loading articles: "+str(x)) z, self.abort("cannot load articles") rhzshowdate=None rhzarg=self.Request.getArg() zif arg=="today": z, #-------------------- TODAY'S ARTICLES z- self.write("

Today's articles

") z( showdate = frog.util.isodatestr() . entries = readArticlesFromDate(showdate) zelif arg=="active": z4 #-------------------- ACTIVE ARTICLES redirect z self.Yredirect("active.y") zelif arg=="login": z/ #-------------------- LOGIN PAGE redirect z self.Yredirect("login.y") zelif arg=="date": z7 #-------------------- ARTICLES OF A SPECIFIC DATE z2 showdate = self.Request.getParameter("date") zV self.write("

Articles written on %s

"% frog.util.mediumdatestr(showdate)) r{zelse: z+ #-------------------- RECENT ARTICLES z, self.write("

Recent articles

") z. dates=storageEngine.listBlogEntryDates() z if dates: z entries=[] z SHOWAMOUNT=10 z for showdate in dates: zW entries.extend( readArticlesFromDate(showdate, SHOWAMOUNT-len(entries)) ) z* if len(entries)>=SHOWAMOUNT: z break z rG) rZr[rRrCr<r3rNror)r r-r\rbr>rdr r rtest_bug1175396s ?zReadTest.test_bug1175396cCsNtd}t|j|}t|j|}|d||jddd|d||jddd||jddd|d ||jddd ||jddd|d||jd dd|d||jd dd ||jd dd |d ||jd dd ||jd dd|d ||jd dd dS)NrFzfoo Frmfooz bar rGZbarZbazTrgzbar zfoo )r$r3 getwriterr<rNr*rr`)r rTwriterrbr r rtest_readlinequeueFs*       zReadTest.test_readlinequeuecCs~d}d}d}||||j}t|}t|j|}|||||||||||ddS)NzAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy z`offending line: ladfj askldfj klasdj fskla dfzaskdj fasklfj laskd fjasklfzzzzaa%whereisthis!!! z next line. rGrCr<rZr[r3rNrr`)r s1s2s3r-r\rbr r rtest_bug1098990_aas zReadTest.test_bug1098990_ac Csd}d}d}d}d}||||||j}t|}t|j|}|||||||||||||||||ddS)Nzaaaaaaaaaaaaaaaaaaaaaaaa zbbbbbbbbbbbbbbbbbbbbbbbb zstillokay:bbbbxx zbroken!!!!badbad z againokay. rGr) r rrrZs4Zs5r-r\rbr r rtest_bug1098990_bns zReadTest.test_bug1098990_b�c Cs|tdj|j|d|jdd|j|d|jdd|j|d|jdd|j|d|jdd |j|d|jd d |j|d |jdd |j|d |jd d |jd|j}dD]\}}||jt|d}||jt|d}|d|}|||j|}|t|j|j|||jd||||jd||||jd|||||jd ||j |d dd|jD}|||jd|||qdS)Nu[]backslashreplacez[\udc80] namereplacexmlcharrefreplacez [�]ignore[]replacez[?][]z[??]rG))𐿿A)[])rr surrogatepasscss|]}d|VqdS)\x%02xNr )rKbr r r sz0ReadTest.test_lone_surrogates..) assertRaisesUnicodeEncodeErrorrCr<rrill_formed_sequenceUnicodeDecodeErrorr5ill_formed_sequence_replacerR) r ZbombeforeZafterZbefore_sequenceZafter_sequenceZ test_stringZ test_sequencerr r rtest_lone_surrogatessr               zReadTest.test_lone_surrogatescCsd|jd}tdt|D]J}t|jd}|||d|d||||dddqd|jd}tdt|D]H}t|jd}|||d|d||||ddqdS)Nurr1rGTu)rCr<r2rr3r4rr5)r rrr>decr r rtest_incremental_surrogatepasssz'ReadTest.test_incremental_surrogatepassN) rrrrXrprzr|rrrrrrr r r rrEjs+;0E ,rEc@sdeZdZdZejdkrdZndZdZdZddZ d d Z d d Z d dZ ddZ ddZddZdS) UTF32Testutf-32little܀s$spamspams$spamspamcCst|j\}}}}t}||}|d|d|}|||jkpV||j kt|}||}| | ddSNspamspamspam r3lookupr<rZr[r*getvaluer:spamlespamberr.r _rbrr-ryr?r r rtest_only_one_boms   zUTF32Test.test_only_one_bomcCsTtd}t|j|}|t|jtd}t|j|}|t|jdS)NsrZr[r3rNr<r UnicodeErrorr.r r-ryr r r test_badboms   zUTF32Test.test_badbomcCs|dgddS)N ÿĀ￿𐀀)rGrGrGrGrGrGrGrrrÿrrrÿĀrrrÿĀ￿rrrrrXr]r r r test_partialszUTF32Test.test_partialcCs0|dtddd|dtddddSN)rr1rT)rGr1rrr3 utf_32_decoder]r r r test_handlerss   zUTF32Test.test_handlerscCs|ttjddddSNstrictT)rrr3rr]r r r test_errors s zUTF32Test.test_errorscCs(||jd|j||jd|jdSNrrAr<rrr]r r rtest_decoder_state s zUTF32Test.test_decoder_statecCs8d}|dt|dd}|dt|ddS)Ns𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀rsr)r Z encoded_leZ encoded_ber r rtest_issue8941s  zUTF32Test.test_issue8941N)rrrr<sys byteorderrrrrrrrrrrr r r rrs  rc@s4eZdZdZdZddZddZddZd d Zd S) UTF32LETest utf-32-lercCs|dgddSNr)rGrGrGrrrrrrrrrrrrrrrrrrr]r r rr"szUTF32LETest.test_partialcCs|d|jddS)N𐈃srrCr<r]r r r test_simple=szUTF32LETest.test_simplecCs|ttjddddSr)rrr3utf_32_le_decoder]r r rr@s zUTF32LETest.test_errorscCsd}|dt|ddS)Nsrr)rr3rr rWr r rrDs zUTF32LETest.test_issue8941N rrrr<rrrrrr r r rrs rc@s4eZdZdZdZddZddZddZd d Zd S) UTF32BETest utf-32-bercCs|dgddSrrr]r r rrPszUTF32BETest.test_partialcCs|d|jddS)Nrsrr]r r rrkszUTF32BETest.test_simplecCs|ttjddddSr)rrr3utf_32_be_decoder]r r rrns zUTF32BETest.test_errorscCsd}|dt|ddS)Nsrr)rr3rrr r rrrs zUTF32BETest.test_issue8941Nrr r r rrLs rc@sdeZdZdZejdkrdZndZdZdZddZ d d Z d d Z d dZ ddZ ddZddZdS) UTF16Testutf-16r܀sspamspamsspamspamcCst|j\}}}}t}||}|d|d|}|||jkpV||j kt|}||}| | ddSrrrr r rrs   zUTF16Test.test_only_one_bomcCsTtd}t|j|}|t|jtd}t|j|}|t|jdS)Nsrrrr r rrs   zUTF16Test.test_badbomcCs|dgddS)Nr)rGrGrGrrrrrrrrrrrrr]r r rrszUTF16Test.test_partialcCs0|dtddd|dtddddSr)rr3 utf_16_decoder]r r rrs   zUTF16Test.test_handlerscCs|ttjddddSr)rrr3rr]r r rrs zUTF16Test.test_errorscCs(||jd|j||jd|jdSrrr]r r rrs zUTF16Test.test_decoder_statecCsd}||j}|tjtjttjd}||Wdn1sL0Ytdt f$t jtjd|jd}Wdn1s0Y| | | |Wdn1s0YdS)NzHello world wbrGUr<) rCr< addCleanuprunlinkTESTFNopenr*Zcheck_warningsDeprecationWarningr3rr.)r rr-fprbr r rtest_bug691291s (2zUTF16Test.test_bug691291N)rrrr<rrrrrrrrrrrrr r r rrzs  rc@s,eZdZdZdZddZddZddZd S) UTF16LETest utf-16-lercCs|dgddSNr) rGrrrrrrrrrrrrr]r r rrszUTF16LETest.test_partialcCsBgd}|D]0\}}|ttj|dd||dd|q dS)N)rr)sAZA�)s ABCDZABCD�)sr)sAr)sA�A)sArrTzutf-16ler)rrr3utf_16_le_decoderr5r testsrawexpectedr r rrs   zUTF16LETest.test_errorscCs,|d|jd|d|jddS)NrsީrrCr<r5r]r r r test_nonbmps zUTF16LETest.test_nonbmpNrrrr<rrrrr r r rrs rc@s,eZdZdZdZddZddZddZd S) UTF16BETest utf-16-bercCs|dgddSrrr]r r rrszUTF16BETest.test_partialcCsBgd}|D]0\}}|ttj|dd||dd|q dS)N)r)sAr)s ABCDZr)sr)sr)sAr)sArrTzutf-16ber)rrr3utf_16_be_decoderr5rr r rrs   zUTF16BETest.test_errorscCs,|d|jd|d|jddS)Nrsrr]r r rr"s zUTF16BETest.test_nonbmpNrr r r rrs rcsTeZdZdZdZdZdZddZddZd d Z fd d Z d dZ ddZ Z S)UTF8Testutf-8su ���rFcCs|dgddS)Nÿ߿ࠀ￿𐀀)rrrrÿ߿rrÿ߿ࠀrr ÿ߿ࠀ￿rrrrrr]r r rr.szUTF8Test.test_partialcCs d}||j|||jdS)Nu€ÿĀ߿ࠀ￿􏿿)rAr<rC)r r=r r rrDs zUTF8Test.test_decoder_statec CsZdD]P\}}}|j|||d&|||j||Wdq1sJ0YqdS)N)[]rr)rru[��])rsurrogateescape[])rrz [\x80\xff]rr error_handlerr)subTestrr5r<r rrrrr r rtest_decode_errorIszUTF8Test.test_decode_errorcst|d|jd|jd|t}d|jdWdn1sT0Y|j}||j |j |j ddS)Nrrs[]u []u) superrrrCr<BOMrr exceptionobjectstartend)r cmexc __class__r rrUs  ,zUTF8Test.test_lone_surrogatescCs|d|jd|jd|d|jd|jd|d|jd|jd|d|jdd|d|jdd|td|t d|jdWdn1s0Y|t d |jdWdn1s0YdS) Nu abcdefrs abcdefu𐿿s𐿿rs[]sabcsabcz) rrCr<r r5r:r3 lookup_errorrrr]r r rtest_surrogatepass_handleras( , z#UTF8Test.test_surrogatepass_handlerc Csgd}dD]}dD]}|||qq |d|D]N}|j|d.t|j}|t|j|Wdq81s|0Yq8dS)N)r) ssssss)r)sssssssrr) raextendrr3r4r<rrr5)r Zcasesprefixsuffixrrrr r rtest_incremental_errorsts z UTF8Test.test_incremental_errors)rrrr<rrr rrr rrr' __classcell__r r rrr(s rc@s8eZdZdZddZddZddZdd Zd d Zd S) UTF7Testutf-7cCsd}|||j|d||d|j|d}|||j|d||d|j||d|jd|d|jdd}|||j|d||d|j|dttttdt||d |}|||jd dS) NzGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?asciiz !"#$%&*;<=>@[]^_`{|}za+bsa+-bz rG+sX+AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-) rrCr<r5rRsortedsetrIr2)r Zset_dZset_owsZ other_asciir r r test_asciis"zUTF7Test.test_asciicCs|dgddS)Na+-bc€dĀe𐀀f) rlrla+za+-a+-br4r4r4r4za+-ba+-bcr5r5r5r5ua+-bc€ a+-bc€dr6r6r6r6u a+-bc€dĀ a+-bc€dĀer7r7r7r7r7r7r7ua+-bc€dĀe𐀀r2rr]r r rrszUTF7Test.test_partialc Csngd}|D]\\}}|j|d8|ttj|dd||dd|Wdq 1s^0Yq dS)N))sbu�b)saba�b)sabua��b)sa+IKa�)sa+IK-br8)sa+IK,br8)sa+IKxa€�)sa+IKx-ba€�b)sa+IKwgrr:)s a+IKwgr-br;)sa+IKwgr,r:)s a+IKwgr,-bu a€�-b)sa+IKwgrB a€€�)s a+IKwgrB-b a€€�b)s a+/,+IKw-ba�€b)s a+//,+IKw-br>)s a+///,+IKw-b a￿�€b)s a+////,+IKw-br?)sa+IKw-bua€b�)sa+IKwbr;)sa+@br8rrTr*r)rrrr3 utf_7_decoderr5rr r rrs  zUTF7Test.test_errorscCs|d|jd|d|jd|d|jd|d|jd|d|jd|d|jd|d|jd|d|jd |d |jd|d |jddS) Nu𐒠s+2AHcoA-us+2AHcoAu€𐒠s +IKzYAdyg-s +IKzYAdygu €€𐒠s +IKwgrNgB3KA-s +IKwgrNgB3KArr]r r rrs zUTF7Test.test_nonbmpc CsZgd}|D]H\}}|j|d$||dd|Wdq 1sJ0Yq dS)N) )sa+2AE-buab)sa+2AEbr8)sa+2AEr9)sa+2AEA-br8)sa+2AH-br8)s a+IKzYAQ-bua€b)s a+IKzYAQbr;)s a+IKzYAQA-br;)s a+IKzYAd-br;)s a+IKwgrNgB-bu a€€b)s a+IKwgrNgBbr=)s a+IKwgrNgBr<)s a+IKwgrNgBA-br=r@r*rrrr5rr r rrs zUTF7Test.test_lone_surrogatesN) rrrr<r1rrrrr r r rr)s 'r)c@seZdZddZddZdS) UTF16ExTestcCs|ttjdddddS)NrrrT)rrr3utf_16_ex_decoder]r r rrszUTF16ExTest.test_errorscCs|ttjdSr)r TypeErrorr3rDr]r r r test_bad_argsszUTF16ExTest.test_bad_argsN)rrrrrFr r r rrC srCc@s$eZdZddZddZddZdS)ReadBufferTestcCs&ddl}|t|ddddS)Nrrspam)rH)arrayrr3readbuffer_encode)r rJr r r test_arrays zReadBufferTest.test_arraycCs|tdddS)NrGrFr)rr3rKr]r r r test_emptyszReadBufferTest.test_emptycCs"|ttj|ttjddSN*)rrEr3rKr]r r rrF szReadBufferTest.test_bad_argsN)rrrrLrNrFr r r rrGsrGc@s>eZdZdZejZddZddZddZ dd Z d d Z d S) UTF8SigTest utf-8-sigcCs|dgddS)Nÿ߿ࠀ￿𐀀)rGrGrGrGrGurTÿrUÿ߿rVrV ÿ߿ࠀrWrWÿ߿ࠀ￿rXrXrXrSrr]r r rr(szUTF8SigTest.test_partialcCs|tddddS)NrRrGrstrr]r r rtest_bug1601501DszUTF8SigTest.test_bug1601501cCs,td}d}|||d|dS)NrRr)r3r4rr5rC)r r?r-r r rtest_bomHs zUTF8SigTest.test_bomc Csd}tjd}td}dgttddgdD]\}|t|}t}|durb||}n|}|spq|| |qN| }| ||q4dSNu ABC¡∀XYZs ABC¡∀XYZrRr1 )@r,ii) r3BOM_UTF8rNlistr2rZr[StringIOr.r*rr r Z unistringZ bytestringrbsizehintZistreamZostreamrrZgotr r rtest_stream_bomMs     zUTF8SigTest.test_stream_bomc Csd}d}td}dgttddgdD]\}|t|}t}|dur\||}n|}|sjqv||qH| }| ||q.dSr^) r3rNrcr2rZr[rdr.r*rrrer r rtest_stream_barecs    zUTF8SigTest.test_stream_bareN) rrrr<r3rbr rr\r]rgrhr r r rrQ$srQc@s,eZdZddZddZddZddZd S) EscapeDecodeTestcCs*|tdd|ttddS)NrFrM)rr3 escape_decode bytearrayr]r r rrN{szEscapeDecodeTest.test_emptycCsFtj}tdD]2}t|g}|dkr|||d|ddfqdS)Nra\0r)r3rjr2rIrr r5rr r rtest_raws   zEscapeDecodeTest.test_rawc Cs&tj}t||}|dd|dd|dd|dd|d d |d d |d d|dd|dd|dd|dd|dd |dd|dd|dd|dd|d d!|d"d|d#d|d$d!td%d&D]}t|g}|d'vr8|t"|d(|d(|Wdn1s.0Y|t*|d(|d(|Wdq1st0Yq|t|d)d)Wdn1s0Y|t|d*d*Wdn1s0Y|t|d+d+Wdn1s0YdS),N[\ ][][\"]s["][\']s['][\\]s[\][\a]s[][\b]s[][\t]s[ ][\n]s[ ][\v]s[ ][\f]s[ ][\r]s[ ][\7][\78]s[8][\41]s[!][\418]s[!8][\101]s[A][\1010]s[A0]s[\501][\x41][\x410]a{sabfnrtvxrl\8\9\)r3rjrr2rI assertWarnsrupperr r5rr>rr r r test_escapesF                        2 < * * zEscapeDecodeTest.test_escapecCstj}|t|d|t|d||ddd||ddd|t|d|t|d ||d dd ||d dd dS) Ns\xs[\x]s[\x]\xr)rqrvr)[?]?rvs\x0s[\x0]s[\x0]\x0)rq)rr)r3rjr ValueErrorr)r r5r r rrszEscapeDecodeTest.test_errorsN)rrrrNrorrr r r rrizs%ri))u"ليهمابتكلموشعربي؟segbpdaj6bu4bxfgehfvwxn)u他们为什么不说中文sihqwcrb4cv8a8dqg056pqjye)u他們爲什麽不說中文sihqwctvzc91f659drss3x8bo0yb)uPročprostěnemluvíčeskysProprostnemluvesky-uyb24dma41a)u,למההםפשוטלאמדבריםעבריתs4dbcagdahymbxekheh6e0a7fei0b)uZयहलोगहिन्दीक्योंनहींबोलसकतेहैंs,i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd)u6なぜみんな日本語を話してくれないのかs&n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa)uH세계의모든사람들이한국어를이해한다면얼마나좋을까sE989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c)u8почемужеонинеговорятпорусскиs b1abfaaepdrnnbgefbaDotcwatmq2g4l)u*PorquénopuedensimplementehablarenEspañols-PorqunopuedensimplementehablarenEspaol-fmd56a)u-TạisaohọkhôngthểchỉnóitiếngViệts,TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g)u3年B組金八先生s3B-ww4c5e180e575a65lsy2b)u"安室奈美恵-with-SUPER-MONKEYSs(-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n)u'Hello-Another-Way-それぞれの場所s(Hello-Another-Way--fc4qua05auwb3674vfr0b)uひとつ屋根の下2s2-u9tlzr9756bt3uc0v)uMajiでKoiする5秒前sMajiKoi5-783gue6qz075azm5e)uパフィーdeルンバsde-jg4avhby1noc0d)uそのスピードでsd9juau41awczczp)z -> $1.00 <-s -> $1.00 <--rc@s$eZdZddZddZddZdS) PunycodeTestcCs8tD].\}}|t|ddt|dqdSNpunycoder+)punycode_testcasesrr[rClowerr Zunipunyr r r test_encode%s   zPunycodeTest.test_encodecCsFtD]<\}}|||d|dd}|||dqdSr)rrr5rCrr r r test_decode1s zPunycodeTest.test_decodec Csddtfdg}|D]j\}}}|j||dBt|trL|t|jd|n||d||Wdq1st0YqdS)Nxn--w&r)rrzxn-)rerrorsr)rr isinstance Exceptionrr5r)r Z testcasesrrrr r rtest_decode_invalid7s  z PunycodeTest.test_decode_invalidN)rrrrrrr r r rr$s r)-)s%foo­͏᠆᠋bar​⁠baz︀︈️s foobarbaz)sCAFEscafe)sßsss)sİsi̇)sŃͺsń ιNN)sǰ ªsǰ a)sᾷsᾶι)ǰr)ΐr)ΰr)ẖr)ὖr) r)s r)s N)s r)s​rF)s r)r)s…N)s᠎N)rYrF)s𝅵N)sN)s󱈴N)s􏈴N)s򏿾N)s􏿿N)sN)s�N)s⿵N)śś)s‎N)s‪N)s󠀁N)s󠁂N)sfoo־barN)s fooﵐbarN)s fooﹶbars foo َbar)sا1N)ا1بrr)sX­ßİ℡ǰ ªΰ sxssi̇telǰ aΰ )sXß㌖İ℡⒟㌀s*xssキロメートルi̇tel(d)アパートc@seZdZddZdS) NameprepTestc Csddlm}ttD]\}\}}|dur*qt|dd}|durN|t||qt|dd}z||||Wqty}z&t d|dt|fWYd}~qd}~00qdS)Nr)namepreprrz Test 3.%d: %sr1) Zencodings.idnarronameprep_testsr[rrrrrZ TestFailed)r rposZorigZpreppeder r r test_namepreps   zNameprepTest.test_nameprepN)rrrrr r r rrsrc@s<eZdZddZddZddZddZd d Zd d Zd S) IDNACodecTestcCsL|tddd|tddd|tddd|tddd dS) N python.orgidna python.org python.org. python.org.xn--pythn-mua.org pythön.orgxn--pythn-mua.org. pythön.org.rZr]r r rtest_builtin_decodesz!IDNACodecTest.test_builtin_decodecCsL|ddd|ddd|ddd|ddd dS) NrrrrrrrrrrrCr]r r rtest_builtin_encodesz!IDNACodecTest.test_builtin_encodecCs2tdtd}|d||ddS)NrabcrG)r3rNrZr[r.r)r rUr r r test_streams zIDNACodecTest.test_streamcCs<|dtdddDdd|dtdddDdd |dtd dd Ddd |dtd dd Ddd td}||dd||dd||dd||ddd|||dd||dd||dd||ddddS)NrGcss|]}t|gVqdSrrHrJr r rrrFz8IDNACodecTest.test_incremental_decode..rrrcss|]}t|gVqdSrrHrJr r rr rFrrcss|]}t|gVqdSrrHrJr r rrrFrrcss|]}t|gVqdSrrHrJr r rrrFsxn--xams ple-9ta.ou äxample.srgrFTZorgsrg.zorg.)rrRr3rSr4r5rQ)r decoderr r rtest_incremental_decodes4 z%IDNACodecTest.test_incremental_decodecCs|dtddd|dtddd|dtddd|dtdddtd}||d d||d d ||d d d|||d d||dd||d d ddS)NrFrrrrrrruäxz ample.orgsxn--xample-9ta.rGTsorgz ample.org.sxn--xample-9ta.org.)rrRr3 iterencoderBrCrQ)r encoderr r rtest_incremental_encode"s0 z%IDNACodecTest.test_incremental_encodecCsJdddddddD](}|tdjd||tdjd|qdS)z$Only supports "strict" error handlerrrrr)rrrrN)rCr5rrr rr r rr>s  zIDNACodecTest.test_errorsN) rrrrrrrrrr r r rrs rc@steZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)CodecsModuleTestcCsx|tddd|ttj|tdd|ttjdd|tjdddd|tjd dd d d dS) Nlatin-1äöürabcrr+objr<[]rrr)rr3r5rrErr]r r rrKszCodecsModuleTest.test_decodecCs|tddd|ttj|ttjdd|tdd|ttjdd |tjddd d|tjd d d d ddS)Nrrrr}__spam__rruÿffr+r[ÿ]rrrq)rr3rCrrE LookupErrorrr]r r rrXszCodecsModuleTest.test_encodecCs"|ttj|ttjddSrO)rrEr3registerr]r r r test_registerfszCodecsModuleTest.test_registercCs2|ttj|ttjd|ttjddS)Nr )rrEr3rrr]r r r test_lookupjszCodecsModuleTest.test_lookupcCs"|ttj|ttjddSNr)rrEr3 getencoderrr]r r rtest_getencoderosz CodecsModuleTest.test_getencodercCs"|ttj|ttjddSr)rrEr3 getdecoderrr]r r rtest_getdecoderssz CodecsModuleTest.test_getdecodercCs"|ttj|ttjddSr)rrEr3rNrr]r r rtest_getreaderwszCodecsModuleTest.test_getreadercCs"|ttj|ttjddSr)rrEr3r~rr]r r rtest_getwriter{szCodecsModuleTest.test_getwritercCslttj}|tjtj|zttjdWntjyN|dYn0td}||j ddS)Ntr_TRztest needs Turkish localeASCIIr+) locale setlocaleLC_CTYPErErrorskipTestr3rrname)r Z oldlocalerLr r rtest_lookup_issue1813s  z&CodecsModuleTest.test_lookup_issue1813cCs,d}||tjtjD]}tt|qdS)N),rCr5r CodecInfoCodecIncrementalEncoderIncrementalDecoder StreamReader StreamWriterrrrrBr4rNr~register_errorr strict_errorsreplace_errors ignore_errorsxmlcharrefreplace_errorsbackslashreplace_errorsnamereplace_errorsr EncodedFilerrSr BOM_BEBOM_LErb BOM_UTF16 BOM_UTF16_BE BOM_UTF16_LE BOM_UTF32 BOM_UTF32_BE BOM_UTF32_LEBOM32_BEBOM32_LEBOM64_BEBOM64_LEStreamReaderWriter StreamRecoder)ZassertCountEqualr3__all__getattr)r Zapir r rtest_alls zCodecsModuleTest.test_allc Cs|tjtjdD]l}||Nttj|d}||tjWdn1sX0YWdq1sv0YqdS)N)wrUzr+w+rlr3r+) rrrrrr3rr7r)r modefiler r r test_opens zCodecsModuleTest.test_opencCs~|ttjdd|ttjdd|ttjdd|ttjdddD],}|ttjdd||ttjdd|qLdS)NrZ undefinedrrGrF)rrrr)rrr3rCr5rr r rtest_undefineds  zCodecsModuleTest.test_undefinedc Cs~t}td|V}|t ttjddWdn1sF0Y|j Wdn1sp0YdS)Nz builtins.openZwtzinvalid-encoding) r mock_openpatchrrr3rrrcloseZ assert_called)r rrr r r'test_file_closes_if_lookup_error_raiseds  .z8CodecsModuleTest.test_file_closes_if_lookup_error_raisedN)rrrrrrrrrrrrrrrr r r r rrIs   rc@seZdZddZddZdS)StreamReaderTestcCstd|_td|_dS)Nr한 글)r3rNrbrZr[r\r]r r rsetUps zStreamReaderTest.setUpcCs$||j}||ddgdS)Nu한 u글)rbr\rrx)r ryr r rtest_readliness zStreamReaderTest.test_readlinesN)rrrrrr r r rr sr c@seZdZddZdS)EncodedFileTestcCs\td}t|dd}||dt}t|dd}|d||ddS)Nr rrs\ rü)rZr[r3rrr.r*rr ryZefr r r test_basics  zEncodedFileTest.test_basicN)rrrrr r r rrsr)er+big5 big5hkscscharmapcp037Zcp1006cp1026cp1125cp1140cp1250cp1251cp1252cp1253cp1254cp1255cp1256cp1257cp1258cp424cp437cp500Zcp720Zcp737cp775cp850cp852cp855Zcp856cp857cp858cp860cp861cp862cp863cp864cp865cp866cp869Zcp874Zcp875cp932cp949cp950 euc_jis_2004 euc_jisx0213euc_jpeuc_krgb18030gb2312gbk hp_roman8hzr iso2022_jp iso2022_jp_1 iso2022_jp_2iso2022_jp_2004 iso2022_jp_3iso2022_jp_ext iso2022_kr iso8859_1 iso8859_10 iso8859_11 iso8859_13 iso8859_14 iso8859_15 iso8859_16 iso8859_2 iso8859_3 iso8859_4 iso8859_5 iso8859_6 iso8859_7 iso8859_8 iso8859_9johabkoi8_rkoi8_tkoi8_ukz1048latin_1 mac_cyrillic mac_greek mac_iceland mac_latin2 mac_roman mac_turkishZpalmosptcp154rZraw_unicode_escape shift_jisshift_jis_2004shift_jisx0213tis_620Zunicode_escapeutf_16 utf_16_be utf_16_leutf_7utf_8Z mbcs_encodembcsZ oem_encodeZoemrc@sJeZdZddZejddZddZddZd d Z d d Z d dZ dS)BasicUnicodeTestc sd}tD]}t|j}|dr.|d7}n |dkr:d}||dd|ddt||\}}||t|d|t ||\}}|||d||t vrVt d}t ||}d} |D]6} | | |} |t| tut| | | 7} qt d}t||} d} | D]"} | t| g| | 7} q || |d||t vrzt|WntyYn0d} |D]} | | 7} q| dd 7} t|d} | D]} | t| g7} q| dd 7} || |d|dtt|||}|||d|dttd||}||d|d vrzt|d WntyYq0dfd d |D} t|d dfdd | D} || |d|qdS)Nabc123Z_codecr]r- encoding=%rrFrGTrrnrc3s|]}|VqdSrrCrJ)rr rrrFz/BasicUnicodeTest.test_basics..c3s|]}t|gVqdSrr5rIrJ)rr rrs)all_unicode_encodingsr3rrendswithrrrrrbroken_unicode_with_statefulr$r~r*r.r:typerIrNrBrrCr4r5rRrSr)r r-r<rrr,r)rTr encodedresultrLchunkrb decodedresultrVr )rrr test_basicsMs           zBasicUnicodeTest.test_basicsc s2d}tD]"}|tvrzt|Wnty6Yn|0d}|D]}||7}q@|dd7}t|d}|D]}|t|g7}qv|dd7}| ||d||dvrzt|dWntyYq0d fdd |D}t|dd fd d |D}| ||d|qdS) NrprFrGTrrrsrc3s|]}|VqdSrrtrJ)cencoderr rrrFz4BasicUnicodeTest.test_basics_capi..c3s|]}t|gVqdSrrurJ)cdecoderr rrs) rvrx _testcapiZcodec_incrementalencoderrrCZcodec_incrementaldecoderr5rIrrR)r r-r<rzrLr|r )rr~rtest_basics_capis@     z!BasicUnicodeTest.test_basics_capicCsrdd}tD]`}|dkrq |tvr$q t|t||}tdD]$}|dd| }| ||qFq dS)Nz%s %s )AXabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123AXdef456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456rrur) rvrxr3rNrZr[rCr2seekr.r)r r-r<rbtrrr r r test_seeks  zBasicUnicodeTest.test_seekcCs:tD]0}t|}|t||dvr|t|dqdS)N)rrrP)rvr3rrrE)r r<rr r rtest_bad_decode_argss   z%BasicUnicodeTest.test_bad_decode_argscCs$tD]}t|}|t|qdSr)rvr3rrrE)r r<rr r rtest_bad_encode_argss z%BasicUnicodeTest.test_bad_encode_argscCs&ddlm}t|j}|||dS)Nr)r) encodingsrryZencoding_tabler)r rZ table_typer r r"test_encoding_map_type_initializeds  z3BasicUnicodeTest.test_encoding_map_type_initializedcCsBd}tD]4}|tvr||||||||||qdS)Nrp)rvrxrArCrD)r r=r<r r rrs z#BasicUnicodeTest.test_decoder_stateN) rrrr}rZ cpython_onlyrrrrrrr r r rroLsM %roc@s$eZdZddZddZddZdS) CharmapTestcCs|tdddd|tdddd|ttjddd|ttjddd|tdd dd |tdd dd |tdd dd |tdd dd |tdd dd|tdd ddttd}|t|d ddt|fdS)Nrrrr􏿿bcrrabuab￾ruab�rrzab\x02rrrrrarG)rr3charmap_decoderrrIr2rr Zallbytesr r rtest_decode_with_string_mapsV             z'CharmapTest.test_decode_with_string_mapc Cs<|tddddddd|tdddd d dd |tddd dddd |tddddddd|ttjddddd|ttjdddddd|ttjdddddd|tdddddd|tddddddd|tddddddd|tdddddd|tddddddd|tddddddd|tdddddd|tddddddd|tdddddddttd}|t|didt|f|t dtjdddd dd|t dtjdddd dddS)NrrrlrrLrr1rrZAaZBbZCc)ZAaBbCcr􏿿rrGrrr1u￾rrrrrraz.character mapping must be in range\(0x110000\)riɚ;) rr3rrrrIr2rassertRaisesRegexrErr r rtest_decode_with_int2str_map"s               z(CharmapTest.test_decode_with_int2str_mapc Cstd}td}td}|tdd|||dd|tddd||dd |tddtj||dttjd d f|ttjddtjd ||d|t tjdd||d |t tjdd||dd|tdd||d d|tdd||ddd|tdd||d d|tdd||ddd|tdd||d d|tdd||ddddS)NrlrrLrrrrirZbcrr1rirrrrrr) ordrr3rr maxunicodechrrrEr)r rlrrLr r rtest_decode_with_int2int_maps       z(CharmapTest.test_decode_with_int2int_mapN)rrrrrrr r r rrs7trc@seZdZddZddZdS) WithStmtTestcCsXtd}t|dd }||dWdn1s>0Y||jdS)Nrrrr)rZr[r3rrr.r:closedrr r rtest_encodedfiles .zWithStmtTest.test_encodedfilecCs\td}td}t||j|jd }||dWdn1sN0YdS)Nrrrü) rZr[r3rr streamreader streamwriterrr.)r ryr"srwr r rtest_streamreaderwriters   z$WithStmtTest.test_streamreaderwriterN)rrrrrr r r rrsrc@seZdZddZddZdS) TypesTestc Csftjtjtjtjtjtjtjtjtj tj tj tj g }t tdrJ|tj|D]}|t|dqNdS)N mbcs_decodern)r3rA utf_8_decoderrrDrrrutf_32_ex_decodelatin_1_decode ascii_decoderhasattrrarrrE)r Zdecodersrr r rtest_decode_unicodes"  zTypesTest.test_decode_unicodecCs|tdd|tdd|tdd|tdd|ttjd|tddd|tddd |ttjd|tddd|tddd dS) Nz\u1234)uሴrvs\u1234 \U00110000z \U00110000rrrfr)z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30rf)rr3unicode_escape_decoderaw_unicode_escape_decoderrr]r r rtest_unicode_escape szTypesTest.test_unicode_escapeN)rrrrrr r r rrsrc@sLeZdZdZdZddZddZddZd d Zd d Z d dZ ddZ dS)UnicodeEscapeTestzunicode-escapeNcCs(|tdd|tdddSNrGrMrFrGr)rr3unicode_escape_encoderr]r r rrN szUnicodeEscapeTest.test_emptycCs@tj}tddD]*}|dkr||t|t|gdfqdS)N \r1)r3rr2rrrIr rCrr r rtest_raw_encode# sz!UnicodeEscapeTest.test_raw_encodecCsFtj}tdD]2}|dkr||t|gdt|ddfqdS)Nrarrm0r)r3rr2rrIrrnr r rtest_raw_decode) s z!UnicodeEscapeTest.test_raw_decodecCstj}t||}|dd|dd|dd|ddtd D]&}t|d vr@|t|d |q@td d D]}|t|d |qr|dd|dddS)N s\trgs\nris\r\s\\rz rrra€\u20ac𝄠 \U0001d120)r3rrr2rrCr rCrrr r rtest_escape_encode/ s        z$UnicodeEscapeTest.test_escape_encodec CsDtj}t||}|dd|dd|dd|dd|d d |d d |d d|dd|dd|dd|dd|dd |dd|dd|dd|dd|d d!|d"d|d#d!|d$d%|d&d'td(d)D]}t|g}|d*vrF|t&|d+|d,t|Wdn1s<0Y|d-vr|t.|d+|d,t|d.Wdq1s0Yq|t|d/d0Wdn1s0Y|t|d1d2Wdn1s0Y|t|d3d4Wdn1s60YdS)5Nrprrrz["]rsz[']rtz[\]ruz[]rvz[]rwz[ ]rxz[ ]ryz[ ]rzz[ ]r{z[ ]r|r}z[8]r~z[!]rz[!8]rz[A]rz[A0]rrrrrrrrs abfnrtuvxrlrsUNrrz\8rz\9ru\ú) r3rrr2rIrrrrrr r rtest_escape_decode> sJ                         6  @ * * z$UnicodeEscapeTest.test_escape_decodec Cstj}dD]\}}t|D]}|t|d|d||t|d|d|dd|d|d|d|}|||ddt|f|||d d t|fqq |t|d ||d dd ||d d d dS)N))xrurIUrIrlrm[\]]\rrr[�]�rrGrfr)r3rr2rrrrr r5rLr?r>rrr r rtest_decode_errorse s"     z$UnicodeEscapeTest.test_decode_errorscCs|dgddS)N \ÿ￿𐀀) rGrGrGrr r r r \rrr \ÿrrrrr \ÿ￿rrrrrrrrrrrr]r r rru szUnicodeEscapeTest.test_partial rrrr<rrNrrrrrrr r r rr s'rc@sLeZdZdZdZddZddZddZd d Zd d Z d dZ ddZ dS)RawUnicodeEscapeTestzraw-unicode-escapeNcCs(|tdd|tdddSr)rr3raw_unicode_escape_encoderr]r r rrN szRawUnicodeEscapeTest.test_emptycCs6tj}tdD]"}||t|t|gdfqdS)Nrar1)r3rr2rrrIrr r rr s z$RawUnicodeEscapeTest.test_raw_encodecCs>tj}tdD]*}||t|gdt|ddfqdS)Nrarmrr)r3rr2rrIrrnr r rr s z$RawUnicodeEscapeTest.test_raw_decodecCsZtj}t||}tdD](}|dvr|dt|dt|gq|dd|dddS) NrauUrrlrrrr)r3rrr2rrIrr r rr s   z'RawUnicodeEscapeTest.test_escape_encodecCsZtj}t||}tdD](}|dvr|dt|gdt|q|dd|dddS) Nrarrlrrrrr)r3rrr2rIr)r r5rrr r rr s   z'RawUnicodeEscapeTest.test_escape_decodec Cstj}dD]\}}t|D]}|t|d|d||t|d|d|dd|d|d|d|}|||ddt|f|||d d t|fqq |t|d ||d dd ||d d d dS)N)rrrlrmrrrrrrrrrr)r3rr2rrrrrr r rr s"     z'RawUnicodeEscapeTest.test_decode_errorscCs|dgddS)Nr)rrrrrrrrrrrrrrrrrrrrrrrr]r r rr sz!RawUnicodeEscapeTest.test_partialrr r r rr s  rc@seZdZddZdS)EscapeEncodeTestc Cs|gd}|D]F\}}|j|d"|t||Wdq 1sH0Yq |ttjd|ttjtddS)N))rFrM)foobar)rrv)s spameggs)s spam\x00eggs )sa'b)sa\'br)sb\c)sb\\cr)sc d)sc\ndr)sd e)sd\rer)sfg)sf\x7fgrr#rrH)rrr3 escape_encoderrErk)r rrroutputr r rr s  2z#EscapeEncodeTest.test_escape_encodeN)rrrrr r r rr src@s,eZdZddZddZddZddZd S) SurrogateEscapeTestcCsT|dddd|dddd|dddd|dddddS)Nfoobarrr foobarsu rr5rCr]r r r test_utf8 szSurrogateEscapeTest.test_utf8cCs,|dddd|dddddS)Nrr+rrrr]r r rr1 s zSurrogateEscapeTest.test_asciicCs,|dddd|dddddS)Nsfoobarz iso-8859-3ru foobarrr]r r r test_charmap s z SurrogateEscapeTest.test_charmapcCs|dddddS)Nurrsrr]r r r test_latin1 szSurrogateEscapeTest.test_latin1N)rrrrr1rrr r r rr s rc@seZdZddZdS)BomTestc Csd}d}|tjtj|D]~}tjtjd|d`}|||||d|| |d|d|| |dWdn1s0Ytjtjd|d\}||d| | d|d|||d|| |Wdn1s0Ytjtjd|dd}|j |d| |j d|j d|j ||d|| |Wdn1s0Ytjtjd|dP}|||| |||d|| |dWdn1s0Ytjtjd|dX}|j ||j |j |j ||d|| |dWdq1s0YqdS)NZ 1234567890)rrrrrrrrrr) rrrrr3rr*rrr.ZassertNotEqualtellr)r rrrr<ryr r r test_seek0& sJ     2   0   0   4   zBomTest.test_seek0N)rrrrr r r rr% sr) base64_codecuu_codec quopri_codec hex_codecbase64base_64uu)quopriquoted_printablequotedprintablehexrot13)rrrrrot_13 zlib_codecrOzlib bz2_codecbz2c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ e e dddZddZddZddZddZdS)TransformCodecTestc Csttd}tD]}|j|d`t||\}}||t|t||\}}||t||||Wdq1s0YqdS)Nrar) rIr2bytes_transform_encodingsrr3rrrr)r Zbinputr<or,r>r r rr} s zTransformCodecTest.test_basicsc CsntD]d}|j|dDtd|}t|t|}|}||dWdq1s^0YqdSNrr) rrr3rCrNrZr[r.rr r<sinrbZsoutr r r test_read s  zTransformCodecTest.test_readc CsntD]d}|j|dDtd|}t|t|}|}||dWdq1s^0YqdSr) rrr3rCrNrZr[r`rrr r rrp s  z TransformCodecTest.test_readlinec Csd}tD]}|j|dx|}t|}t||}t||}|||t|}t||}|||t||}|||Wdq1s0YqdS)Ns12345r)rr memoryviewr3rCrr5)r Zoriginalr<rrviewZ view_encodedZ view_decodedr r rtest_buffer_api_usage s      z(TransformCodecTest.test_buffer_api_usagec Csd}tD]}|j|dbd}||}|t|}||Wdn1sT0Y||jjWdq1s0YqdS)Nzbad input typerzM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs) rrformatrrrC assertIsNoner  __cause__)r bad_inputr<fmtmsgfailurer r r0test_text_to_binary_blacklists_binary_transforms s (zCTransformCodecTest.test_text_to_binary_blacklists_binary_transformscCs>d}|t|ddWdn1s00YdS)NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager)rrrCr rr r r.test_text_to_binary_blacklists_text_transforms szATransformCodecTest.test_text_to_binary_blacklists_text_transformsc Csd}tD]}|j|dt||}d}||}|t|||Wdn1s`0Y|t|t||Wdn1s0YWdq1s0YqdS)Ns6encode first to ensure we meet any format restrictionsrzM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs) rrr3rCr rrr5rk)r rrr<Z encoded_datar rr r r0test_binary_to_text_blacklists_binary_transforms s  (zCTransformCodecTest.test_binary_to_text_blacklists_binary_transformsc CsdtdfD]x}|j|dXd}|t|}|dWdn1sN0Y||jjWdq 1sz0Yq dS)Ns immutablesmutable)r zR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr)rkrrrr5r r r )r r rrr r r.test_binary_to_text_blacklists_text_transforms s (zATransformCodecTest.test_binary_to_text_blacklists_text_transformszRequires zlib supportcCsVd}|t|}tddWdn1s20Y||jjt|jdS)Nz(^decoding with 'zlib_codec' codec failedhellorrrr3r5r7r r ryr rrr r r!test_custom_zlib_error_is_wrapped s * z4TransformCodecTest.test_custom_zlib_error_is_wrappedcCsVd}|t|}tddWdn1s20Y||jjt|jdS)Nz'^decoding with 'hex_codec' codec failedrrrrr r r test_custom_hex_error_is_wrapped s * z3TransformCodecTest.test_custom_hex_error_is_wrappedc CsptD]b\}}t|j}|D]H}|j|d(t|}||j|Wdq 1s^0Yq qdS)N)alias)transform_aliasesitemsr3rrrr)r codec_namealiasesZ expected_namerr"r r r test_aliases s   zTransformCodecTest.test_aliasescCs4tdd}||dd}|t|d|dS)Nsspace tab eol z quopri-codecsspace=20tab=09eol=20 sspace tab eol )r3rCrr5)r rWZ unescapedr r rtest_quopri_stateless s  z(TransformCodecTest.test_quopri_statelesscCs|ttjdddS)NrFzuu-codec)rrr3r5r]r r rtest_uu_invalid sz"TransformCodecTest.test_uu_invalidN)rrrr}rrprrrrrunittest skipUnlessrrrrr r!r r r rr} s     rcCs t|Sr) _TEST_CODECSgetrr r r_get_test_codec sr') _forget_codeccCsdSrr r&r r rr( sr(c@seZdZddZddZddZejddZd d Z e fd d Z d dZ ddZ ddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%S)&ExceptionChainingTestcCs.t|tt|}t||_t|_dSr) reprr[idrnormalize_encodingrr RuntimeError obj_to_raise)r Z unique_idr r rr s  zExceptionChainingTest.setUpcCsDt|jdtj|jdzt|jWnty>Yn0dSr)r$poprr_cacher(KeyErrorr]r r rtearDown/ s  zExceptionChainingTest.tearDowncCs tj|||jd}|t|j<dS)N)r)r3rrr$)r rCr5Z codec_infor r r set_codec8 szExceptionChainingTest.set_codecccsjd||j|j|}|||}|VWdn1s<0Y||jj|||jjjdS)Nz${} with {!r} codec failed \({}: {}\)) r rrrr7r r ZassertIsNotNone __traceback__)r Z operationexc_typerZfull_msgZcaughtr r r assertWrapped= s $z#ExceptionChainingTest.assertWrappedcOs |jdSrr.)r argskwdsr r r raise_objF szExceptionChainingTest.raise_objcCs||_||j|j|d||d|jWdn1sF0Y|d||td|jWdn1s0Y|d||d|jWdn1s0Y|d||td|jWdn1s0YdS)Nr< str_inputZdecoding bytes input)r.r3r:r6rCrr3r5)r r.rr5r r r check_wrappedJ s*,*z#ExceptionChainingTest.check_wrappedcCs|tddS)NrGr=r-r]r r rtest_raise_by_typeV sz(ExceptionChainingTest.test_raise_by_typecCsd}|t||dS)NThis should be wrappedr>rr r rtest_raise_by_valueY sz)ExceptionChainingTest.test_raise_by_valuecCs*d}Gdddt}|||||dS)Nr@c@seZdZdZdS)zWExceptionChainingTest.test_raise_grandchild_subclass_exact_size..MyRuntimeErrorr N)rrr __slots__r r r rMyRuntimeError_ srCr-r=r rrCr r r)test_raise_grandchild_subclass_exact_size] sz?ExceptionChainingTest.test_raise_grandchild_subclass_exact_sizecCs*d}Gdddt}|||||dS)Nr@c@s eZdZdS)zVExceptionChainingTest.test_raise_subclass_with_weakref_support..MyRuntimeErrorN)rrrr r r rrCe srCrDrEr r r(test_raise_subclass_with_weakref_supportc sz>ExceptionChainingTest.test_raise_subclass_with_weakref_supportcsfdd}||||t|d|jWdn1sF0Y|t|td|jWdn1s0Y|t|d|jWdn1s0Y|t|td|jWdn1s0YdS)NcsdSrr r8r9r7r rr:j sz:ExceptionChainingTest.check_not_wrapped..raise_obj str inputr<)r3rr-rCrr3r5)r r.rr:r r7rcheck_not_wrappedi s  *,*z'ExceptionChainingTest.check_not_wrappedcCs Gdddt}||ddS)Nc@seZdZddZdS)zKExceptionChainingTest.test_init_override_is_not_wrapped..CustomInitcSsdSrr r]r r rr(x szTExceptionChainingTest.test_init_override_is_not_wrapped..CustomInit.__init__N)rrrr(r r r r CustomInitw srKrGr-rJ)r rKr r r!test_init_override_is_not_wrappedv sz7ExceptionChainingTest.test_init_override_is_not_wrappedcCs Gdddt}||ddS)NcseZdZfddZZS)zIExceptionChainingTest.test_new_override_is_not_wrapped..CustomNewcs t|Sr)r __new__)clsrr rrN~ szQExceptionChainingTest.test_new_override_is_not_wrapped..CustomNew.__new__)rrrrNr(r r rr CustomNew} srPrGrL)r rPr r r test_new_override_is_not_wrapped| sz6ExceptionChainingTest.test_new_override_is_not_wrappedcCs(d}t|}d|_||d|dS)NzThis should NOT be wrappedr1z^{}$)r-attrrJr )r rrr r r&test_instance_attribute_is_not_wrapped sz.encode_to_strc_sdS)N)not str!rr rHr r rdecode_to_bytes szUExceptionChainingTest.test_unflagged_non_text_codec_handling..decode_to_bytesrYr[zd^{!r} encoder returned 'str' instead of 'bytes'; use codecs.encode\(\) to encode to arbitrary types$r;zd^{!r} decoder returned 'bytes' instead of 'str'; use codecs.decode\(\) to decode to arbitrary types$r<) r3r3rCrrr5r rrE)r rZr\rWdecodedr rr r r&test_unflagged_non_text_codec_handling s    * z}t|r\|t |d d d |q2tjr2t d|q2|t dd ddS)Nrgi,i-i.i1i3i5iirrrr!z skipping cp=rP)u r) rverboserstdoutr*r2r#rr3rfprintrr r rtest_code_page_decode_flagsD s  z(CodePageTest.test_code_page_decode_flagscCsttdddd}||dtdddd}||dtdddd}||d tdd dd}||d dS) NrirFrs)rrs)u騾騾rIrr)r3rfr)r r]r r rtest_incrementalW s"   zCodePageTest.test_incrementalcCsJtjddd(td}||jdWdn1s<0YdS)Nz_winapi.GetACPr)Z return_valueZcp123rn)rr r3rrr)r codecr r rtest_mbcs_aliasj s zCodePageTest.test_mbcs_aliaslF)r,Zmemusedry_runcCsd|ddd}|t||dtd|dd}||dt|~|t|d |d||d dd d ||d d dd dS)Ns01234567rr1s rrirTrrfZ 0123456701iu(6701234567rrr3rfr r,rWr]r r rtest_large_inputq szCodePageTest.test_large_inputrvcCsd|d}|t||ddtd|dd}||dt|~|t|d|||dddd ||dd dd dS) Ns 0123456턀rrfrcrTr1ru 0123456턀01iu56턀0123456턀rrr r rtest_large_utf8_input s z"CodePageTest.test_large_utf8_inputN)rrrrkrhrlrorqryrrrrrrrZ bigmemtestrrr r r rrb s ! rbc@s4eZdZddZddZddZddZd d Zd S) ASCIITestcCs|ddddS)Nrpr+sabc123rr]r r rr szASCIITest.test_encodec CsXdD]N\}}}|j|||d$||d||Wdq1sH0YqdS)N)) [€ÿ€]rrq)rrs[???])rrs[€ÿ€])u [€ÿ€򫳞]rs[\x80\xff\u20ac\U000abcde]rrrrr+rrrCrr r rtest_encode_error szASCIITest.test_encode_errorcCs:|tdddWdn1s,0YdS)Nuÿr+rrrrCr]r r r!test_encode_surrogateescape_error s z+ASCIITest.test_encode_surrogateescape_errorcCs|ddddS)Nrr+r)rr5r]r r rr szASCIITest.test_decodec CsXdD]N\}}}|j|||d$||d||Wdq1sH0YqdS)Nrrr+rBrr r rr  szASCIITest.test_decode_errorN)rrrrrrrr r r r rr s rc@s,eZdZddZddZddZddZd S) Latin1Testc CsRdD]H\}}|j||d"||d|Wdq1sB0YqdS)N))rr)u€éÿsrrrlatin1rr rrrr r rr s zLatin1Test.test_encodec CsXdD]N\}}}|j|||d$||d||Wdq1sH0YqdS)N))[€]rrq)rrs[??])u [€򫳞]rs[\u20ac\U000abcde])rrs[€�]rrrrrr r rtest_encode_errors szLatin1Test.test_encode_errorscCs:|tdddWdn1s,0YdS)Nu€rrrr]r r rr s z,Latin1Test.test_encode_surrogateescape_errorc CsRdD]H\}}|j||d"||d|Wdq1sB0YqdS)N))rr)ru[€ÿ]rrrBrr r rr s zLatin1Test.test_decodeN)rrrrrrrr r r rr src@s,eZdZddZddZddZddZd S) StreamRecoderTestcCsRt}td}t||j|jtjj tjj }| ddg| | ddS)Nr+rdbsab)rZr[r3rrrCr5rr+rr writelinesrr)r biorsrr r rtest_writelines s  z!StreamRecoderTest.test_writelinescCs^t}td}t||j|jtjj tjj }d}| |d| | |ddS)Nruàñér)rZr[r3rrrCr5rrmrrr*rr)r rrrrpr r r test_write s  zStreamRecoderTest.test_writecCs|tdd}t|dd}||d|d||d||d||d||ddS) Nzline1 line2 line3 rrsline1 rsline2 sline3 rF)rZr[rCr3rrr`rr rrr r rtest_seeking_read s z#StreamRecoderTest.test_seeking_readcCstdd}t|dd}|d|d||d|d||d||d ||ddS) Nz 123456789 rrrs abc s789 rs1 sabc ) rZr[rCr3rrr*rr`rr r rtest_seeking_write s   z$StreamRecoderTest.test_seeking_writeN)rrrrrrrr r r rr s  rzneed _testcapi modulec@seZdZdZeZdZdZdZ dddZ dd Z d d Z d d Z ddZddZd ddZddZddZddZddZddZdS)!LocaleCodecTestzD Test indirectly _Py_DecodeUTF8Ex() and _Py_EncodeUTF8Ex(). )r+u ulatin1:§éuu255:ÿu UCS:é€􏿿usurrogates:)s blatin1:sb255:urcCst|d|Sr+)rZEncodeLocaleEx)r rprr r rrC szLocaleCodecTest.encodec Cs|jD]}|j|dz||j|}Wn^ty|t}|||Wdn1sd0Yt|j}| |dYn0|||}| ||Wdq1s0YqdS)N)rpz!encode error: pos=[0-9]+, reason=) STRINGSrrCENCODINGrrr-r[r Z assertRegexr)r rrprrerrmsgrWr r rcheck_encode_strings s   *  z$LocaleCodecTest.check_encode_stringscCs|ddSNrrr]r r rtest_encode_strict* sz"LocaleCodecTest.test_encode_strictcCs|ddSNrrr]r r rtest_encode_surrogateescape- sz+LocaleCodecTest.test_encode_surrogateescapec Csfz|ddWnFtyV}z.t|dkr@||jdnWYd}~n d}~00|ddS)NrGrunsupported error handlerz4 encoder doesn't support surrogatepass error handler)rCrr[rrrr rr r rtest_encode_surrogatepass0 s z)LocaleCodecTest.test_encode_surrogatepasscCsL|t}|ddWdn1s,0Y|t|jddS)NrGrr)rrrCrr[r r rr r r%test_encode_unsupported_error_handler< s *z5LocaleCodecTest.test_encode_unsupported_error_handlercCst|d|Sr+)rZDecodeLocaleEx)r rWrr r rr5A szLocaleCodecTest.decodec Cs\|jdk}|rd}nd}t|j}|jD]d}z$||j|}||vrN||Wntyfd}Yn0|r(||jd}||kr(||q(|D]}|j|dz||j|}Wnft y| t } |||Wdn1s0Yt | j } || d| Yn0|||} || |Wdq1sL0YqdS)Nrrrr)rWzdecode error: )rrc BYTES_STRINGSrrCrarrr5rrr-r[r r: startswithr) r rZis_utf8Z encode_errorsstringsrprWZencoded2rrrr]r r rcheck_decode_stringsD s6       *  z$LocaleCodecTest.check_decode_stringscCs|ddSrrr]r r rtest_decode_strictf sz"LocaleCodecTest.test_decode_strictcCs|ddSrrr]r r rtest_decode_surrogateescapei sz+LocaleCodecTest.test_decode_surrogateescapec Csfz|ddWnFtyV}z.t|dkr@||jdnWYd}~n d}~00|ddS)NrFrrz4 decoder doesn't support surrogatepass error handler)r5rr[rrrrr r rtest_decode_surrogatepassl s z)LocaleCodecTest.test_decode_surrogatepasscCsL|t}|ddWdn1s,0Y|t|jddS)NrFrr)rrr5rr[r rr r r%test_decode_unsupported_error_handlerx s *z5LocaleCodecTest.test_decode_unsupported_error_handlerN)r)r)rrrr/rgetfilesystemencodingrrrZ SURROGATESrCrrrrrr5rrrrrr r r rr s"   " rc@s0eZdZdZddZddZddZdd Zd S) Rot13Testz"Test the educational ROT-13 codec.cCstdd}||ddS)NzCaesar liked ciphersrot-13zPnrfne yvxrq pvcuref)r3rCr)r ciphertextr r rr s zRot13Test.test_encodecCstdd}||ddS)Nz Rg gh, Oehgr?rz Et tu, Brute?)r3r5r)r plaintextr r rr s zRot13Test.test_decodecCs&td}|d}||ddS)NrzABBA nag Cheryl BakerzNOON ant Purely Onxre)r3rBrCr)r rrr r rr s  z!Rot13Test.test_incremental_encodecCs&td}|d}||ddS)Nrzterra Ares envy thazgreen Nerf rail gun)r3r4r5r)r rrr r rr s  z!Rot13Test.test_incremental_decodeN)rrrr/rrrrr r r rr~ s rc@seZdZdZddZdS) Rot13UtilTestzTest the ROT-13 codec via rot13 function, i.e. the user has done something like: $ echo "Hello World" | python -m encodings.rot_13 cCsBtd}t}tj|||d|}||ddS)Nz)Gb or, be abg gb or, gung vf gur dhrfgvbarz)To be, or not to be, that is the question)rZrdrrrrr.r)r ZinfileZoutfileZ plain_textr r rtest_rot13_func s  zRot13UtilTest.test_rot13_funcN)rrrr/rr r r rr sr__main__)Sr3r_rZrrr"rrtestrr ImportErrorr ZSIZEOF_WCHAR_TZsizeofZc_wcharrr#r r$r0rEZTestCaserrrrrrrr)rCrGrQrirr>rrr*rrrrrr rrvrrarxrorrrrrrrrrrrrrr$r'r_codecsr(r)r#platformrbrrrZskipIfrrrrmainr r r rs         "V`..V,,^V>g!Wu  h    y)S"9        # W'%.q