a ze8@sxddlZddlZddlZddlZddlZddlmZddlmZddl m Z GdddZ Gdddej Z d d ZdS) N) HTTPException)support)BytesIOc@seZdZdZdZdZdZdZdZdZ dZ ddZ dd Z d d Z d d ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+ZdS),TestBaseNrucCsX|jdurt|j|_|jj|_|jj|_|jj|_|jj|_ |jj |_ |jj |_ dSN) codeccodecslookupencodingencodedecode streamreaderreader streamwriterwriterincrementalencoderincrementaldecoderselfrO/opt/bitninja-python-dojo/embedded/lib/python3.9/test/multibytecodec_support.pysetUps      zTestBase.setUpcCsg}|jD]:}|d}|}|dks,Jdd|D}||q t|D]D\}}||d}|||d|jrN||||dqNdS)N cSsg|] }|dqS)rr).0linerrr *rz-TestBase.test_chunkcoding..rutf-8) tstringsplitpopappendzipr assertEqual roundtriptestr )rZ tstring_linesblinesZlastZnativeutf8urrrtest_chunkcoding$s    zTestBase.test_chunkcodingc Cs|jD]\}}}t|tr"|j}n|j}|r|||d}||jur||t|tut||||d||j |||fq|t|tut||||d||j |||fq| t |||qdS)Nr%a.decode(%r, %r)=%a != %a%a.encode(%r, %r)=%a != %a) codectests isinstancebytesrr assertTruetypestrr%r assertRaises UnicodeErrorrsourceschemeZexpectedfuncresultrrrtest_errorhandle2s0    zTestBase.test_errorhandlecCs0|jr|dd}|||ddddS)N$encoding contains full ISO 10646 mapuଓଣୠ nd eggsxmlcharrefreplacersଓଣୠ nd eggs) has_iso10646skipTestr%r )rsrrrtest_xmlcharrefreplaceIs zTestBase.test_xmlcharrefreplacecsj|jr|dddlmfdd}td||jrF|j\}}nd}d}|||dd|dS) Nr<rcodepoint2namecsxt|tstd|g}|j|j|jD]:}t|vrT|dt|q,|dt|q,d||jfS)Nzdon't know how to handle %rz&%s;z&#%d;r) r/UnicodeEncodeError TypeErrorobjectstartendordr#join)exclcrBrrxmlcharnamereplaceYs   z>TestBase.test_customreplace_encode..xmlcharnamereplaceztest.xmlcharnamereplaceu«ℜ» = 〈ሴ〉s*«ℜ» = ⟨ሴ⟩) r>r?Z html.entitiesrCr register_errorxmlcharnametestr%r )rrNsinZsoutrrBrtest_customreplace_encodeSs      z"TestBase.test_customreplace_encodecCs>dd}td||d|jddd}||ddS)NcSs d|jfS)Ns1234rHrKrrr myreplaceosz7TestBase.test_callback_returns_bytes..myreplace test.cjktestabcdefrs abc1234def)r rOr unmappedunicoder%)rrUencrrrtest_callback_returns_bytesns z$TestBase.test_callback_returns_bytescsHfdd}td|gdgdtfD]|t|j|jdq*dS)Ncs |jfSrrSrTretrrrUvsz7TestBase.test_callback_wrong_objects..myreplacerV)r)r rOrFr4rEr rYrrUrr\rtest_callback_wrong_objectsus   z$TestBase.test_callback_wrong_objectscCs^dd}td|||d|jddddd}td||t|j|jddS)NcSsdt|jfS)Nx)intrHrTrrrrUsz4TestBase.test_callback_long_index..myreplacerVabcdefgh)s abcdxefgh cSsdtjdfS)Nrbr)sysmaxsizerTrrrrUs)r rOr%r rYr4 IndexErrorr`rrrtest_callback_long_index~s  z!TestBase.test_callback_long_indexcCs,dd}td||t|j|jddS)NcSsdS)N)rbNrrTrrrrUsz4TestBase.test_callback_None_index..myreplacerV)r rOr4rEr rYr`rrrtest_callback_None_indexs  z!TestBase.test_callback_None_indexcs@fddd_td||d|jddddS)Ncs*jdkrjd8_dSd|jfSdS)Nrr)REPLACEDrZTERMINAL)limitrHrTrUrrrUs z8TestBase.test_callback_backward_index..myreplacer_rVrdre)s4abcdREPLACEDabcdREPLACEDabcdREPLACEDabcdTERMINALefghrf)rmr rOr%r rYrrrnrtest_callback_backward_indexs  z%TestBase.test_callback_backward_indexcCs6dd}td|||d|jddddS)NcSsd|jdfS)Nrlr^rSrTrrrrUsz7TestBase.test_callback_forward_index..myreplacerVrdre)sabcdREPLACEDghrf)r rOr%r rYr`rrrtest_callback_forward_indexs z$TestBase.test_callback_forward_indexcCs,dd}td||t|j|jddS)NcSsdS)N)ZTERMdrrTrrrrUsz:TestBase.test_callback_index_outofbound..myreplacerV)r rOr4rir rYr`rrrtest_callback_index_outofbounds  z'TestBase.test_callback_index_outofboundcCstd}dgttddgdD]r}|t|jd}t}|}|dur^||}n|}|slq||}| |qJ| | |jdq&dS)Nrr!@iir) r getreaderlistrangerr rreadr writer%getvalue)r UTF8Readersizehintistreamostreamencoderdataerrrtest_incrementalencoders    z TestBase.test_incrementalencodercCstd}ddgttddgdD]b}t|jd}|t}|}||}|s^qtqL||}| |qL| | |jdq(dS)Nrrrsrtr) r getwriterryrzrr rr{rr|r%r})r UTF8Writerrrrdecoderrr*rrrtest_incrementaldecoders     z TestBase.test_incrementaldecodercCs|j}|}|t|j|dd|_|||dd|dd}t d|d|_|||ddd|_|||dddS)NTignorercSs d|jfS)NZcalledrSrTrrr tempreplaceszDTestBase.test_incrementalencoder_error_callback..tempreplaceztest.incremental_error_callbackscalled) rYrr4rDr errorsr%resetr rO)rinvrrrrr&test_incrementalencoder_error_callbacks z/TestBase.test_incrementalencoder_error_callbackcCstd}dD]}ddgttddgdD]p}|t|jd}|t}t||}||}|sjq|dkr~||q\| |q\| | |jdq0qdS) Nrr{readline readlinesrrrsrtrr) r rryrzrrr getattr writelinesr|r%r})rrnamerrrr9rrrrtest_streamreaders     zTestBase.test_streamreaderc Csd}td}|D]}dgttddgdD]}|t|jd}|t}t||}|durp||}n|}|s|q|dkr||q^| |q^| | |jdq2qdS)Nrrrrsrtrr) r rxryrzrr rrrr|r%r}) rZ readfuncsr~rrrrr9rrrrtest_streamwriters$      zTestBase.test_streamwritercCst}||}|dSr)rrr)rstreamrrrr"test_streamwriter_reset_no_pendings z+TestBase.test_streamwriter_reset_no_pendingcCs:|}|t|`Wdn1s,0YdSr)rr4AttributeErrorr)rrrrr$test_incrementalencoder_del_segfaults z-TestBase.test_incrementalencoder_del_segfault)__name__ __module__ __qualname__r r r r.r&r>rPrYrr+r;rArRr[rarjrkrorprrrrrrrrrrrrrrs6     rc@s\eZdZgZgZgZgZddZddZddZ ddZ d d Z d d Z d dZ ddZdS)TestBase_Mappingc Cs<z|Wn&ttfy6|d|jYn0dS)NzCould not retrieve )open_mapping_filecloseOSErrorrr? mapfileurlrrrrr$szTestBase_Mapping.setUpcCs t|jSr)rZopen_urlresourcerrrrrr*sz"TestBase_Mapping.open_mapping_filecCs"|jdr|n|dS)Nz.xml)rendswith_test_mapping_file_ucm_test_mapping_file_plainrrrrtest_mapping_file-s  z"TestBase_Mapping.test_mapping_filecCsdd}i}|}|D]}|s&q|dd}t|dkrFq|ddddkrj|d|t|ddd}t|dkrd |dkrq||d}t|d ks||vrq|||<|||qWdn1s0YdS) NcSsddd|dDS)Nrcss|]}tt|dVqdS)N)chrrc)rrbrrr 5rzMTestBase_Mapping._test_mapping_file_plain..unichrs..+)rJr!)r@rrrunichrs4sz:TestBase_Mapping._test_mapping_file_plain..unichrs#rr^0xzInvalid line: rrvi)rr!lenZfailr0fromhexrI _testpoint)rrZurt_wafrrcsetchunichrrrr3s&   z)TestBase_Mapping._test_mapping_file_plaincCsr|}|}Wdn1s&0Ytd|}|D],\}}tt|d}t|}|||q@dS)Nz'r) rr{refindallrrcr0rr)rrZucmdataZucZuniZcodedrZcodechrrrrNs &   z'TestBase_Mapping._test_mapping_file_ucmcCs|jD]}|j|qdSr)supmapsr)rmappingrrrtest_mapping_supplementalWs z*TestBase_Mapping.test_mapping_supplementalcCsH||f|jvr"|||j|||f|jvrD|t||j|dSr) pass_enctestr%r r pass_dectestr3)rrrrrrr[szTestBase_Mapping._testpointc Cs|jD]\}}}t|tr"|j}n|j}|rt|trz||j|}|t|tut|| ||d||j|||fq||j|}|t|tut|| ||d||j|||fq| t ||j|qdS)Nr,r-) r.r/r0rr r r1r2r3r%r4r5r6rrrr;as2      z!TestBase_Mapping.test_errorhandleN)rrrrrrr.rrrrrrrr;rrrrrs rcCstjtjtd}ttj||dd}|}Wdn1sL0Yttj||dd}|}Wdn1s0Y||fS)NZ cjkencodingsz.txtrbz -utf8.txt)ospathrJdirname__file__openr{)rdirrencodedr)rrrload_teststringys &&r)r rrrgZunittestZ http.clientrtestriorrZTestCaserrrrrrs   [