§
    ÉtºfÆK  ã                   óð   — d Z ddlmZ ddlmZ ddlmZ ddlmZ  G d„ dej	        ¦  «        Z
 G d„ d	¦  «        Z G d
„ deej	        ¦  «        Z G d„ deej	        ¦  «        Z G d„ dej	        ¦  «        ZdS )zF
Tests for L{twisted.words.xish.domish}, a DOM-like library for XMPP.
é    )ÚverifyObject)ÚrequireModule)Úunittest)Údomishc                   ór   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚElementTestsz&
    Tests for L{domish.Element}.
    c                 ó^   — t          t          j        t          j        d¦  «        ¦  «         dS )zB
        L{domish.Element} implements L{domish.IElement}.
        ©NÚfooN)r   r   ÚIElementÚElement©Úselfs    ú]/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/words/test/test_domish.pyÚtest_interfacezElementTests.test_interface   s&   € õ 	•V”_¥f¤n°]Ñ&CÔ&CÑDÔDÐDÐDÐDó    c                 ó¬   — d}|                       t          j        |¦  «        d¦  «         |                       t          j        |d¦  «        d¦  «         dS )zF
        The built-in entity references are properly encoded.
        z&<>'"z&amp;&lt;&gt;'"é   z&amp;&lt;&gt;&apos;&quot;N)ÚassertEqualr   ÚescapeToXml)r   Úss     r   Útest_escapingzElementTests.test_escaping   sU   € ð ˆØ×Ò�Ô+¨AÑ.Ô.Ð0BÑCÔCÐCØ×Ò�Ô+¨A¨qÑ1Ô1Ð3NÑOÔOÐOÐOÐOr   c                 ód   — t          j        d¦  «        }|                      |j        d¦  «         dS )zN
        An attribute on L{domish.Namespace} yields a qualified name.
        Útestns©r   r   N)r   Ú	Namespacer   r   )r   Únss     r   Útest_namespacezElementTests.test_namespace#   s3   € õ Ô˜hÑ'Ô'ˆØ×Ò˜œÐ!2Ñ3Ô3Ð3Ð3Ð3r   c                 óÒ  — t          j        d¦  «        }|                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         t          j        d¦  «        }|                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         t          j        d¦  «        }|                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         t          j        dd¦  «        }|                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         dS )	z?
        Basic L{domish.Element} initialization tests.
        r
   r   N©Ú r   r!   r   r   Útest2ns)r   r   r   ÚnameÚuriÚ
defaultUriÚparent©r   Úes     r   Útest_elementInitzElementTests.test_elementInit*   s²  € õ ŒN˜=Ñ)Ô)ˆØ×Ò˜œ Ñ'Ô'Ð'Ø×Ò˜œ Ñ%Ô%Ð%Ø×Ò˜œ tÑ,Ô,Ð,Ø×Ò˜œ 4Ñ(Ô(Ð(åŒN˜;Ñ'Ô'ˆØ×Ò˜œ Ñ'Ô'Ð'Ø×Ò˜œ Ñ#Ô#Ð#Ø×Ò˜œ rÑ*Ô*Ð*Ø×Ò˜œ 4Ñ(Ô(Ð(åŒNÐ,Ñ-Ô-ˆØ×Ò˜œ Ñ'Ô'Ð'Ø×Ò˜œ Ñ)Ô)Ð)Ø×Ò˜œ xÑ0Ô0Ð0Ø×Ò˜œ 4Ñ(Ô(Ð(åŒNÐ,¨iÑ8Ô8ˆØ×Ò˜œ Ñ'Ô'Ð'Ø×Ò˜œ Ñ)Ô)Ð)Ø×Ò˜œ yÑ1Ô1Ð1Ð1Ð1r   c                 ó°  — t          j        d¦  «        }|                     d¦  «         |                     d¦  «        }d|d<   d|d<   |                     d¦  «         |                     d¦  «         |                     d	¦  «         |                     d
¦  «         |                      |j        d         d¦  «         |                      |j        |¦  «         |j                             d¦  «         d|j        d<   |                      |j        d         |j        ¦  «         |                      |j        d         |j        ¦  «         |                      |d         d¦  «         |d= |                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         |                      |d         d¦  «         dS )z6
        Basic L{domish.Element} child tests.
        r   Úsomecontent)Útestns2Úbar2Úvalue1Úattrib1Úvalue2)r,   Úattrib2ÚbarÚabcÚ123éÿÿÿÿÚabc123Ú
subcontentÚ	somevalueÚ	bar2valuer   é   r   r1   N)	r   r   Ú
addContentÚ
addElementr   Úchildrenr-   r2   ÚhasAttribute)r   r(   Úb2s      r   Útest_childOpszElementTests.test_childOpsE   sµ  € õ ŒNÐ,Ñ-Ô-ˆØ	�Š�]Ñ#Ô#Ð#Ø�\Š\Ð-Ñ.Ô.ˆØˆˆ)‰Ø$,ˆÐ
 Ñ!Ø	�Š�UÑÔÐØ	�Š�UÑÔÐØ	�Š�UÑÔÐØ	�Š�UÑÔÐð 	×Ò˜œ Bœ¨Ñ2Ô2Ð2ð 	×Ò˜œ Ñ$Ô$Ð$Ø	Œ×Ò˜,Ñ'Ô'Ð'Ø)ˆŒˆ{Ñð 	×Ò˜œ Aœ¨¬Ñ/Ô/Ð/Ø×Ò˜œ Aœ¨¬Ñ.Ô.Ð.ð 	×Ò˜˜9œ xÑ0Ô0Ð0ØˆiˆLØ×Ò˜Ÿš¨	Ñ2Ô2°AÑ6Ô6Ð6Ø×Ò˜Ÿš¨	Ñ2Ô2°AÑ6Ô6Ð6Ø×Ò˜Ð1Ô2°HÑ=Ô=Ð=Ð=Ð=r   c                 óØ   — t          j        d¦  «        }|                     d¦  «         t          |¦  «        }|                      d|¦  «         |                      |t          ¦  «         dS )ú6
        Extract character data using L{str}.
        r   r+   N©r   r   r;   Ústrr   ÚassertIsInstance©r   ÚelementÚtexts      r   Útest_characterDatazElementTests.test_characterDataf   óe   € õ ”.Ð!2Ñ3Ô3ˆØ×Ò˜=Ñ)Ô)Ð)å�7‰|Œ|ˆØ×Ò˜¨Ñ-Ô-Ð-Ø×Ò˜d¥CÑ(Ô(Ð(Ð(Ð(r   c                 óØ   — t          j        d¦  «        }|                     d¦  «         t          |¦  «        }|                      d|¦  «         |                      |t          ¦  «         dS )z<
        Extract ascii character data using L{str}.
        r   r+   NrC   rF   s      r   Útest_characterDataNativeStringz+ElementTests.test_characterDataNativeStringq   rJ   r   c                 óØ   — t          j        d¦  «        }|                     d¦  «         t          |¦  «        }|                      d|¦  «         |                      |t          ¦  «         dS )rB   r   õ   â˜ƒNrC   rF   s      r   Útest_characterDataUnicodez&ElementTests.test_characterDataUnicode|   rJ   r   c                 óü   — t          j        d¦  «        }|                     d¦  «         t          |¦  «        }|                      d                     ¦   «         |¦  «         |                      |t          ¦  «         dS )zA
        Extract character data as UTF-8 using L{bytes}.
        r   rN   N)r   r   r;   Úbytesr   ÚencoderE   rF   s      r   Útest_characterDataBytesz$ElementTests.test_characterDataBytes‡   sq   € õ ”.Ð!2Ñ3Ô3ˆØ×Ò˜=Ñ)Ô)Ð)å�W‰~Œ~ˆØ×Ò˜×-Ò-Ñ/Ô/°Ñ6Ô6Ð6Ø×Ò˜d¥EÑ*Ô*Ð*Ð*Ð*r   c                 óò   — t          j        d¦  «        }|                     d¦  «         |                     d¦  «         |                     d¦  «         |                      dt          |¦  «        ¦  «         dS )zV
        Mixing addChild with cdata and element, the first cdata is returned.
        r   r3   r2   ÚdefN)r   r   ÚaddChildr<   r   rD   ©r   rG   s     r   Útest_characterDataMixedz$ElementTests.test_characterDataMixed’   sr   € õ ”.Ð!2Ñ3Ô3ˆØ×Ò˜ÑÔÐØ×Ò˜5Ñ!Ô!Ð!Ø×Ò˜ÑÔÐØ×Ò˜¥ G¡¤Ñ-Ô-Ð-Ð-Ð-r   c                 óž   — t          j        d¦  «        }|                     d¦  «         |                      dt	          |¦  «        ¦  «         dS )zT
        Unicode strings passed to C{addContent} become the character data.
        r   ÚunicodeN©r   r   r;   r   rD   rW   s     r   Útest_addContentzElementTests.test_addContentœ   sJ   € õ ”.Ð!2Ñ3Ô3ˆØ×Ò˜9Ñ%Ô%Ð%Ø×Ò˜¥C¨¡L¤LÑ1Ô1Ð1Ð1Ð1r   c                 óž   — t          j        d¦  «        }|                     d¦  «         |                      dt	          |¦  «        ¦  «         dS )zY
        ASCII native strings passed to C{addContent} become the character data.
        r   ÚnativeNr[   rW   s     r   Ú test_addContentNativeStringASCIIz-ElementTests.test_addContentNativeStringASCII¤   sJ   € õ ”.Ð!2Ñ3Ô3ˆØ×Ò˜8Ñ$Ô$Ð$Ø×Ò˜¥3 w¡<¤<Ñ0Ô0Ð0Ð0Ð0r   c                 óp   — t          j        d¦  «        }|                      t          |j        d¦  «         dS )zV
        Byte strings passed to C{addContent} are not acceptable on Python 3.
        r   s   bytesN)r   r   ÚassertRaisesÚ	TypeErrorr;   rW   s     r   Útest_addContentBytesz!ElementTests.test_addContentBytes¬   s5   € õ ”.Ð!2Ñ3Ô3ˆØ×Ò�) WÔ%7¸ÑBÔBÐBÐBÐBr   c                 ó¢   — t          j        d¦  «        }|                     dd¬¦  «        }|                      dt	          |¦  «        ¦  «         dS )zW
        Content passed to addElement becomes character data on the new child.
        r   r2   r3   )ÚcontentN)r   r   r<   r   rD   )r   rG   Úchilds      r   Útest_addElementContentz#ElementTests.test_addElementContent³   sN   € õ ”.Ð!2Ñ3Ô3ˆØ×"Ò" 5°%Ð"Ñ8Ô8ˆØ×Ò˜¥ E¡
¤
Ñ+Ô+Ð+Ð+Ð+r   c                 óÈ  — t          j        d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }t          |                     ¦   «         ¦  «        }|                      ||¦  «         |                      ||¦  «         |                      ||¦  «         |                      ||¦  «         dS )z�
        Calling C{elements} without arguments on a L{domish.Element} returns
        all child elements, whatever the qualified name.
        r   r#   ©r,   ÚbazÚquux©r   r#   N)r   r   r<   ÚlistÚelementsÚassertIn©r   r(   Úc1Úc2Úc3Úc4Úeltss          r   Útest_elementszElementTests.test_elements»   sÅ   € õ
 ŒNÐ,Ñ-Ô-ˆØ�\Š\˜&Ñ!Ô!ˆØ�\Š\Ð,Ñ-Ô-ˆØ�\Š\˜&Ñ!Ô!ˆØ�\Š\Ð,Ñ-Ô-ˆå�A—J’J‘L”LÑ!Ô!ˆà�Š�b˜$ÑÔÐØ�Š�b˜$ÑÔÐØ�Š�b˜$ÑÔÐØ�Š�b˜$ÑÔÐÐÐr   c                 óÌ  — t          j        d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }t          |                     dd¦  «        ¦  «        }|                      ||¦  «         |                      ||¦  «         |                      ||¦  «         |                      ||¦  «         dS )z™
        Calling C{elements} with a namespace and local name on a
        L{domish.Element} returns all child elements with that qualified name.
        r   r#   ri   rk   rl   r   N)r   r   r<   rm   rn   ro   ÚassertNotInrp   s          r   Útest_elementsWithQNz ElementTests.test_elementsWithQNÍ   sÏ   € õ
 ŒNÐ,Ñ-Ô-ˆØ�\Š\˜&Ñ!Ô!ˆØ�\Š\Ð,Ñ-Ô-ˆØ�\Š\˜&Ñ!Ô!ˆØ�\Š\Ð,Ñ-Ô-ˆå�A—J’J˜x¨Ñ0Ô0Ñ1Ô1ˆà�Š�b˜$ÑÔÐØ×Ò˜˜TÑ"Ô"Ð"Ø×Ò˜˜TÑ"Ô"Ð"Ø�Š�b˜$ÑÔÐÐÐr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r)   r@   rI   rL   rO   rS   rX   r\   r_   rc   rg   rv   ry   © r   r   r   r      s  € € € € € ðð ðEð Eð EðPð Pð Pð4ð 4ð 4ð2ð 2ð 2ð6>ð >ð >ðB	)ð 	)ð 	)ð	)ð 	)ð 	)ð	)ð 	)ð 	)ð	+ð 	+ð 	+ð.ð .ð .ð2ð 2ð 2ð1ð 1ð 1ðCð Cð Cð,ð ,ð ,ð ð  ð  ð$ ð  ð  ð  ð  r   r   c                   óf   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚDomishStreamTestsMixinzí
    Mixin defining tests for different stream implementations.

    @ivar streamClass: A no-argument callable which will be used to create an
        XML parser which can produce a stream of elements from incremental
        input.
    c                 óà   — d| _         d| _        d | _        g | _        |                      ¦   «         | _        | j        | j        _        | j        j        | j        _	        | j
        | j        _        d S )NF)Údoc_startedÚ	doc_endedÚrootrn   ÚstreamClassÚstreamÚ_docStartedÚDocumentStartEventÚappendÚElementEventÚ	_docEndedÚDocumentEndEventr   s    r   ÚsetUpzDomishStreamTestsMixin.setUpé   s`   € Ø ˆÔØˆŒØˆŒ	ØˆŒØ×&Ò&Ñ(Ô(ˆŒØ)-Ô)9ˆŒÔ&Ø#'¤=Ô#7ˆŒÔ Ø'+¤~ˆŒÔ$Ð$Ð$r   c                 ó"   — || _         d| _        d S ©NT)r„   r‚   )r   r„   s     r   r‡   z"DomishStreamTestsMixin._docStartedó   s   € ØˆŒ	ØˆÔÐÐr   c                 ó   — d| _         d S r�   )rƒ   r   s    r   r‹   z DomishStreamTestsMixin._docEnded÷   s   € ØˆŒˆˆr   c                 ó:   — | j                              |¦  «         d S )N)r†   Úparse©r   Úxmls     r   ÚdoTestzDomishStreamTestsMixin.doTestú   s   € ØŒ×Ò˜#ÑÔÐÐÐr   c                 ó‚  — d}| j                              |¦  «         |                      | j        d¦  «         |                      | j        j        d¦  «         |                      | j        d         j        d¦  «         |                      | j        d         j        d¦  «         |                      | j        d¦  «         d S )Ns   <root><child/><child2/></root>Tr„   r   rf   r   Úchild2)r†   r’   r   r‚   r„   r#   rn   rƒ   r“   s     r   ÚtestHarnessz"DomishStreamTestsMixin.testHarnessý   s®   € Ø/ˆØŒ×Ò˜#ÑÔÐØ×Ò˜Ô)¨4Ñ0Ô0Ð0Ø×Ò˜œœ¨Ñ0Ô0Ð0Ø×Ò˜œ qÔ)Ô.°Ñ8Ô8Ð8Ø×Ò˜œ qÔ)Ô.°Ñ9Ô9Ð9Ø×Ò˜œ¨Ñ.Ô.Ð.Ð.Ð.r   c                 ó`  — d}| j                              |¦  «         |                      | j        j        d¦  «         |                      | j        j        d¦  «         |                      | j        d         j        d¦  «         |                      | j        d         j        d¦  «         |                      | j        d         d         d¦  «         |                      | j        d         j        j        d	¦  «         |                      t          | j        d         j        ¦  «        d
¦  «         d S )Ns�   <stream:stream xmlns:stream='etherx' xmlns='jabber'>
  <message to='bar'>    <x xmlns='xdelay'>some&amp;data&gt;</x>  </message></stream:stream>r†   Úetherxr   ÚmessageÚjabberÚtor2   Úxdelayz
some&data>)	r†   r’   r   r„   r#   r$   rn   ÚxrD   r“   s     r   Ú	testBasicz DomishStreamTestsMixin.testBasic  s  € ð"ð 	ð 	Œ×Ò˜#ÑÔÐØ×Ò˜œœ¨Ñ2Ô2Ð2Ø×Ò˜œœ¨Ñ1Ô1Ð1Ø×Ò˜œ qÔ)Ô.°	Ñ:Ô:Ð:Ø×Ò˜œ qÔ)Ô-¨xÑ8Ô8Ð8Ø×Ò˜œ qÔ)¨$Ô/°Ñ7Ô7Ð7Ø×Ò˜œ qÔ)Ô+Ô/°Ñ:Ô:Ð:Ø×Ò�˜Tœ]¨1Ô-Ô/Ñ0Ô0°,Ñ?Ô?Ð?Ð?Ð?r   c                 óÊ   — d}| j                              |¦  «         |                      | j        j        d¦  «         |                      | j        d         j        d¦  «         d S )Ns(   <stream><error xmlns='etherx'/></stream>r!   r   rš   ©r†   r’   r   r„   r$   rn   r“   s     r   ÚtestNoRootNSz#DomishStreamTestsMixin.testNoRootNS  s]   € Ø9ˆàŒ×Ò˜#ÑÔÐØ×Ò˜œœ¨Ñ+Ô+Ð+Ø×Ò˜œ qÔ)Ô-¨xÑ8Ô8Ð8Ð8Ð8r   c                 óV  — d}| j                              |¦  «         |                      | j        j        d¦  «         |                      | j        j        d¦  «         |                      | j        d         j        d¦  «         |                      | j        d         j        d¦  «         d S )Ns=   <stream:stream xmlns:stream='etherx'><error/></stream:stream>rš   r!   r   )r†   r’   r   r„   r$   r%   rn   r“   s     r   ÚtestNoDefaultNSz&DomishStreamTestsMixin.testNoDefaultNS  s˜   € ØNˆàŒ×Ò˜#ÑÔÐØ×Ò˜œœ¨Ñ1Ô1Ð1Ø×Ò˜œÔ-¨rÑ2Ô2Ð2Ø×Ò˜œ qÔ)Ô-¨rÑ2Ô2Ð2Ø×Ò˜œ qÔ)Ô4°bÑ9Ô9Ð9Ð9Ð9r   c                 óÊ   — d}| j                              |¦  «         |                      | j        j        d¦  «         |                      | j        d         j        d¦  «         d S )Ns$   <root xmlns='testns'><child/></root>r   r   r¢   r“   s     r   ÚtestChildDefaultNSz)DomishStreamTestsMixin.testChildDefaultNS(  s]   € Ø5ˆàŒ×Ò˜#ÑÔÐØ×Ò˜œœ¨Ñ1Ô1Ð1Ø×Ò˜œ qÔ)Ô-¨xÑ8Ô8Ð8Ð8Ð8r   c                 ó”   — d}| j                              |¦  «         |                      | j        d         j        j        d¦  «         d S )Nsg   <root xmlns='testns'>
                    <child1><child2 xmlns=''/></child1>
                  </root>r   r!   )r†   r’   r   rn   r—   r$   r“   s     r   ÚtestEmptyChildNSz'DomishStreamTestsMixin.testEmptyChildNS/  sJ   € ðˆð 	Œ×Ò˜#ÑÔÐØ×Ò˜œ qÔ)Ô0Ô4°bÑ9Ô9Ð9Ð9Ð9r   c                 óŠ   — d}| j                              |¦  «         |                      | j        d         j        d¦  «         dS )zŽ
        Attributes with namespace are parsed without Exception.
        (https://twistedmatrix.com/trac/ticket/9730 regression test)
        s~   <root xmlns:test='http://example.org' xml:lang='en'>
                    <test:test>test</test:test>
                  </root>r   zhttp://example.orgN)r†   r’   r   rn   r$   r“   s     r   Útest_attributesWithNamespacesz4DomishStreamTestsMixin.test_attributesWithNamespaces7  sH   € ðˆð 	Œ×Ò˜#ÑÔÐØ×Ò˜œ qÔ)Ô-Ð/CÑDÔDÐDÐDÐDr   c                 óÖ   — d}| j                              |¦  «         |                      | j        j        d         d¦  «         |                      | j        d         j        d¦  «         d S )Ns<   <root xmlns='testns' xmlns:foo='testns2'><foo:child/></root>r   r,   r   )r†   r’   r   r„   ÚlocalPrefixesrn   r$   r“   s     r   ÚtestChildPrefixz&DomishStreamTestsMixin.testChildPrefixG  sc   € ØMˆàŒ×Ò˜#ÑÔÐØ×Ò˜œÔ0°Ô7¸ÑCÔCÐCØ×Ò˜œ qÔ)Ô-¨yÑ9Ô9Ð9Ð9Ð9r   c                 ó\   — |                       t          j        | j        j        d¦  «         d S )Ns   <root><error></root>)ra   r   ÚParserErrorr†   r’   r   s    r   ÚtestUnclosedElementz*DomishStreamTestsMixin.testUnclosedElementN  s4   € Ø×ÒÝÔ ¤Ô 1Ð3Jñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó¢  — d}| j                              |¦  «         |                      d| j        d         j        ¦  «         |                      d| j        d         j        ¦  «         |                      d| j        d         j        ¦  «         |                      ddi| j        d         j        ¦  «         |                      d| j        d         j        ¦  «         |                      d| j        d         j        ¦  «         |                      d| j        d         j        ¦  «         |                      i | j        d         j        ¦  «         d	S )
at  
        Test that reuse of namespaces does affect an element's serialization.

        When one element uses a prefix for a certain namespace, this is
        stored in the C{localPrefixes} attribute of the element. We want
        to make sure that elements created after such use, won't have this
        prefix end up in their C{localPrefixes} attribute, too.
        s‚   <root>
                    <foo:child1 xmlns:foo='testns'/>
                    <child2 xmlns='testns'/>
                  </root>Úchild1r   r   r!   r   r—   r   N)r†   r’   r   rn   r#   r$   r%   r­   r“   s     r   Útest_namespaceReusez*DomishStreamTestsMixin.test_namespaceReuseS  s,  € ðˆð
 	Œ×Ò˜#ÑÔÐØ×Ò˜ 4¤=°Ô#3Ô#8Ñ9Ô9Ð9Ø×Ò˜ 4¤=°Ô#3Ô#7Ñ8Ô8Ð8Ø×Ò˜˜Tœ]¨1Ô-Ô8Ñ9Ô9Ð9Ø×Ò˜% Ð*¨D¬M¸!Ô,<Ô,JÑKÔKÐKØ×Ò˜ 4¤=°Ô#3Ô#8Ñ9Ô9Ð9Ø×Ò˜ 4¤=°Ô#3Ô#7Ñ8Ô8Ð8Ø×Ò˜ 4¤=°Ô#3Ô#>Ñ?Ô?Ð?Ø×Ò˜˜Tœ]¨1Ô-Ô;Ñ<Ô<Ð<Ð<Ð<r   N)rz   r{   r|   r}   r�   r‡   r‹   r•   r˜   r    r£   r¥   r§   r©   r«   r®   r±   r´   r~   r   r   r€   r€   à   sö   € € € € € ðð ð6ð 6ð 6ð ð  ð  ðð ð ðð ð ð/ð /ð /ð@ð @ð @ð$9ð 9ð 9ð:ð :ð :ð9ð 9ð 9ð:ð :ð :ðEð Eð Eð :ð :ð :ð
ð 
ð 
ð
=ð =ð =ð =ð =r   r€   c                   óB   — e Zd ZdZej        Z edd¬¦  «        €dZdS dS )ÚDomishExpatStreamTestszd
    Tests for L{domish.ExpatElementStream}, the expat-based element stream
    implementation.
    ÚpyexpatN)Údefaultz1pyexpat is required for ExpatElementStream tests.)	rz   r{   r|   r}   r   ÚExpatElementStreamr…   r   Úskipr~   r   r   r¶   r¶   m  sD   € € € € € ðð ð
 Ô+€Kà€}�Y¨Ð-Ñ-Ô-Ð5ØBˆˆˆð 6Ð5r   r¶   c                   ó    — e Zd ZdZej        ZdS )ÚDomishSuxStreamTestszo
    Tests for L{domish.SuxElementStream}, the L{twisted.web.sux}-based element
    stream implementation.
    N)rz   r{   r|   r}   r   ÚSuxElementStreamr…   r~   r   r   r¼   r¼   y  s"   € € € € € ðð ð
 Ô)€K€K€Kr   r¼   c                   óž   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚSerializerTestsc                 óÒ   — t          j        d¦  «        }|                      |                     ¦   «         d¦  «         |                      |                     d¬¦  «        d¦  «         d S )Nr
   z<foo/>r   )ÚcloseElementz<foo>©r   r   r   ÚtoXmlr'   s     r   ÚtestNoNamespacezSerializerTests.testNoNamespaceƒ  sY   € ÝŒN˜=Ñ)Ô)ˆØ×Ò˜Ÿš™œ HÑ-Ô-Ð-Ø×Ò˜Ÿš¨a˜Ñ0Ô0°'Ñ:Ô:Ð:Ð:Ð:r   c                 ó~   — t          j        d¦  «        }|                      |                     ¦   «         d¦  «         d S )Nr   z<foo xmlns='testns'/>rÂ   r'   s     r   ÚtestDefaultNamespacez$SerializerTests.testDefaultNamespaceˆ  s7   € ÝŒNÐ,Ñ-Ô-ˆØ×Ò˜Ÿš™œÐ$;Ñ<Ô<Ð<Ð<Ð<r   c                 ó†   — t          j        dd¦  «        }|                      |                     ddi¦  «        d¦  «         d S )Nr   r,   r   r2   z-<bar:foo xmlns:bar='testns' xmlns='testns2'/>rÂ   r'   s     r   ÚtestOtherNamespacez"SerializerTests.testOtherNamespaceŒ  sM   € ÝŒNÐ,¨iÑ8Ô8ˆØ×ÒØ�GŠG�X˜uÐ%Ñ&Ô&Ð(Wñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó¨   — t          j        d¦  «        }|                     d¦  «         |                      |                     ¦   «         d¦  «         d S )Nr   r2   ú <foo xmlns='testns'><bar/></foo>©r   r   r<   r   rÃ   r'   s     r   ÚtestChildDefaultNamespacez)SerializerTests.testChildDefaultNamespace’  sI   € ÝŒNÐ,Ñ-Ô-ˆØ	�Š�UÑÔÐØ×Ò˜Ÿš™œÐ$FÑGÔGÐGÐGÐGr   c                 ó¨   — t          j        d¦  «        }|                     d¦  «         |                      |                     ¦   «         d¦  «         d S )Nr   ©r   r2   rÊ   rË   r'   s     r   ÚtestChildSameNamespacez&SerializerTests.testChildSameNamespace—  sJ   € ÝŒNÐ,Ñ-Ô-ˆØ	�ŠÐ&Ñ'Ô'Ð'Ø×Ò˜Ÿš™œÐ$FÑGÔGÐGÐGÐGr   c                 óª   — t          j        d¦  «        }|                     dd¦  «         |                      |                     ¦   «         d¦  «         d S )Nr   r2   r   rÊ   rË   r'   s     r   ÚtestChildSameDefaultNamespacez-SerializerTests.testChildSameDefaultNamespaceœ  sK   € ÝŒNÐ,Ñ-Ô-ˆØ	�Š�U˜HÑ%Ô%Ð%Ø×Ò˜Ÿš™œÐ$FÑGÔGÐGÐGÐGr   c                 óª   — t          j        d¦  «        }|                     dd¦  «         |                      |                     ¦   «         d¦  «         d S )Nr   ©r,   r2   r,   z0<foo xmlns='testns'><bar xmlns='testns2'/></foo>rË   r'   s     r   ÚtestChildOtherDefaultNamespacez.SerializerTests.testChildOtherDefaultNamespace¡  sL   € ÝŒNÐ,Ñ-Ô-ˆØ	�ŠÐ'¨Ñ3Ô3Ð3Ø×Ò˜Ÿš™œÐ$VÑWÔWÐWÐWÐWr   c                 óª   — t          j        d¦  «        }|                     dd¦  «         |                      |                     ¦   «         d¦  «         d S )Nr
   )Úns2r2   rÖ   z<foo><bar xmlns='ns2'/></foo>rË   r'   s     r   ÚtestOnlyChildDefaultNamespacez-SerializerTests.testOnlyChildDefaultNamespace¦  sJ   € ÝŒN˜=Ñ)Ô)ˆØ	�Š�^ UÑ+Ô+Ð+Ø×Ò˜Ÿš™œÐ$CÑDÔDÐDÐDÐDr   c                 ó¨   — t          j        d¦  «        }|                     d¦  «         |                      |                     ¦   «         d¦  «         d S )Nr
   r2   z<foo><bar/></foo>rË   r'   s     r   ÚtestOnlyChildDefaultNamespace2z.SerializerTests.testOnlyChildDefaultNamespace2«  sH   € ÝŒN˜=Ñ)Ô)ˆØ	�Š�UÑÔÐØ×Ò˜Ÿš™œÐ$7Ñ8Ô8Ð8Ð8Ð8r   c                 óª   — t          j        dd¦  «        }|                     d¦  «         |                      |                     ¦   «         d¦  «         d S )Nr   r,   rÓ   z<<xn0:foo xmlns:xn0='testns' xmlns='testns2'><bar/></xn0:foo>rË   r'   s     r   ÚtestChildInDefaultNamespacez+SerializerTests.testChildInDefaultNamespace°  sW   € ÝŒNÐ,¨iÑ8Ô8ˆØ	�ŠÐ'Ñ(Ô(Ð(Ø×ÒØ�GŠG‰IŒIÐUñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó†   — t          j        dddi¬¦  «        }|                      |                     ¦   «         d¦  «         d S )Nr
   rÓ   rj   ©Úattribsz(<foo xmlns:xn0='testns2' xn0:bar='baz'/>rÂ   r'   s     r   ÚtestQualifiedAttributez&SerializerTests.testQualifiedAttribute·  sA   € ÝŒN˜=Ð3EÀuÐ2MÐNÑNÔNˆØ×Ò˜Ÿš™œÐ$NÑOÔOÐOÐOÐOr   c                 ó†   — t          j        dddi¬¦  «        }|                      |                     ¦   «         d¦  «         d S )Nr   rÎ   rj   rÝ   z6<foo xmlns='testns' xmlns:xn0='testns' xn0:bar='baz'/>rÂ   r'   s     r   ÚtestQualifiedAttributeDefaultNSz/SerializerTests.testQualifiedAttributeDefaultNS»  sM   € ÝŒNÐ,Ð7HÈ%Ð6PÐQÑQÔQˆØ×ÒØ�GŠG‰IŒIÐOñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó*  — t          j        d¦  «        }|                     dd¦  «        }|                     d¦  «         |                     dd¦  «        }|                     d¦  «         |                      |                     ¦   «         d¦  «         d S )	Nr    rÎ   r,   )r,   rk   )Útestns3rj   Útestns4)r   rk   z�<foo><xn0:bar xmlns:xn0='testns' xmlns='testns2'><quux/></xn0:bar><xn1:baz xmlns:xn1='testns3' xmlns='testns4'><xn0:quux xmlns:xn0='testns'/></xn1:baz></foo>rË   )r   r(   r³   r—   s       r   ÚtestTwoChildszSerializerTests.testTwoChildsÁ  s–   € ÝŒN˜;Ñ'Ô'ˆØ—’Ð/°Ñ;Ô;ˆØ×ÒÐ-Ñ.Ô.Ð.Ø—’Ð0°)Ñ<Ô<ˆØ×ÒÐ,Ñ-Ô-Ð-Ø×ÒØ�GŠG‰IŒIð lñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó†   — t          j        dddi¬¦  «        }|                      |                     ¦   «         d¦  «         d S )Nr
   )z$http://www.w3.org/XML/1998/namespaceÚlangÚen_USrÝ   z<foo xml:lang='en_US'/>rÂ   r'   s     r   ÚtestXMLNamespacez SerializerTests.testXMLNamespaceÌ  sJ   € ÝŒNØØEÀwÐOð
ñ 
ô 
ˆð 	×Ò˜Ÿš™œÐ$=Ñ>Ô>Ð>Ð>Ð>r   c                 óŒ   — t          j        dddi¬¦  «        }|                      |                     ddi¦  «        d¦  «         d S )Nr
   rÓ   rj   rÝ   r,   Úquxz(<foo xmlns:qux='testns2' qux:bar='baz'/>rÂ   r'   s     r   Ú)testQualifiedAttributeGivenListOfPrefixesz9SerializerTests.testQualifiedAttributeGivenListOfPrefixesÓ  sU   € ÝŒN˜=Ð3EÀuÐ2MÐNÑNÔNˆØ×ÒØ�GŠG�Y Ð&Ñ'Ô'Ð)Sñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óº   — t          j        dddi¬¦  «        }|                     d¦  «        }d|d<   |                      |                     ¦   «         d¦  «         d S )Nr
   rÓ   rj   rÝ   ©r,   rë   rk   zF<foo xmlns:xn0='testns2' xn0:bar='baz'><xn0:qux xn0:bar='quux'/></foo>rË   ©r   r(   Úcs      r   ÚtestNSPrefixzSerializerTests.testNSPrefixÙ  si   € ÝŒN˜=Ð3EÀuÐ2MÐNÑNÔNˆØ�LŠLÐ+Ñ,Ô,ˆØ &ˆÐ
Ñà×ÒØ�GŠG‰IŒIØTñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óä   — t          j        dddi¬¦  «        }|                     d¦  «        }d|d<   |                     d¦  «         |                      |                     ¦   «         d¦  «         d S )	Nr
   rÓ   rj   rÝ   rî   rk   r   zY<foo xmlns:xn0='testns2' xn0:bar='baz'><xn0:qux xn0:bar='quux'><xn0:foo/></xn0:qux></foo>rË   rï   s      r   ÚtestDefaultNSPrefixz#SerializerTests.testDefaultNSPrefixã  s{   € ÝŒN˜=Ð3EÀuÐ2MÐNÑNÔNˆØ�LŠLÐ+Ñ,Ô,ˆØ &ˆÐ
ÑØ	�Š�UÑÔÐà×ÒØ�GŠG‰IŒIØgñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óŠ   — t          j        d¦  «        }|                      |                     ddidg¬¦  «        d¦  «         d S )Nr   r   r2   )ÚprefixesÚprefixesInScopez
<bar:foo/>rÂ   r'   s     r   ÚtestPrefixScopezSerializerTests.testPrefixScopeî  sP   € ÝŒNÐ,Ñ-Ô-ˆà×ÒØ�GŠG˜h¨Ð.ÀÀˆGÑHÔHÈ,ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó†   — t          j        dddi¬¦  «        }|                      |                     ¦   «         d¦  «         d S )Nr   r2   r   ©r­   z<bar:foo xmlns:bar='testns'/>rÂ   r'   s     r   ÚtestLocalPrefixesz!SerializerTests.testLocalPrefixesõ  sA   € ÝŒNÐ,¸UÀHÐ<MÐNÑNÔNˆØ×Ò˜Ÿš™œÐ$CÑDÔDÐDÐDÐDr   c                 óð   — t          j        dddi¬¦  «        }|                     d¦  «         |                      |j        j        d ¦  «         |                      |                     ¦   «         d¦  «         d S )Nr   r2   r   rù   rj   z,<bar:foo xmlns:bar='testns'><baz/></bar:foo>)r   r   r<   ÚassertIdenticalrj   r%   r   rÃ   r'   s     r   ÚtestLocalPrefixesWithChildz*SerializerTests.testLocalPrefixesWithChildù  sn   € ÝŒNÐ,¸UÀHÐ<MÐNÑNÔNˆØ	�Š�UÑÔÐØ×Ò˜QœUÔ-¨tÑ4Ô4Ð4Ø×Ò˜Ÿš™œÐ$RÑSÔSÐSÐSÐSr   c                 ón  — ddi}t          j        |¬¦  «        }|                      ||j        ¦  «         t          j        dddi¬¦  «        }|                      d|                     |¬¦  «        ¦  «         t          j        d¦  «        }|                      d	|                     |¬¦  «        ¦  «         d
S )aQ  
        Test that prefixes passed to serialization are not modified.

        This test makes sure that passing a dictionary of prefixes repeatedly
        to C{toXml} of elements does not cause serialization errors. A
        previous implementation changed the passed in dictionary internally,
        causing havoc later on.
        r   r   )rõ   )r,   r   rk   r,   rù   z <quux:foo xmlns:quux='testns2'/>z<foo xmlns='testns2'/>N)r   ÚSerializerClassÚassertNotIdenticalrõ   r   r   rÃ   )r   rõ   r   r(   s       r   Útest_prefixesReusez"SerializerTests.test_prefixesReuseÿ  s·   € ð ˜eÐ$ˆõ Ô"¨HÐ5Ñ5Ô5ˆØ×Ò ¨!¬*Ñ5Ô5Ð5õ ŒNÐ-¸fÀiÐ=PÐQÑQÔQˆØ×ÒÐ;¸Q¿WºWÈh¸WÑ=WÔ=WÑXÔXÐXÝŒNÐ-Ñ.Ô.ˆØ×ÒÐ1°1·7²7ÀH°7Ñ3MÔ3MÑNÔNÐNÐNÐNr   c                 ó¨   — t          j        d¦  «        }|                     d¦  «         |                      |                     ¦   «         d¦  «         d S )Nr
   z<abc123>z<foo><abc123></foo>©r   r   Ú	addRawXmlr   rÃ   r'   s     r   ÚtestRawXMLSerializationz'SerializerTests.testRawXMLSerialization  sJ   € ÝŒN˜=Ñ)Ô)ˆØ	�Š�JÑÔÐð 	×Ò˜Ÿš™œÐ$9Ñ:Ô:Ð:Ð:Ð:r   c                 ó¨   — t          j        d¦  «        }|                     d¦  «         |                      |                     ¦   «         d¦  «         d S )Nr
   u   <degree>Â°</degree>u   <foo><degree>Â°</degree></foo>r  r'   s     r   Ú"testRawXMLWithUnicodeSerializationz2SerializerTests.testRawXMLWithUnicodeSerialization  sI   € ÝŒN˜=Ñ)Ô)ˆØ	�ŠÐ-Ñ.Ô.Ð.Ø×Ò˜Ÿš™œÐ$HÑIÔIÐIÐIÐIr   c                 ó²   — t          j        d¦  «        }d|d<   |                     d¦  «         |                      |                     ¦   «         d¦  «         d S )Nr
   u   my valueÈ¡eÚtestu   A degree symbol...Â°u2   <foo test='my valueÈ¡e'>A degree symbol...Â°</foo>)r   r   r;   r   rÃ   r'   s     r   ÚtestUnicodeSerializationz(SerializerTests.testUnicodeSerialization!  s]   € ÝŒN˜=Ñ)Ô)ˆØ%ˆˆ&‰	Ø	�ŠÐ/Ñ0Ô0Ð0Ø×ÒØ�GŠG‰IŒIÐVñ	
ô 	
ð 	
ð 	
ð 	
r   N)rz   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~   r   r   r¿   r¿   ‚  sš  € € € € € ð;ð ;ð ;ð
=ð =ð =ð
ð 
ð 
ðHð Hð Hð
Hð Hð Hð
Hð Hð Hð
Xð Xð Xð
Eð Eð Eð
9ð 9ð 9ð

ð 
ð 
ðPð Pð Pð
ð 
ð 
ð	
ð 	
ð 	
ð?ð ?ð ?ð
ð 
ð 
ð
ð 
ð 
ð	
ð 	
ð 	
ð
ð 
ð 
ðEð Eð EðTð Tð TðOð Oð Oð*;ð ;ð ;ðJð Jð Jð

ð 
ð 
ð 
ð 
r   r¿   N)r}   Úzope.interface.verifyr   Útwisted.python.reflectr   Útwisted.trialr   Útwisted.words.xishr   ÚTestCaser   r€   r¶   r¼   r¿   r~   r   r   ú<module>r     si  ððð ð
 /Ð .Ð .Ð .Ð .Ð .à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø "Ð "Ð "Ð "Ð "Ð "Ø %Ð %Ð %Ð %Ð %Ð %ðM ð M ð M ð M ð M �8Ô$ñ M ô M ð M ð`J=ð J=ð J=ð J=ð J=ñ J=ô J=ð J=ðZ	Cð 	Cð 	Cð 	Cð 	CÐ3°XÔ5Fñ 	Cô 	Cð 	Cð*ð *ð *ð *ð *Ð1°8Ô3Dñ *ô *ð *ðe
ð e
ð e
ð e
ð e
�hÔ'ñ e
ô e
ð e
ð e
ð e
r   