ó
    ×›‘hÆK  ã                   óø   • S r SSKJr  SSKJr  SSKJr  SSKJr   " S S\R                  5      r
 " S S	5      r " S
 S\\R                  5      r " S S\\R                  5      r " S S\R                  5      rg)zF
Tests for L{twisted.words.xish.domish}, a DOM-like library for XMPP.
é    )ÚverifyObject)ÚrequireModule)Úunittest)Údomishc                   óx   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rSrg)ÚElementTestsé   z
Tests for L{domish.Element}.
c                 ó`   • [        [        R                  [        R                  " S5      5        g)z2
L{domish.Element} implements L{domish.IElement}.
©NÚfooN)r   r   ÚIElementÚElement©Úselfs    ÚbC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/words/test/test_domish.pyÚtest_interfaceÚElementTests.test_interface   s   € ô 	”V—_‘_¤f§n¢n°]Ó&CÕDó    c                 ó¢   • SnU R                  [        R                  " U5      S5        U R                  [        R                  " US5      S5        g)z6
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_escapingÚElementTests.test_escaping   sC   € ð ˆØ×Ñœ×+Ò+¨AÓ.Ð0BÔCØ×Ñœ×+Ò+¨A¨qÓ1Ð3NÕOr   c                 óh   • [         R                  " S5      nU R                  UR                  S5        g)z>
An attribute on L{domish.Namespace} yields a qualified name.
Útestns©r   r   N)r   Ú	Namespacer   r   )r   Únss     r   Útest_namespaceÚElementTests.test_namespace#   s)   € ô ×Ò˜hÓ'ˆØ×Ñ˜Ÿ™Ð!2Õ3r   c                 óþ  • [         R                  " S5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        [         R                  " S5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        [         R                  " S5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        [         R                  " SS5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR
                  S5        g)	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_elementInitÚElementTests.test_elementInit*   sl  € ô �NŠN˜=Ó)ˆØ×Ñ˜Ÿ™ Ô'Ø×Ñ˜Ÿ™ Ô%Ø×Ñ˜Ÿ™ tÔ,Ø×Ñ˜Ÿ™ 4Ô(ä�NŠN˜;Ó'ˆØ×Ñ˜Ÿ™ Ô'Ø×Ñ˜Ÿ™ Ô#Ø×Ñ˜Ÿ™ rÔ*Ø×Ñ˜Ÿ™ 4Ô(ä�NŠNÐ,Ó-ˆØ×Ñ˜Ÿ™ Ô'Ø×Ñ˜Ÿ™ Ô)Ø×Ñ˜Ÿ™ xÔ0Ø×Ñ˜Ÿ™ 4Ô(ä�NŠNÐ,¨iÓ8ˆØ×Ñ˜Ÿ™ Ô'Ø×Ñ˜Ÿ™ Ô)Ø×Ñ˜Ÿ™ yÕ1r   c                 ó\  • [         R                  " S5      nUR                  S5        UR                  S5      nSUS'   SUS'   UR                  S5        UR                  S5        UR                  S	5        UR                  S
5        U R	                  UR
                  S   S5        U R	                  UR                  U5        UR                  R                  S5        SUR                  S'   U R	                  UR
                  S   UR                  5        U R	                  UR
                  S   UR                  5        U R	                  US   S5        US	 U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  US   S5        g)z&
Basic L{domish.Element} child tests.
r   Úsomecontent)Útestns2Úbar2Úvalue1Úattrib1Úvalue2)r1   Úattrib2ÚbarÚabcÚ123éÿÿÿÿÚabc123Ú
subcontentÚ	somevalueÚ	bar2valuer   é   r   r6   N)	r   r   Ú
addContentÚ
addElementr   Úchildrenr2   r7   ÚhasAttribute)r   r,   Úb2s      r   Útest_childOpsÚElementTests.test_childOpsE   sa  € ô �NŠNÐ,Ó-ˆØ	�‰�]Ô#Ø�\‰\Ð-Ó.ˆØˆˆ)‰Ø$,ˆÐ
 Ñ!Ø	�‰�UÔØ	�‰�UÔØ	�‰�UÔØ	�‰�UÔð 	×Ñ˜Ÿ™ B™¨Ô2ð 	×Ñ˜Ÿ™ Ô$Ø	�‰×Ñ˜,Ô'Ø)ˆ�‰ˆ{Ñð 	×Ñ˜Ÿ™ A™¨¯©Ô/Ø×Ñ˜Ÿ™ A™¨¯©Ô.ð 	×Ñ˜˜9™ xÔ0ØˆiˆLØ×Ñ˜Ÿ™¨	Ó2°AÔ6Ø×Ñ˜Ÿ™¨	Ó2°AÔ6Ø×Ñ˜Ð1Ñ2°HÕ=r   c                 ó¸   • [         R                  " S5      nUR                  S5        [        U5      nU R	                  SU5        U R                  U[        5        g)ú&
Extract character data using L{str}.
r   r0   N©r   r   r@   Ústrr   ÚassertIsInstance©r   ÚelementÚtexts      r   Útest_characterDataÚElementTests.test_characterDataf   óJ   € ô —.’.Ð!2Ó3ˆØ×Ñ˜=Ô)ä�7‹|ˆØ×Ñ˜¨Ô-Ø×Ñ˜d¤CÕ(r   c                 ó¸   • [         R                  " S5      nUR                  S5        [        U5      nU R	                  SU5        U R                  U[        5        g)z,
Extract ascii character data using L{str}.
r   r0   NrI   rL   s      r   Útest_characterDataNativeStringÚ+ElementTests.test_characterDataNativeStringq   rQ   r   c                 ó¸   • [         R                  " S5      nUR                  S5        [        U5      nU R	                  SU5        U R                  U[        5        g)rH   r   õ   â˜ƒNrI   rL   s      r   Útest_characterDataUnicodeÚ&ElementTests.test_characterDataUnicode|   rQ   r   c                 óÔ   • [         R                  " S5      nUR                  S5        [        U5      nU R	                  SR                  5       U5        U R                  U[        5        g)z1
Extract character data as UTF-8 using L{bytes}.
r   rV   N)r   r   r@   Úbytesr   ÚencoderK   rL   s      r   Útest_characterDataBytesÚ$ElementTests.test_characterDataBytes‡   sS   € ô —.’.Ð!2Ó3ˆØ×Ñ˜=Ô)ä�W‹~ˆØ×Ñ˜×-Ñ-Ó/°Ô6Ø×Ñ˜d¤EÕ*r   c                 óÌ   • [         R                  " S5      nUR                  S5        UR                  S5        UR                  S5        U R	                  S[        U5      5        g)zF
Mixing addChild with cdata and element, the first cdata is returned.
r   r8   r7   ÚdefN)r   r   ÚaddChildrA   r   rJ   ©r   rM   s     r   Útest_characterDataMixedÚ$ElementTests.test_characterDataMixed’   sQ   € ô —.’.Ð!2Ó3ˆØ×Ñ˜ÔØ×Ñ˜5Ô!Ø×Ñ˜ÔØ×Ñ˜¤ G£Õ-r   c                 óˆ   • [         R                  " S5      nUR                  S5        U R                  S[	        U5      5        g)zD
Unicode strings passed to C{addContent} become the character data.
r   ÚunicodeN©r   r   r@   r   rJ   ra   s     r   Útest_addContentÚElementTests.test_addContentœ   s5   € ô —.’.Ð!2Ó3ˆØ×Ñ˜9Ô%Ø×Ñ˜¤C¨£LÕ1r   c                 óˆ   • [         R                  " S5      nUR                  S5        U R                  S[	        U5      5        g)zI
ASCII native strings passed to C{addContent} become the character data.
r   ÚnativeNrf   ra   s     r   Ú test_addContentNativeStringASCIIÚ-ElementTests.test_addContentNativeStringASCII¤   s5   € ô —.’.Ð!2Ó3ˆØ×Ñ˜8Ô$Ø×Ñ˜¤3 w£<Õ0r   c                 ór   • [         R                  " S5      nU R                  [        UR                  S5        g)zF
Byte strings passed to C{addContent} are not acceptable on Python 3.
r   s   bytesN)r   r   ÚassertRaisesÚ	TypeErrorr@   ra   s     r   Útest_addContentBytesÚ!ElementTests.test_addContentBytes¬   s+   € ô —.’.Ð!2Ó3ˆØ×Ñœ) W×%7Ñ%7¸ÕBr   c                 ó†   • [         R                  " S5      nUR                  SSS9nU R                  S[	        U5      5        g)zG
Content passed to addElement becomes character data on the new child.
r   r7   r8   )ÚcontentN)r   r   rA   r   rJ   )r   rM   Úchilds      r   Útest_addElementContentÚ#ElementTests.test_addElementContent³   s<   € ô —.’.Ð!2Ó3ˆØ×"Ñ" 5°%Ð"Ð8ˆØ×Ñ˜¤ E£
Õ+r   c                 ór  • [         R                  " S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      n[        UR	                  5       5      nU R                  X&5        U R                  X65        U R                  XF5        U R                  XV5        g)zw
Calling C{elements} without arguments on a L{domish.Element} returns
all child elements, whatever the qualified name.
r   r'   ©r1   ÚbazÚquux©r   r'   N)r   r   rA   ÚlistÚelementsÚassertIn©r   r,   Úc1Úc2Úc3Úc4Úeltss          r   Útest_elementsÚElementTests.test_elements»   s�   € ô
 �NŠNÐ,Ó-ˆØ�\‰\˜&Ó!ˆØ�\‰\Ð,Ó-ˆØ�\‰\˜&Ó!ˆØ�\‰\Ð,Ó-ˆä�A—J‘J“LÓ!ˆà�‰�bÔØ�‰�bÔØ�‰�bÔØ�‰�bÕr   c                 óv  • [         R                  " S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      n[        UR	                  SS5      5      nU R                  X&5        U R                  X65        U R                  XF5        U R                  XV5        g)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'   rx   rz   r{   r   N)r   r   rA   r|   r}   r~   ÚassertNotInr   s          r   Útest_elementsWithQNÚ ElementTests.test_elementsWithQNÍ   s–   € ô
 �NŠNÐ,Ó-ˆØ�\‰\˜&Ó!ˆØ�\‰\Ð,Ó-ˆØ�\‰\˜&Ó!ˆØ�\‰\Ð,Ó-ˆä�A—J‘J˜x¨Ó0Ó1ˆà�‰�bÔØ×Ñ˜Ô"Ø×Ñ˜Ô"Ø�‰�bÕr   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r!   r-   rE   rO   rS   rW   r\   rb   rg   rk   rp   ru   r…   r‰   Ú__static_attributes__r‹   r   r   r   r      s[   † ñòEòPò4ò2ò6>òB	)ò	)ò	)ò	+ò.ò2ò1òCò,ò õ$ r   r   c                   ól   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)ÚDomishStreamTestsMixinéà   zÙ
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                 ó  • SU l         SU l        S U l        / U l        U R	                  5       U l        U R                  U R
                  l        U R                  R                  U R
                  l	        U R                  U R
                  l        g )NF)Údoc_startedÚ	doc_endedÚrootr}   ÚstreamClassÚstreamÚ_docStartedÚDocumentStartEventÚappendÚElementEventÚ	_docEndedÚDocumentEndEventr   s    r   ÚsetUpÚDomishStreamTestsMixin.setUpé   sg   € Ø ˆÔØˆŒØˆŒ	ØˆŒØ×&Ñ&Ó(ˆŒØ)-×)9Ñ)9ˆ�‰Ô&Ø#'§=¡=×#7Ñ#7ˆ�‰Ô Ø'+§~¡~ˆ�‰Õ$r   c                 ó   • Xl         SU l        g ©NT)r˜   r–   )r   r˜   s     r   r›   Ú"DomishStreamTestsMixin._docStartedó   s   € ØŒ	ØˆÕr   c                 ó   • SU l         g r¤   )r—   r   s    r   rŸ   Ú DomishStreamTestsMixin._docEnded÷   s	   € Øˆ�r   c                 ó:   • U R                   R                  U5        g )N)rš   Úparse©r   Úxmls     r   ÚdoTestÚDomishStreamTestsMixin.doTestú   s   € Ø�‰×Ñ˜#Õr   c                 óž  • SnU R                   R                  U5        U R                  U R                  S5        U R                  U R                  R
                  S5        U R                  U R                  S   R
                  S5        U R                  U R                  S   R
                  S5        U R                  U R                  S5        g )Ns   <root><child/><child2/></root>Tr˜   r   rt   r   Úchild2)rš   r©   r   r–   r˜   r'   r}   r—   rª   s     r   ÚtestHarnessÚ"DomishStreamTestsMixin.testHarnessý   s™   € Ø/ˆØ�‰×Ñ˜#ÔØ×Ñ˜×)Ñ)¨4Ô0Ø×Ñ˜Ÿ™Ÿ™¨Ô0Ø×Ñ˜Ÿ™ qÑ)×.Ñ.°Ô8Ø×Ñ˜Ÿ™ qÑ)×.Ñ.°Ô9Ø×Ñ˜Ÿ™¨Õ.r   c                 óˆ  • SnU R                   R                  U5        U R                  U R                  R                  S5        U R                  U R                  R
                  S5        U R                  U R                  S   R                  S5        U R                  U R                  S   R
                  S5        U R                  U R                  S   S   S5        U R                  U R                  S   R                  R
                  S	5        U R                  [        U R                  S   R                  5      S
5        g )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Útor7   Úxdelayz
some&data>)	rš   r©   r   r˜   r'   r(   r}   ÚxrJ   rª   s     r   Ú	testBasicÚ DomishStreamTestsMixin.testBasic  sõ   € ð"ð 	ð 	�‰×Ñ˜#ÔØ×Ñ˜Ÿ™Ÿ™¨Ô2Ø×Ñ˜Ÿ™Ÿ™¨Ô1Ø×Ñ˜Ÿ™ qÑ)×.Ñ.°	Ô:Ø×Ñ˜Ÿ™ qÑ)×-Ñ-¨xÔ8Ø×Ñ˜Ÿ™ qÑ)¨$Ñ/°Ô7Ø×Ñ˜Ÿ™ qÑ)×+Ñ+×/Ñ/°Ô:Ø×Ñœ˜TŸ]™]¨1Ñ-×/Ñ/Ó0°,Õ?r   c                 óÜ   • SnU R                   R                  U5        U R                  U R                  R                  S5        U R                  U R
                  S   R                  S5        g )Ns(   <stream><error xmlns='etherx'/></stream>r%   r   r³   ©rš   r©   r   r˜   r(   r}   rª   s     r   ÚtestNoRootNSÚ#DomishStreamTestsMixin.testNoRootNS  sP   € Ø9ˆà�‰×Ñ˜#ÔØ×Ñ˜Ÿ™Ÿ™¨Ô+Ø×Ñ˜Ÿ™ qÑ)×-Ñ-¨xÕ8r   c                 óz  • SnU R                   R                  U5        U R                  U R                  R                  S5        U R                  U R                  R
                  S5        U R                  U R                  S   R                  S5        U R                  U R                  S   R
                  S5        g )Ns=   <stream:stream xmlns:stream='etherx'><error/></stream:stream>r³   r%   r   )rš   r©   r   r˜   r(   r)   r}   rª   s     r   ÚtestNoDefaultNSÚ&DomishStreamTestsMixin.testNoDefaultNS  s‰   € ØNˆà�‰×Ñ˜#ÔØ×Ñ˜Ÿ™Ÿ™¨Ô1Ø×Ñ˜Ÿ™×-Ñ-¨rÔ2Ø×Ñ˜Ÿ™ qÑ)×-Ñ-¨rÔ2Ø×Ñ˜Ÿ™ qÑ)×4Ñ4°bÕ9r   c                 óÜ   • SnU R                   R                  U5        U R                  U R                  R                  S5        U R                  U R
                  S   R                  S5        g )Ns$   <root xmlns='testns'><child/></root>r   r   r¼   rª   s     r   ÚtestChildDefaultNSÚ)DomishStreamTestsMixin.testChildDefaultNS(  sP   € Ø5ˆà�‰×Ñ˜#ÔØ×Ñ˜Ÿ™Ÿ™¨Ô1Ø×Ñ˜Ÿ™ qÑ)×-Ñ-¨xÕ8r   c                 ó¤   • SnU R                   R                  U5        U R                  U R                  S   R                  R
                  S5        g )Nsg   <root xmlns='testns'>
                    <child1><child2 xmlns=''/></child1>
                  </root>r   r%   )rš   r©   r   r}   r¯   r(   rª   s     r   ÚtestEmptyChildNSÚ'DomishStreamTestsMixin.testEmptyChildNS/  sB   € ðˆð 	�‰×Ñ˜#ÔØ×Ñ˜Ÿ™ qÑ)×0Ñ0×4Ñ4°bÕ9r   c                 ó�   • SnU R                   R                  U5        U R                  U R                  S   R                  S5        g)zv
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   r}   r(   rª   s     r   Útest_attributesWithNamespacesÚ4DomishStreamTestsMixin.test_attributesWithNamespaces7  s=   € ðˆð 	�‰×Ñ˜#ÔØ×Ñ˜Ÿ™ qÑ)×-Ñ-Ð/CÕDr   c                 óâ   • SnU R                   R                  U5        U R                  U R                  R                  S   S5        U R                  U R
                  S   R                  S5        g )Ns<   <root xmlns='testns' xmlns:foo='testns2'><foo:child/></root>r   r1   r   )rš   r©   r   r˜   ÚlocalPrefixesr}   r(   rª   s     r   ÚtestChildPrefixÚ&DomishStreamTestsMixin.testChildPrefixG  sW   € ØMˆà�‰×Ñ˜#ÔØ×Ñ˜Ÿ™×0Ñ0°Ñ7¸ÔCØ×Ñ˜Ÿ™ qÑ)×-Ñ-¨yÕ9r   c                 ón   • U R                  [        R                  U R                  R                  S5        g )Ns   <root><error></root>)rn   r   ÚParserErrorrš   r©   r   s    r   ÚtestUnclosedElementÚ*DomishStreamTestsMixin.testUnclosedElementN  s(   € Ø×ÑÜ×Ñ §¡× 1Ñ 1Ð3Jõ	
r   c                 óÒ  • SnU R                   R                  U5        U R                  SU R                  S   R                  5        U R                  SU R                  S   R
                  5        U R                  SU R                  S   R                  5        U R                  SS0U R                  S   R                  5        U R                  SU R                  S   R                  5        U R                  SU R                  S   R
                  5        U R                  SU R                  S   R                  5        U R                  0 U R                  S   R                  5        g	)
aD  
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   r}   r'   r(   r)   rÌ   rª   s     r   Útest_namespaceReuseÚ*DomishStreamTestsMixin.test_namespaceReuseS  s  € ðˆð
 	�‰×Ñ˜#ÔØ×Ñ˜ 4§=¡=°Ñ#3×#8Ñ#8Ô9Ø×Ñ˜ 4§=¡=°Ñ#3×#7Ñ#7Ô8Ø×Ñ˜˜TŸ]™]¨1Ñ-×8Ñ8Ô9Ø×Ñ˜% Ð*¨D¯M©M¸!Ñ,<×,JÑ,JÔKØ×Ñ˜ 4§=¡=°Ñ#3×#8Ñ#8Ô9Ø×Ñ˜ 4§=¡=°Ñ#3×#7Ñ#7Ô8Ø×Ñ˜ 4§=¡=°Ñ#3×#>Ñ#>Ô?Ø×Ñ˜˜TŸ]™]¨1Ñ-×;Ñ;Õ<r   )r—   r–   r}   r˜   rš   N)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“   à   sO   † ñò6ò òòò/ò@ò$9ò:ò9ò:òEò :ò
õ
=r   r“   c                   óJ   • \ rS rSrSr\R                  r\" SSS9c  Sr	Sr
gSr
g)ÚDomishExpatStreamTestsim  zX
Tests for L{domish.ExpatElementStream}, the expat-based element stream
implementation.
ÚpyexpatN)Údefaultz1pyexpat is required for ExpatElementStream tests.r‹   )rŒ   r�   rŽ   r�   r�   r   ÚExpatElementStreamr™   r   Úskipr‘   r‹   r   r   rØ   rØ   m  s+   † ñð
 ×+Ñ+€Ká�Y¨Ñ-Ñ5ØB‹ò 6r   rØ   c                   ó0   • \ rS rSrSr\R                  rSrg)ÚDomishSuxStreamTestsiy  zc
Tests for L{domish.SuxElementStream}, the L{twisted.web.sux}-based element
stream implementation.
r‹   N)	rŒ   r�   rŽ   r�   r�   r   ÚSuxElementStreamr™   r‘   r‹   r   r   rÞ   rÞ   y  s   † ñð
 ×)Ñ)ƒKr   rÞ   c                   ó¤   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)ÚSerializerTestsi‚  c                 ó®   • [         R                  " S5      nU R                  UR                  5       S5        U R                  UR                  SS9S5        g )Nr   z<foo/>r   )ÚcloseElementz<foo>©r   r   r   ÚtoXmlr+   s     r   ÚtestNoNamespaceÚSerializerTests.testNoNamespaceƒ  sA   € Ü�NŠN˜=Ó)ˆØ×Ñ˜Ÿ™› HÔ-Ø×Ñ˜Ÿ™¨a˜Ð0°'Õ:r   c                 óp   • [         R                  " S5      nU R                  UR                  5       S5        g )Nr   z<foo xmlns='testns'/>rä   r+   s     r   ÚtestDefaultNamespaceÚ$SerializerTests.testDefaultNamespaceˆ  s(   € Ü�NŠNÐ,Ó-ˆØ×Ñ˜Ÿ™›Ð$;Õ<r   c                 óx   • [         R                  " SS5      nU R                  UR                  SS05      S5        g )Nr   r1   r   r7   z-<bar:foo xmlns:bar='testns' xmlns='testns2'/>rä   r+   s     r   ÚtestOtherNamespaceÚ"SerializerTests.testOtherNamespaceŒ  s5   € Ü�NŠNÐ,¨iÓ8ˆØ×ÑØ�G‰G�X˜uÐ%Ó&Ð(Wõ	
r   c                 ó’   • [         R                  " S5      nUR                  S5        U R                  UR	                  5       S5        g )Nr   r7   ú <foo xmlns='testns'><bar/></foo>©r   r   rA   r   rå   r+   s     r   ÚtestChildDefaultNamespaceÚ)SerializerTests.testChildDefaultNamespace’  s4   € Ü�NŠNÐ,Ó-ˆØ	�‰�UÔØ×Ñ˜Ÿ™›Ð$FÕGr   c                 ó’   • [         R                  " S5      nUR                  S5        U R                  UR	                  5       S5        g )Nr   ©r   r7   rï   rð   r+   s     r   ÚtestChildSameNamespaceÚ&SerializerTests.testChildSameNamespace—  s5   € Ü�NŠNÐ,Ó-ˆØ	�‰Ð&Ô'Ø×Ñ˜Ÿ™›Ð$FÕGr   c                 ó”   • [         R                  " S5      nUR                  SS5        U R                  UR	                  5       S5        g )Nr   r7   r   rï   rð   r+   s     r   ÚtestChildSameDefaultNamespaceÚ-SerializerTests.testChildSameDefaultNamespaceœ  s6   € Ü�NŠNÐ,Ó-ˆØ	�‰�U˜HÔ%Ø×Ñ˜Ÿ™›Ð$FÕGr   c                 ó”   • [         R                  " S5      nUR                  SS5        U R                  UR	                  5       S5        g )Nr   ©r1   r7   r1   z0<foo xmlns='testns'><bar xmlns='testns2'/></foo>rð   r+   s     r   ÚtestChildOtherDefaultNamespaceÚ.SerializerTests.testChildOtherDefaultNamespace¡  s7   € Ü�NŠNÐ,Ó-ˆØ	�‰Ð'¨Ô3Ø×Ñ˜Ÿ™›Ð$VÕWr   c                 ó”   • [         R                  " S5      nUR                  SS5        U R                  UR	                  5       S5        g )Nr   )Úns2r7   rÿ   z<foo><bar xmlns='ns2'/></foo>rð   r+   s     r   ÚtestOnlyChildDefaultNamespaceÚ-SerializerTests.testOnlyChildDefaultNamespace¦  s5   € Ü�NŠN˜=Ó)ˆØ	�‰�^ UÔ+Ø×Ñ˜Ÿ™›Ð$CÕDr   c                 ó’   • [         R                  " S5      nUR                  S5        U R                  UR	                  5       S5        g )Nr   r7   z<foo><bar/></foo>rð   r+   s     r   ÚtestOnlyChildDefaultNamespace2Ú.SerializerTests.testOnlyChildDefaultNamespace2«  s3   € Ü�NŠN˜=Ó)ˆØ	�‰�UÔØ×Ñ˜Ÿ™›Ð$7Õ8r   c                 ó”   • [         R                  " SS5      nUR                  S5        U R                  UR	                  5       S5        g )Nr   r1   rû   z<<xn0:foo xmlns:xn0='testns' xmlns='testns2'><bar/></xn0:foo>rð   r+   s     r   ÚtestChildInDefaultNamespaceÚ+SerializerTests.testChildInDefaultNamespace°  s:   € Ü�NŠNÐ,¨iÓ8ˆØ	�‰Ð'Ô(Ø×ÑØ�G‰G‹IÐUõ	
r   c                 ór   • [         R                  " SSS0S9nU R                  UR                  5       S5        g )Nr   rû   ry   ©Úattribsz(<foo xmlns:xn0='testns2' xn0:bar='baz'/>rä   r+   s     r   ÚtestQualifiedAttributeÚ&SerializerTests.testQualifiedAttribute·  s/   € Ü�NŠN˜=Ð3EÀuÐ2MÑNˆØ×Ñ˜Ÿ™›Ð$NÕOr   c                 ór   • [         R                  " SSS0S9nU R                  UR                  5       S5        g )Nr   rô   ry   r	  z6<foo xmlns='testns' xmlns:xn0='testns' xn0:bar='baz'/>rä   r+   s     r   ÚtestQualifiedAttributeDefaultNSÚ/SerializerTests.testQualifiedAttributeDefaultNS»  s3   € Ü�NŠNÐ,Ð7HÈ%Ð6PÑQˆØ×ÑØ�G‰G‹IÐOõ	
r   c                 óü   • [         R                  " S5      nUR                  SS5      nUR                  S5        UR                  SS5      nUR                  S5        U R                  UR	                  5       S5        g )	Nr$   rô   r1   )r1   rz   )Útestns3ry   Útestns4)r   rz   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   ÚtestTwoChildsÚSerializerTests.testTwoChildsÁ  sm   € Ü�NŠN˜;Ó'ˆØ—‘Ð/°Ó;ˆØ×ÑÐ-Ô.Ø—‘Ð0°)Ó<ˆØ×ÑÐ,Ô-Ø×ÑØ�G‰G‹Ið lõ	
r   c                 ór   • [         R                  " SSS0S9nU R                  UR                  5       S5        g )Nr   )z$http://www.w3.org/XML/1998/namespaceÚlangÚen_USr	  z<foo xml:lang='en_US'/>rä   r+   s     r   ÚtestXMLNamespaceÚ SerializerTests.testXMLNamespaceÌ  s4   € Ü�NŠNØØEÀwÐOñ
ˆð 	×Ñ˜Ÿ™›Ð$=Õ>r   c                 óx   • [         R                  " SSS0S9nU R                  UR                  SS05      S5        g )Nr   rû   ry   r	  r1   Úquxz(<foo xmlns:qux='testns2' qux:bar='baz'/>rä   r+   s     r   Ú)testQualifiedAttributeGivenListOfPrefixesÚ9SerializerTests.testQualifiedAttributeGivenListOfPrefixesÓ  s:   € Ü�NŠN˜=Ð3EÀuÐ2MÑNˆØ×ÑØ�G‰G�Y Ð&Ó'Ð)Sõ	
r   c                 óž   • [         R                  " SSS0S9nUR                  S5      nSUS'   U R                  UR	                  5       S5        g )Nr   rû   ry   r	  ©r1   r  rz   zF<foo xmlns:xn0='testns2' xn0:bar='baz'><xn0:qux xn0:bar='quux'/></foo>rð   ©r   r,   Úcs      r   ÚtestNSPrefixÚSerializerTests.testNSPrefixÙ  sL   € Ü�NŠN˜=Ð3EÀuÐ2MÑNˆØ�L‰LÐ+Ó,ˆØ &ˆÐ
Ñà×ÑØ�G‰G‹IØTõ	
r   c                 óÀ   • [         R                  " SSS0S9nUR                  S5      nSUS'   UR                  S5        U R                  UR	                  5       S5        g )	Nr   rû   ry   r	  r  rz   r   zY<foo xmlns:xn0='testns2' xn0:bar='baz'><xn0:qux xn0:bar='quux'><xn0:foo/></xn0:qux></foo>rð   r   s      r   ÚtestDefaultNSPrefixÚ#SerializerTests.testDefaultNSPrefixã  sX   € Ü�NŠN˜=Ð3EÀuÐ2MÑNˆØ�L‰LÐ+Ó,ˆØ &ˆÐ
ÑØ	�‰�UÔà×ÑØ�G‰G‹IØgõ	
r   c                 óv   • [         R                  " S5      nU R                  UR                  SS0S/S9S5        g )Nr   r   r7   )ÚprefixesÚprefixesInScopez
<bar:foo/>rä   r+   s     r   ÚtestPrefixScopeÚSerializerTests.testPrefixScopeî  s8   € Ü�NŠNÐ,Ó-ˆà×ÑØ�G‰G˜h¨Ð.ÀÀˆGÐHÈ,õ	
r   c                 ór   • [         R                  " SSS0S9nU R                  UR                  5       S5        g )Nr   r7   r   ©rÌ   z<bar:foo xmlns:bar='testns'/>rä   r+   s     r   ÚtestLocalPrefixesÚ!SerializerTests.testLocalPrefixesõ  s/   € Ü�NŠNÐ,¸UÀHÐ<MÑNˆØ×Ñ˜Ÿ™›Ð$CÕDr   c                 óà   • [         R                  " SSS0S9nUR                  S5        U R                  UR                  R
                  S 5        U R                  UR                  5       S5        g )Nr   r7   r   r-  ry   z,<bar:foo xmlns:bar='testns'><baz/></bar:foo>)r   r   rA   ÚassertIdenticalry   r)   r   rå   r+   s     r   ÚtestLocalPrefixesWithChildÚ*SerializerTests.testLocalPrefixesWithChildù  sU   € Ü�NŠNÐ,¸UÀHÐ<MÑNˆØ	�‰�UÔØ×Ñ˜QŸU™U×-Ñ-¨tÔ4Ø×Ñ˜Ÿ™›Ð$RÕSr   c                 ó@  • SS0n[         R                  " US9nU R                  XR                  5        [         R                  " SSS0S9nU R                  SUR                  US95        [         R                  " S5      nU R                  S	UR                  US95        g
)a!  
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(  )r1   r   rz   r1   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_prefixesReuseÚ"SerializerTests.test_prefixesReuseÿ  s‘   € ð ˜eÐ$ˆô ×"Ò"¨HÑ5ˆØ×Ñ ¯*©*Ô5ô �NŠNÐ-¸fÀiÐ=PÑQˆØ×ÑÐ;¸Q¿W¹WÈh¸WÐ=WÔXÜ�NŠNÐ-Ó.ˆØ×ÑÐ1°1·7±7ÀH°7Ð3MÕNr   c                 ó’   • [         R                  " S5      nUR                  S5        U R                  UR	                  5       S5        g )Nr   z<abc123>z<foo><abc123></foo>©r   r   Ú	addRawXmlr   rå   r+   s     r   ÚtestRawXMLSerializationÚ'SerializerTests.testRawXMLSerialization  s5   € Ü�NŠN˜=Ó)ˆØ	�‰�JÔð 	×Ñ˜Ÿ™›Ð$9Õ:r   c                 ó’   • [         R                  " S5      nUR                  S5        U R                  UR	                  5       S5        g )Nr   u   <degree>Â°</degree>u   <foo><degree>Â°</degree></foo>r:  r+   s     r   Ú"testRawXMLWithUnicodeSerializationÚ2SerializerTests.testRawXMLWithUnicodeSerialization  s4   € Ü�NŠN˜=Ó)ˆØ	�‰Ð-Ô.Ø×Ñ˜Ÿ™›Ð$HÕIr   c                 óœ   • [         R                  " S5      nSUS'   UR                  S5        U R                  UR	                  5       S5        g )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   ÚtestUnicodeSerializationÚ(SerializerTests.testUnicodeSerialization!  s@   € Ü�NŠN˜=Ó)ˆØ%ˆˆ&‰	Ø	�‰Ð/Ô0Ø×ÑØ�G‰G‹IÐVõ	
r   r‹   N)rŒ   r�   rŽ   r�   ræ   ré   rì   rñ   rõ   rø   rü   r   r  r  r  r  r  r  r  r"  r%  r*  r.  r2  r7  r<  r?  rC  r‘   r‹   r   r   rá   rá   ‚  s„   † ò;ò
=ò
òHò
Hò
Hò
Xò
Eò
9ò

òPò
ò	
ò?ò
ò
ò	
ò
òEòTòOò*;ò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>rJ     sz   ðñõ
 /å 0Ý "Ý %ôM �8×$Ñ$ô M ÷`J=ñ J=ôZ	CÐ3°X×5FÑ5Fô 	Cô*Ð1°8×3DÑ3Dô *ôe
�h×'Ñ'õ e
r   