ó
    ×›‘hl$  ã                   óÀ   • S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
   " S S5      r " S	 S
5      r " S S\R                  5      r " S S\R                  5      rg)z+
Test cases for twisted.words.xish.utility
é    )ÚOrderedDict)Úunittest)Úutility)ÚElement)ÚEventDispatcherc                   ó$   • \ rS rSrSrS rS rSrg)ÚCallbackTrackeré   z|
Test helper for tracking callbacks.

Increases a counter on each call to L{call} and stores the object
passed in the call.
c                 ó    • SU l         S U l        g )Nr   ©ÚcalledÚobj©Úselfs    ÚdC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/words/test/test_xishutil.pyÚ__init__ÚCallbackTracker.__init__   s   € ØˆŒØˆ�ó    c                 ó8   • U R                   S-   U l         Xl        g )Né   r   )r   r   s     r   ÚcallÚCallbackTracker.call   s   € Ø—k‘k A‘oˆŒØ�r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__© r   r   r	   r	      s   † ñòõr   r	   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚOrderedCallbackTrackeré"   z5
Test helper for tracking callbacks and their order.
c                 ó   • / U l         g ©N©ÚcallListr   s    r   r   ÚOrderedCallbackTracker.__init__'   s	   € Øˆ�r   c                 óN   • U R                   R                  U R                  5        g r$   )r&   ÚappendÚcall1©r   Úobjects     r   r*   ÚOrderedCallbackTracker.call1*   ó   € Ø�‰×Ñ˜TŸZ™ZÕ(r   c                 óN   • U R                   R                  U R                  5        g r$   )r&   r)   Úcall2r+   s     r   r0   ÚOrderedCallbackTracker.call2-   r.   r   c                 óN   • U R                   R                  U R                  5        g 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   r   r!   r!   "   s   † ñòò)ò)õ)r   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g)ÚEventDispatcherTestsé4   z
Tests for L{EventDispatcher}.
c                 ó–  • [        5       n[        5       n[        5       n[        5       nUR                  SUR                  5        UR                  SUR                  5        UR                  SUR                  5        UR                  SUR                  5        [	        S5      nUR                  S5        [	        S5      nUR                  S5        UR                  U5        U R                  UR                  S	5        U R                  UR                  U5        U R                  UR                  S
5        UR                  U5        U R                  UR                  S	5        U R                  UR                  S5        U R                  UR                  U5        U R                  UR                  S
5        UR                  US5        U R                  UR                  S5        U R                  UR                  U5        UR                  SUR                  5        UR                  U5        U R                  UR                  S5        g )Nú/message/bodyú/messageú	/presenceú//event/testevent©ÚnsÚmessageÚbody©r>   ÚpresencerB   é   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                 ó´  • [        5       n[        5       n[        5       nUR                  SUR                  5        UR                  SUR                  5        UR	                  US5        U R                  UR                  S5        U R                  UR                  U5        U R                  UR                  S5        U R                  UR                  U5        g)zv
Test adding two observers for the same query.

When the event is dispatched both of the observers need to be called.
r<   r   N)r   r	   rD   r   rF   rG   r   r   )r   rI   rJ   rK   s       r   Útest_addObserverTwiceÚ*EventDispatcherTests.test_addObserverTwice]   s¡   € ô ÓˆÜÓˆÜÓˆà	�‰Ð)¨3¯8©8Ô4Ø	�‰Ð)¨3¯8©8Ô4Ø	�
‰
�1Ð)Ô*à×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ !Ô$Ø×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ !Õ$r   c                 ó†  ^^• [        5       m[        S5      n[        5       mUU4S jnTR                  SU5        TR	                  U5        U R                  TR                  S5        TR	                  U5        U R                  TR                  S5        TR	                  U5        U R                  TR                  S5        g)z7
Test for registration of an observer during dispatch.
r=   c                 ó>   >• TR                  STR                  5        g ©Nr:   )rD   r   )Ú_ÚcbrI   s    €€r   Ú	onMessageÚBEventDispatcherTests.test_addObserverInDispatch.<locals>.onMessagex   s   ø€ Ø�M‰M˜* b§g¡gÕ.r   r:   r   r   rC   N©r   r   r	   ÚaddOnetimeObserverrF   rG   r   ©r   rM   rY   rX   rI   s      @@r   Útest_addObserverInDispatchÚ/EventDispatcherTests.test_addObserverInDispatchp   s”   ù€ ô ÓˆÜÐ'Ó(ˆÜÓˆö	/ð 	
×Ñ˜Z¨Ô3à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÔ&à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÔ&à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÕ&r   c                 ó†  ^^• [        5       m[        S5      n[        5       mUU4S jnTR                  SU5        TR	                  U5        U R                  TR                  S5        TR	                  U5        U R                  TR                  S5        TR	                  U5        U R                  TR                  S5        g)z>
Test for registration of a onetime observer during dispatch.
r=   c                 ó>   >• TR                  STR                  5        g rV   )r\   r   )rM   rX   rI   s    €€r   rY   ÚIEventDispatcherTests.test_addOnetimeObserverInDispatch.<locals>.onMessageŽ   s   ø€ Ø× Ñ  ¨R¯W©WÕ5r   r:   r   r   Nr[   r]   s      @@r   Ú!test_addOnetimeObserverInDispatchÚ6EventDispatcherTests.test_addOnetimeObserverInDispatch†   s”   ù€ ô ÓˆÜÐ'Ó(ˆÜÓˆö	6ð 	
×Ñ˜Z¨Ô3à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÔ&à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÔ&à	�
‰
�3ŒØ×Ñ˜Ÿ™ AÕ&r   c                 ó.  • [        5       n[        S5      n[        5       nUR                  SUR                  5        UR                  U5        U R                  UR                  S5        UR                  U5        U R                  UR                  S5        g )Nr=   r:   r   )r   r   r	   r\   r   rF   rG   r   )r   rI   rM   rX   s       r   ÚtestOnetimeDispatchÚ(EventDispatcherTests.testOnetimeDispatchœ   so   € ÜÓˆÜÐ'Ó(ˆÜÓˆà	×Ñ˜Z¨¯©Ô1Ø	�
‰
�3ŒØ×Ñ˜Ÿ™ AÔ&Ø	�
‰
�3ŒØ×Ñ˜Ÿ™ AÕ&r   c                 ó  • [        5       n[        S5      n[        S5      n[        5       nUR                  SUR                  5        UR                  U5      nU R                  SU5        UR                  U5      nU R                  SU5        g )Nr=   rA   r;   FT)r   r   r	   rD   r   rF   rG   )r   rI   rM   rN   rX   Úresults         r   ÚtestDispatcherResultÚ)EventDispatcherTests.testDispatcherResult§   su   € ÜÓˆÜÐ'Ó(ˆÜÐ)Ó*ˆÜÓˆà	�‰�k 2§7¡7Ô+Ø—‘˜C“ˆØ×Ñ˜ Ô'à—‘˜DÓ!ˆØ×Ñ˜˜vÕ&r   c                 ó  • [        5       n[        5       nUR                  SUR                  5        UR                  SUR                  S5        UR                  SUR
                  S5        [        S5      nUR                  S5        UR                  U5        U R                  UR                  UR
                  UR                  UR                  /S[        UR                   Vs/ s H  oDR                  PM     sn5      -  5        g s  snf )Nr9   r:   éÿÿÿÿr   r=   r@   zCalls out of order: %s)r   r!   rD   r0   r3   r*   r   rE   rF   rG   r&   Úreprr   )r   rI   rX   rM   Ú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                 ó`  • [        5       n[        5       nUR                  SUR                  5        UR	                  SS5        U R                  SUR                  5        UR                  SUR                  5        U R                  S[        UR                  R                  S5      5      5        g)z?
Test observer clean-up after removeObserver for named events.
ú//event/testNr   r   )r   r	   rD   r   rF   rG   r   rH   ÚlenÚ_eventObserversÚpop©r   rI   rX   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                 ót  • [        5       n[        5       n[        S5      nUR                  SUR                  5        UR                  U5        U R                  SUR                  5        UR                  SUR                  5        U R                  S[        UR                  R                  S5      5      5        g)z?
Test observer clean-up after removeObserver for XPath events.
©Nr?   r:   r   r   N)r   r	   r   rD   r   rF   rG   r   rH   rt   Ú_xpathObserversrv   ©r   rI   rX   rM   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                 ó(  • [        5       n[        5       nUR                  SUR                  5        UR	                  SS5        U R                  SUR                  5        U R                  S[        UR                  R                  S5      5      5        g)z4
Test observer clean-up after onetime named events.
rs   Nr   r   )
r   r	   r\   r   rF   rG   r   rt   ru   rv   rw   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                 ó<  • [        5       n[        5       n[        S5      nUR                  SUR                  5        UR                  U5        U R                  SUR                  5        U R                  S[        UR                  R                  S5      5      5        g)z4
Test observer clean-up after onetime XPath events.
r{   r:   r   r   N)r   r	   r   r\   r   rF   rG   r   rt   r|   rv   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                 ó@  ^•  " S S[         R                  5      n " S S[        5      mU4S jn[        5       n[	        5       n[         R                  n U[         l        UR                  SU5        UR                  SUR                  5         UR                  SS5        U R                  S	[        U R                  T5      5      5        U R                  S	UR                  5        U[         l        g! T a    U R                  S5         Nkf = f! U[         l        f = f)
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                   ó   • \ rS rSrS rSrg)ÚOEventDispatcherTests.test_observerRaisingException.<locals>.OrderedCallbackListi
  c                 ó"   • [        5       U l        g r$   )r   Ú	callbacksr   s    r   r   ÚXEventDispatcherTests.test_observerRaisingException.<locals>.OrderedCallbackList.__init__  s   € Ü!,£�•r   )rŠ   N)r   r   r   r   r   r   r   r   r   ÚOrderedCallbackListrˆ   
  s   † õ/r   rŒ   c                   ó   • \ rS rSrSrg)ÚEEventDispatcherTests.test_observerRaisingException.<locals>.TestErrori  r   N)r   r   r   r   r   r   r   r   Ú	TestErrorrŽ     s   † Úr   r�   c                 ó   >• T" 5       er$   r   )rW   r�   s    €r   Ú
raiseErrorÚFEventDispatcherTests.test_observerRaisingException.<locals>.raiseError  s   ø€ Ù“+Ðr   rs   Nz2TestError raised. Should have been logged instead.r   )r   ÚCallbackListÚ	Exceptionr   r	   rD   r   rF   ÚfailrG   rt   ÚflushLoggedErrorsr   )r   rŒ   r‘   rI   rX   Ú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 ÂC3 Â!AD Ã3DÄ
D ÄDÄD ÄDr   N)r   r   r   r   r   rO   rR   r^   rc   rf   rj   rp   rx   r~   r�   r„   r˜   r   r   r   r   r6   r6   4   sD   † ñò"(òH%ò&'ò,'ò,	'ò'ò
ò,;ò;ò;ò;õ$8r   r6   c                   ó*   • \ rS rSrSrS rS rS rSrg)ÚXmlPipeTestsi)  z2
Tests for L{twisted.words.xish.utility.XmlPipe}.
c                 ó8   • [         R                  " 5       U l        g r$   )r   ÚXmlPipeÚpiper   s    r   ÚsetUpÚXmlPipeTests.setUp.  s   € Ü—O’OÓ%ˆ�	r   c                 óè   ^• U4S jn/ mU R                   R                  R                  SU5        [        S5      nU R                   R                  R                  U5        U R                  U/T5        g)z?
Send an element from the source and observe it from the sink.
c                 ó(   >• TR                  U 5        g r$   ©r)   ©r   r   s    €r   rX   Ú,XmlPipeTests.test_sendFromSource.<locals>.cb6  ó   ø€ Ø�M‰M˜#Õr   ú/test[@xmlns="testns"]©ÚtestnsÚtestN)rž   ÚsinkrD   r   ÚsourceÚsendrG   ©r   rX   Úelementr   s      @r   Útest_sendFromSourceÚ XmlPipeTests.test_sendFromSource1  s]   ø€ õ
	ð ˆØ�	‰	�‰×"Ñ"Ð#;¸RÔ@ÜÐ,Ó-ˆØ�	‰	×Ñ×Ñ˜gÔ&Ø×Ñ˜'˜ FÕ+r   c                 óè   ^• U4S jn/ mU R                   R                  R                  SU5        [        S5      nU R                   R                  R                  U5        U R                  U/T5        g)z?
Send an element from the sink and observe it from the source.
c                 ó(   >• TR                  U 5        g r$   r£   r¤   s    €r   rX   Ú*XmlPipeTests.test_sendFromSink.<locals>.cbD  r¦   r   r§   r¨   N)rž   r¬   rD   r   r«   r­   rG   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   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   