+
    üÐjÆK  ã                   óú   € R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt  ! R R]P                  4      t
 ! R R4      t ! R	 R
]]P                  4      t ! R R]]P                  4      t ! R R]P                  4      tR# )zF
Tests for L{twisted.words.xish.domish}, a DOM-like library for XMPP.
)ÚverifyObject)ÚrequireModule)Úunittest)Údomishc                   ó„   a € ] tR t^t o RtR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tRtV tR# )ÚElementTestsz
Tests for L{domish.Element}.
c                ób   € \        \        P                  \        P                  ! R4      4       R# )z2
L{domish.Element} implements L{domish.IElement}.
N©NÚfoo)r   r   ÚIElementÚElement©Úselfs   &Ú@/usr/lib/python3/dist-packages/twisted/words/test/test_domish.pyÚtest_interfaceÚElementTests.test_interface   s   € ô 	”V—_‘_¤f§n¢n°]Ó&CÖDó    c                ó¤   € RpV P                  \        P                  ! V4      R4       V P                  \        P                  ! V^4      R4       R# )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                ój   € \         P                  ! R4      pV P                  VP                  R4       R# )z>
An attribute on L{domish.Namespace} yields a qualified name.
ÚtestnsN©r   r
   )r   Ú	Namespacer   r
   )r   Únss   & r   Útest_namespaceÚElementTests.test_namespace#   s)   € ô ×Ò˜hÓ'ˆØ×Ñ˜Ÿ™Ð!2Ö3r   c                ó   € \         P                  ! R4      pV P                  VP                  R4       V P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       \         P                  ! R4      pV P                  VP                  R4       V P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       \         P                  ! R4      pV P                  VP                  R4       V P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       \         P                  ! RR4      pV P                  VP                  R4       V P                  VP                  R4       V P                  VP
                  R4       R# )	z/
Basic L{domish.Element} initialization tests.
Nr
   Ú r   Útest2nsr	   ©r!   r
   r   )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                ó†  € \         P                  ! R4      pVP                  R4       VP                  R4      pRVR&   RVR&   VP                  R4       VP                  R4       VP                  R4       VP                  R4       V P	                  VP
                  R,          R	4       V P	                  VP                  V4       VP                  P                  R
4       RVP                  R&   V P	                  VP
                  ^,          VP                  4       V P	                  VP
                  ^,          VP                  4       V P	                  VR,          R4       VR V P	                  VP                  R4      ^ 4       V P	                  VP                  R4      ^ 4       V P	                  VR,          R4       R# )z&
Basic L{domish.Element} child tests.
ÚsomecontentÚvalue1Úattrib1Úvalue2Úattrib2ÚbarÚabcÚ123Úabc123Ú
subcontentÚ	somevalueÚ	bar2valueNr   )Útestns2Úbar2)r9   r1   éÿÿÿÿ)	r   r   Ú
addContentÚ
addElementr   Úchildrenr:   r2   Ú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                óº   € \         P                  ! R4      pVP                  R4       \        V4      pV P	                  RV4       V P                  V\        4       R# )ú&
Extract character data using L{str}.
r-   Nr   ©r   r   r<   Ústrr   ÚassertIsInstance©r   ÚelementÚtexts   &  r   Útest_characterDataÚElementTests.test_characterDataf   óJ   € ô —.’.Ð!2Ó3ˆØ×Ñ˜=Ô)ä�7‹|ˆØ×Ñ˜¨Ô-Ø×Ñ˜d¤CÖ(r   c                óº   € \         P                  ! R4      pVP                  R4       \        V4      pV P	                  RV4       V P                  V\        4       R# )z,
Extract ascii character data using L{str}.
r-   Nr   rE   rH   s   &  r   Útest_characterDataNativeStringÚ+ElementTests.test_characterDataNativeStringq   rM   r   c                óº   € \         P                  ! R4      pVP                  R4       \        V4      pV P	                  RV4       V P                  V\        4       R# )rD   õ   â˜ƒNr   rE   rH   s   &  r   Útest_characterDataUnicodeÚ&ElementTests.test_characterDataUnicode|   rM   r   c                óÖ   € \         P                  ! R4      pVP                  R4       \        V4      pV P	                  RP                  4       V4       V P                  V\        4       R# )z1
Extract character data as UTF-8 using L{bytes}.
rR   Nr   )r   r   r<   Úbytesr   ÚencoderG   rH   s   &  r   Útest_characterDataBytesÚ$ElementTests.test_characterDataBytes‡   sS   € ô —.’.Ð!2Ó3ˆØ×Ñ˜=Ô)ä�W‹~ˆØ×Ñ˜×-Ñ-Ó/°Ô6Ø×Ñ˜d¤EÖ*r   c                óÎ   € \         P                  ! R4      pVP                  R4       VP                  R4       VP                  R4       V P	                  R\        V4      4       R# )zF
Mixing addChild with cdata and element, the first cdata is returned.
r3   r2   ÚdefNr   )r   r   ÚaddChildr=   r   rF   ©r   rI   s   & r   Útest_characterDataMixedÚ$ElementTests.test_characterDataMixed’   sQ   € ô —.’.Ð!2Ó3ˆØ×Ñ˜ÔØ×Ñ˜5Ô!Ø×Ñ˜ÔØ×Ñ˜¤ G£Ö-r   c                óŠ   € \         P                  ! R4      pVP                  R4       V P                  R\	        V4      4       R# )zD
Unicode strings passed to C{addContent} become the character data.
ÚunicodeNr   ©r   r   r<   r   rF   r]   s   & r   Útest_addContentÚElementTests.test_addContentœ   s5   € ô —.’.Ð!2Ó3ˆØ×Ñ˜9Ô%Ø×Ñ˜¤C¨£LÖ1r   c                óŠ   € \         P                  ! R4      pVP                  R4       V P                  R\	        V4      4       R# )zI
ASCII native strings passed to C{addContent} become the character data.
ÚnativeNr   rb   r]   s   & r   Ú test_addContentNativeStringASCIIÚ-ElementTests.test_addContentNativeStringASCII¤   s5   € ô —.’.Ð!2Ó3ˆØ×Ñ˜8Ô$Ø×Ñ˜¤3 w£<Ö0r   c                ót   € \         P                  ! R4      pV P                  \        VP                  R4       R# )zF
Byte strings passed to C{addContent} are not acceptable on Python 3.
s   bytesNr   )r   r   ÚassertRaisesÚ	TypeErrorr<   r]   s   & r   Útest_addContentBytesÚ!ElementTests.test_addContentBytes¬   s+   € ô —.’.Ð!2Ó3ˆØ×Ñœ) W×%7Ñ%7¸ÖBr   c                óŽ   € \         P                  ! R4      pVP                  RRR7      pV P                  R\	        V4      4       R# )zG
Content passed to addElement becomes character data on the new child.
r2   r3   )ÚcontentNr   )r   r   r=   r   rF   )r   rI   Úchilds   &  r   Útest_addElementContentÚ#ElementTests.test_addElementContent³   s<   € ô —.’.Ð!2Ó3ˆØ×"Ñ" 5°%Ð"Ó8ˆØ×Ñ˜¤ E£
Ö+r   c                ót  € \         P                  ! R4      pVP                  R4      pVP                  R4      pVP                  R4      pVP                  R4      p\        VP	                  4       4      pV P                  W&4       V P                  W64       V P                  WF4       V P                  WV4       R# )zw
Calling C{elements} without arguments on a L{domish.Element} returns
all child elements, whatever the qualified name.
r$   ÚquuxNr   ©r9   Úbaz©r   r$   )r   r   r=   Ú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                óx  € \         P                  ! R4      pVP                  R4      pVP                  R4      pVP                  R4      pVP                  R4      p\        VP	                  RR4      4      pV P                  W&4       V P                  W64       V P                  WF4       V P                  WV4       R# )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$   rt   Nr   ru   rw   )r   r   r=   rx   ry   rz   Ú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*   rA   rK   rO   rS   rX   r^   rc   rg   rl   rq   r�   r…   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      sc   ø‡ € ñòEòPò4ò2ò6>òB	)ò	)ò	)ò	+ò.ò2ò1òCò,ò ÷$ ð  r   r   c                   óx   a € ] tR t^àt o RtR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tRtV tR# )Ú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                ó  € R V n         R V n        RV n        . V n        V P	                  4       V n        V P                  V P
                  n        V P                  P                  V P
                  n	        V P                  V P
                  n        R# )FN)Údoc_startedÚ	doc_endedÚrootry   ÚstreamClassÚstreamÚ_docStartedÚDocumentStartEventÚappendÚElementEventÚ	_docEndedÚDocumentEndEventr   s   &r   ÚsetUpÚDomishStreamTestsMixin.setUpé   sg   € Ø ˆÔØˆŒØˆŒ	ØˆŒØ×&Ñ&Ó(ˆŒØ)-×)9Ñ)9ˆ�‰Ô&Ø#'§=¡=×#7Ñ#7ˆ�‰Ô Ø'+§~¡~ˆ�‰Ö$r   c                ó    € Wn         R V n        R# ©TN)r–   r”   )r   r–   s   &&r   r™   Ú"DomishStreamTestsMixin._docStartedó   s   € ØŒ	ØˆÖr   c                ó   € R V n         R# r¢   )r•   r   s   &r   r�   Ú DomishStreamTestsMixin._docEnded÷   s	   € ØˆŽr   c                ó<   € V P                   P                  V4       R # )N)r˜   Úparse©r   Úxmls   &&r   ÚdoTestÚDomishStreamTestsMixin.doTestú   s   € Ø�‰×Ñ˜#Ör   c                ó°  € R pV P                   P                  V4       V P                  V P                  R4       V P                  V P                  P
                  R4       V P                  V P                  ^ ,          P
                  R4       V P                  V P                  ^,          P
                  R4       V P                  V P                  R4       R# )s   <root><child/><child2/></root>Tr–   rp   Úchild2N)r˜   r§   r   r”   r–   r$   ry   r•   r¨   s   & r   ÚtestHarnessÚ"DomishStreamTestsMixin.testHarnessý   s™   € Ø/ˆØ�‰×Ñ˜#ÔØ×Ñ˜×)Ñ)¨4Ô0Ø×Ñ˜Ÿ™Ÿ™¨Ô0Ø×Ñ˜Ÿ™ qÕ)×.Ñ.°Ô8Ø×Ñ˜Ÿ™ qÕ)×.Ñ.°Ô9Ø×Ñ˜Ÿ™¨Ö.r   c                óº  € R
pV P                   P                  V4       V P                  V P                  P                  R4       V P                  V P                  P
                  R4       V P                  V P                  ^ ,          P                  R4       V P                  V P                  ^ ,          P
                  R4       V P                  V P                  ^ ,          R,          R4       V P                  V P                  ^ ,          P                  P
                  R4       V P                  \        V P                  ^ ,          P                  4      R4       R	# )s5   <stream:stream xmlns:stream='etherx' xmlns='jabber'>
r˜   ÚetherxÚmessageÚjabberÚtor2   Úxdelayz
some&data>Ns�   <stream:stream xmlns:stream='etherx' xmlns='jabber'>
  <message to='bar'>    <x xmlns='xdelay'>some&amp;data&gt;</x>  </message></stream:stream>)	r˜   r§   r   r–   r$   r%   ry   ÚxrF   r¨   s   & r   Ú	testBasicÚ DomishStreamTestsMixin.testBasic  sõ   € ð"ð 	ð 	�‰×Ñ˜#ÔØ×Ñ˜Ÿ™Ÿ™¨Ô2Ø×Ñ˜Ÿ™Ÿ™¨Ô1Ø×Ñ˜Ÿ™ qÕ)×.Ñ.°	Ô:Ø×Ñ˜Ÿ™ qÕ)×-Ñ-¨xÔ8Ø×Ñ˜Ÿ™ qÕ)¨$Õ/°Ô7Ø×Ñ˜Ÿ™ qÕ)×+Ñ+×/Ñ/°Ô:Ø×Ñœ˜TŸ]™]¨1Õ-×/Ñ/Ó0°,Ö?r   c                óæ   € R pV P                   P                  V4       V P                  V P                  P                  R4       V P                  V P
                  ^ ,          P                  R4       R# )s(   <stream><error xmlns='etherx'/></stream>r!   r±   N©r˜   r§   r   r–   r%   ry   r¨   s   & r   ÚtestNoRootNSÚ#DomishStreamTestsMixin.testNoRootNS  sP   € Ø9ˆà�‰×Ñ˜#ÔØ×Ñ˜Ÿ™Ÿ™¨Ô+Ø×Ñ˜Ÿ™ qÕ)×-Ñ-¨xÖ8r   c                óŒ  € R pV P                   P                  V4       V P                  V P                  P                  R4       V P                  V P                  P
                  R4       V P                  V P                  ^ ,          P                  R4       V P                  V P                  ^ ,          P
                  R4       R# )s=   <stream:stream xmlns:stream='etherx'><error/></stream:stream>r±   r!   N)r˜   r§   r   r–   r%   r&   ry   r¨   s   & r   ÚtestNoDefaultNSÚ&DomishStreamTestsMixin.testNoDefaultNS  s‰   € ØNˆà�‰×Ñ˜#ÔØ×Ñ˜Ÿ™Ÿ™¨Ô1Ø×Ñ˜Ÿ™×-Ñ-¨rÔ2Ø×Ñ˜Ÿ™ qÕ)×-Ñ-¨rÔ2Ø×Ñ˜Ÿ™ qÕ)×4Ñ4°bÖ9r   c                óæ   € R pV P                   P                  V4       V P                  V P                  P                  R4       V P                  V P
                  ^ ,          P                  R4       R# )s$   <root xmlns='testns'><child/></root>r   Nrº   r¨   s   & r   ÚtestChildDefaultNSÚ)DomishStreamTestsMixin.testChildDefaultNS(  sP   € Ø5ˆà�‰×Ñ˜#ÔØ×Ñ˜Ÿ™Ÿ™¨Ô1Ø×Ñ˜Ÿ™ qÕ)×-Ñ-¨xÖ8r   c                ó®   € R pV P                   P                  V4       V P                  V P                  ^ ,          P                  P
                  R4       R# )sg   <root xmlns='testns'>
                    <child1><child2 xmlns=''/></child1>
                  </root>r!   N)r˜   r§   r   ry   r­   r%   r¨   s   & r   ÚtestEmptyChildNSÚ'DomishStreamTestsMixin.testEmptyChildNS/  sB   € ðˆð 	�‰×Ñ˜#ÔØ×Ñ˜Ÿ™ qÕ)×0Ñ0×4Ñ4°bÖ9r   c                óš   € RpV P                   P                  V4       V P                  V P                  ^ ,          P                  R4       R# )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>zhttp://example.orgN)r˜   r§   r   ry   r%   r¨   s   & r   Útest_attributesWithNamespacesÚ4DomishStreamTestsMixin.test_attributesWithNamespaces7  s=   € ðˆð 	�‰×Ñ˜#ÔØ×Ñ˜Ÿ™ qÕ)×-Ñ-Ð/CÖDr   c                óô   € R pV P                   P                  V4       V P                  V P                  P                  R,          R4       V P                  V P
                  ^ ,          P                  R4       R# )s<   <root xmlns='testns' xmlns:foo='testns2'><foo:child/></root>r
   r9   N)r˜   r§   r   r–   ÚlocalPrefixesry   r%   r¨   s   & r   ÚtestChildPrefixÚ&DomishStreamTestsMixin.testChildPrefixG  sW   € ØMˆà�‰×Ñ˜#ÔØ×Ñ˜Ÿ™×0Ñ0°Õ7¸ÔCØ×Ñ˜Ÿ™ qÕ)×-Ñ-¨yÖ9r   c                óp   € V P                  \        P                  V P                  P                  R 4       R# )s   <root><error></root>N)rj   r   ÚParserErrorr˜   r§   r   s   &r   ÚtestUnclosedElementÚ*DomishStreamTestsMixin.testUnclosedElementN  s(   € Ø×ÑÜ×Ñ §¡× 1Ñ 1Ð3Jö	
r   c                ó  € RpV P                   P                  V4       V P                  RV P                  ^ ,          P                  4       V P                  RV P                  ^ ,          P
                  4       V P                  RV P                  ^ ,          P                  4       V P                  RR/V P                  ^ ,          P                  4       V P                  RV P                  ^,          P                  4       V P                  RV P                  ^,          P
                  4       V P                  RV P                  ^,          P                  4       V P                  / V P                  ^,          P                  4       R# )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­   N)r˜   r§   r   ry   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”   ry   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�   s   @r   r’   r’   à   sW   ø‡ € ñò6ò òòò/ò@ò$9ò:ò9ò:òEò :ò
÷
=ð =r   r’   c                   óV   € ] tR tRtRt]P                  t]! RRR7      f   Rt	Rt
R# Rt
R# )Ú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                   ó2   € ] tR tRtRt]P                  tRtR# )Ú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                   ó°   a € ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )ÚSerializerTestsi‚  c                ó¶   € \         P                  ! R4      pV P                  VP                  4       R4       V P                  VP                  ^ R7      R4       R # )Nz<foo/>)ÚcloseElementz<foo>r	   ©r   r   r   ÚtoXmlr(   s   & r   ÚtestNoNamespaceÚSerializerTests.testNoNamespaceƒ  sA   € Ü�NŠN˜=Ó)ˆØ×Ñ˜Ÿ™› HÔ-Ø×Ñ˜Ÿ™¨a˜Ó0°'Ö:r   c                ór   € \         P                  ! R4      pV P                  VP                  4       R4       R# )r   z<foo xmlns='testns'/>Nr   râ   r(   s   & r   ÚtestDefaultNamespaceÚ$SerializerTests.testDefaultNamespaceˆ  s(   € Ü�NŠNÐ,Ó-ˆØ×Ñ˜Ÿ™›Ð$;Ö<r   c                óz   € \         P                  ! RR4      pV P                  VP                  R R/4      R4       R# )r   r9   r2   z-<bar:foo xmlns:bar='testns' xmlns='testns2'/>Nr   râ   r(   s   & r   ÚtestOtherNamespaceÚ"SerializerTests.testOtherNamespaceŒ  s5   € Ü�NŠNÐ,¨iÓ8ˆØ×ÑØ�G‰G�X˜uÐ%Ó&Ð(Wö	
r   c                ó”   € \         P                  ! R4      pVP                  R4       V P                  VP	                  4       R4       R# ©r   r2   ú <foo xmlns='testns'><bar/></foo>Nr   ©r   r   r=   r   rã   r(   s   & r   ÚtestChildDefaultNamespaceÚ)SerializerTests.testChildDefaultNamespace’  s4   € Ü�NŠNÐ,Ó-ˆØ	�‰�UÔØ×Ñ˜Ÿ™›Ð$FÖGr   c                ó”   € \         P                  ! R4      pVP                  R4       V P                  VP	                  4       R4       R# )r   rî   Nr   ©r   r2   rï   r(   s   & r   ÚtestChildSameNamespaceÚ&SerializerTests.testChildSameNamespace—  s5   € Ü�NŠNÐ,Ó-ˆØ	�‰Ð&Ô'Ø×Ñ˜Ÿ™›Ð$FÖGr   c                ó–   € \         P                  ! R4      pVP                  RR 4       V P                  VP	                  4       R4       R# rí   rï   r(   s   & r   ÚtestChildSameDefaultNamespaceÚ-SerializerTests.testChildSameDefaultNamespaceœ  s6   € Ü�NŠNÐ,Ó-ˆØ	�‰�U˜HÔ%Ø×Ñ˜Ÿ™›Ð$FÖGr   c                ó–   € \         P                  ! R4      pVP                  RR4       V P                  VP	                  4       R4       R# )r   r9   z0<foo xmlns='testns'><bar xmlns='testns2'/></foo>Nr   ©r9   r2   rï   r(   s   & r   ÚtestChildOtherDefaultNamespaceÚ.SerializerTests.testChildOtherDefaultNamespace¡  s7   € Ü�NŠNÐ,Ó-ˆØ	�‰Ð'¨Ô3Ø×Ñ˜Ÿ™›Ð$VÖWr   c                ó–   € \         P                  ! R4      pVP                  RR4       V P                  VP	                  4       R4       R # )NÚns2z<foo><bar xmlns='ns2'/></foo>r	   )rþ   r2   rï   r(   s   & r   ÚtestOnlyChildDefaultNamespaceÚ-SerializerTests.testOnlyChildDefaultNamespace¦  s5   € Ü�NŠN˜=Ó)ˆØ	�‰�^ UÔ+Ø×Ñ˜Ÿ™›Ð$CÖDr   c                ó”   € \         P                  ! R4      pVP                  R4       V P                  VP	                  4       R4       R # )Nr2   z<foo><bar/></foo>r	   rï   r(   s   & r   ÚtestOnlyChildDefaultNamespace2Ú.SerializerTests.testOnlyChildDefaultNamespace2«  s3   € Ü�NŠN˜=Ó)ˆØ	�‰�UÔØ×Ñ˜Ÿ™›Ð$7Ö8r   c                ó–   € \         P                  ! RR4      pVP                  R4       V P                  VP	                  4       R4       R# )r   r9   z<<xn0:foo xmlns:xn0='testns' xmlns='testns2'><bar/></xn0:foo>Nr   rú   rï   r(   s   & r   ÚtestChildInDefaultNamespaceÚ+SerializerTests.testChildInDefaultNamespace°  s:   € Ü�NŠNÐ,¨iÓ8ˆØ	�‰Ð'Ô(Ø×ÑØ�G‰G‹IÐUö	
r   c                óz   € \         P                  ! RRR/R7      pV P                  VP                  4       R4       R # )Nrv   ©Úattribsz(<foo xmlns:xn0='testns2' xn0:bar='baz'/>r	   rú   râ   r(   s   & r   ÚtestQualifiedAttributeÚ&SerializerTests.testQualifiedAttribute·  s/   € Ü�NŠN˜=Ð3EÀuÐ2MÔNˆØ×Ñ˜Ÿ™›Ð$NÖOr   c                óz   € \         P                  ! RRR/R7      pV P                  VP                  4       R4       R# )r   rv   r  z6<foo xmlns='testns' xmlns:xn0='testns' xn0:bar='baz'/>Nr   ró   râ   r(   s   & r   ÚtestQualifiedAttributeDefaultNSÚ/SerializerTests.testQualifiedAttributeDefaultNS»  s3   € Ü�NŠNÐ,Ð7HÈ%Ð6PÔQˆØ×ÑØ�G‰G‹IÐOö	
r   c                óþ   € \         P                  ! R4      pVP                  RR4      pVP                  R4       VP                  RR4      pVP                  R	4       V P                  VP	                  4       R4       R# )
r!   r9   Útestns4z�<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>Nr#   ró   )r9   rt   )Útestns3rv   )r   rt   rï   )r   r)   rÒ   r­   s   &   r   ÚtestTwoChildsÚSerializerTests.testTwoChildsÁ  sm   € Ü�NŠN˜;Ó'ˆØ—‘Ð/°Ó;ˆØ×ÑÐ-Ô.Ø—‘Ð0°)Ó<ˆØ×ÑÐ,Ô-Ø×ÑØ�G‰G‹Ið lö	
r   c                óz   € \         P                  ! RRR/R7      pV P                  VP                  4       R4       R # )NÚen_USr  z<foo xml:lang='en_US'/>r	   )z$http://www.w3.org/XML/1998/namespaceÚlangrâ   r(   s   & r   ÚtestXMLNamespaceÚ SerializerTests.testXMLNamespaceÌ  s4   € Ü�NŠNØØEÀwÐOô
ˆð 	×Ñ˜Ÿ™›Ð$=Ö>r   c                ó€   € \         P                  ! RRR/R7      pV P                  VP                  RR/4      R4       R # )Nr9   rv   r  Úquxz(<foo xmlns:qux='testns2' qux:bar='baz'/>r	   rú   râ   r(   s   & r   Ú)testQualifiedAttributeGivenListOfPrefixesÚ9SerializerTests.testQualifiedAttributeGivenListOfPrefixesÓ  s:   € Ü�NŠN˜=Ð3EÀuÐ2MÔNˆØ×ÑØ�G‰G�Y Ð&Ó'Ð)Sö	
r   c                ó¦   € \         P                  ! RRR/R7      pVP                  R4      pRVR&   V P                  VP	                  4       R4       R # )Nrv   r  rt   zF<foo xmlns:xn0='testns2' xn0:bar='baz'><xn0:qux xn0:bar='quux'/></foo>r	   rú   ©r9   r  rï   ©r   r)   Úcs   &  r   ÚtestNSPrefixÚSerializerTests.testNSPrefixÙ  sL   € Ü�NŠN˜=Ð3EÀuÐ2MÔNˆØ�L‰LÐ+Ó,ˆØ &ˆÐ
Ñà×ÑØ�G‰G‹IØTö	
r   c                óÈ   € \         P                  ! RRR/R7      pVP                  R4      pRVR&   VP                  R4       V P                  VP	                  4       R4       R # )	Nr
   rv   r  rt   zY<foo xmlns:xn0='testns2' xn0:bar='baz'><xn0:qux xn0:bar='quux'><xn0:foo/></xn0:qux></foo>r	   rú   r  rï   r  s   &  r   ÚtestDefaultNSPrefixÚ#SerializerTests.testDefaultNSPrefixã  sX   € Ü�NŠN˜=Ð3EÀuÐ2MÔNˆØ�L‰LÐ+Ó,ˆØ &ˆÐ
ÑØ	�‰�UÔà×ÑØ�G‰G‹IØgö	
r   c                ó~   € \         P                  ! R4      pV P                  VP                  R R/R.R7      R4       R# )r   r2   )ÚprefixesÚprefixesInScopez
<bar:foo/>Nr   râ   r(   s   & r   ÚtestPrefixScopeÚSerializerTests.testPrefixScopeî  s8   € Ü�NŠNÐ,Ó-ˆà×ÑØ�G‰G˜h¨Ð.ÀÀˆGÓHÈ,ö	
r   c                óz   € \         P                  ! RRR /R7      pV P                  VP                  4       R4       R# )r   r2   ©rÊ   z<bar:foo xmlns:bar='testns'/>Nr   râ   r(   s   & r   ÚtestLocalPrefixesÚ!SerializerTests.testLocalPrefixesõ  s/   € Ü�NŠNÐ,¸UÀHÐ<MÔNˆØ×Ñ˜Ÿ™›Ð$CÖDr   c                óè   € \         P                  ! RRR /R7      pVP                  R4       V P                  VP                  P
                  R4       V P                  VP                  4       R4       R# )r   r2   r,  rv   Nz,<bar:foo xmlns:bar='testns'><baz/></bar:foo>r   )r   r   r=   ÚassertIdenticalrv   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                óZ  € RR/p\         P                  ! VR7      pV P                  WP                  4       \         P                  ! R
RR/R7      pV P                  RVP                  VR7      4       \         P                  ! R
4      pV P                  RVP                  VR7      4       R	# )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'  r9   rt   r,  z <quux:foo xmlns:quux='testns2'/>z<foo xmlns='testns2'/>N)r9   r
   )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                ó”   € \         P                  ! R4      pVP                  R4       V P                  VP	                  4       R4       R # )Nz<abc123>z<foo><abc123></foo>r	   ©r   r   Ú	addRawXmlr   rã   r(   s   & r   ÚtestRawXMLSerializationÚ'SerializerTests.testRawXMLSerialization  s5   € Ü�NŠN˜=Ó)ˆØ	�‰�JÔð 	×Ñ˜Ÿ™›Ð$9Ö:r   c                ó”   € \         P                  ! R4      pVP                  R4       V P                  VP	                  4       R4       R # )Nu   <degree>Â°</degree>u   <foo><degree>Â°</degree></foo>r	   r9  r(   s   & r   Ú"testRawXMLWithUnicodeSerializationÚ2SerializerTests.testRawXMLWithUnicodeSerialization  s4   € Ü�NŠN˜=Ó)ˆØ	�‰Ð-Ô.Ø×Ñ˜Ÿ™›Ð$HÖIr   c                óž   € \         P                  ! R4      pRVR&   VP                  R4       V P                  VP	                  4       R4       R # )Nu   my valueÈ¡eÚtestu   A degree symbol...Â°u2   <foo test='my valueÈ¡e'>A degree symbol...Â°</foo>r	   )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-  r1  r6  r;  r>  rB  r�   rŽ   r�   s   @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>rI     sz   ðñõ
 /å 0Ý "Ý %ôM �8×$Ñ$ô M ÷`J=ñ J=ôZ	CÐ3°X×5FÑ5Fô 	Cô*Ð1°8×3DÑ3Dô *ôe
�h×'Ñ'ö e
r   