+
    üÐjl$  ã                   óÂ   € R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
  ! R R4      t ! R R	4      t ! R
 R]P                  4      t ! R R]P                  4      tR# )z+
Test cases for twisted.words.xish.utility
)ÚOrderedDict)Úunittest)Úutility)ÚElement)ÚEventDispatcherc                   ó0   a € ] tR t^t o RtR tR tRtV tR# )ÚCallbackTrackerz|
Test helper for tracking callbacks.

Increases a counter on each call to L{call} and stores the object
passed in the call.
c                ó"   € ^ V n         RV n        R# )é    N©ÚcalledÚobj©Úselfs   &ÚB/usr/lib/python3/dist-packages/twisted/words/test/test_xishutil.pyÚ__init__ÚCallbackTracker.__init__   s   € ØˆŒØˆŽó    c                óB   € V P                   ^,           V n         Wn        R# )é   Nr   )r   r   s   &&r   ÚcallÚCallbackTracker.call   s   € Ø—k‘k A•oˆŒØŽr   r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s   ø‡ € ñò÷ð r   r   c                   ó<   a € ] tR t^"t o RtR tR tR tR tRt	V t
R# )ÚOrderedCallbackTrackerz5
Test helper for tracking callbacks and their order.
c                ó   € . V n         R # ©N©ÚcallListr   s   &r   r   ÚOrderedCallbackTracker.__init__'   s	   € ØˆŽr   c                óP   € V P                   P                  V P                  4       R # r$   )r&   ÚappendÚcall1©r   Úobjects   &&r   r*   ÚOrderedCallbackTracker.call1*   ó   € Ø�‰×Ñ˜TŸZ™ZÖ(r   c                óP   € V P                   P                  V P                  4       R # r$   )r&   r)   Úcall2r+   s   &&r   r0   ÚOrderedCallbackTracker.call2-   r.   r   c                óP   € V P                   P                  V P                  4       R # r$   )r&   r)   Úcall3r+   s   &&r   r3   ÚOrderedCallbackTracker.call30   r.   r   r%   N)r   r   r   r   r   r   r*   r0   r3   r   r   r   s   @r   r"   r"   "   s#   ø‡ € ñòò)ò)÷)ð )r   r"   c                   ól   a € ] tR t^4t 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V tR# )ÚEventDispatcherTestsz
Tests for L{EventDispatcher}.
c                ó˜  € \        4       p\        4       p\        4       p\        4       pVP                  R VP                  4       VP                  RVP                  4       VP                  RVP                  4       VP                  RVP                  4       \	        R4      pVP                  R4       \	        R4      pVP                  R4       VP                  V4       V P                  VP                  ^4       V P                  VP                  V4       V P                  VP                  ^ 4       VP                  V4       V P                  VP                  ^4       V P                  VP                  ^4       V P                  VP                  V4       V P                  VP                  ^ 4       VP                  VR4       V P                  VP                  ^4       V P                  VP                  V4       VP                  RVP                  4       VP                  V4       V P                  VP                  ^4       R# )	ú/message/bodyú/messageú	/presenceú//event/testeventÚbodyÚpresenceN©ÚnsÚmessage©r?   r=   )r   r   ÚaddObserverr   r   Ú
addElementÚdispatchÚassertEqualr   r   ÚremoveObserver)r   ÚdÚcb1Úcb2Úcb3ÚmsgÚpress   &      r   Ú	testStuffÚEventDispatcherTests.testStuff9   s§  € ÜÓˆÜÓˆÜÓˆÜÓˆà	�‰�o s§x¡xÔ0Ø	�‰�j #§(¡(Ô+Ø	�‰�k 3§8¡8Ô,Ø	�‰Ð)¨3¯8©8Ô4äÐ'Ó(ˆØ�‰�vÔäÐ)Ó*ˆØ�‰˜
Ô#à	�
‰
�3ŒØ×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ #Ô&Ø×Ñ˜Ÿ™ QÔ'à	�
‰
�4ÔØ×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ $Ô'Ø×Ñ˜Ÿ™ QÔ'à	�
‰
�1Ð)Ô*Ø×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ !Ô$à	×Ñ˜ c§h¡hÔ/Ø	�
‰
�4ÔØ×Ñ˜Ÿ™ QÖ'r   c                ó¶  € \        4       p\        4       p\        4       pVP                  RVP                  4       VP                  RVP                  4       VP	                  VR4       V P                  VP                  ^4       V P                  VP                  V4       V P                  VP                  ^4       V P                  VP                  V4       R# )zv
Test adding two observers for the same query.

When the event is dispatched both of the observers need to be called.
r;   N)r   r   rB   r   rD   rE   r   r   )r   rG   rH   rI   s   &   r   Útest_addObserverTwiceÚ*EventDispatcherTests.test_addObserverTwice]   s¡   € ô ÓˆÜÓˆÜÓˆà	�‰Ð)¨3¯8©8Ô4Ø	�‰Ð)¨3¯8©8Ô4Ø	�
‰
�1Ð)Ô*à×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ !Ô$Ø×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ !Ö$r   c                óˆ  aa€ \        4       o\        R4      p\        4       oVV3R lpSP                  RV4       SP	                  V4       V P                  SP                  ^ 4       SP	                  V4       V P                  SP                  ^4       SP	                  V4       V P                  SP                  ^4       R# )z7
Test for registration of an observer during dispatch.
c                 ó@   <€ SP                  R SP                  4       R# ©r9   N)rB   r   )Ú_ÚcbrG   s   &€€r   Ú	onMessageÚBEventDispatcherTests.test_addObserverInDispatch.<locals>.onMessagex   s   ø€ Ø�M‰M˜* b§g¡gÖ.r   r9   Nr>   ©r   r   r   ÚaddOnetimeObserverrD   rE   r   ©r   rK   rW   rV   rG   s   &  @@r   Útest_addObserverInDispatchÚ/EventDispatcherTests.test_addObserverInDispatchp   s”   ù€ ô ÓˆÜÐ'Ó(ˆÜÓˆö	/ð 	
×Ñ˜Z¨Ô3à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÔ&à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÔ&à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÖ&r   c                óˆ  aa€ \        4       o\        R4      p\        4       oVV3R lpSP                  RV4       SP	                  V4       V P                  SP                  ^ 4       SP	                  V4       V P                  SP                  ^4       SP	                  V4       V P                  SP                  ^4       R# )z>
Test for registration of a onetime observer during dispatch.
c                 ó@   <€ SP                  R SP                  4       R# rT   )rZ   r   )rK   rV   rG   s   &€€r   rW   ÚIEventDispatcherTests.test_addOnetimeObserverInDispatch.<locals>.onMessageŽ   s   ø€ Ø× Ñ  ¨R¯W©WÖ5r   r9   Nr>   rY   r[   s   &  @@r   Ú!test_addOnetimeObserverInDispatchÚ6EventDispatcherTests.test_addOnetimeObserverInDispatch†   s”   ù€ ô ÓˆÜÐ'Ó(ˆÜÓˆö	6ð 	
×Ñ˜Z¨Ô3à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÔ&à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÔ&à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÖ&r   c                ó0  € \        4       p\        R4      p\        4       pVP                  RVP                  4       VP                  V4       V P                  VP                  ^4       VP                  V4       V P                  VP                  ^4       R# )r?   r9   Nr>   )r   r   r   rZ   r   rD   rE   r   )r   rG   rK   rV   s   &   r   ÚtestOnetimeDispatchÚ(EventDispatcherTests.testOnetimeDispatchœ   so   € ÜÓˆÜÐ'Ó(ˆÜÓˆà	×Ñ˜Z¨¯©Ô1Ø	�
‰
�3ŒØ×Ñ˜Ÿ™ AÔ&Ø	�
‰
�3ŒØ×Ñ˜Ÿ™ AÖ&r   c                ó  € \        4       p\        R4      p\        R4      p\        4       pVP                  RVP                  4       VP                  V4      pV P                  RV4       VP                  V4      pV P                  RV4       R# )r?   r:   FTNr>   rA   )r   r   r   rB   r   rD   rE   )r   rG   rK   rL   rV   Úresults   &     r   ÚtestDispatcherResultÚ)EventDispatcherTests.testDispatcherResult§   su   € ÜÓˆÜÐ'Ó(ˆÜÐ)Ó*ˆÜÓˆà	�‰�k 2§7¡7Ô+Ø—‘˜C“ˆØ×Ñ˜ Ô'à—‘˜DÓ!ˆØ×Ñ˜˜vÖ&r   c                ó   € \        4       p\        4       pVP                  R VP                  4       VP                  RVP                  R4       VP                  R VP
                  ^4       \        R4      pVP                  R4       VP                  V4       T P                  VP                  VP
                  VP                  VP                  .R\        VP                   Uu. uF  qDP                  NK  	  up4      ,          4       R# u upi )r8   r9   r<   zCalls out of order: %sNéÿÿÿÿr>   )r   r"   rB   r0   r3   r*   r   rC   rD   rE   r&   Úreprr   )r   rG   rV   rK   Úcs   &    r   ÚtestOrderedXPathDispatchÚ-EventDispatcherTests.testOrderedXPathDispatch´   sÁ   € ÜÓˆÜ#Ó%ˆØ	�‰�o r§x¡xÔ0Ø	�‰�j "§(¡(¨BÔ/Ø	�‰�o r§x¡x°Ô3äÐ'Ó(ˆØ�‰�vÔØ	�
‰
�3ŒØ×ÑØ�K‰KØ�X‰X�r—x‘x §¡Ð*Ø$¤tÀÇÂÓ,MÁ¸A¯Z¬ZÁÑ,MÓ'NÕNö	
ùò -Ns   Ã$Dc                ób  € \        4       p\        4       pVP                  RVP                  4       VP	                  RR4       V P                  ^VP                  4       VP                  RVP                  4       V P                  ^ \        VP                  P                  ^ 4      4      4       R# )z?
Test observer clean-up after removeObserver for named events.
ú//event/testN)r   r   rB   r   rD   rE   r   rF   ÚlenÚ_eventObserversÚpop©r   rG   rV   s   &  r   Útest_cleanUpRemoveEventObserverÚ4EventDispatcherTests.test_cleanUpRemoveEventObserverÊ   s‚   € ô
 ÓˆÜÓˆà	�‰�n b§g¡gÔ.Ø	�
‰
�4˜Ô(Ø×Ñ˜˜BŸI™IÔ&Ø	×Ñ˜¨¯©Ô1Ø×Ñ˜œC × 1Ñ 1× 5Ñ 5°aÓ 8Ó9Ö:r   c                óv  € \        4       p\        4       p\        R4      pVP                  RVP                  4       VP                  V4       V P                  ^VP                  4       VP                  RVP                  4       V P                  ^ \        VP                  P                  ^ 4      4      4       R# )z?
Test observer clean-up after removeObserver for XPath events.
Nr9   ©Nr@   )r   r   r   rB   r   rD   rE   r   rF   rr   Ú_xpathObserversrt   ©r   rG   rV   rK   s   &   r   Útest_cleanUpRemoveXPathObserverÚ4EventDispatcherTests.test_cleanUpRemoveXPathObserverØ   sŠ   € ô
 ÓˆÜÓˆÜÐ'Ó(ˆà	�‰�j "§'¡'Ô*Ø	�
‰
�3ŒØ×Ñ˜˜BŸI™IÔ&Ø	×Ñ˜ R§W¡WÔ-Ø×Ñ˜œC × 1Ñ 1× 5Ñ 5°aÓ 8Ó9Ö:r   c                ó*  € \        4       p\        4       pVP                  RVP                  4       VP	                  RR4       V P                  ^VP                  4       V P                  ^ \        VP                  P                  ^ 4      4      4       R# )z4
Test observer clean-up after onetime named events.
rq   N)
r   r   rZ   r   rD   rE   r   rr   rs   rt   ru   s   &  r   Ú test_cleanUpOnetimeEventObserverÚ5EventDispatcherTests.test_cleanUpOnetimeEventObserverç   sp   € ô
 ÓˆÜÓˆà	×Ñ˜^¨R¯W©WÔ5Ø	�
‰
�4˜Ô(Ø×Ñ˜˜BŸI™IÔ&Ø×Ñ˜œC × 1Ñ 1× 5Ñ 5°aÓ 8Ó9Ö:r   c                ó>  € \        4       p\        4       p\        R4      pVP                  RVP                  4       VP                  V4       V P                  ^VP                  4       V P                  ^ \        VP                  P                  ^ 4      4      4       R# )z4
Test observer clean-up after onetime XPath events.
Nr9   ry   )r   r   r   rZ   r   rD   rE   r   rr   rz   rt   r{   s   &   r   Ú test_cleanUpOnetimeXPathObserverÚ5EventDispatcherTests.test_cleanUpOnetimeXPathObserverô   sx   € ô
 ÓˆÜÓˆÜÐ'Ó(ˆà	×Ñ˜Z¨¯©Ô1Ø	�
‰
�3ŒØ×Ñ˜˜BŸI™IÔ&Ø×Ñ˜œC × 1Ñ 1× 5Ñ 5°aÓ 8Ó9Ö:r   c                óD  a€  ! R R\         P                  4      p ! R R\        4      oV3R lp\        4       p\	        4       p\         P                  p V\         n        VP                  RV4       VP                  RVP                  4        VP                  RR4       V P                  ^\        V P                  S4      4      4       V P                  ^VP                  4       V\         n        R#   S d    T P                  R4        Lmi ; i  T\         n        i ; i)	z³
Test that exceptions in observers do not bubble up to dispatch.

The exceptions raised in observers should be logged and other
observers should be called as if nothing happened.
c                   ó&   a € ] tR tRt o R tRtV tR# )ÚOEventDispatcherTests.test_observerRaisingException.<locals>.OrderedCallbackListi
  c                ó$   € \        4       V n        R # r$   )r   Ú	callbacksr   s   &r   r   ÚXEventDispatcherTests.test_observerRaisingException.<locals>.OrderedCallbackList.__init__  s   € Ü!,£�–r   )rˆ   N)r   r   r   r   r   r   r   r   s   @r   ÚOrderedCallbackListr†   
  s   ø‡ € ÷/ð /r   rŠ   c                   ó   € ] tR tRtRtR# )ÚEEventDispatcherTests.test_observerRaisingException.<locals>.TestErrori  © N)r   r   r   r   r   r�   r   r   Ú	TestErrorrŒ     s   † Ûr   rŽ   c                 ó   <€ S! 4       hr$   r�   )rU   rŽ   s   &€r   Ú
raiseErrorÚFEventDispatcherTests.test_observerRaisingException.<locals>.raiseError  s   ø€ Ù“+Ðr   rq   Nz2TestError raised. Should have been logged instead.)r   ÚCallbackListÚ	Exceptionr   r   rB   r   rD   ÚfailrE   rr   ÚflushLoggedErrorsr   )r   rŠ   r�   rG   rV   ÚoriginalCallbackListrŽ   s   &     @r   Útest_observerRaisingExceptionÚ2EventDispatcherTests.test_observerRaisingException  sî   ø€ ô	/¤'×"6Ñ"6ô 	/ô	œ	ô 	õ	ô ÓˆÜÓˆä&×3Ñ3Ðð	8Ø#6ŒGÔ à�M‰M˜.¨*Ô5Ø�M‰M˜.¨"¯'©'Ô2ðPØ—
‘
˜4 Ô0ð ×Ñ˜Q¤ D×$:Ñ$:¸9Ó$EÓ FÔGØ×Ñ˜Q §	¡	Ô*à#7ŒGÖ øð ô PØ—	‘	ÐNÖOðPûð $8ŒGÕ ús1   Á9D ÂC4 Â!AD Ã4DÄD ÄDÄD ÄDr�   N)r   r   r   r   r   rM   rP   r\   ra   rd   rh   rn   rv   r|   r   r‚   r—   r   r   r   s   @r   r6   r6   4   sL   ø‡ € ñò"(òH%ò&'ò,'ò,	'ò'ò
ò,;ò;ò;ò;÷$8ð $8r   r6   c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚXmlPipeTestsi)  z2
Tests for L{twisted.words.xish.utility.XmlPipe}.
c                ó:   € \         P                  ! 4       V n        R # r$   )r   ÚXmlPipeÚpiper   s   &r   ÚsetUpÚXmlPipeTests.setUp.  s   € Ü—O’OÓ%ˆŽ	r   c                óê   a€ V3R lp. oV P                   P                  P                  RV4       \        R4      pV P                   P                  P                  V4       V P                  V.S4       R# )z?
Send an element from the source and observe it from the sink.
c                 ó*   <€ SP                  V 4       R # r$   ©r)   ©r   r   s   &€r   rV   Ú,XmlPipeTests.test_sendFromSource.<locals>.cb6  ó   ø€ Ø�M‰M˜#Ör   ú/test[@xmlns="testns"]N©ÚtestnsÚtest)r�   ÚsinkrB   r   ÚsourceÚsendrE   ©r   rV   Úelementr   s   &  @r   Útest_sendFromSourceÚ XmlPipeTests.test_sendFromSource1  s]   ø€ õ
	ð ˆØ�	‰	�‰×"Ñ"Ð#;¸RÔ@ÜÐ,Ó-ˆØ�	‰	×Ñ×Ñ˜gÔ&Ø×Ñ˜'˜ FÖ+r   c                óê   a€ V3R lp. oV P                   P                  P                  RV4       \        R4      pV P                   P                  P                  V4       V P                  V.S4       R# )z?
Send an element from the sink and observe it from the source.
c                 ó*   <€ SP                  V 4       R # r$   r¢   r£   s   &€r   rV   Ú*XmlPipeTests.test_sendFromSink.<locals>.cbD  r¥   r   r¦   Nr§   )r�   r«   rB   r   rª   r¬   rE   r­   s   &  @r   Útest_sendFromSinkÚXmlPipeTests.test_sendFromSink?  s]   ø€ õ
	ð ˆØ�	‰	×Ñ×$Ñ$Ð%=¸rÔBÜÐ,Ó-ˆØ�	‰	�‰×Ñ˜GÔ$Ø×Ñ˜'˜ FÖ+r   )r�   N)
r   r   r   r   r   rž   r¯   r´   r   r   r   s   @r   rš   rš   )  s   ø‡ € ñò&ò,÷,ð ,r   rš   N)r   Úcollectionsr   Útwisted.trialr   Útwisted.words.xishr   Útwisted.words.xish.domishr   Útwisted.words.xish.utilityr   r   r"   ÚTestCaser6   rš   r�   r   r   Ú<module>r¼      sV   ðñõ
 $å "Ý &Ý -Ý 6÷ñ ÷")ñ )ô$r8˜8×,Ñ,ô r8ôj",�8×$Ñ$ö ",r   