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&eZdZddZddZd ddZdS) QueuecCs ||_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)rrrr(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)Nr0T)r1rr2getincrementalencoderencoder5r8rr:r r rcheck_state_handling_encode_s   z3MixInCheckStateHandling.check_state_handling_encodeN)rrrr@rCr r r rr/Hsr/c@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 rEz*ReadTest.check_partial..)r$r2 getreaderr;ziprBr*rHr.r bytebufferr3r4r'resetjoin iterdecode) r rZpartialresultsqrresultrKZ 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|SrioBytesIOrBr;r2rM)rstreamr r rrMsz)ReadTest.test_readline..getreaderTcs6|}g}|j||d}|s q,||q d|S)N)r,keepends|)readlineappendrQ)rr]r,readerlinesline)rMr r readallliness z,ReadTest.test_readline..readalllinesufoo bar baz spam
eggsufoo |bar |baz |spam
|eggszfoo|bar|baz|spam|eggsF )   u
uあrFr^Pazxxx r]xxx)TN)r enumerater`rQr1r_) r rdr-Z sexpectedZsexpectednoendsZlineendsZvwZvwor=Zlineendr,rar )rMr 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.rFcs"tj}tj|SrrX)r[datar r rrMsz8ReadTest.test_mixed_readline_and_read..getreaderrr0d()r,r)j)rQrr_r.r readlines)r rbrMfr rprtest_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<% rgzimport logging z+log=logging.getLogger("Snakelets.logger") rgrgzuser=self.SessionCtx.user z-storageEngine=self.SessionCtx.storageEngine rgrgz-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") rgzshowdate=None rgzarg=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)) rzzelse: 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 rF) rYrZrQrBr;r2rMrnr)r r-r[rar=rcr 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)NrEzfoo Frlfooz bar rFZbarZbazTrfzbar zfoo )r$r2 getwriterr;rMr*rr_)r rSwriterrar 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. rFrBr;rYrZr2rMrr_)r s1s2s3r-r[rar 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. rFr) r rrrZs4Zs5r-r[rar 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[??]rF))𐿿A)[])rr surrogatepasscss|]}d|VqdS)\x%02xNr )rJbr r r sz0ReadTest.test_lone_surrogates..) assertRaisesUnicodeEncodeErrorrBr;rrill_formed_sequenceUnicodeDecodeErrorr4ill_formed_sequence_replacerQ) 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)Nurr0rFTu)rBr;r1rr2r3rr4)r rqr=decr r rtest_incremental_surrogatepasssz'ReadTest.test_incremental_surrogatepassN) rrrrWroryr{rrrrrrr r r rrDjs+;0E ,rDc@sdeZdZdZejdkrdZndZdZdZddZ d d Z d d Z d dZ ddZ ddZddZdS) UTF32Testutf-32little܀s$spamspams$spamspamcCst|j\}}}}t}||}|d|d|}|||jkpV||j kt|}||}| | ddSNspamspamspam r2lookupr;rYrZr*getvaluer9spamlespamberr.r _rar~r-rxr>r r rtest_only_one_boms   zUTF32Test.test_only_one_bomcCsTtd}t|j|}|t|jtd}t|j|}|t|jdS)NsrYrZr2rMr;r UnicodeErrorr.r r-rxr r r test_badboms   zUTF32Test.test_badbomcCs|dgddS)N ÿĀ￿𐀀)rFrFrFrFrFrFrFrrrÿrrrÿĀrrrÿĀ￿rrrrrWr\r r r test_partialszUTF32Test.test_partialcCs0|dtddd|dtddddSN)rr0rT)rFr0rrr2 utf_32_decoder\r r r test_handlerss   zUTF32Test.test_handlerscCs|ttjddddSNstrictT)rrr2rr\r r r test_errors s zUTF32Test.test_errorscCs(||jd|j||jd|jdSNrr@r;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)rFrFrFrrrrrrrrrrrrrrrrrrr\r r rr"szUTF32LETest.test_partialcCs|d|jddS)N𐈃srrBr;r\r r r test_simple=szUTF32LETest.test_simplecCs|ttjddddSr)rrr2utf_32_le_decoder\r r rr@s zUTF32LETest.test_errorscCsd}|dt|ddS)Nsrr)rr2rr rVr 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)rrr2utf_32_be_decoder\r r rrns zUTF32BETest.test_errorscCsd}|dt|ddS)Nsrr)rr2rrr 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)rFrFrFrrrrrrrrrrrrr\r r rrszUTF16Test.test_partialcCs0|dtddd|dtddddSr)rr2 utf_16_decoder\r r rrs   zUTF16Test.test_handlerscCs|ttjddddSr)rrr2rr\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 wbrFUr;) rBr; addCleanuprunlinkTESTFNopenr*Zcheck_warningsDeprecationWarningr2rr.)r rr-fprar r rtest_bug691291s (2zUTF16Test.test_bug691291N)rrrr;rrrrrrrrrrrrr r r rrzs  rc@s,eZdZdZdZddZddZddZd S) UTF16LETest utf-16-lercCs|dgddSNr) rFrrrrrrrrrrrrr\r r rrszUTF16LETest.test_partialcCsBgd}|D]0\}}|ttj|dd||dd|q dS)N)rr)sAZA�)s ABCDZABCD�)sr)sAr)sA�A)sArrTzutf-16ler)rrr2utf_16_le_decoderr4r testsrawexpectedr r rrs   zUTF16LETest.test_errorscCs,|d|jd|d|jddS)NrsީrrBr;r4r\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)rrr2utf_16_be_decoderr4rr 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 ���rEcCs|dgddS)Nÿ߿ࠀ￿𐀀)rrrrÿ߿rrÿ߿ࠀrr ÿ߿ࠀ￿rrrrrr\r r rr.szUTF8Test.test_partialcCs d}||j|||jdS)Nu€ÿĀ߿ࠀ￿􏿿)r@r;rB)r r<r r rrDs zUTF8Test.test_decoder_statec CsZdD]P\}}}|j|||d&|||j||Wdq1sJ0YqdS)N)[]rr)rru[��])rsurrogateescape[])rrz [\x80\xff]rq error_handlerr)subTestrr4r;r rqrrr r rtest_decode_errorIszUTF8Test.test_decode_errorcst|d|jd|jd|t}d|jdWdn1sT0Y|j}||j |j |j ddS)Nrrs[]u []u) superrrrBr;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) rrBr;r r4r9r2 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)sssssssrq) r`extendrr2r3r;rrr4)r Zcasesprefixsuffixrqrr r rtest_incremental_errorsts z UTF8Test.test_incremental_errors)rrrr;rrr rrrrrr& __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 rF+sX+AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-) rrBr;r4rQsortedsetrHr1)r Zset_dZset_owsZ other_asciir r r test_asciis"zUTF7Test.test_asciicCs|dgddS)Na+-bc€dĀe𐀀f) rkrka+za+-a+-br3r3r3r3za+-ba+-bcr4r4r4r4ua+-bc€ a+-bc€dr5r5r5r5u a+-bc€dĀ a+-bc€dĀer6r6r6r6r6r6r6ua+-bc€dĀe𐀀r1rr\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-br7)sa+IK,br7)sa+IKxa€�)sa+IKx-ba€�b)sa+IKwgrr9)s a+IKwgr-br:)sa+IKwgr,r9)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+@br7rrTr)r)rrrr2 utf_7_decoderr4rr 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+2AEbr7)sa+2AEr8)sa+2AEA-br7)sa+2AH-br7)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)rrrr4rr r rrs zUTF7Test.test_lone_surrogatesN) rrrr;r0rrrrr r r rr(s 'r(c@seZdZddZddZdS) UTF16ExTestcCs|ttjdddddS)NrrrT)rrr2utf_16_ex_decoder\r r rrszUTF16ExTest.test_errorscCs|ttjdSr)r TypeErrorr2rCr\r r r test_bad_argsszUTF16ExTest.test_bad_argsN)rrrrrEr r r rrB srBc@s$eZdZddZddZddZdS)ReadBufferTestcCs&ddl}|t|ddddS)Nrrspam)rG)arrayrr2readbuffer_encode)r rIr r r test_arrays zReadBufferTest.test_arraycCs|tdddS)NrFrEr)rr2rJr\r r r test_emptyszReadBufferTest.test_emptycCs"|ttj|ttjddSN*)rrDr2rJr\r r rrE szReadBufferTest.test_bad_argsN)rrrrKrMrEr r r rrFsrFc@s>eZdZdZejZddZddZddZ dd Z d d Z d S) UTF8SigTest utf-8-sigcCs|dgddS)Nÿ߿ࠀ￿𐀀)rFrFrFrFrFurSÿrTÿ߿rUrU ÿ߿ࠀrVrVÿ߿ࠀ￿rWrWrWrRrr\r r rr(szUTF8SigTest.test_partialcCs|tddddS)NrQrFrstrr\r r rtest_bug1601501DszUTF8SigTest.test_bug1601501cCs,td}d}|||d|dS)NrQr)r2r3rr4rB)r r>r-r r rtest_bomHs zUTF8SigTest.test_bomc Csd}tjd}td}dgttddgdD]\}|t|}t}|durb||}n|}|spq|| |qN| }| ||q4dSNu ABC¡∀XYZs ABC¡∀XYZrQr0 )@r+ii) r2BOM_UTF8rMlistr1rYrZStringIOr.r*rr r Z unistringZ bytestringrasizehintZistreamZostreamrqZgotr r rtest_stream_bomMs     zUTF8SigTest.test_stream_bomc Csd}d}td}dgttddgdD]\}|t|}t}|dur\||}n|}|sjqv||qH| }| ||q.dSr]) r2rMrbr1rYrZrcr.r*rrrdr r rtest_stream_barecs    zUTF8SigTest.test_stream_bareN) rrrr;r2rar rr[r\rfrgr r r rrP$srPc@s,eZdZddZddZddZddZd S) EscapeDecodeTestcCs*|tdd|ttddS)NrErL)rr2 escape_decode bytearrayr\r r rrM{szEscapeDecodeTest.test_emptycCsFtj}tdD]2}t|g}|dkr|||d|ddfqdS)Nr`\0r)r2rir1rHrr r4rr 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{sabfnrtvxrk\8\9\)r2rirr1rH assertWarnsrupperr r4rr=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)rprur)[?]?rus\x0s[\x0]s[\x0]\x0)rp)rr)r2rir ValueErrorr)r r4r r rrszEscapeDecodeTest.test_errorsN)rrrrMrnrrr r r rrhzs%rh))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_testcasesrrZrBlowerr Zunipunyr r r test_encode%s   zPunycodeTest.test_encodecCsFtD]<\}}|||d|dd}|||dqdSr)rrr4rBrr 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 Exceptionrr4r)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​rE)s r)r)s…N)s᠎N)rXrE)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: %sr0) Zencodings.idnarrnnameprep_testsrZrrrrrZ 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.rYr\r r rtest_builtin_decodesz!IDNACodecTest.test_builtin_decodecCsL|ddd|ddd|ddd|ddd dS) NrrrrrrrrrrrBr\r r rtest_builtin_encodesz!IDNACodecTest.test_builtin_encodecCs2tdtd}|d||ddS)NrabcrF)r2rMrYrZr.r)r rTr r r test_streams zIDNACodecTest.test_streamcCs<|dtdddDdd|dtdddDdd |dtd dd Ddd |dtd dd Ddd td}||dd||dd||dd||ddd|||dd||dd||dd||ddddS)NrFcss|]}t|gVqdSrrGrIr r rrrEz8IDNACodecTest.test_incremental_decode..rrrcss|]}t|gVqdSrrGrIr r rr rErrcss|]}t|gVqdSrrGrIr r rrrErrcss|]}t|gVqdSrrGrIr r rrrEsxn--xams ple-9ta.ou äxample.srgrETZorgsrg.zorg.)rrQr2rRr3r4rP)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)NrErrrrrrruäxz ample.orgsxn--xample-9ta.rFTsorgz ample.org.sxn--xample-9ta.org.)rrQr2 iterencoderArBrP)r encoderr r rtest_incremental_encode"s0 z%IDNACodecTest.test_incremental_encodecCsJdddddddD](}|tdjd||tdjd|qdS)Nrrrr)rrrr)rBr4rrr 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)rr2r4rrDrr\r r rrKszCodecsModuleTest.test_decodecCs|tddd|ttj|ttjdd|tdd|ttjdd |tjddd d|tjd d d d ddS)Nrrrr|__spam__rruÿffr*r[ÿ]rrrp)rr2rBrrD LookupErrorrr\r r rrXszCodecsModuleTest.test_encodecCs"|ttj|ttjddSrN)rrDr2registerr\r r r test_registerfszCodecsModuleTest.test_registercCs2|ttj|ttjd|ttjddS)Nr )rrDr2rrr\r r r test_lookupjszCodecsModuleTest.test_lookupcCs"|ttj|ttjddSNr)rrDr2 getencoderrr\r r rtest_getencoderosz CodecsModuleTest.test_getencodercCs"|ttj|ttjddSr)rrDr2 getdecoderrr\r r rtest_getdecoderssz CodecsModuleTest.test_getdecodercCs"|ttj|ttjddSr)rrDr2rMrr\r r rtest_getreaderwszCodecsModuleTest.test_getreadercCs"|ttj|ttjddSr)rrDr2r}rr\r r rtest_getwriter{szCodecsModuleTest.test_getwritercCslttj}|tjtj|zttjdWntjyN|dYn0td}||j ddS)Ntr_TRztest needs Turkish localeASCIIr*) locale setlocaleLC_CTYPErErrorskipTestr2rrname)r Z oldlocalerKr r rtest_lookup_issue1813s  z&CodecsModuleTest.test_lookup_issue1813cCs,d}||tjtjD]}tt|qdS)N),rBr4r CodecInfoCodecIncrementalEncoderIncrementalDecoder StreamReader StreamWriterrrrrAr3rMr}register_errorr strict_errorsreplace_errors ignore_errorsxmlcharrefreplace_errorsbackslashreplace_errorsnamereplace_errorsr EncodedFilerrRr BOM_BEBOM_LEra BOM_UTF16 BOM_UTF16_BE BOM_UTF16_LE BOM_UTF32 BOM_UTF32_BE BOM_UTF32_LEBOM32_BEBOM32_LEBOM64_BEBOM64_LEStreamReaderWriter StreamRecoder)ZassertCountEqualr2__all__getattr)r Zapir r rtest_alls zCodecsModuleTest.test_allc Cs|tjtjdD]l}||Nttj|d}||tjWdn1sX0YWdq1sv0YqdS)N)wrTzr+w+rkr2r*) rrrrrr2rr6r)r modefiler r r test_opens zCodecsModuleTest.test_opencCs~|ttjdd|ttjdd|ttjdd|ttjdddD],}|ttjdd||ttjdd|qLdS)NrZ undefinedrrFrE)rrrr)rrr2rBr4rr r rtest_undefineds  zCodecsModuleTest.test_undefinedc Cs~t}td|V}|t ttjddWdn1sF0Y|j Wdn1sp0YdS)Nz builtins.openZwtzinvalid-encoding) r mock_openpatchrrr2rrrcloseZ 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한 글)r2rMrarYrZr[r\r r rsetUps zStreamReaderTest.setUpcCs$||j}||ddgdS)Nu한 u글)rar[rrw)r rxr r rtest_readliness zStreamReaderTest.test_readlinesN)rrrr rr r r rr sr c@seZdZddZdS)EncodedFileTestcCs\td}t|dd}||dt}t|dd}|d||ddS)Nr rrs\ rü)rYrZr2rrr.r*rr rxZefr 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=%rrErFTrrmrc3s|]}|VqdSrrBrI)rr rrrEz/BasicUnicodeTest.test_basics..c3s|]}t|gVqdSrr4rHrI)rr rrs)all_unicode_encodingsr2rrendswithrrrrrbroken_unicode_with_statefulr$r}r*r.r9typerHrMrArrBr3r4rQrRr)r r-r;rrr,r)rSr~ encodedresultrKchunkra decodedresultrUr )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) NrorErFTrqrrrc3s|]}|VqdSrrsrI)cencoderr rrrEz4BasicUnicodeTest.test_basics_capi..c3s|]}t|gVqdSrrtrI)cdecoderr rrs) rurw _testcapiZcodec_incrementalencoderrrBZcodec_incrementaldecoderr4rHrrQ)r r-r;ryrKr{r )r~r}rtest_basics_capis@     z!BasicUnicodeTest.test_basics_capicCsrdd}tD]`}|dkrq |tvr$q t|t||}tdD]$}|dd| }| ||qFq dS)Nz%s %s )AXabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123AXdef456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456rrtr) rurwr2rMrYrZrBr1seekr.r)r r-r;ratrqr r r test_seeks  zBasicUnicodeTest.test_seekcCs:tD]0}t|}|t||dvr|t|dqdS)N)rrrO)rur2rrrD)r r;rr r rtest_bad_decode_argss   z%BasicUnicodeTest.test_bad_decode_argscCs$tD]}t|}|t|qdSr)rur2rrrD)r r;rr r rtest_bad_encode_argss z%BasicUnicodeTest.test_bad_encode_argscCs&ddlm}t|j}|||dS)Nr)r) encodingsrrxZencoding_tabler)r rZ table_typer r r"test_encoding_map_type_initializeds  z3BasicUnicodeTest.test_encoding_map_type_initializedcCsBd}tD]4}|tvr||||||||||qdS)Nro)rurwr@rBrC)r r<r;r r rrs z#BasicUnicodeTest.test_decoder_stateN) rrrr|rZ cpython_onlyrrrrrrr r r rrnLsM %rnc@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\x02rrrrr`rF)rr2charmap_decoderrrHr1rr 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)NrrrkrrKrr0rrZAaZBbZCc)ZAaBbCcr􏿿rrFrrr0u￾rrrrrr`z.character mapping must be in range\(0x110000\)riɚ;) rr2rrrrHr1rassertRaisesRegexrDrr 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)NrkrrKrrrrirZbcrr0rirrrrrr) ordrr2rr maxunicodechrrrDr)r rkrrKr 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)rYrZr2rrr.r9closedrr r rtest_encodedfiles .zWithStmtTest.test_encodedfilecCs\td}td}t||j|jd }||dWdn1sN0YdS)Nrrrü) rYrZr2rr streamreader streamwriterrr.)r rxr"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_decoderm)r2r@ utf_8_decoderrrCrrrutf_32_ex_decodelatin_1_decode ascii_decoderhasattrr`rrrD)r Zdecodersrr r rtest_decode_unicodes"  zTypesTest.test_decode_unicodecCs|tdd|tdd|tdd|tdd|ttjd|tddd|tddd |ttjd|tddd|tddd dS) Nz\u1234)uሴrus\u1234 \U00110000z \U00110000rrrer)z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30re)rr2unicode_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|tdddSNrFrLrErFr)rr2unicode_escape_encoderr\r r rrM szUnicodeEscapeTest.test_emptycCs@tj}tddD]*}|dkr||t|t|gdfqdS)N \r0)r2rr1rrrHr rBrr r rtest_raw_encode# sz!UnicodeEscapeTest.test_raw_encodecCsFtj}tdD]2}|dkr||t|gdt|ddfqdS)Nr`rrl0r)r2rr1rrHrrmr 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\trfs\nrhs\r\s\\rz rrr`€\u20ac𝄠 \U0001d120)r2rrr1rrBr rBrrr 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)5Nrorrqz["]rrz[']rsz[\]rtz[]ruz[]rvz[ ]rwz[ ]rxz[ ]ryz[ ]rzz[ ]r{r|z[8]r}z[!]r~z[!8]rz[A]rz[A0]rrrrrrrrs abfnrtuvxrkrsUNrrz\8rz\9ru\ú) r2rrr1rHrrrrrr 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))xrurHUrHrkrl[\]]\rrr[�]�rrFrer)r2rr1rrrrr r4rKr>r=rqr r rtest_decode_errorse s"     z$UnicodeEscapeTest.test_decode_errorscCs|dgddS)N \ÿ￿𐀀) rFrFrFrr r r r \rrr \ÿrrrrr \ÿ￿rrrrrrrrrrrr\r r rru szUnicodeEscapeTest.test_partial rrrr;rrMrrrrrrr r r rr s'rc@sLeZdZdZdZddZddZddZd d Zd d Z d dZ ddZ dS)RawUnicodeEscapeTestzraw-unicode-escapeNcCs(|tdd|tdddSr)rr2raw_unicode_escape_encoderr\r r rrM szRawUnicodeEscapeTest.test_emptycCs6tj}tdD]"}||t|t|gdfqdS)Nr`r0)r2rr1rrrHrr r rr s z$RawUnicodeEscapeTest.test_raw_encodecCs>tj}tdD]*}||t|gdt|ddfqdS)Nr`rlrr)r2rr1rrHrrmr r rr s z$RawUnicodeEscapeTest.test_raw_decodecCsZtj}t||}tdD](}|dvr|dt|dt|gq|dd|dddS) Nr`uUrrkrrrr)r2rrr1rrHrr r rr s   z'RawUnicodeEscapeTest.test_escape_encodecCsZtj}t||}tdD](}|dvr|dt|gdt|q|dd|dddS) Nr`rrkrrrrr)r2rrr1rHr)r r4rrr 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)rrrkrlrrrrrrrrrr)r2rr1rrrrrr 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))rErL)foobar)rru)s spameggs)s spam\x00eggs )sa'b)sa\'br)sb\c)sb\\cr)sc d)sc\ndr)sd e)sd\rer)sfg)sf\x7fgrr"rrG)rrr2 escape_encoderrDrj)r rrqoutputr r rr s  2z#EscapeEncodeTest.test_escape_encodeN)rrrrr r r rr src@s,eZdZddZddZddZddZd S) SurrogateEscapeTestcCsT|dddd|dddd|dddd|dddddS)Nfoobarrr foobarsu rr4rBr\r r r test_utf8 szSurrogateEscapeTest.test_utf8cCs,|dddd|dddddS)Nrr*rrrr\r r rr0 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)rrrrr0rrr 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) rrrrr2rr*rrr.ZassertNotEqualtellr~)r rqrr;rxr 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_codecrNzlib bz2_codecbz2c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ e e dddZddZddZddZddZdS)TransformCodecTestc Csttd}tD]}|j|d`t||\}}||t|t||\}}||t||||Wdq1s0YqdS)Nr`r) rHr1bytes_transform_encodingsrr2rrrr)r Zbinputr;or,r=r r rr| s zTransformCodecTest.test_basicsc CsntD]d}|j|dDtd|}t|t|}|}||dWdq1s^0YqdSNrr) rrr2rBrMrYrZr.rr r;sinraZsoutr r r test_read s  zTransformCodecTest.test_readc CsntD]d}|j|dDtd|}t|t|}|}||dWdq1s^0YqdSr) rrr2rBrMrYrZr_rrr r rro s  z TransformCodecTest.test_readlinec Csd}tD]}|j|dx|}t|}t||}t||}|||t|}t||}|||t||}|||Wdq1s0YqdS)Ns12345r)rr memoryviewr2rBrr4)r Zoriginalr;rqviewZ 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) rrformatrrrB 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)rrrBr r r 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) rrr2rBrrrr4rj)r rqr;Z encoded_datar r r 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)rjrrrr4r r r )r r r rr 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 failedhellorrrr2r4r6r r rxr r rr 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_aliasesitemsr2rrrr)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 )r2rBrr4)r rVZ unescapedr r rtest_quopri_stateless s  z(TransformCodecTest.test_quopri_statelesscCs|ttjdddS)NrEzuu-codec)rrr2r4r\r r rtest_uu_invalid sz"TransformCodecTest.test_uu_invalidN)rrrr|rrorrrrrunittest skipUnlessrrrrrr 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) reprrZidrnormalize_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)r2rrr#)r rBr4Z codec_infor r r set_codec8 szExceptionChainingTest.set_codecccsjd||j|j|}|||}|VWdn1s<0Y||jj|||jjjdS)Nz${} with {!r} codec failed \({}: {}\)) rrrrr6r r ZassertIsNotNone __traceback__)r Z operationexc_typer Zfull_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-r2r9r5rBrr2r4)r r-r r4r r r check_wrappedJ s*,*z#ExceptionChainingTest.check_wrappedcCs|tddS)NrFr<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_ srBr,r<r r rBr 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 rrBe srBrCrDr 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 r7r8r6r rr9j sz:ExceptionChainingTest.check_not_wrapped..raise_obj str inputr;)r2rr,rBrr2r4)r r-r r9r r6rcheck_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 srJrFr,rI)r rJr 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 rrM~ szQExceptionChainingTest.test_new_override_is_not_wrapped..CustomNew.__new__)rrrrMr'r r rr CustomNew} srOrFrK)r rOr r r test_new_override_is_not_wrapped| sz6ExceptionChainingTest.test_new_override_is_not_wrappedcCs(d}t|}d|_||d|dS)NzThis should NOT be wrappedr0z^{}$)r,attrrIr)r r rr r r&test_instance_attribute_is_not_wrapped sz.encode_to_strc_sdS)N)not str!rr rGr r rdecode_to_bytes szUExceptionChainingTest.test_unflagged_non_text_codec_handling..decode_to_bytesrXrZzd^{!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;) r2r2rBrrr4rrrD)r rYr[rVdecodedr r r r r&test_unflagged_non_text_codec_handling s    * zr@rErFrIrLrPrRrUrVrWr]r r r rr( s&     r(win32z"code pages are specific to Windowsc@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZejddddddZejdddddd Zd!S)" CodePageTestcCsL|ttjdd|ttjdd|ttjdd|ttjdddS)Nrrkar)rrr2code_page_encodecode_page_decodeOSErrorr\r r rtest_invalid_code_page sz#CodePageTest.test_invalid_code_pagec CsJ|tdtjdd|tdtjdddd|tdtj|jddddS) Nr5ÿsrTCP_UTF8r)rrr2rdrrerjr\r r rtest_code_page_name s z CodePageTest.test_code_page_namec Cs|D]\}}}|durzt|||d}Wn:tyd}z"|d||||fWYd}~n d}~00||d|d||||d|f||dd||dt|q|ttj|||dqdS)NTz2Unable to decode %a from "cp%s" with errors=%r: %srz%a.decode("cp%s", %r)=%a != %ar0) r2rerfailrZassertGreaterEqualZassertLessEqualrr)r r!rrrrr\errr r r check_decode s$   zCodePageTest.check_decodec Cs|D]\}}}|durzt|||}Wn:tyb}z"|d||||fWYd}~n d}~00||d|d||||d|f||dt|q|ttj|||qdS)Nz0Unable to encode %a to "cp%s" with errors=%r: %srz%a.encode("cp%s", %r)=%a != %ar0)r2rdrrlrrr)r r!rtextrrrVrmr r r check_encode s"   zCodePageTest.check_encodecCs|dd|dddS)Nrh) rrr)d騾r)rirN)rrrp)rrs[y])u[€]rs[?])rrs[\xff])rrs)[\N{LATIN SMALL LETTER Y WITH DIAERESIS}])rrs[ÿ])urN)[]rr)rtrN) rrr)rsrrr)rrN)rrr)rru[�])rrz[\xff])rrrt)rrN)abcrN)rvrzabc)rvru�abc)rvrz\x81abcrprnr\r r r test_cp932 s zCodePageTest.test_cp932cCs|dd|dddS)Ni)rq)é€r)rirr)ŁrN)r{rrE)r{rL)r)r}rN)ru)rzrry)rrrirwr\r r r test_cp1252 s zCodePageTest.test_cp1252cCs d}||d||ddS)N)rq)ryr+AOkgrA-)rr+2//f/w-)rr+3IA-)rr+//0-)ru)rrry)rrr)rrr)rrr)s[+/]rr)rrrrwr r!r r r test_cp_utf7" s zCodePageTest.test_cp_utf7cCs,|dd||jd||jddS)Nrh))r騾)rru�騾))􏿿rr)rru�􏿿)) [􏿿]rs[􏿿])rrs[􏿿?])rnrjrpr\r r rtest_multibyte_encoding6 s z$CodePageTest.test_multibyte_encodingcCstjrtjdddddddgtdd d RD]>}t|r\|t |d d d |q2tjr2t d|q2|t dd ddS)Nrfi,i-i.i1i3i5iirrrr!z skipping cp=rO)u r) rverboserstdoutr*r1r#rr2reprintrr r rtest_code_page_decode_flagsD s  z(CodePageTest.test_code_page_decode_flagscCsttdddd}||dtdddd}||dtdddd}||d tdd dd}||d dS) NrhrFrs)rrs)u騾騾rHrr)r2rer)r r\r r rtest_incrementalW s"   zCodePageTest.test_incrementalcCsJtjddd(td}||jdWdn1s<0YdS)Nz_winapi.GetACPr)Z return_valueZcp123rm)rrr2rrr)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)Ns01234567rr0s rrhrTrreZ 0123456701iu(6701234567rrr2rer r,rVr\r r rtest_large_inputq szCodePageTest.test_large_inputrucCsd|d}|t||ddtd|dd}||dt|~|t|d|||dddd ||dd dd dS) Ns 0123456턀rrerbrTr0ru 0123456턀01iu56턀0123456턀rrr r rtest_large_utf8_input s z"CodePageTest.test_large_utf8_inputN)rrrrjrgrkrnrprxrrrrrrrZ bigmemtestrrr r r rra s ! rac@s4eZdZddZddZddZddZd d Zd S) ASCIITestcCs|ddddS)Nror*sabc123rr\r r rr szASCIITest.test_encodec CsXdD]N\}}}|j|||d$||d||Wdq1sH0YqdS)N)) [€ÿ€]rrp)rrs[???])rrs[€ÿ€])u [€ÿ€򫳞]rs[\x80\xff\u20ac\U000abcde]rrrrr*rrrBrr r rtest_encode_error szASCIITest.test_encode_errorcCs:|tdddWdn1s,0YdS)Nuÿr*rrrrBr\r r r!test_encode_surrogateescape_error s z+ASCIITest.test_encode_surrogateescape_errorcCs|ddddS)Nrr*r)rr4r\r r rr szASCIITest.test_decodec CsXdD]N\}}}|j|||d$||d||Wdq1sH0YqdS)Nrrr*rArr r rr szASCIITest.test_decode_errorN)rrrrrrrrr r r rr s rc@s,eZdZddZddZddZddZd S) Latin1Testc CsRdD]H\}}|j||d"||d|Wdq1sB0YqdS)N))rr)u€éÿsrqrlatin1rr rqrr r rr s zLatin1Test.test_encodec CsXdD]N\}}}|j|||d$||d||Wdq1sH0YqdS)N))[€]rrp)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[€ÿ]rrrArr r rr s zLatin1Test.test_decodeN)rrrrrrrr r r rr src@s,eZdZddZddZddZddZd S) StreamRecoderTestcCsRt}td}t||j|jtjj tjj }| ddg| | ddS)Nr*rcbsab)rYrZr2rrrBr4rr*rr writelinesrr)r biorsrr r rtest_writelines s  z!StreamRecoderTest.test_writelinescCs^t}td}t||j|jtjj tjj }d}| |d| | |ddS)Nruàñér)rYrZr2rrrBr4rrlrrr*rr)r rrrror r r test_write s  zStreamRecoderTest.test_writecCs|tdd}t|dd}||d|d||d||d||d||ddS) Nzline1 line2 line3 rrsline1 rsline2 sline3 rE)rYrZrBr2rrr_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 ) rYrZrBr2rrr*rr_rr r rtest_seeking_write s   z$StreamRecoderTest.test_seeking_writeN)rrrrrrrr r r rr s  rzneed _testcapi modulec@seZdZeZdZdZdZdddZ ddZ d d Z d d Z d dZ ddZdddZddZddZddZddZddZdS) LocaleCodecTest)r*u ulatin1:§éuu255:ÿu UCS:é€􏿿usurrogates:)s blatin1:sb255:urcCst|d|Sr+)rZEncodeLocaleEx)r rorr r rrB szLocaleCodecTest.encodec Cs|jD]}|j|dz||j|}Wn^ty|t}|||Wdn1sd0Yt|j}| |dYn0|||}| ||Wdq1s0YqdS)N)roz!encode error: pos=[0-9]+, reason=) STRINGSrrBENCODINGrrr,rZr Z assertRegexr)r rrorrerrmsgrVr 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)NrFrunsupported error handlerz4 encoder doesn't support surrogatepass error handler)rBrrZrrrr rr r rtest_encode_surrogatepass0 s z)LocaleCodecTest.test_encode_surrogatepasscCsL|t}|ddWdn1s,0Y|t|jddS)NrFrr)rrrBrrZr r rr r r%test_encode_unsupported_error_handler< s *z5LocaleCodecTest.test_encode_unsupported_error_handlercCst|d|Sr+)rZDecodeLocaleEx)r rVrr r rr4A 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)rVzdecode error: )rrb BYTES_STRINGSrrBr`rrr4rrr,rZr r9 startswithr) r rZis_utf8Z encode_errorsstringsrorVZencoded2rrrr\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)NrErrz4 decoder doesn't support surrogatepass error handler)r4rrZrrrrr r rtest_decode_surrogatepassl s z)LocaleCodecTest.test_decode_surrogatepasscCsL|t}|ddWdn1s,0Y|t|jddS)NrErr)rrr4rrZr rr r r%test_decode_unsupported_error_handlerx s *z5LocaleCodecTest.test_decode_unsupported_error_handlerN)r)r)rrrrgetfilesystemencodingrrrZ SURROGATESrBrrrrrr4rrrrrr r r rr s    " rc@s,eZdZddZddZddZddZd S) Rot13TestcCstdd}||ddS)NzCaesar liked ciphersrot-13zPnrfne yvxrq pvcuref)r2rBr)r ciphertextr r rr s zRot13Test.test_encodecCstdd}||ddS)Nz Rg gh, Oehgr?rz Et tu, Brute?)r2r4r)r plaintextr r rr s zRot13Test.test_decodecCs&td}|d}||ddS)NrzABBA nag Cheryl BakerzNOON ant Purely Onxre)r2rArBr)r rrr r rr s  z!Rot13Test.test_incremental_encodecCs&td}|d}||ddS)Nrzterra Ares envy thazgreen Nerf rail gun)r2r3r4r)r rrr r rr s  z!Rot13Test.test_incremental_decodeN)rrrrrrrr r r rr~ src@seZdZddZdS) Rot13UtilTestcCsBtd}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)rYrcrrrrr.r)r ZinfileZoutfileZ plain_textr r rtest_rot13_func s  zRot13UtilTest.test_rot13_funcN)rrrrr r r rr sr__main__)Sr2r^rYrrr!rrtestrr ImportErrorr ZSIZEOF_WCHAR_TZsizeofZc_wcharrr#r r$r/rDZTestCaserrrrrrrr(rBrFrPrhrr=rrr)rrrrrr rrurr`rwrnrrrrrrrrrrrrrr#r&r_codecsr'r(r"platformrarrrZskipIfrrrrmainr r r rs         "V`..V,,^V>g!Wu  h    y)S"9        # W'%.q