ó
    ×›‘h*©  ã                  ót  • S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJrJrJr   " S S	\R                  5      r " S
 S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      rg )!z;
Some fairly inadequate testcases for Twisted XML support.
é    )Úannotations)Úreload)ÚBytesIO)ÚLiteral)ÚTestCase)Ú
domhelpersÚmicrodomÚsuxc                  ó<   • \ rS rSrSS jrS	S jrS
S jrSS jrSrg)ÚSux0ré   c                ó   • / U l         g )N©Útokens©Úselfs    Ú]C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/web/test/test_xml.pyÚ__init__ÚSux0r.__init__   s   € ð ð 	�ó    c                óZ   • U R                    Vs/ s H  oS   S:X  d  M  UPM     sn$ s  snf )Nr   Ústartr   )r   Útokens     r   ÚgetTagStartsÚSux0r.getTagStarts   s'   € Ø#'§;¢;ÓF¢;˜%¸±(¸gÑ2E—¡;ÑFÐFùÒFs   �(Ÿ(c                ó>   • U R                   R                  SX45        g )Nr   ©r   Úappend)r   ÚnameÚattrss      r   ÚgotTagStartÚSux0r.gotTagStart   s   € Ø�‰×Ñ˜G TÐ1Õ2r   c                ó>   • U R                   R                  SU45        g )NÚtextr   )r   r$   s     r   ÚgotTextÚSux0r.gotText   s   € Ø�‰×Ñ˜F D˜>Õ*r   r   N©ÚreturnÚNone)r(   z2list[tuple[Literal['start'], str, dict[str, str]]])r   Ústrr    zdict[str, str]r(   r)   )r$   r*   r(   r)   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r!   r%   Ú__static_attributes__© r   r   r   r      s   † ôô
Gô3÷+r   r   c                  ó   • \ rS rSrSS jrSrg)ÚSUXTestsé#   c                ó°   • Sn[        5       nUR                  5         UR                  U5        U R                  [	        UR                  5       5      S5        g )Ns   <bork><bork><bork>é   )r   ÚconnectionMadeÚdataReceivedÚassertEqualÚlenr   )r   ÚsÚmss      r   Ú	test_borkÚSUXTests.test_bork$   sB   € Ø!ˆÜ‹WˆØ
×ÑÔØ
�‰˜ÔØ×Ñœ˜RŸ_™_Ó.Ó/°Õ3r   r0   Nr'   )r+   r,   r-   r.   r<   r/   r0   r   r   r2   r2   #   s   † ÷4r   r2   c                  ó  • \ rS rSrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jr	S7S jr
S7S	 jrS7S
 jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jrS7S jr/ SQr S7S jr!S7S  jr"S7S! jr#S7S" jr$S7S# jr%S7S$ jr&S7S% jr'S7S& jr(S7S' jr)S7S( jr*S7S) jr+S7S* jr,S7S+ jr-S7S, jr.S7S- jr/S7S. jr0S7S/ jr1S7S0 jr2S7S1 jr3S7S2 jr4S7S3 jr5S7S4 jr6S5r7g6)8ÚMicroDOMTestsé,   c           	     ó,  • Sn[         R                  " USS9nU R                  UR                  5       R	                  5       S5        [        5       nUR                  5       R                  USSSS0 S5        U R                  UR                  5       S5        g)zr
Make sure that if there's no top-level node lenient-mode won't
drop leading text that's outside of any elements.
zHi orders! <br>Well. <br>T©ÚbeExtremelyLenientz*<html>Hi orders! <br />Well. <br /></html>Ú s*   <html>Hi orders! <br />Well. <br /></html>N©r	   ÚparseStringr8   Ú
firstChildÚtoxmlr   ÚwritexmlÚgetvalue©r   r:   ÚdÚ
byteStreams       r   Útest_leadingTextDroppingÚ&MicroDOMTests.test_leadingTextDropping-   s„   € ð
 (ˆÜ× Ò  °tÑ<ˆØ×ÑØ�L‰L‹N× Ñ Ó"Ð$Pô	
ô “Yˆ
Ø	�‰‹×Ñ 
¨B°°B¸¸BÀÔCØ×ÑØ×ÑÓ!Ð#Põ	
r   c           	     ó,  • Sn[         R                  " USS9nU R                  UR                  5       R	                  5       S5        [        5       nUR                  5       R                  USSSS0 S5        U R                  UR                  5       S5        g)zf
Ensure that no *trailing* text in a mal-formed
no-top-level-element document(s) will not be dropped.
z<br>Hi orders!TrB   z<html><br />Hi orders!</html>rD   s   <html><br />Hi orders!</html>NrE   rK   s       r   Útest_trailingTextDroppingÚ'MicroDOMTests.test_trailingTextDropping=   s|   € ð
 ˆÜ× Ò  °tÑ<ˆØ×Ñ˜Ÿ™›×-Ñ-Ó/Ð1PÔQÜ“Yˆ
Ø	�‰‹×Ñ 
¨B°°B¸¸BÀÔCØ×Ñ˜×,Ñ,Ó.Ð0PÕQr   c                óŽ   • Sn[         R                  " USS9nU R                  UR                  5       R	                  5       S5        g)zX
A string with nothing that looks like a tag at all should just
be parsed as body text.
z
Hi orders!TrB   z<html>Hi orders!</html>N©r	   rF   r8   rG   rH   ©r   r:   rL   s      r   Útest_noTagsÚMicroDOMTests.test_noTagsI   s;   € ð
 ˆÜ× Ò  °tÑ<ˆØ×Ñ˜Ÿ™›×-Ñ-Ó/Ð1JÕKr   c                óŽ   • Sn[         R                  " USS9nU R                  UR                  5       R	                  5       S5        g)zT
If a document is surrounded by non-xml text, the text should
be remain in the XML.
zHi<br> orders!TrB   z<html>Hi<br /> orders!</html>NrT   rU   s      r   Útest_surroundingCrapÚ"MicroDOMTests.test_surroundingCrapR   s;   € ð
 ˆÜ× Ò  °tÑ<ˆØ×Ñ˜Ÿ™›×-Ñ-Ó/Ð1PÕQr   c                ó
  • Sn[         R                  " USS9n[        R                  " UR                  S5      n[        R
                  " US   S5      R                  SS5      nU R                  UR                  S5      S	5        g )
Nal  
              <HTML><BODY>
              <P ALIGN="CENTER">
                <A HREF="http://www.apache.org/"><IMG SRC="/icons/apache_pb.gif"></A>
              </P>

              <P>
                This is an insane set of text nodes that should NOT be gathered under
                the A tag above.
              </P>
              </BODY></HTML>
            é   rB   Úar   z&nbsp;Ú Úinsaneéÿÿÿÿ)	r	   rF   r   ÚfindNodesNamedÚdocumentElementÚgatherTextNodesÚreplacer8   Úfind)r   r:   rL   ÚlÚns        r   Útest_caseSensitiveSoonCloserÚ*MicroDOMTests.test_caseSensitiveSoonCloser[   sq   € ðˆô × Ò  °qÑ9ˆÜ×%Ò% a×&7Ñ&7¸Ó=ˆÜ×&Ò& q¨¡t¨QÓ/×7Ñ7¸À#ÓFˆØ×Ñ˜Ÿ™ Ó)¨2Õ.r   c                ó®   • Sn[         R                  " USS9nU R                  UR                  UR                  R	                  5       R
                  5        g)zr
Test that C{parentNode} attributes are set to meaningful values when
we are parsing HTML that lacks a root node.
z
<br/><br/>r\   rB   N©r	   rF   ÚassertIdenticalrb   rG   Ú
parentNoderU   s      r   Útest_lenientParentingÚ#MicroDOMTests.test_lenientParentingm   sI   € ð ˆÜ× Ò  °qÑ9ˆØ×ÑØ×Ñ˜q×0Ñ0×;Ñ;Ó=×HÑHõ	
r   c                ó®   • Sn[         R                  " USS9nU R                  UR                  UR                  R	                  5       R
                  5        g)z…
Test that the C{parentNode} attribute is set to a meaningful value
when we parse an HTML document that has a non-Element root node.
ÚHellor\   rB   Nrk   rU   s      r   Útest_lenientParentSingleÚ&MicroDOMTests.test_lenientParentSingley   sI   € ð
 ˆÜ× Ò  °qÑ9ˆØ×ÑØ×Ñ˜q×0Ñ0×;Ñ;Ó=×HÑHõ	
r   c                ó    • Sn[         R                  " USS9n[        R                  " U5      nU R	                  UR                  S5      S5        g )Nz
                <HTML>
                    This HTML goes between Stupid <=CrAzY!=> Dumb.
                </HTML>
            r\   rB   Ú>r`   )r	   rF   r   rc   ÚassertNotEqualre   ©r   r:   rL   rg   s       r   Útest_unEntitiesÚMicroDOMTests.test_unEntities„   sE   € ðˆô
 × Ò  °qÑ9ˆÜ×&Ò& qÓ)ˆØ×Ñ˜AŸF™F 3›K¨Õ,r   c                ób   • U R                  [        R                  [        R                  S5        g )NrD   )ÚassertRaisesr
   Ú
ParseErrorr	   rF   r   s    r   Útest_emptyErrorÚMicroDOMTests.test_emptyErrorŽ   s   € Ø×Ñœ#Ÿ.™.¬(×*>Ñ*>ÀÕCr   c                ó°   • Sn[         R                  " U5      nU R                  [        R                  " UR
                  5      R                  5       S5        g )Nz”
        <test>
         <it>
          <is>
           <a>
            test
           </a>
          </is>
         </it>
        </test>
        Útest)r	   rF   r8   r   rc   rb   ÚstriprU   s      r   Útest_tameDocumentÚMicroDOMTests.test_tameDocument‘   sF   € ð
ˆô × Ò  Ó#ˆØ×Ñœ×3Ò3°A×4EÑ4EÓF×LÑLÓNÐPVÕWr   c                óª   • Sn[         R                  " USS9n[        R                  " UR                  S5      nU R                  [        U5      S5        g )Na  
        <html>
        <head><title> I send you this message to have your advice!!!!</titl e
        </headd>

        <body bgcolor alink hlink vlink>

        <h1><BLINK>SALE</blINK> TWENTY MILLION EMAILS & FUR COAT NOW
        FREE WITH `ENLARGER'</h1>

        YES THIS WONDERFUL AWFER IS NOW HERER!!!

        <script LANGUAGE="javascript">
function give_answers() {
if (score < 70) {
alert("I hate you");
}}
        </script><a href=/foo.com/lalal name=foo>lalal</a>
        </body>
        </HTML>
        r\   rB   Úblink)r	   rF   r   ra   rb   r8   r9   )r   r:   rL   rf   s       r   Útest_awfulTagSoupÚMicroDOMTests.test_awfulTagSoup    sI   € ðˆô* × Ò  °qÑ9ˆÜ×%Ò% a×&7Ñ&7¸ÓAˆØ×Ñœ˜Q› Õ#r   c                óR  • Sn[         R                  " USS9nU R                  UR                  5       R                  5       R                  5       R                  S5        U R                  UR                  5       R                  S5      S   R                  5       R                  S5        g )Nzä
        <script>(foo < bar) and (bar > foo)</script>
        <script language="javascript">foo </scrip bar </script>
        <script src="foo">
        <script src="foo">baz</script>
        <script /><script></script>
        r\   rB   z(foo < bar) and (bar > foo)Úscriptzfoo </scrip bar )r	   rF   r8   rG   ÚdataÚgetElementsByTagNamerU   s      r   Útest_scriptLeniencyÚ!MicroDOMTests.test_scriptLeniencyº   sŠ   € ðˆô × Ò  °qÑ9ˆØ×ÑØ�L‰L‹N×%Ñ%Ó'×2Ñ2Ó4×9Ñ9Ð;Xô	
ð 	×ÑØ�L‰L‹N×/Ñ/°Ó9¸!Ñ<×GÑGÓI×NÑNØõ	
r   c                ó–  • SnU R                  [        R                  " USS9R                  5       R	                  5       U5        SnU R                  [        R                  " USS9R                  5       R	                  5       U5        SnU R                  [        R                  " USS9R                  5       R	                  5       U5        g )Nz<script><!-- lalal --></script>r\   rB   z"<script><![CDATA[lalal]]></script>z:<script> // <![CDATA[
        lalal
        //]]></script>)r8   r	   rF   rG   rH   ©r   r:   s     r   Útest_scriptLeniencyIntelligenceÚ-MicroDOMTests.test_scriptLeniencyIntelligenceË   s²   € ð 2ˆØ×ÑÜ× Ò  °qÑ9×DÑDÓF×LÑLÓNÐPQô	
ð 5ˆØ×ÑÜ× Ò  °qÑ9×DÑDÓF×LÑLÓNÐPQô	
ðˆð 	×ÑÜ× Ò  °qÑ9×DÑDÓF×LÑLÓNÐPQõ	
r   c                ó˜  • SnUR                  5       R                  SS5      n[        R                  " USSS9n[        R                  " USSS9n[        R                  " USSS9n[        R                  " USSS9n[        R                  " USSS9nU R	                  UR
                  R                  5       U5        U R                  UR                  U5      UR                  5       < SUR                  5       < 35        U R                  UR                  U5      UR                  5       < SUR                  5       < 35        U R                  UR                  U5      UR                  5       < SUR                  5       < 35        U R                  UR                  U5      UR                  5       < SUR                  5       < 35        g )NzH<eNcApSuLaTe><sUxor></sUxor><bOrk><w00T>TeXt</W00t></BoRk></EnCaPsUlAtE>r$   ÚTeXtr\   ©ÚcaseInsensitiveÚpreserveCaser   z != )	Úlowerrd   r	   rF   r8   rb   rH   Ú
assertTrueÚisEqualToDocument)r   r:   Ús2rL   Úd2Úd3Úd4Úd5s           r   Útest_preserveCaseÚMicroDOMTests.test_preserveCaseÝ   sh  € ØVˆØ�W‰W‹Y×Ñ˜v vÓ.ˆä× Ò  °AÀAÑFˆÜ×!Ò! !°QÀQÑGˆô ×!Ò! "°aÀaÑHˆÜ×!Ò! "°aÀaÑHˆÜ×!Ò! "°aÀaÑHˆð
 	×Ñ˜×*Ñ*×0Ñ0Ó2°AÔ6Ø�‰˜×+Ñ+¨BÓ/°A·G±G³I±=ÀÀRÇXÁXÃZÁNÐ1SÔTØ�‰˜×,Ñ,¨RÓ0°R·X±X³Z±NÀ$ÀrÇxÁxÃzÁnÐ2UÔVð 	�‰˜×,Ñ,¨RÓ0°R·X±X³Z±NÀ$ÀrÇxÁxÃzÁnÐ2UÔVØ�‰˜×,Ñ,¨RÓ0°R·X±X³Z±NÀ$ÀrÇxÁxÃzÁnÐ2UÕVr   c                óÐ   • Sn[         R                  " U5      nUR                  nU R                  UR	                  S5      S5        U R                  UR	                  S5      S5        g )Nz<test a="a" b='b' />r]   Úb©r	   rF   rb   r8   ÚgetAttribute©r   r:   rL   Úes       r   Útest_differentQuotesÚ"MicroDOMTests.test_differentQuotesõ   sT   € Ø$ˆÜ× Ò  Ó#ˆØ×ÑˆØ×Ñ˜Ÿ™¨Ó,¨cÔ2Ø×Ñ˜Ÿ™¨Ó,¨cÕ2r   c                óÐ   • Sn[         R                  " U5      nUR                  nU R                  UR	                  S5      S5        U R                  UR	                  S5      S5        g )Nz<test 
a="a"
	b="#b" />r]   r¢   z#br£   r¥   s       r   Útest_LinebreaksÚMicroDOMTests.test_Linebreaksü   sT   € Ø(ˆÜ× Ò  Ó#ˆØ×ÑˆØ×Ñ˜Ÿ™¨Ó,¨cÔ2Ø×Ñ˜Ÿ™¨Ó,¨dÕ3r   c                ót   • S H2  nU R                  [        R                  [        R                  U5        M4     g )N)z<test>z<test> </tset>z</test>)r{   r	   ÚMismatchedTagsrF   r�   s     r   Útest_mismatchedTagsÚ!MicroDOMTests.test_mismatchedTags  s*   € Û6ˆAØ×Ñœh×5Ñ5´x×7KÑ7KÈQÖOò 7r   c                ó°  • Sn[         R                  " U5      nUR                  nU R                  UR                  S5        UR
                  S   nU R                  [        U[         R                  5      5        U R                  UR                  S5        UR                  5       nU R                  XEL5        U R                  UR                  5       S5        g )Nz<bar><!--<foo />--></bar>Úbarr   ú<foo />z<!--<foo />-->)r	   rF   rb   r8   ÚnodeNameÚ
childNodesr˜   Ú
isinstanceÚCommentÚvalueÚ	cloneNoderH   )r   r:   rL   r¦   ÚcÚc2s         r   Útest_commentÚMicroDOMTests.test_comment  s    € Ø'ˆÜ× Ò  Ó#ˆØ×ÑˆØ×Ñ˜Ÿ™ UÔ+Ø�L‰L˜‰OˆØ�‰œ
 1¤h×&6Ñ&6Ó7Ô8Ø×Ñ˜Ÿ™ )Ô,Ø�[‰[‹]ˆØ�‰˜˜Ô$Ø×Ñ˜Ÿ™›Ð%5Õ6r   c                óp  • [         R                  " S5      R                  nUR                  S   nU R	                  [        U[         R                  5      5        U R                  UR                  S5        UR                  5       nU R	                  X2L5        U R                  UR                  5       S5        g )Nz<bar>xxxx</bar>r   Úxxxx)r	   rF   rb   r´   r˜   rµ   ÚTextr8   r·   r¸   rH   )r   rL   r$   Úclones       r   Ú	test_textÚMicroDOMTests.test_text  s‚   € Ü× Ò Ð!2Ó3×CÑCˆØ�|‰|˜A‰ˆØ�‰œ
 4¬¯©Ó7Ô8Ø×Ñ˜Ÿ™ VÔ,Ø—‘Ó ˆØ�‰˜Ð)Ô*Ø×Ñ˜Ÿ™›¨Õ/r   c                óÐ  • [         R                  " S5      R                  R                  nU R	                  [        U5      S5        U R	                  US   R                  S5        U R	                  US   R                  S5        U R	                  US   R                  5       R                  5       S5        U H,  nU R                  [        U[         R                  5      5        M.     g )Nz<b>&amp;&#12AB;</b>é   r   ú&amp;r\   z&#12AB;)r	   rF   rb   r´   r8   r9   rŠ   r¸   rH   r˜   rµ   ÚEntityReference)r   Únodesrg   s      r   Útest_entitiesÚMicroDOMTests.test_entities  s¬   € Ü×$Ò$Ð%:Ó;×KÑK×VÑVˆØ×Ñœ˜U› QÔ'Ø×Ñ˜˜q™Ÿ™¨Ô0Ø×Ñ˜˜q™Ÿ™¨	Ô2Ø×Ñ˜˜q™×+Ñ+Ó-×3Ñ3Ó5°wÔ?ÛˆAØ�O‰OœJ q¬(×*BÑ*BÓCÖDò r   c                óH  • Sn[         R                  " U5      R                  R                  S   nU R	                  [        U[         R                  5      5        U R                  UR                  S5        U R                  UR                  5       R                  5       S5        g )Nz<x><![CDATA[</x>
 & foo]]></x>r   z</x>
 & fooz<![CDATA[</x>
 & foo]]>)r	   rF   rb   r´   r˜   rµ   ÚCDATASectionr8   rŠ   r¸   rH   )r   r:   Úcdatas      r   Ú
test_CDataÚMicroDOMTests.test_CData%  sw   € Ø/ˆÜ×$Ò$ QÓ'×7Ñ7×BÑBÀ1ÑEˆØ�‰œ
 5¬(×*?Ñ*?Ó@ÔAØ×Ñ˜Ÿ™Ð%5Ô6Ø×Ñ˜Ÿ™Ó*×0Ñ0Ó2Ð4PÕQr   c                óÜ  • SnSn[         R                  " U5      R                  R                  n[         R                  " U5      R                  R                  nU R	                  [        U5      S5        [        X45       Hj  u  pVU R                  [        U[         R                  5      5        U R	                  UR                  S5        U R                  UR                  U5      5        Ml     g )Nz<foo><b/><b /><b
/></foo>z<foo><b/><b/><b/></foo>r5   r¢   )r	   rF   rb   r´   r8   r9   Úzipr˜   rµ   ÚElementr³   ÚisEqualToNode)r   r:   rš   rÇ   Únodes2rg   Ún2s          r   Útest_singletonsÚMicroDOMTests.test_singletons,  s«   € Ø(ˆØ&ˆÜ×$Ò$ QÓ'×7Ñ7×BÑBˆÜ×%Ò% bÓ)×9Ñ9×DÑDˆØ×Ñœ˜U› QÔ'Ü˜Ö'‰EˆAØ�O‰OœJ q¬(×*:Ñ*:Ó;Ô<Ø×Ñ˜QŸZ™Z¨Ô-Ø�O‰O˜AŸO™O¨BÓ/Ö0ò (r   c                ó  • Sn[         R                  " U5      R                  nU R                  UR	                  S5      S5        U R                  UR	                  S5      S 5        U R                  UR                  S5      5        U R                  UR                  S5      (       + 5        UR                  S5      nU R                  UR                  S5        UR                  SS5        U R                  UR	                  S5      S5        g )Nz<foo a="b" />r]   r¢   r¹   Úfoor±   )
r	   rF   rb   r8   r¤   r˜   ÚhasAttributeÚgetAttributeNoder·   ÚsetAttribute)r   r:   Únoder]   s       r   Útest_attributesÚMicroDOMTests.test_attributes7  sÓ   € ØˆÜ×#Ò# AÓ&×6Ñ6ˆà×Ñ˜×*Ñ*¨3Ó/°Ô5Ø×Ñ˜×*Ñ*¨3Ó/°Ô6Ø�‰˜×)Ñ)¨#Ó.Ô/Ø�‰˜D×-Ñ-¨cÓ2Ô2Ô3Ø×!Ñ! #Ó&ˆØ×Ñ˜Ÿ™ #Ô&à×Ñ˜% Ô'Ø×Ñ˜×*Ñ*¨5Ó1°5Õ9r   c                ó  • Sn[         R                  " U5      R                  nU R                  UR                   Vs/ s H  o3R
                  PM     sn/ SQ5        U R                  UR                  5       R
                  S5        U R                  UR                  5       R
                  S5        U R                  UR                  5       5        U R                  UR                  5       R                  5       (       + 5        g s  snf )Nz'<foo><bar /><baz /><bax>foo</bax></foo>)r±   ÚbazÚbaxrá   r±   )
r	   rF   rb   r8   r´   r³   Ú	lastChildrG   r˜   ÚhasChildNodesrw   s       r   Útest_childrenÚMicroDOMTests.test_childrenE  s±   € Ø5ˆÜ× Ò  Ó#×3Ñ3ˆØ×Ñ¨a¯lªlÓ;ªl¨Ÿ*œ*©lÑ;Ò=RÔSØ×Ñ˜Ÿ™›×/Ñ/°Ô7Ø×Ñ˜Ÿ™›×0Ñ0°%Ô8Ø�‰˜Ÿ™Ó)Ô*Ø�‰˜AŸL™L›N×8Ñ8Ó:Ô:Õ;ùò	 <s   ¼Dc                óì  • SnSnSn[         R                  " U5      R                  n[         R                  " U5      R                  n[         R                  " U5      R                  nUR                  UR	                  5       5        UR                  SS5        UR                  S   nU R                  UR                  S5      S 5        U R                  UR                  S5        UR                  [         R                  " S5      U5        U R                  UR                  S   R                  S5        U R                  UR                  S	   U5        UR                   H  nU R                  UR                  U5        M!     U R                  UR                  U5      5        UR                  U5        U R                  [!        UR                  5      S	5        U R                  UR                  S   R                  S5        [         R"                  " S5      n	UR%                  X”R'                  5       5        U R                  UR'                  5       U	5        U R                  UR                  U5      5        g )
Nr²   z<foo a="b"><bar/><foo/></foo>z<foo a="b">foo</foo>r]   r¢   r   rØ   r±   r\   )r	   rF   rb   ÚappendChildr¸   rÛ   r´   r8   r¤   r³   ÚinsertBeforerÑ   rm   r˜   rÒ   ÚremoveChildr9   r¿   ÚreplaceChildrG   )
r   r:   Ús1rš   rL   Úd1r›   Úchildrg   Úts
             r   Útest_mutateÚMicroDOMTests.test_mutateN  sÃ  € ØˆØ,ˆØ#ˆÜ× Ò  Ó#×3Ñ3ˆÜ×!Ò! "Ó%×5Ñ5ˆÜ×!Ò! "Ó%×5Ñ5ˆà	�‰�a—k‘k“mÔ$Ø	�‰�s˜CÔ Ø—‘˜Q‘ˆØ×Ñ˜×+Ñ+¨CÓ0°$Ô7Ø×Ñ˜Ÿ™¨Ô/à	�‰”x×'Ò'¨Ó.°Ô6Ø×Ñ˜Ÿ™ a™×1Ñ1°5Ô9Ø×Ñ˜Ÿ™ a™¨%Ô0Ø—”ˆAØ×Ñ˜QŸ\™\¨1Ö-ñ à�‰˜Ÿ™¨Ó+Ô,à	�‰�eÔØ×Ñœ˜QŸ\™\Ó*¨AÔ.Ø×Ñ˜Ÿ™ a™×1Ñ1°5Ô9ä�MŠM˜%Ó ˆØ	�‰�qŸ,™,›.Ô)Ø×Ñ˜Ÿ™›¨Ô+Ø�‰˜Ÿ™¨Ó+Õ,r   c                óÊ   • [         R                  " S5      n[         R                  " S5      n[         R                  " S5      nU R                  [        UR                  X25        g)z…
L{Node.replaceChild} raises L{ValueError} if the node given to be
replaced is not a child of the node C{replaceChild} is called on.
r²   z<bar />z<baz />N)r	   rF   r{   Ú
ValueErrorrê   )r   ÚparentÚorphanÚreplacements       r   Útest_replaceNonChildÚ"MicroDOMTests.test_replaceNonChildl  sL   € ô
 ×%Ò% iÓ0ˆÜ×%Ò% iÓ0ˆÜ×*Ò*¨9Ó5ˆà×Ñœ* f×&9Ñ&9¸;ÕOr   c                óh  • SnSn[         R                  " U5      n[         R                  " USSS9n[         R                  " USSS9nUR                  nU R                  UR	                  5       UR                  S5      5        U R                  UR                  S5      XfR                  5       R	                  5       /5        UR                  nU R                  UR	                  5       UR                  S5      5        U R                  UR                  S5      U/5        U R                  UR                  S	5      UR                  5       R	                  5       /5        U R                  UR                  S5      / 5        UR                  nU R                  UR	                  5       UR                  S5      5        U R                  UR                  S
5      XfR                  5       R	                  5       /5        U R                  UR                  S5      XfR                  5       R	                  5       /5        g )Nz,<foo><bar id='me' /><baz><foo /></baz></foo>z,<fOo><bAr id='me' /><bAz><fOO /></bAz></fOo>r   r\   r”   ÚmerØ   ÚfOoÚfOOÚFOO)r	   rF   rb   r8   rG   ÚgetElementByIdr‹   râ   )r   r:   rš   rL   r›   rœ   Úroots          r   Útest_searchÚMicroDOMTests.test_searchw  sÍ  € Ø:ˆØ;ˆÜ× Ò  Ó#ˆÜ×!Ò! "°aÀaÑHˆÜ×!Ò! "°aÀaÑHˆà× Ñ ˆØ×Ñ˜Ÿ™Ó*¨A×,<Ñ,<¸TÓ,BÔCØ×ÑØ×"Ñ" 5Ó)¨D·.±.Ó2B×2MÑ2MÓ2OÐ+Pô	
ð ×!Ñ!ˆØ×Ñ˜Ÿ™Ó*¨B×,=Ñ,=¸dÓ,CÔDØ×Ñ˜×0Ñ0°Ó7¸$¸Ô@Ø×ÑØ×#Ñ# EÓ*¨T¯^©^Ó-=×-HÑ-HÓ-JÐ,Kô	
ð 	×Ñ˜×0Ñ0°Ó7¸Ô<à×!Ñ!ˆØ×Ñ˜Ÿ™Ó*¨B×,=Ñ,=¸dÓ,CÔDØ×ÑØ×#Ñ# EÓ*¨T·>±>Ó3C×3NÑ3NÓ3PÐ,Qô	
ð 	×ÑØ×#Ñ# EÓ*¨T·>±>Ó3C×3NÑ3NÓ3PÐ,Qõ	
r   c                ó„  • SnSn[         R                  " U5      n[         R                  " U5      nU R                  UR                  S5        U R                  UR	                  5       U5        U R                  UR                  U5      5        U R                  UR                  R                  UR                  5      5        g )Nz`<?xml version="1.0"?><!DOCTYPE foo PUBLIC "baz" "http://www.example.com/example.dtd"><foo></foo>ú<foo/>ú5foo PUBLIC "baz" "http://www.example.com/example.dtd")
r	   rF   r8   ÚdoctyperH   ÚassertFalser™   r˜   rb   rÒ   )r   r:   rš   rL   r›   s        r   Útest_doctypeÚMicroDOMTests.test_doctype•  sŸ   € ðð 	
ð
 ˆÜ× Ò  Ó#ˆÜ×!Ò! "Ó%ˆØ×ÑØ�I‰IÐNô	
ð 	×Ñ˜Ÿ™› AÔ&Ø×Ñ˜×,Ñ,¨RÓ0Ô1Ø�‰˜×)Ñ)×7Ñ7¸×8JÑ8JÓKÕLr   ))z<img/>z<img />)ú<foo A='b'>x</foo>ú<foo A="b">x</foo>)z<foo><BAR /></foo>z<foo><BAR></BAR></foo>)ú"<foo>hello there &amp; yoyoy</foo>r
  c                ó  • U R                    Hz  u  p[        R                  " USS9n[        R                  " USS9nUR                  R	                  5       nU R                  X%5        U R                  UR                  U5      5        M|     g )Nr   ©r•   )Úsamplesr	   rF   rb   rH   r8   r˜   r™   )r   r:   ÚoutrL   r›   ÚtestOuts         r   Útest_outputÚMicroDOMTests.test_output¬  so   € Ø—l”l‰FˆAÜ×$Ò$ Q¸Ñ:ˆAÜ×%Ò% c¸1Ñ=ˆBØ×'Ñ'×-Ñ-Ó/ˆGØ×Ñ˜SÔ*Ø�O‰O˜A×/Ñ/°Ó3Ö4ò #r   c                ó`   • S H(  nU R                  [        [        R                  U5        M*     g )N)z<foo>&am</foo>z<fooz<f>&</f>z<() />)r{   Ú	Exceptionr	   rF   r�   s     r   Útest_errorsÚMicroDOMTests.test_errors´  s%   € ÛAˆAØ×Ñœi¬×)=Ñ)=¸qÖAò Br   c                óÄ  • SnSnSnSn[         R                  " U5      n[         R                  " U5      n[         R                  " USS9n[         R                  " USSS9n[         R                  " USSS9n	[         R                  " USSS9n
[         R                  " U5      R                  R                  5       nU R	                  [         R
                  [         R                  USS9  U R                  X²5        U R                  UR                  U5      5        U R                  UR                  U5      5        U R                  UR                  R                  S	5      5        U R                  U
R                  R                  S	5      5        U R                  UR                  R                  5       S
5        U R                  U	R                  R                  5       S5        g )Nz<foo a='b'><BAx>x</bax></FOO>ú<foo a="b"><bax>x</bax></foo>z<FOO a='b'><BAx>x</BAx></FOO>r  r\   r  r”   r   r]   r	  z<foo a="b">x</foo>)r	   rF   rb   rH   r{   r­   r8   r˜   r™   rÙ   r  )r   r:   rš   Ús3Ús4rL   r›   rœ   r�   rž   Úd6r  s               r   Útest_caseInsensitiveÚ"MicroDOMTests.test_caseInsensitive¸  s…  € Ø+ˆØ,ˆØ,ˆØ!ˆÜ× Ò  Ó#ˆÜ×!Ò! "Ó%ˆÜ×!Ò! "°aÑ8ˆÜ×!Ò! "°aÀaÑHˆÜ×!Ò! "°aÀaÑHˆÜ×!Ò! "°aÀaÑHˆÜ×"Ò" 1Ó%×5Ñ5×;Ñ;Ó=ˆØ×ÑÜ×#Ñ#¤X×%9Ñ%9¸1Èað 	ñ 	
ð 	×Ñ˜Ô!Ø�‰˜×+Ñ+¨BÓ/Ô0Ø�‰˜×+Ñ+¨BÓ/Ô0Ø�‰˜×*Ñ*×7Ñ7¸Ó<Ô=Ø×Ñ˜×+Ñ+×8Ñ8¸Ó=Ô>Ø×Ñ˜×+Ñ+×1Ñ1Ó3Ð5IÔJØ×Ñ˜×+Ñ+×1Ñ1Ó3Ð5IÕJr   c                ó"  • Sn[         R                  " U5      nU R                  UR                  R	                  5       (       + UR                  R
                  5        U R                  UR                  [         R                  " S5      5      5        g )Nz<hello>
        </hello>z<hello></hello>)r	   rF   r˜   rb   rã   r´   r™   rU   s      r   Útest_eatingWhitespaceÚ#MicroDOMTests.test_eatingWhitespaceÏ  sm   € ðˆä× Ò  Ó#ˆØ�‰Ø×!Ñ!×/Ñ/Ó1Ô1°1×3DÑ3D×3OÑ3Oô	
ð 	�‰˜×+Ñ+¬H×,@Ò,@ÐARÓ,SÓTÕUr   c                ó,  • SnS HM  u  p#[         R                  " U SU S3SS9nU R                  UR                  R	                  5       SU-  5        MO     [         R                  " SSS9nU R                  UR                  R	                  5       S	5        g )
Nz<?xml version='1.0'?>))Ú&rÅ   )z& z&amp; )rÅ   rÅ   )z&hello monkeyz&amp;hello monkeyz<pre>z</pre>r\   rB   z<pre>%s</pre>z<t>hello & there</t>z<t>hello &amp; there</t>©r	   rF   r8   rb   rH   )r   ÚprefixÚiÚorL   s        r   Útest_lenientAmpersandÚ#MicroDOMTests.test_lenientAmpersandØ  s�   € Ø(ˆó
‰DˆAô ×$Ò$¨ x¨u°Q°C°vÐ%>ÐSTÑUˆAØ×Ñ˜Q×.Ñ.×4Ñ4Ó6¸È!Ñ8KÖLñ
ô × Ò Ð!7ÈAÑNˆØ×Ñ˜×*Ñ*×0Ñ0Ó2Ð4NÕOr   c                óž   • [         R                  " SSS9nU R                  UR                  R	                  5       R                  5       S5        g )Nz3<?xml version='1.0'?><bar><xA><y>c</Xa> <foo></bar>r\   rB   z<xa><y>c</y></xa>)r	   rF   r8   rb   rG   rH   )r   rL   s     r   Útest_insensitiveLenientÚ%MicroDOMTests.test_insensitiveLenientç  sC   € ä× Ò ØAÐVWñ
ˆð 	×Ñ˜×*Ñ*×5Ñ5Ó7×=Ñ=Ó?ÐATÕUr   c                óŒ   • Sn[         R                  " USS9nSnUR                  R                  5       nU R	                  X45        g )Nz<ul><li>foo<li>bar<li>baz</ul>r\   rB   z-<ul><li>foo</li><li>bar</li><li>baz</li></ul>©r	   rF   rb   rH   r8   ©r   r:   rL   ÚexpectedÚactuals        r   Útest_laterCloserSimpleÚ$MicroDOMTests.test_laterCloserSimpleî  s@   € Ø,ˆÜ× Ò  °qÑ9ˆØBˆØ×"Ñ"×(Ñ(Ó*ˆØ×Ñ˜Õ*r   c                óŒ   • Sn[         R                  " USS9nSnUR                  R                  5       nU R	                  X45        g )Nz<DL><p><DT>foo<DD>bar</DL>r\   rB   z(<dl><p></p><dt>foo</dt><dd>bar</dd></dl>r,  r-  s        r   Útest_laterCloserCaseInsensitiveÚ-MicroDOMTests.test_laterCloserCaseInsensitiveõ  s@   € Ø(ˆÜ× Ò  °qÑ9ˆØ=ˆØ×"Ñ"×(Ñ(Ó*ˆØ×Ñ˜Õ*r   c                óŒ   • SnSn[         R                  " USS9nUR                  R                  5       nU R	                  X$5        g )NzK<dl><dt>word<dd>definition<dt>word<dt>word<dd>definition<dd>definition</dl>zi<dl><dt>word</dt><dd>definition</dd><dt>word</dt><dt>word</dt><dd>definition</dd><dd>definition</dd></dl>r\   rB   r,  )r   r:   r.  rL   r/  s        r   Útest_laterCloserDLÚ MicroDOMTests.test_laterCloserDLü  sL   € ðð 	
ðð 	ô × Ò  °qÑ9ˆØ×"Ñ"×(Ñ(Ó*ˆØ×Ñ˜Õ*r   c                óÐ  ^• SS K mSnSnSnSU4S jjn[        R                  " U" UR                  S5      5      5      n[        R                  " UR                  S5      5      n[        R                  " U5      nU R	                  UR                  U5      5        U R	                  UR                  U5      5        [        R                  " U5      n[        R                  " U" U5      5      n[        R                  " U5      nU R	                  UR                  U5      5        U R	                  UR                  U5      5        [        R                  " S5      nSn	[        R                  " 5       R                  S	S
S9R                  n
UR                  nUR                  U
5        UR                  UR                  S	5      5        U R                  UR                  5       U	S-   5        g )Nr   z<foo><bar><baz /></bar></foo>ub   <?xml version="1.0" encoding="UCS-2" ?>
<JAPANESE>
<TITLE>å°‚é–€å®¶ãƒªã‚¹ãƒˆ </TITLE></JAPANESE>s®   ÿþ< ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " U C S - 2 "   ? >  
 < J A P A N E S E >  
 < T I T L E > \€•¶[ê0¹0È0  < / T I T L E > < / J A P A N E S E > c                óŠ   >• [        [        U 5      S-  5      S-   nTR                  " SU-   /TR                  SU-   U 5      Q76 $ )NrÄ   ÚHÚ<ru   )r*   r9   ÚpackÚunpack)r:   ÚfmtÚstructs     €r   ÚreverseBytesÚ9MicroDOMTests.test_unicodeTolerance.<locals>.reverseBytes  sA   ø€ Ü”c˜!“f ‘kÓ" SÑ(ˆCØ—;’;˜s S™yÐG¨6¯=©=¸¸s¹ÀAÓ+FÒGÐGr   zUTF-16r  z<?xml version="1.0"?>u   âˆšr\   ©Úrawu#   <foo><div>âˆš</div><!--âˆš--></foo>)r:   Úbytesr(   rD  )r?  r	   rF   Úencoder˜   r™   Úlmxr$   rÜ   rb   rç   ÚcreateCommentr8   rH   )r   r:   ÚjÚj2r@  ÚurdÚudÚsdÚj3ÚhdrÚdivÚder?  s               @r   Útest_unicodeToleranceÚ#MicroDOMTests.test_unicodeTolerance  s†  ø€ Ûà+ˆðNð 	
ð
Pð 	÷	Hô ×"Ò"¡<°·±¸Ó0BÓ#CÓDˆÜ×!Ò! !§(¡(¨8Ó"4Ó5ˆÜ×!Ò! !Ó$ˆØ�‰˜×,Ñ,¨RÓ0Ô1Ø�‰˜×,Ñ,¨SÓ1Ô2Ü×!Ò! !Ó$ˆÜ×"Ò"¡<°Ó#3Ó4ˆÜ×!Ò! "Ó%ˆØ�‰˜×,Ñ,¨RÓ0Ô1Ø�‰˜×,Ñ,¨SÓ1Ô2ô ×!Ò! (Ó+ˆØ%ˆÜ�lŠl‹n×!Ñ! (°Ð!Ð2×7Ñ7ˆØ×ÑˆØ
�‰�sÔØ
�‰�r×'Ñ'¨Ó1Ô2Ø×ÑØ�H‰H‹J˜ÐJÑJõ	
r   c                ó4  • SSSS.nUR                  5        H~  n[        R                  " U5      R                  n[        R
                  " US5      nU R                  [        U5      X   5        U(       d  M`  U R                  [        US   S5      5        M€     g )Nr5   r   r\   )z:<foo><bar /><bar unf='1' /><bar>asdfadsf</bar><bam/></foo>z<foo>asdf</foo>z!<foo><bar><bar></bar></bar></foo>r±   ÚtagName)
Úkeysr	   rF   rb   r   ÚnamedChildrenr8   r9   r˜   Úhasattr)r   Útestsrî   rÜ   Úresults        r   Útest_namedChildrenÚ MicroDOMTests.test_namedChildren:  s~   € àMNØ Ø12ñ
ˆð
 —‘–ˆAÜ×'Ò'¨Ó*×:Ñ:ˆDÜ×-Ò-¨d°EÓ:ˆFØ×ÑœS ›[¨%©(Ô3ßˆvØ—‘¤¨¨q©	°9Ó =Ö>ò r   c                ó®  • Sn[         R                  " U5      R                  nUR                  SS9nU R	                  X#5        U R                  [        UR                  5      [        UR                  5      5        UR                  5       UR                  5       pTU R	                  XE5        U R                  [        UR                  5      [        UR                  5      5        U R	                  UR                  5       UR                  5       5        U R                  XR                  5       5        U R                  UR                  UR                  5        g )Nr  r\   ©Údeep)r	   rF   rb   r¸   ÚfailIfEqualsr8   r9   r´   rG   rH   Ú	namespace)r   r:   rÜ   rÀ   Úc1rº   s         r   Útest_cloneNodeÚMicroDOMTests.test_cloneNodeG  sî   € Ø+ˆÜ×#Ò# AÓ&×6Ñ6ˆØ—‘ A�Ð&ˆØ×Ñ˜$Ô&Ø×Ñœ˜TŸ_™_Ó-¬s°5×3CÑ3CÓ/DÔEØ—‘Ó" E×$4Ñ$4Ó$6ˆBØ×Ñ˜"Ô!Ø×Ñœ˜RŸ]™]Ó+¬S°·±Ó-?Ô@Ø×Ñ˜"Ÿ-™-›/¨2¯=©=«?Ô;Ø×Ñ˜ŸK™K›MÔ*Ø×Ñ˜Ÿ™¨¯©Õ9r   c                ó¢  • Sn[         R                  " U5      nUR                  SS9nU R                  X#5        U R	                  [        UR                  5      [        UR                  5      5        U R	                  XR                  5       5        U R                  UR                  U5      5        U R                  UR                  U5      5        g )Nz˜<?xml version="1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><foo></foo>r\   r]  )
r	   rF   r¸   r_  r8   r9   r´   rH   r˜   r™   )r   r:   rÜ   rÀ   s       r   Útest_cloneDocumentÚ MicroDOMTests.test_cloneDocumentT  s£   € ðTð 	
ô ×#Ò# AÓ&ˆØ—‘ A�Ð&ˆØ×Ñ˜$Ô&Ø×Ñœ˜TŸ_™_Ó-¬s°5×3CÑ3CÓ/DÔEØ×Ñ˜ŸK™K›MÔ*à�‰˜×/Ñ/°Ó5Ô6Ø�‰˜×.Ñ.¨uÓ5Õ6r   c                óD  • [         R                  " S5      n[         R                  " U5      nUR                  S5        UR	                  SS9nSUR                  5       S'   UR                  5         UR                  SSS9  S	nU R                  XAR                  5       5        g )
NÚprØ   r¹   )r]   Úzr±   Úy)r¹   zF<p>foo<b a="c"><foo z="foo"></foo><foo></foo><bar c="y"></bar></b></p>)	r	   rÑ   rF  r$   r¢   rØ   Úaddr8   rH   )r   rg   rF  r¢   r:   s        r   Útest_LMXÚMicroDOMTests.test_LMXd  sz   € Ü×Ò˜SÓ!ˆÜ�lŠl˜1‹oˆØ�‰�ŒØ�E‰E�CˆEˆLˆØˆ�‰‹�‰Ø	�‰ŒØ	�‰ˆe�sˆÑàTˆØ×Ñ˜ŸG™G›IÕ&r   c                óF   • [         R                  " S5      n[        U5        g)z)
Returns a dictionary which is hashable.
rh  N)r	   rÑ   Úhash)r   rg   s     r   Ú	test_dictÚMicroDOMTests.test_dictp  s   € ô ×Ò˜SÓ!ˆÜˆQ�r   c                ó¦   • SnSn[         R                  " U5      nU R                  X25        U R                  [         R                  " U5      U5        g )Nz&'some "stuff"', <what up?>z/&amp;'some &quot;stuff&quot;', &lt;what up?&gt;)r	   Úescaper8   Úunescape)r   rC  ÚcookedÚesc1s       r   Útest_escapingÚMicroDOMTests.test_escapingw  sC   € à-ˆØBˆÜ�Š˜sÓ#ˆØ×Ñ˜Ô&Ø×Ñœ×*Ò*¨4Ó0°#Õ6r   c                óð  • Sn[         R                  " U5      nUR                  5       nU R                  UR                  R
                  S5        U R                  UR                  R                  S5      S   R
                  S5        U R                  UR                  R                  S5      S   R                  SS5      S5        [         R                  " U5      nU R                  UR                  R
                  S5        U R                  UR                  R                  S5      S   R
                  S5        U R                  UR                  R                  S5      S   R                  SS5      S5        g )Nz¹
        <x xmlns="base">
        <y />
        <y q="1" x:q="2" y:q="3" />
        <y:y xml:space="1">here is    some space </y:y>
        <y:y />
        <x:y />
        </x>
        Úbaserj  r   r\   ÚqÚ1)r	   rF   Útoprettyxmlr8   rb   r`  r‹   ÚgetAttributeNS)r   r:   rL   rš   r›   s        r   Útest_namespacesÚMicroDOMTests.test_namespaces  sB  € ðˆô × Ò  Ó#ˆà�]‰]‹_ˆØ×Ñ˜×*Ñ*×4Ñ4°fÔ=Ø×ÑØ×Ñ×2Ñ2°3Ó7¸Ñ:×DÑDÀfô	
ð 	×ÑØ×Ñ×2Ñ2°3Ó7¸Ñ:×IÑIÈ&ÐRUÓVØô	
ô
 ×!Ò! "Ó%ˆØ×Ñ˜×+Ñ+×5Ñ5°vÔ>Ø×ÑØ×Ñ×3Ñ3°CÓ8¸Ñ;×EÑEÀvô	
ð 	×ÑØ×Ñ×3Ñ3°CÓ8¸Ñ;×JÑJÈ6ÐSVÓWØõ	
r   c                ór   • Sn[         R                  " U5      R                  5       nU R                  X5        g)zG
Test that C{toxml} can support xml structures that remove namespaces.
z`<?xml version="1.0"?><html xmlns="http://www.w3.org/TR/REC-html40"><body xmlns=""></body></html>N)r	   rF   rH   r8   )r   rë   rš   s      r   Útest_namespaceDeleteÚ"MicroDOMTests.test_namespaceDeleteŸ  s5   € ð
,ð 	ô ×!Ò! "Ó%×+Ñ+Ó-ˆØ×Ñ˜Õ r   c                óª   • [         R                  " S5      n[         R                  " SSS9nU/Ul        U R                  UR	                  5       S5        g)zŠ
Check that unspecified namespace is a thing separate from undefined
namespace. This test added after discovering some weirdness in Lore.
ÚolrO  zhttp://www.w3.org/1999/xhtml©r`  z9<div xmlns="http://www.w3.org/1999/xhtml"><ol></ol></div>N)r	   rÑ   r´   r8   rH   )r   rí   ró   s      r   Útest_namespaceInheritanceÚ'MicroDOMTests.test_namespaceInheritanceª  sK   € ô × Ò  Ó&ˆÜ×!Ò! %Ð3QÑRˆØ"˜GˆÔØ×ÑØ�L‰L‹NÐWõ	
r   c                óh  • SnSn[         R                  " 5       nUR                  SUS9nUR                  US05        UR                  SUS9nUR                  SUS9nUR	                  U5        UR	                  U5        UR	                  U5        SnUR                  5       nU R                  X‡5        g	)
zÔ
XML elements with a prefixed name as per upper level tag definition
have a start-tag of C{"<prefix:tag>"} and an end-tag of
C{"</prefix:tag>"}.

Refer to U{http://www.w3.org/TR/xml-names/#ns-using} for details.
úhttp://example.com/outerúhttp://example.com/innerrþ   r†  ÚinnerÚtagrí   zœ<?xml version="1.0"?><root xmlns="http://example.com/outer" xmlns:inner="http://example.com/inner"><inner:tag><inner:child></inner:child></inner:tag></root>N)r	   ÚDocumentÚcreateElementÚaddPrefixesrç   rH   r8   )	r   ÚouterNamespaceÚinnerNamespaceÚdocumentrþ   r�  rí   ÚxmlOkÚxmlOuts	            r   Útest_prefixedTagsÚMicroDOMTests.test_prefixedTags·  sÄ   € ð 4ˆØ3ˆä×$Ò$Ó&ˆð ×%Ñ% f¸Ð%ÐGˆð 	×Ñ˜.¨'Ð2Ô3ð ×$Ñ$ U°nÐ$ÐEˆð ×&Ñ& w¸.Ð&ÐIˆà�‰˜ÔØ×Ñ˜ÔØ×Ñ˜TÔ"ðð 	ð —‘Ó!ˆØ×Ñ˜Õ'r   c                óh  • SnSn[         R                  " 5       nUR                  SUS9nUR                  U5        UR	                  US05        UR                  SUS9nUR                  U5        UR                  SUS9nUR                  U5        SnUR                  5       nU R                  X‡5        g	)
a¦  
Children of prefixed tags respect the default namespace at the point
where they are rendered.  Specifically, they are not influenced by the
prefix of their parent as that prefix has no bearing on them.

See U{http://www.w3.org/TR/xml-names/#scoping} for details.

To further clarify the matter, the following::

    <root xmlns="http://example.com/ns/test">
        <mytag xmlns="http://example.com/ns/mytags">
            <mysubtag xmlns="http://example.com/ns/mytags">
                <element xmlns="http://example.com/ns/test"></element>
            </mysubtag>
        </mytag>
    </root>

Should become this after all the namespace declarations have been
I{moved up}::

    <root xmlns="http://example.com/ns/test"
          xmlns:mytags="http://example.com/ns/mytags">
        <mytags:mytag>
            <mytags:mysubtag>
                <element></element>
            </mytags:mysubtag>
        </mytags:mytag>
    </root>
rŠ  r‹  rþ   r†  rŒ  ÚmytagÚmysubtagzš<?xml version="1.0"?><root xmlns="http://example.com/outer" xmlns:inner="http://example.com/inner"><inner:mytag><mysubtag></mysubtag></inner:mytag></root>N)r	   rŽ  r�  rç   r�  rH   r8   )	r   r‘  r’  r“  rþ   r™  rš  r”  r•  s	            r   Útest_prefixPropagationÚ$MicroDOMTests.test_prefixPropagationâ  sÂ   € ð< 4ˆØ3ˆä×$Ò$Ó&ˆà×%Ñ% f¸Ð%ÐGˆØ×Ñ˜TÔ"ð 	×Ñ˜.¨'Ð2Ô3Ø×&Ñ& w¸.Ð&ÐIˆØ×Ñ˜Ôð ×)Ñ)¨*ÀÐ)ÐOˆØ×Ñ˜(Ô#ðð 	ð —‘Ó!ˆØ×Ñ˜Õ'r   c                óÀ   • [        [        5        U R                  U R                  /5      nU R	                  S[        U5      5        U R	                  SUS   S   5        g)z/
An import will raise the deprecation warning.
r\   z6twisted.web.microdom was deprecated at Twisted 23.10.0r   ÚmessageN)r   r	   ÚflushWarningsÚtest_deprecationr8   r9   )r   Úwarningss     r   r   ÚMicroDOMTests.test_deprecation  sV   € ô 	ŒxÔØ×%Ñ% t×'<Ñ'<Ð&=Ó>ˆØ×Ñ˜œC ›MÔ*Ø×ÑØDØ�Q‰K˜	Ñ"õ	
r   r0   Nr'   )8r+   r,   r-   r.   rN   rQ   rV   rY   rh   rn   rr   rx   r}   r‚   r†   rŒ   r�   rŸ   r§   rª   r®   r»   rÁ   rÈ   rÍ   rÕ   rÝ   rä   rï   rö   rÿ   r  r  r  r  r  r  r&  r)  r0  r3  r6  rQ  rZ  rb  re  rl  rp  rw  r  r‚  r‡  r–  r›  r   r/   r0   r   r   r?   r?   ,   s  † ô
ô 
RôLôRô/ô$

ô	
ô-ôDôXô$ô4
ô"
ô$Wô03ô4ôPô
7ô0ôEôRô	1ô:ô<ô-ô<	Pô
ô<Mò €Gô5ôBôKô.VôPôVô+ô+ô+ô"+
ôZ?ô:ô7ô 
'ôô7ô
ô@	!ô
ô)(ôV9(÷v

r   r?   c                  óh   • \ rS rSrSr S       SS jjrSS jrSS jrSS jrSS jr	SS jr
S	rg
)ÚBrokenHTMLTestsi*  a+  
Tests for when microdom encounters very bad HTML and C{beExtremelyLenient}
is enabled. These tests are inspired by some HTML generated in by a mailer,
which breaks up very long lines by splitting them with '!\n '.
The expected behaviour is loosely modelled on the way Firefox treats very
bad HTML.
c                ó€   • [         R                  " XS9nU R                  UR                  R	                  5       U5        g)zq
Check that C{input}, when parsed, produces a DOM where the XML
of the document element is equal to C{expected}.
rB   Nr"  )r   Úinputr.  rC   Úoutputs        r   ÚcheckParsedÚBrokenHTMLTests.checkParsed3  s3   € ô ×%Ò% eÑSˆØ×Ñ˜×/Ñ/×5Ñ5Ó7¸ÕBr   c                ó.   • SnSnU R                  X5        g)z€
Check that microdom does its best to handle broken attribute names.
The important thing is that it doesn't raise an exception.
z6<body><h1><div al!
 ign="center">Foo</div></h1></body>z;<body><h1><div al="True" ign="center">Foo</div></h1></body>N©r¨  ©r   r¦  r.  s      r   Útest_brokenAttributeNameÚ(BrokenHTMLTests.test_brokenAttributeName=  s   € ð
 JˆØSˆØ×Ñ˜Õ)r   c                ó.   • SnSnU R                  X5        g)z:
Check that microdom encompasses broken attribute values.
z6<body><h1><div align="cen!
 ter">Foo</div></h1></body>Nr«  r¬  s      r   Útest_brokenAttributeValueÚ)BrokenHTMLTests.test_brokenAttributeValueF  s   € ð JˆØLˆØ×Ñ˜Õ)r   c                ó.   • SnSnU R                  X5        g)z}
Check that microdom does its best to handle broken opening tags.
The important thing is that it doesn't raise an exception.
z2<body><h1><sp!
 an>Hello World!</span></h1></body>z5<body><h1><sp an="True">Hello World!</sp></h1></body>Nr«  r¬  s      r   Útest_brokenOpeningTagÚ%BrokenHTMLTests.test_brokenOpeningTagN  s   € ð
 FˆØJˆØ×Ñ˜Õ)r   c                óL   • U R                  SS5        U R                  SS5        g)z�
Check that microdom does its best to handle broken self-closing tags
The important thing is that it doesn't raise an exception.
z<body><span /!
></body>z<body><span></span></body>z
<span!
 />z<span></span>Nr«  r   s    r   Útest_brokenSelfClosingTagÚ)BrokenHTMLTests.test_brokenSelfClosingTagW  s&   € ð
 	×ÑÐ3Ð5QÔRØ×Ñ˜¨Õ8r   c                ó¤   • SnSnU R                  X5        SnU R                  X5        SnU R                  X5        SnSnU R                  X5        g)z}
Check that microdom does its best to handle broken closing tags.
The important thing is that it doesn't raise an exception.
z1<body><h1><span>Hello World!</sp!
an></h1></body>z/<body><h1><span>Hello World!</span></h1></body>z1<body><h1><span>Hello World!</!
span></h1></body>z1<body><h1><span>Hello World!</span!
></h1></body>z1<body><h1><span>Hello World!<!
/span></h1></body>z6<body><h1><span>Hello World!<!></!></span></h1></body>Nr«  r¬  s      r   Útest_brokenClosingTagÚ%BrokenHTMLTests.test_brokenClosingTag_  s[   € ð
 EˆØDˆØ×Ñ˜Ô)ØDˆØ×Ñ˜Ô)ØDˆØ×Ñ˜Ô)ØDˆØKˆØ×Ñ˜Õ)r   r0   N)r\   )r¦  r*   r.  r*   rC   Úintr(   r)   r'   )r+   r,   r-   r.   Ú__doc__r¨  r­  r°  r³  r¶  r¹  r/   r0   r   r   r¤  r¤  *  sQ   † ñð DEðCØðCØ$'ðCØ=@ðCà	õCô*ô*ô*ô9÷*r   r¤  c                  ó,   • \ rS rSrSrSS jrSS jrSrg)Ú	NodeTestsip  z
Tests for L{Node}.
c                óœ  • [         R                  " [        5       5      nU R                  UR	                  U5      5        [         R                  " [        5       5      nU R                  UR	                  U5      5        UR                  [         R                  " [        5       5      5        U R                  UR	                  U5      5        UR                  [         R                  " [        5       5      5        U R                  UR	                  U5      5        UR                  5       R                  [         R                  " [        5       5      5        U R                  UR	                  U5      5        UR                  5       R                  [         R                  " [        5       5      5        U R                  UR	                  U5      5        g)z_
L{Node.isEqualToNode} returns C{True} if and only if passed a L{Node}
with the same children.
N)r	   ÚNodeÚobjectr˜   rÒ   rç   r  rG   )r   rÜ   Úanothers      r   Útest_isNodeEqualToÚNodeTests.test_isNodeEqualTou  s,  € ô �}Š}œV›XÓ&ˆØ�‰˜×*Ñ*¨4Ó0Ô1Ü—-’-¤£Ó)ˆà�‰˜×*Ñ*¨7Ó3Ô4Ø×ÑœŸš¤v£xÓ0Ô1à×Ñ˜×+Ñ+¨GÓ4Ô5Ø×ÑœHŸMšM¬&«(Ó3Ô4ð 	�‰˜×*Ñ*¨7Ó3Ô4ð 	�‰Ó×%Ñ%¤h§m¢m´F³HÓ&=Ô>Ø×Ñ˜×+Ñ+¨GÓ4Ô5ð 	×ÑÓ×(Ñ(¬¯ª´v³xÓ)@ÔAØ�‰˜×*Ñ*¨7Ó3Õ4r   c                ó¸  • [         R                  " 5       n[         R                  " 5       nUR                  U5        U R                  [        UR                  S5        U R                  [        UR
                  US5        U R                  [        UR
                  SU5        U R                  [        UR
                  SS5        UR                  U5        U R                  [        UR                  S5        U R                  [        UR                  US5        U R                  [        UR                  SU5        U R                  [        UR                  SS5        g)z?
Children of L{Node} instances must also be L{Node} instances.
N)r	   rÀ  rç   r{   Ú	TypeErrorrè   ré   rê   )r   rÜ   rí   s      r   Útest_validChildInstanceÚ!NodeTests.test_validChildInstance�  s  € ô �}Š}‹ˆÜ—’“ˆà×Ñ˜ÔØ×Ñœ) T×%5Ñ%5°tÔ<à×Ñœ) T×%6Ñ%6¸¸tÔDØ×Ñœ) T×%6Ñ%6¸¸eÔDØ×Ñœ) T×%6Ñ%6¸¸dÔCà×Ñ˜ÔØ×Ñœ) T×%5Ñ%5°tÔ<à×Ñœ) T×%6Ñ%6¸¸tÔDØ×Ñœ) T×%6Ñ%6¸¸eÔDØ×Ñœ) T×%6Ñ%6¸¸dÕCr   r0   Nr'   )r+   r,   r-   r.   r¼  rÃ  rÇ  r/   r0   r   r   r¾  r¾  p  s   † ñô5÷6Dr   r¾  c                  ó0   • \ rS rSrSrSrSS jrSS jrSrg)	ÚDocumentTestsi¦  z
Tests for L{Document}.
r  c                ó~  • [         R                  " 5       nU R                  UR                  U5      5        [         R                  " 5       nU R                  UR                  U5      5        U R                  Ul        U R                  UR                  U5      5        U R                  Ul        U R                  UR                  U5      5        UR                  [         R                  " [        5       5      5        U R                  UR                  U5      5        UR                  [         R                  " [        5       5      5        U R                  UR                  U5      5        UR                  R                  [         R                  " [        5       5      5        U R                  UR                  U5      5        g)z€
L{Document.isEqualToNode} returns C{True} if and only if passed a
L{Document} with the same C{doctype} and C{documentElement}.
N)
r	   rŽ  r˜   rÒ   r  r  rç   rÀ  rÁ  rb   )r   r“  rÂ  s      r   Útest_isEqualToNodeÚ DocumentTests.test_isEqualToNode­  s7  € ô ×$Ò$Ó&ˆØ�‰˜×.Ñ.¨xÓ8Ô9ô ×#Ò#Ó%ˆØ�‰˜×.Ñ.¨wÓ7Ô8ð  Ÿ<™<ˆÔØ×Ñ˜×/Ñ/°Ó8Ô9àŸ,™,ˆŒØ�‰˜×.Ñ.¨wÓ7Ô8ð 	×ÑœXŸ]š]¬6«8Ó4Ô5Ø×Ñ˜×/Ñ/°Ó8Ô9à×ÑœHŸMšM¬&«(Ó3Ô4Ø�‰˜×.Ñ.¨wÓ7Ô8ð 	× Ñ ×,Ñ,¬X¯]ª]¼6»8Ó-DÔEØ×Ñ˜×/Ñ/°Ó8Õ9r   c                óæ   • [         R                  " 5       n[         R                  " 5       n[         R                  " 5       nUR                  U5        U R	                  [
        UR                  U5        g)zS
L{Document.appendChild} raises L{ValueError} if the document already
has a child.
N)r	   rŽ  rÀ  rç   r{   rò   )r   r“  rí   rÂ  s       r   Útest_childRestrictionÚ#DocumentTests.test_childRestrictionÌ  sN   € ô
 ×$Ò$Ó&ˆÜ—’“ˆÜ—-’-“/ˆØ×Ñ˜UÔ#Ø×Ñœ* h×&:Ñ&:¸GÕDr   r0   Nr'   )	r+   r,   r-   r.   r¼  r  rÌ  rÏ  r/   r0   r   r   rÊ  rÊ  ¦  s   † ñð F€Gô:÷>	Er   rÊ  c                  ó"   • \ rS rSrSrSS jrSrg)ÚEntityReferenceTestsiØ  z
Tests for L{EntityReference}.
c                ó$  • U R                  [        R                  " S5      R                  [        R                  " S5      5      5        U R	                  [        R                  " S5      R                  [        R                  " S5      5      5        g)zt
L{EntityReference.isEqualToNode} returns C{True} if and only if passed
a L{EntityReference} with the same C{eref}.
ÚquotÚaposN)r˜   r	   rÆ   rÒ   r  r   s    r   rÌ  Ú'EntityReferenceTests.test_isEqualToNodeÝ  sn   € ð
 	�‰Ü×$Ò$ VÓ,×:Ñ:Ü×(Ò(¨Ó0óô	
ð
 	×ÑÜ×$Ò$ VÓ,×:Ñ:Ü×(Ò(¨Ó0óõ	
r   r0   Nr'   ©r+   r,   r-   r.   r¼  rÌ  r/   r0   r   r   rÒ  rÒ  Ø  s   † ñ÷
r   rÒ  c                  ó"   • \ rS rSrSrSS jrSrg)ÚCharacterDataTestsiî  z
Tests for L{CharacterData}.
c                ó$  • U R                  [        R                  " S5      R                  [        R                  " S5      5      5        U R	                  [        R                  " S5      R                  [        R                  " S5      5      5        g)zn
L{CharacterData.isEqualToNode} returns C{True} if and only if passed a
L{CharacterData} with the same value.
rØ   r±   N)r˜   r	   ÚCharacterDatarÒ   r  r   s    r   rÌ  Ú%CharacterDataTests.test_isEqualToNodeó  sh   € ð
 	�‰Ü×"Ò" 5Ó)×7Ñ7¼×8NÒ8NÈuÓ8UÓVô	
ð 	×ÑÜ×"Ò" 5Ó)×7Ñ7¼×8NÒ8NÈuÓ8UÓVõ	
r   r0   Nr'   r×  r0   r   r   rÙ  rÙ  î  ó   † ñ÷

r   rÙ  c                  ó"   • \ rS rSrSrSS jrSrg)ÚCommentTestsi   z
Tests for L{Comment}.
c                ó$  • U R                  [        R                  " S5      R                  [        R                  " S5      5      5        U R	                  [        R                  " S5      R                  [        R                  " S5      5      5        g)zb
L{Comment.isEqualToNode} returns C{True} if and only if passed a
L{Comment} with the same value.
rØ   r±   N)r˜   r	   r¶   rÒ   r  r   s    r   rÌ  ÚCommentTests.test_isEqualToNode  sa   € ð
 	�‰œ×(Ò(¨Ó/×=Ñ=¼h×>NÒ>NÈuÓ>UÓVÔWØ×Ñœ×)Ò)¨%Ó0×>Ñ>¼x×?OÒ?OÐPUÓ?VÓWÕXr   r0   Nr'   r×  r0   r   r   rß  rß     s   † ñ÷Yr   rß  c                  ó"   • \ rS rSrSrSS jrSrg)Ú	TextTestsi  z
Tests for L{Text}.
c           	     ó¨  • U R                  [        R                  " SSS9R                  [        R                  " SSS95      5        U R	                  [        R                  " SSS9R                  [        R                  " SSS95      5        U R	                  [        R                  " SSS9R                  [        R                  " SSS95      5        g)zg
L{Text.isEqualToNode} returns C{True} if and only if passed a L{Text}
which represents the same data.
rØ   TrB  Fr±   N)r˜   r	   r¿   rÒ   r  r   s    r   rÌ  ÚTextTests.test_isEqualToNode  s¡   € ð
 	�‰Ü�MŠM˜% TÑ*×8Ñ8¼¿ºÀuÐRVÑ9WÓXô	
ð 	×ÑÜ�MŠM˜% TÑ*×8Ñ8Ü—’˜e¨Ñ/óô	
ð
 	×ÑÜ�MŠM˜% TÑ*×8Ñ8¼¿ºÀuÐRVÑ9WÓXõ	
r   r0   Nr'   r×  r0   r   r   rã  rã    s   † ñ÷
r   rã  c                  ó"   • \ rS rSrSrSS jrSrg)ÚCDATASectionTestsi%  z
Tests for L{CDATASection}.
c                ó$  • U R                  [        R                  " S5      R                  [        R                  " S5      5      5        U R	                  [        R                  " S5      R                  [        R                  " S5      5      5        g)zw
L{CDATASection.isEqualToNode} returns C{True} if and only if passed a
L{CDATASection} which represents the same data.
rØ   r±   N)r˜   r	   rË   rÒ   r  r   s    r   rÌ  Ú$CDATASectionTests.test_isEqualToNode*  sh   € ð
 	�‰Ü×!Ò! %Ó(×6Ñ6´x×7LÒ7LÈUÓ7SÓTô	
ð 	×ÑÜ×!Ò! %Ó(×6Ñ6´x×7LÒ7LÈUÓ7SÓTõ	
r   r0   Nr'   r×  r0   r   r   rç  rç  %  rÝ  r   rç  c                  ó"   • \ rS rSrSrSS jrSrg)ÚElementTestsi7  z
Tests for L{Element}.
c                ó  • U R                  [        R                  " SSS0[        5       SS9R	                  [        R                  " SSS0[        5       SS95      5        U R                  [        R                  " SSS0[        5       SS9R	                  [        R                  " SSS0[        5       SS95      5        U R                  [        R                  " SSS0[        5       SS9R	                  [        R                  " SSS0[        5       SS95      5        [        R                  " SSS0[        5       SS9n[        R                  " SSS0[        5       SS9nUR                  [        R                  " [        5       5      5        U R                  UR	                  U5      5        U R                  [        R                  " SSS0[        5       SS9R	                  [        R                  " SSS0[        5       SS95      5        g)	z˜
L{Element.isEqualToNode} returns C{True} if and only if passed a
L{Element} with the same C{nodeName}, C{namespace}, C{childNodes}, and
C{attributes}.
rØ   r]   r¢   r±   r†  rà   r¹   N)r˜   r	   rÑ   rÁ  rÒ   r  rç   rÀ  )r   ÚoneÚtwos      r   rÌ  ÚElementTests.test_isEqualToNode<  s®  € ð 	�‰Ü×ÒØ˜˜S�z¤6£8°uñç‰mÜ× Ò  ¨¨c¨
´F³HÈÑNóô	
ð 	×ÑÜ×ÒØ˜˜S�z¤6£8°uñç‰mÜ× Ò  ¨¨c¨
´F³HÈÑNóô	
ð 	×ÑÜ×ÒØ˜˜S�z¤6£8°uñç‰mÜ× Ò  ¨¨c¨
´F³HÈÑNóô	
ô ×Ò˜u s¨C j´&³(ÀeÑLˆÜ×Ò˜u s¨C j´&³(ÀeÑLˆØ�‰œŸš¤f£hÓ/Ô0Ø×Ñ˜×*Ñ*¨3Ó/Ô0ð 	×ÑÜ×ÒØ˜˜S�z¤6£8°uñç‰mÜ× Ò  ¨¨c¨
´F³HÈÑNóõ	
r   r0   Nr'   r×  r0   r   r   rë  rë  7  s   † ñ÷-
r   rë  N)r¼  Ú
__future__r   Ú	importlibr   Úior   Útyping_extensionsr   Útwisted.trial.unittestr   Útwisted.webr   r	   r
   Ú	XMLParserr   r2   r?   r¤  r¾  rÊ  rÒ  rÙ  rß  rã  rç  rë  r0   r   r   Ú<module>r÷     sÃ   ðñ
õ #å Ý å %å +ß 1Ñ 1ô+ˆC�M‰Mô +ô 4ˆxô 4ô{
�Hô {
ô|C*�hô C*ôL3D�ô 3Dôl/E�Hô /Eôd
˜8ô 
ô,
˜ô 
ô$Y�8ô Yô
�ô 
ô.
˜ô 
ô$2
�8õ 2
r   