a 5êdgºƒã@s’ddlZddlZddlZGdd„dejjƒZGdd„deƒZGdd„deƒZGdd „d ej ƒZ Gd d „d e ƒZ Gd d „d e ƒZ e dkrŽe ¡dS)éNc@sleZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)ÚEventCollectorcOs0g|_|jj|_tjjj|g|¢Ri|¤ŽdS©N)ÚeventsÚappendÚhtmlÚparserÚ HTMLParserÚ__init__)ÚselfÚargsÚkw©r ú0/usr/local/lib/python3.9/test/test_htmlparser.pyr s zEventCollector.__init__cCsjg}d}|jD]P}|d}||kr.dkrPnnd|dd|df|d<n | |¡|}q||_|S)NrÚdataéÿÿÿÿé)rr)r ÚLZprevtypeÚeventÚtyper r rÚ get_eventss  zEventCollector.get_eventscCs| d||f¡dS)NÚstarttag©r©r ÚtagÚattrsr r rÚhandle_starttag szEventCollector.handle_starttagcCs| d||f¡dS)NÚ startendtagrrr r rÚhandle_startendtag#sz!EventCollector.handle_startendtagcCs| d|f¡dS)NÚendtagr)r rr r rÚ handle_endtag&szEventCollector.handle_endtagcCs| d|f¡dS)NÚcommentr©r rr r rÚhandle_comment+szEventCollector.handle_commentcCs| d|f¡dS)NÚcharrefrr!r r rÚhandle_charref.szEventCollector.handle_charrefcCs| d|f¡dS)Nrrr!r r rÚ handle_data1szEventCollector.handle_datacCs| d|f¡dS)NÚdeclrr!r r rÚ handle_decl4szEventCollector.handle_declcCs| d|f¡dS)NÚ entityrefrr!r r rÚhandle_entityref7szEventCollector.handle_entityrefcCs| d|f¡dS)NÚpirr!r r rÚ handle_pi:szEventCollector.handle_picCs| d|f¡dS)Nú unknown declr)r r&r r rÚ unknown_decl=szEventCollector.unknown_declN)Ú__name__Ú __module__Ú __qualname__r rrrrr"r$r%r'r)r+r-r r r rrsrc@seZdZdd„ZdS)ÚEventCollectorExtracCs$t |||¡| d| ¡f¡dS)NÚ starttag_text)rrrZget_starttag_textrr r rrCsz#EventCollectorExtra.handle_starttagN)r.r/r0rr r r rr1Asr1c@seZdZdd„Zdd„ZdS)ÚEventCollectorCharrefscCs| d¡dS©Nz6This should never be called with convert_charrefs=True©Úfailr!r r rr$Jsz%EventCollectorCharrefs.handle_charrefcCs| d¡dSr4r5r!r r rr)Msz'EventCollectorCharrefs.handle_entityrefN)r.r/r0r$r)r r r rr3Hsr3c@s&eZdZdd„Zddd„Zdd„ZdS) Ú TestCaseBasecCs tddS©NF©Úconvert_charrefs)r©r r r rÚ get_collectorSszTestCaseBase.get_collectorNcCsr|dur| ¡}|}|D]}| |¡q| ¡| ¡}||krn| dt|ƒdt |¡dt |¡¡dS)Nz6received events did not match expected events Source: z Expected: z Received: )r<ÚfeedÚcloserr6ÚreprÚpprintZpformat)r ÚsourceZexpected_eventsÚ collectorrÚsrr r rÚ _run_checkVs& ÿþþýýzTestCaseBase._run_checkcCs| ||tdd¡dSr8)rDr1)r rArr r rÚ_run_check_extradsÿzTestCaseBase._run_check_extra)N)r.r/r0r<rDrEr r r rr7Qs r7c@sôeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;S)<ÚHTMLParserTestCasecCs | ddg¡| ddg¡dS)Nz)r*zprocessing instructionz)r*zprocessing instruction ?©rDr;r r rÚ test_processing_instruction_onlyks ÿÿz3HTMLParserTestCase.test_processing_instruction_onlycCsB| ddddddgfddddddd d d gfd d dddddg¡dS)Nz¿ &entity; sample text “ )rÚ )r&zDOCTYPE html PUBLIC 'foo'rr)r(Úentity)r#Z32)r z4comment1a -><&#bad;

rÚp)rz&#bad;©rrOz
&#bad;
Údiv©rrQrGr;r r rÚtest_malformatted_charref“sýýz,HTMLParserTestCase.test_malformatted_charrefcCs| dddg¡dS)Nz&entityref foo)r(r()rz foorGr;r r rÚtest_unclosed_entityref sþz*HTMLParserTestCase.test_unclosed_entityrefcCs$| dddgfddgfddg¡dS)NzrÚaÚb©rrU©rrVrGr;r r rÚtest_bad_nesting¦s üz#HTMLParserTestCase.test_bad_nestingcCs| ddg¡dS)Nú#this text & contains & ampersands &)rrZrGr;r r rÚtest_bare_ampersands±sÿz'HTMLParserTestCase.test_bare_ampersandscCs| ddg¡dS)Nú.this < text > contains < bare>pointy< brackets)rr\rGr;r r rÚtest_bare_pointy_brackets¶sÿz,HTMLParserTestCase.test_bare_pointy_bracketscCs0| ddddgfg¡| ddddgfg¡dS)Nú rrU©rVú<ú ©rVú>rGr;r r rÚtest_starttag_end_boundary»sz-HTMLParserTestCase.test_starttag_end_boundarycCs’dddgfg}| dg|¡| ddg|¡| ddg|¡| d d g|¡| d d g|¡| d dg|¡dddgfg}| dg|¡| ddg|¡| ddg|¡| d dg|¡| dd g|¡| ddg|¡dg}| ddg|¡| ddg|¡| ddg|¡| ddg|¡| dd g|¡| d!d"g|¡| d#d$g|¡| d%d&g|¡| d'd(g|¡| d)dg|¡| ddg|¡dS)*NrrUr_r^zzzzzz='>'>z'>'>z')r ÚabcÚz r`z !--abc-->úzzzzzz ¬-an-entity-ref;zz

zfoo = "";zfoo = "";zfoo = < /script> z*z //<\/s'+'cript>'); //]]>z zfoo = "";u )ÚscriptÚstyleZSCRIPTZSTYLEZScriptZStylez <{element}>{content}©ÚelementÚcontentrrr)ÚlowerÚformatrD)r ÚcontentsÚelementsrurtÚ element_lowerrCr r rÚtest_cdata_content sÿþz%HTMLParserTestCase.test_cdata_contentcCsfGdd„dtƒ}d}dD]H}| ¡ ¡}dj||d}|j|d|gfd|fd |fg|d d d qdS) Nc@seZdZdd„ZdS)zBHTMLParserTestCase.test_cdata_with_closing_tags..CollectorcSs|jSr)rr;r r rr.szMHTMLParserTestCase.test_cdata_with_closing_tags..Collector.get_eventsN)r.r/r0rr r r rÚ Collector-sr|z‹ ¬-an-entity-ref;

'')z scriptzscript z script z scriptzscript z script z{1}{1}z &quo &# &#xrúno charrefs here)rrŽ)Z assertTruer:rDrwÚjoinÚrangeÚlen)r rBZcharrefsr‚r#Útextrr‰r r rÚtest_convert_charrefsXsR ÿ ÿ þÿþüÿþÿ ÿz(HTMLParserTestCase.test_convert_charrefsc Cs2| ddddgfdddddd gfd d d d g ¡dS)NzFte>>xt&a< )r z/img)rzhtmlz)r ú$úrúa)rr˜rg)rrgú')rrœú broken condcomfoo)r,zif !(IE))rzbroken condcom)r,Zendif)r,zif ! IErÚlink)r‡z favicon.tiff)r,zif !IE 6rK)rLz firefox.png)r,zif !ie 6rrV)rrlrX)r,zif (!IE)|(lt IE 9))rLz mammoth.bmprGrr r rÚtest_broken_condcoms,s(    ïz'HTMLParserTestCase.test_broken_condcomscCs8tdd}| d¡| | ¡dddgfddd g¡dS) NTr9zfoo link bar & baz)rzfoo rrU)rrºrW)rz bar & baz)rr=Z assertEqualr)r rr r rÚ"test_convert_charrefs_dropped_textMs   ÿþz5HTMLParserTestCase.test_convert_charrefs_dropped_textN) r.r/r0rHrNrSrTrYr[r]rdrjrkrmrpr{rrƒr„r“r”ržr¦r§r¨rªr«r³r¸r¹r»r¼r r r rrFis:    )  !!rFc@s”eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#S)$ÚAttributesTestCasecCsDddgd¢fg}| d|¡| d|¡| d|¡| d|¡dS)NrrU))rVÚv)Úcr¾)Údr¾)ÚeNzzzzrGrhr r rÚtest_attr_syntax\s  ÿ   z#AttributesTestCase.test_attr_syntaxcCs`| dddgd¢fg¡| dddddgfg¡| ddd d gfg¡| d ddd gfg¡dS) Nz'rrU))rVzxxx xxx)r¿zyyy yyy)rÀz xyz z )rVrf)r¿rfzrÁ)rUz rgb(1,2,3)z)r‡zmailto:xyz@example.comrGr;r r rÚtest_attr_valuesesÿÿ ÿ þz#AttributesTestCase.test_attr_valuescCsL| dddddgfg¡| ddddd gfg¡| d dddd gfg¡dS) Nu!中文rrK)rLz /foo/bar.png)Zaltu中文u+rU)Útitleu テスト)r‡uテスト.htmlu+rGr;r r rÚtest_attr_nonasciits$ÿþÿþÿþz%AttributesTestCase.test_attr_nonasciicCs| ddddgfg¡dS)Nz!rrU)rVz&><"'rGr;r r rÚtest_attr_entity_replacementƒs þz/AttributesTestCase.test_attr_entity_replacementcCs| dddgd¢fg¡dS)NzrrU))za.br¾)zc:dr¾)ze-fr¾rGr;r r rÚtest_attr_funky_namesˆsþz(AttributesTestCase.test_attr_funky_namescCs| ddddgfg¡dS)Nz0rr)rlu€&aa&unsupported;rGr;r r rÚtest_entityrefs_in_attributess þz0AttributesTestCase.test_entityrefs_in_attributescCs.| ddddgfdddgfdddgfg¡dS) NzrrU)r•NrV)r•ú%r¿)ú\ú/rGr;r r rÚtest_attr_funky_names2“s   þþz)AttributesTestCase.test_attr_funky_names2cCs\dD]R}| d|dddgfg¡| d|dddgfg¡| d|dddgfg¡qdS)N)ú&z&z&z&z rrU)r‡rÍz z rG)r rJr r rÚ test_entities_in_attribute_valuešs  ÿ  ÿ  ÿz3AttributesTestCase.test_entities_in_attribute_valuec CsPd}dddgfdddddgfddddd gfd dddd gfd dg }| ||¡dS) NzÜtest - bad1test - bad2test - bad3test - bad4rrU)r‡ztest'style='color:red;bad1')rz test - bad1rW)r‡ztest'+style='color:red;ba2')rz test - bad2)r‡utest' style='color:red;bad3')rz test - bad3)r‡utest' style='color:red;bad4')rz test - bad4rGrr r rÚtest_malformed_attributes¤sÿ    ø z,AttributesTestCase.test_malformed_attributescCsH| dddgfddddgfdg¡| d ddgfdddd gfdg¡dS) Nzrr‰rrŠ)r‹rf)zo""N)rr‰z)z""NrGr;r r rÚ"test_malformed_adjacent_attributes¸s þÿ þÿz5AttributesTestCase.test_malformed_adjacent_attributescCs4| dddddgfg¡| dddddgfg¡dS) NzrrU©r z100%©Z cellspacingÚ0z)Úidrl©Úclassr¤rGr;r r rÚtest_adjacent_attributesÄsÿÿÿÿz+AttributesTestCase.test_adjacent_attributescCs| ddddgfg¡dS)NzrrU)r¾rfrGr;r r rÚtest_missing_attribute_valueÍs ÿz/AttributesTestCase.test_missing_attribute_valuecCs| ddddgfg¡dS)Nz-rrU)r‡z$javascript:popup('/popup/help.html')rGr;r r rÚtest_javascript_attribute_valueÑs ÿÿz2AttributesTestCase.test_javascript_attribute_valuecCs| ddddgfddg¡dS)Nz-spamrrU)r‡zhttp://www.example.org/">;)rZspamrWrGr;r r rÚtest_end_tag_in_attribute_valueÖsÿþÿz2AttributesTestCase.test_end_tag_in_attribute_valuecCsŽd}ddgfddddgfddgd¢fdd gfdd d gfdd d gfddddgfdddgfdddddddgfdddgfddddg}| ||¡dS)Nzï
- software-and-i- library
rrÚbody)ZbgcolorZd0ca90)r’Z181008Útable)rÒ)Z cellpaddingrnrÑÚtrZtd)ZalignÚleftZfont)Úsizez-1)rz- rU)r‡z/rabota/r¯)rÖÚen)rz software-and-ir°rW)r‡z/1/)rz library)rrÜrGrr r rÚtest_with_unquoted_attributesÝs" ÿ      óz0AttributesTestCase.test_with_unquoted_attributesc Cs‚d}dddgfddddgfddddgfddgd ¢fdddd gfddd d gfddd dgfddddgfddddgfg }| ||¡dS)Nzæ

rrQ)rÖz bar,baz=asdrÕ)z,bazÚasd)rÖzbar,)Úbazzasd,)rÕr±)rãrâr±r±)rÖz,bar)rãz,asd)rÖz,"bar")rãz,"asd")z,classr¤)zclass,r¤)zbaz,rârGrr r rÚtest_comma_between_attributesõs         ö z0AttributesTestCase.test_comma_between_attributescCs| ddddgfg¡dS)Nz
rZform)Úactionzbogus|&#()valuerGr;r r rÚ-test_weird_chars_in_unquoted_attribute_valuess ÿÿz@AttributesTestCase.test_weird_chars_in_unquoted_attribute_valuesN)r.r/r0rÂrÃrÅrÆrÇrÈrÌrÎrÏrÐr×rØrÙrÚrárärær r r rr½Zs"    r½Ú__main__)Z html.parserrr@Zunittestrrrr1r3ZTestCaser7rFr½r.Úmainr r r rÚs9 t=