a 4êdg­8ã@sxddlZddlZddlZddlZddlZddlmZddlmZddl m Z Gdd„dƒZ Gdd„dej ƒZ d d „ZdS) éN)Ú HTTPException)Úsupport)ÚBytesIOc@sÄeZdZdZdZdZdZdZdZdZ dZ dd„Z dd „Z d d „Z d d „Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„ZdS),ÚTestBaseÚNéruí»®cCsX|jdurt |j¡|_|jj|_|jj|_|jj|_|jj|_ |jj |_ |jj |_ dS©N) ÚcodecÚcodecsÚlookupÚencodingÚencodeÚdecodeÚ streamreaderÚreaderÚ streamwriterÚwriterÚincrementalencoderÚincrementaldecoder©Úself©rú7/usr/local/lib/python3.9/test/multibytecodec_support.pyÚsetUps      zTestBase.setUpcCs˜g}|jD]:}| d¡}| ¡}|dks,J‚dd„|Dƒ}| |¡q t|ŽD]D\}}| |¡d}| || d¡¡|jrN| || |¡d¡qNdS)Nó ócSsg|] }|d‘qS)rr)Ú.0ÚlinerrrÚ *rz-TestBase.test_chunkcoding..rúutf-8) ÚtstringÚsplitÚpopÚappendÚziprÚ assertEqualÚ roundtriptestr )rZ tstring_linesÚbÚlinesZlastZnativeÚutf8ÚurrrÚtest_chunkcoding$s    zTestBase.test_chunkcodingc CsÊ|jD]¾\}}}t|tƒr"|j}n|j}|r´|||ƒd}||jur|| t|ƒtut|ƒ¡| ||d||j |||f¡qÄ| t|ƒtut|ƒ¡| ||d||j |||f¡q|  t |||¡qdS)Nrú%a.decode(%r, %r)=%a != %aú%a.encode(%r, %r)=%a != %a) Ú codectestsÚ isinstanceÚbytesrr Ú assertTrueÚtypeÚstrr%r Ú assertRaisesÚ UnicodeError©rÚsourceÚschemeZexpectedÚfuncÚresultrrrÚtest_errorhandle2s0   ÿÿÿ ÿÿÿzTestBase.test_errorhandlecCs0|jr| d¡d}| | |d¡dd¡dS)Nú$encoding contains full ISO 10646 mapuଓଣୠ nd eggsÚxmlcharrefreplacersଓଣୠ nd eggs)Ú has_iso10646ÚskipTestr%r )rÚsrrrÚtest_xmlcharrefreplaceIs þzTestBase.test_xmlcharrefreplacecsj|jr| d¡ddlm‰‡fdd„}t d|¡|jrF|j\}}nd}d}| | |d¡d|¡dS) Nr<r©Úcodepoint2namecsxt|tƒstd|ƒ‚g}|j|j|j…D]:}t|ƒˆvrT| dˆt|ƒ¡q,| dt|ƒ¡q,d |¡|jfS)Nzdon't know how to handle %rz&%s;z&#%d;r) r/ÚUnicodeEncodeErrorÚ TypeErrorÚobjectÚstartÚendÚordr#Újoin)ÚexcÚlÚcrBrrÚxmlcharnamereplaceYs   z>TestBase.test_customreplace_encode..xmlcharnamereplaceztest.xmlcharnamereplaceu«ℜ» = 〈ሴ〉s*«ℜ» = ⟨ሴ⟩) r>r?Z html.entitiesrCr Úregister_errorÚxmlcharnametestr%r )rrNÚsinZsoutrrBrÚtest_customreplace_encodeSs      ÿÿÿz"TestBase.test_customreplace_encodecCs>dd„}t d|¡| d|jdd¡d}| |d¡dS)NcSs d|jfS)Ns1234©rH©rKrrrÚ myreplaceosz7TestBase.test_callback_returns_bytes..myreplaceú test.cjktestÚabcÚdefrs abc1234def)r rOr Úunmappedunicoder%)rrUÚencrrrÚtest_callback_returns_bytesns z$TestBase.test_callback_returns_bytescsH‡fdd„}t d|¡gd¢gdtƒfD]‰| t|j|jd¡q*dS)Ncs ˆ|jfSrrSrT©ÚretrrrUvsz7TestBase.test_callback_wrong_objects..myreplacerV)réé)r rOrFr4rEr rY©rrUrr\rÚtest_callback_wrong_objectsus   ÿz$TestBase.test_callback_wrong_objectscCs^dd„}t d|¡| | d|jdd¡d¡dd„}t d|¡| t|j|jd¡dS)NcSsdt|jƒfS)NÚx)ÚintrHrTrrrrUsz4TestBase.test_callback_long_index..myreplacerVÚabcdÚefgh)s abcdxefghé cSsdtjdfS)Nrbr)ÚsysÚmaxsizerTrrrrU…s)r rOr%r rYr4Ú IndexErrorr`rrrÚtest_callback_long_index~s ÿÿ ÿz!TestBase.test_callback_long_indexcCs,dd„}t d|¡| t|j|jd¡dS)NcSsdS)N)rbNrrTrrrrUŒsz4TestBase.test_callback_None_index..myreplacerV)r rOr4rEr rYr`rrrÚtest_callback_None_index‹s  ÿz!TestBase.test_callback_None_indexcs@‡fdd„‰dˆ_t dˆ¡| | d|jdd¡d¡dS)Ncs*ˆjdkrˆjd8_dSd|jfSdS)Nrr)ÚREPLACEDrZTERMINAL)ÚlimitrHrT©rUrrrU“s z8TestBase.test_callback_backward_index..myreplacer_rVrdre)s4abcdREPLACEDabcdREPLACEDabcdREPLACEDabcdTERMINALefghrf)rmr rOr%r rYrrrnrÚtest_callback_backward_index’s  ÿþz%TestBase.test_callback_backward_indexcCs6dd„}t d|¡| | d|jdd¡d¡dS)NcSsd|jdfS)Nrlr^rSrTrrrrU sz7TestBase.test_callback_forward_index..myreplacerVrdre)sabcdREPLACEDghrf)r rOr%r rYr`rrrÚtest_callback_forward_indexŸs ÿÿz$TestBase.test_callback_forward_indexcCs,dd„}t d|¡| t|j|jd¡dS)NcSsdS)N)ZTERMédrrTrrrrU§sz:TestBase.test_callback_index_outofbound..myreplacerV)r rOr4rir rYr`rrrÚtest_callback_index_outofbound¦s  ÿz'TestBase.test_callback_index_outofboundcCsžt d¡}dgttddƒƒgd¢D]r}|t|jdƒƒ}tƒ}| ¡}|dur^| |¡}n| ¡}|slq‚| |¡}|  |¡qJ|  |  ¡|jd¡q&dS)Nrré!©é@é€éiir) r Ú getreaderÚlistÚrangerr rÚreadr Úwriter%Úgetvalue)rÚ UTF8ReaderÚsizehintÚistreamÚostreamÚencoderÚdataÚerrrÚtest_incrementalencoder­s ÿ   z TestBase.test_incrementalencodercCst d¡}ddgttddƒƒgd¢D]b}t|jdƒ}|tƒƒ}| ¡}| |¡}|s^qtqL| |¡}|  |¡qL|  |  ¡|jd¡q(dS)Nréÿÿÿÿrrsrtr) r Ú getwriterryrzrr rr{rr|r%r})rÚ UTF8Writerrr€rÚdecoderrƒr*rrrÚtest_incrementaldecoderÁs ÿ    z TestBase.test_incrementaldecodercCsŽ|j}| ¡}| t|j|d¡d|_| | |d¡d¡| ¡dd„}t  d|¡d|_| | |d¡d¡d|_| | |d¡d¡dS)NTÚignorercSs d|jfS)NZcalledrSrTrrrÚ tempreplaceÜszDTestBase.test_incrementalencoder_error_callback..tempreplaceztest.incremental_error_callbackscalled) rYrr4rDr Úerrorsr%Úresetr rO)rÚinvr„rŒrrrÚ&test_incrementalencoder_error_callbackÒs z/TestBase.test_incrementalencoder_error_callbackcCs¨t d¡}dD]”}ddgttddƒƒgd¢D]p}| t|jdƒ¡}|tƒƒ}t||ƒ}||ƒ}|sjqŠ|dkr~| |¡q\|  |¡q\|  |  ¡|jd¡q0qdS) Nr©r{ÚreadlineÚ readlinesr†rrsrtrr“) r r‡ryrzrrr ÚgetattrÚ writelinesr|r%r})rrˆÚnamerr€rr9rƒrrrÚtest_streamreaderæs ÿ    zTestBase.test_streamreaderc Csºd}t d¡}|D]¢}dgttddƒƒgd¢D]€}|t|jdƒƒ}| tƒ¡}t||ƒ}|durp||ƒ}n|ƒ}|s|qœ|dkr| |¡q^|  |¡q^|  |  ¡|jd¡q2qdS)Nr‘rrrsrtr“r) r rxryrzrr rr”r•r|r%r}) rZ readfuncsr~r–rr€rr9rƒrrrÚtest_streamwriterùs$ ÿ     zTestBase.test_streamwritercCstƒ}| |¡}| ¡dSr)rrrŽ)rÚstreamrrrrÚ"test_streamwriter_reset_no_pendings z+TestBase.test_streamwriter_reset_no_pendingcCs:| ¡}| t¡|`Wdƒn1s,0YdSr)rr4ÚAttributeErrorr)rr„rrrÚ$test_incrementalencoder_del_segfaults z-TestBase.test_incrementalencoder_del_segfault)Ú__name__Ú __module__Ú __qualname__r r r r.r&r>rPrYrr+r;rArRr[rarjrkrorprrr…rŠrr—r˜ršrœrrrrrs6     rc@s\eZdZgZgZgZgZdd„Zdd„Zdd„Z dd„Z d d „Z d d „Z d d„Z dd„ZdS)ÚTestBase_Mappingc Cs<z| ¡ ¡Wn&ttfy6| d|j¡Yn0dS)NzCould not retrieve )Úopen_mapping_fileÚcloseÚOSErrorrr?Ú mapfileurlrrrrr$szTestBase_Mapping.setUpcCs t |j¡Sr)rZopen_urlresourcer¤rrrrr¡*sz"TestBase_Mapping.open_mapping_filecCs"|j d¡r| ¡n| ¡dS)Nz.xml)r¤ÚendswithÚ_test_mapping_file_ucmÚ_test_mapping_file_plainrrrrÚtest_mapping_file-s  z"TestBase_Mapping.test_mapping_filecCsôdd„}i}| ¡Ì}|D]¶}|s&qÒ| d¡d ¡}t|ƒdkrFq|ddd…dkrj| d|›¡t |ddd…¡}t|ƒdkršd |dkršq||dƒ}t|ƒd ks||vr¼q|||<| ||¡qWdƒn1sæ0YdS) NcSsd dd„| d¡Dƒ¡S)Nrcss|]}tt|dƒƒVqdS)éN)Úchrrc)rrbrrrÚ 5rzMTestBase_Mapping._test_mapping_file_plain..unichrs..ú+)rJr!)r@rrrÚunichrs4sz:TestBase_Mapping._test_mapping_file_plain..unichrsú#rr^Ú0xzInvalid line: rrviýÿ)r¡r!ÚlenZfailr0ÚfromhexrIÚ _testpoint)rr­Zurt_waÚfrrƒÚcsetchÚunichrrrr§3s&   z)TestBase_Mapping._test_mapping_file_plaincCsr| ¡}| ¡}Wdƒn1s&0Yt d|¡}|D],\}}tt|dƒƒ}t |¡}| ||¡q@dS)Nz'r©) r¡r{ÚreÚfindallrªrcr0r±r²)rr³ZucmdataZucZuniZcodedrµZcodechrrrr¦Ns &   z'TestBase_Mapping._test_mapping_file_ucmcCs|jD]}|j|ŽqdSr)Úsupmapsr²)rÚmappingrrrÚtest_mapping_supplementalWs z*TestBase_Mapping.test_mapping_supplementalcCsH||f|jvr"| | |j¡|¡||f|jvrD| t||jƒ|¡dSr)Ú pass_enctestr%r r Ú pass_dectestr3)rr´rµrrrr²[szTestBase_Mapping._testpointc CsÖ|jD]Ê\}}}t|tƒr"|j}n|j}|r¾t|tƒrz||j|ƒ}| t|ƒtut|ƒ¡|  ||d||j|||f¡qÐ||j|ƒ}| t|ƒtut|ƒ¡|  ||d||j|||f¡q|  t ||j|¡qdS)Nr,r-) r.r/r0rr r r1r2r3r%r4r5r6rrrr;as2    ÿÿÿ  ÿÿÿz!TestBase_Mapping.test_errorhandleN)rržrŸr»r¼r¸r.rr¡r¨r§r¦rºr²r;rrrrr s r cCsžtj tj t¡d¡}ttj ||d¡dƒ}| ¡}Wdƒn1sL0Yttj ||d¡dƒ}| ¡}Wdƒn1sŒ0Y||fS)NZ cjkencodingsz.txtÚrbz -utf8.txt)ÚosÚpathrJÚdirnameÚ__file__Úopenr{)r–Údirr³Úencodedr)rrrÚload_teststringys &&rÅ)r r¾r¶rgZunittestZ http.clientrÚtestrÚiorrZTestCaser rÅrrrrÚs   [