ó
    Ö›‘hš  ã                   óº   • 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KJr   " S	 S
5      r\" \(       + S5       " S S\
5      5       rg! \ a    Sr N1f = f)z-
Tests for L{twisted.internet.epollreactor}.
é    )ÚskipIf©ÚConnectionDone)Ú_ContinuousPolling)ÚClock)ÚTestCase)ÚepollreactorNc                   ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
Ú
Descriptoré   z>
Records reads and writes, as if it were a C{FileDescriptor}.
c                 ó   • / U l         g ©N©Úevents©Úselfs    ÚkC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/internet/test/test_epollreactor.pyÚ__init__ÚDescriptor.__init__   s	   € Øˆ�ó    c                 ó   • g)Né   © r   s    r   ÚfilenoÚDescriptor.fileno   s   € Ør   c                 ó:   • U R                   R                  S5        g )NÚread©r   Úappendr   s    r   ÚdoReadÚDescriptor.doRead    s   € Ø�‰×Ñ˜6Õ"r   c                 ó:   • U R                   R                  S5        g )NÚwriter   r   s    r   ÚdoWriteÚDescriptor.doWrite#   s   € Ø�‰×Ñ˜7Õ#r   c                 ód   • UR                  [        5        U R                  R                  S5        g )NÚlost)Útrapr   r   r   )r   Úreasons     r   ÚconnectionLostÚDescriptor.connectionLost&   s    € Ø�‰”NÔ#Ø�‰×Ñ˜6Õ"r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r    r$   r*   Ú__static_attributes__r   r   r   r   r      s    † ñòòò#ò$õ#r   r   z(epoll not supported in this environment.c                   óf   • \ 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)ÚContinuousPollingTestsé+   zU
L{_ContinuousPolling} can be used to read and write from C{FileDescriptor}
objects.
c                 óö  • [        [        5       5      nU R                  UR                  5        [	        5       nU R                  UR                  U5      5        UR                  U5        U R                  UR                  5        U R                  UR                  R                  5        U R                  UR                  R                  UR                  5        U R                  UR                  U5      5        g)zQ
Adding a reader when there was previously no reader starts up a
C{LoopingCall}.
N)r   r   ÚassertIsNoneÚ_loopÚobjectÚassertFalseÚ	isReadingÚ	addReaderÚassertIsNotNoneÚ
assertTrueÚrunningÚassertIsÚclockÚ_reactor©r   ÚpollerÚreaders      r   Útest_addReaderÚ%ContinuousPollingTests.test_addReader2   ó«   € ô
 $¤E£GÓ,ˆØ×Ñ˜&Ÿ,™,Ô'Ü“ˆØ×Ñ˜×)Ñ)¨&Ó1Ô2Ø×Ñ˜Ô Ø×Ñ˜VŸ\™\Ô*Ø�‰˜Ÿ™×,Ñ,Ô-Ø�‰�f—l‘l×(Ñ(¨&¯/©/Ô:Ø�‰˜×(Ñ(¨Ó0Õ1r   c                 óö  • [        [        5       5      nU R                  UR                  5        [	        5       nU R                  UR                  U5      5        UR                  U5        U R                  UR                  5        U R                  UR                  R                  5        U R                  UR                  R                  UR                  5        U R                  UR                  U5      5        g)zQ
Adding a writer when there was previously no writer starts up a
C{LoopingCall}.
N)r   r   r6   r7   r8   r9   Ú	isWritingÚ	addWriterr<   r=   r>   r?   r@   rA   ©r   rC   Úwriters      r   Útest_addWriterÚ%ContinuousPollingTests.test_addWriterA   rG   r   c                 óL  • [        [        5       5      n[        5       nUR                  U5        UR	                  U5        U R                  UR                  5        U R                  UR                  R                  5       / 5        U R                  UR                  U5      5        g)z-
Removing a reader stops the C{LoopingCall}.
N)r   r   r8   r;   ÚremoveReaderr6   r7   ÚassertEqualrA   ÚgetDelayedCallsr9   r:   rB   s      r   Útest_removeReaderÚ(ContinuousPollingTests.test_removeReaderP   ó{   € ô $¤E£GÓ,ˆÜ“ˆØ×Ñ˜Ô Ø×Ñ˜FÔ#Ø×Ñ˜&Ÿ,™,Ô'Ø×Ñ˜Ÿ™×8Ñ8Ó:¸BÔ?Ø×Ñ˜×)Ñ)¨&Ó1Õ2r   c                 óL  • [        [        5       5      n[        5       nUR                  U5        UR	                  U5        U R                  UR                  5        U R                  UR                  R                  5       / 5        U R                  UR                  U5      5        g)z-
Removing a writer stops the C{LoopingCall}.
N)r   r   r8   rJ   ÚremoveWriterr6   r7   rQ   rA   rR   r9   rI   rK   s      r   Útest_removeWriterÚ(ContinuousPollingTests.test_removeWriter\   rU   r   c                 óŽ   • [        [        5       5      nUR                  [        5       5        UR	                  [        5       5        g)z=
Removing unknown readers and writers silently does nothing.
N)r   r   rW   r8   rP   )r   rC   s     r   Útest_removeUnknownÚ)ContinuousPollingTests.test_removeUnknownh   s0   € ô $¤E£GÓ,ˆØ×ÑœF›HÔ%Ø×ÑœF›HÕ%r   c                 ó   • [        [        5       5      n[        5       nUR                  U5        U R	                  UR
                  5        UR                  [        5       5        U R	                  UR
                  5        UR                  [        5       5        U R	                  UR
                  5        UR                  [        5       5        UR                  U5        U R	                  UR
                  5        U R                  UR
                  R                  5        U R                  [        UR                  R                  5       5      S5        g)zI
Adding multiple readers and writers results in a single
C{LoopingCall}.
r   N)r   r   r8   rJ   r<   r7   r;   rW   r=   r>   rQ   ÚlenrA   rR   rK   s      r   Útest_multipleReadersAndWritersÚ5ContinuousPollingTests.test_multipleReadersAndWritersp   sã   € ô
 $¤E£GÓ,ˆÜ“ˆØ×Ñ˜Ô Ø×Ñ˜VŸ\™\Ô*Ø×Ñœ›Ô"Ø×Ñ˜VŸ\™\Ô*Ø×Ñœ›Ô"Ø×Ñ˜VŸ\™\Ô*Ø×Ñœ›Ô"Ø×Ñ˜FÔ#Ø×Ñ˜VŸ\™\Ô*Ø�‰˜Ÿ™×,Ñ,Ô-Ø×Ñœ˜VŸ_™_×<Ñ<Ó>Ó?ÀÕCr   c                 ó´  • [        5       n[        U5      n[        5       nUR                  U5        U R	                  UR
                  / 5        UR                  S5        U R	                  UR
                  S/5        UR                  S5        U R	                  UR
                  SS/5        UR                  S5        U R	                  UR
                  / SQ5        g)zI
Adding a reader causes its C{doRead} to be called every 1
milliseconds.
gñhãˆµøä>r   )r   r   r   N)r   r   r   r;   rQ   r   Úadvance©r   ÚreactorrC   Údescs       r   Útest_readerPollingÚ)ContinuousPollingTests.test_readerPollingƒ   s¦   € ô
 “'ˆÜ# GÓ,ˆÜ‹|ˆØ×Ñ˜ÔØ×Ñ˜Ÿ™ bÔ)Ø�‰˜Ô Ø×Ñ˜Ÿ™ v hÔ/Ø�‰˜Ô Ø×Ñ˜Ÿ™ v¨vÐ&6Ô7Ø�‰˜Ô Ø×Ñ˜Ÿ™Ò&>Õ?r   c                 ó´  • [        5       n[        U5      n[        5       nUR                  U5        U R	                  UR
                  / 5        UR                  S5        U R	                  UR
                  S/5        UR                  S5        U R	                  UR
                  SS/5        UR                  S5        U R	                  UR
                  / SQ5        g)zJ
Adding a writer causes its C{doWrite} to be called every 1
milliseconds.
çü©ñÒMbP?r#   )r#   r#   r#   N)r   r   r   rJ   rQ   r   rb   rc   s       r   Útest_writerPollingÚ)ContinuousPollingTests.test_writerPolling”   s¦   € ô
 “'ˆÜ# GÓ,ˆÜ‹|ˆØ×Ñ˜ÔØ×Ñ˜Ÿ™ bÔ)Ø�‰˜ÔØ×Ñ˜Ÿ™ w iÔ0Ø�‰˜ÔØ×Ñ˜Ÿ™ w°Ð&8Ô9Ø�‰˜ÔØ×Ñ˜Ÿ™Ò&AÕBr   c                 ó  • [        5       n[        U5      n[        5       nS Ul        UR	                  U5        U R                  UR                  / 5        UR                  S5        U R                  UR                  S/5        g)z]
If a C{doRead} returns a value indicating disconnection,
C{connectionLost} is called on it.
c                  ó   • [        5       $ r   r   r   r   r   Ú<lambda>ÚBContinuousPollingTests.test_connectionLostOnRead.<locals>.<lambda>­   s   € œnÔ.r   ri   r'   N)r   r   r   r    r;   rQ   r   rb   rc   s       r   Útest_connectionLostOnReadÚ0ContinuousPollingTests.test_connectionLostOnRead¥   sg   € ô
 “'ˆÜ# GÓ,ˆÜ‹|ˆÙ.ˆŒØ×Ñ˜ÔØ×Ñ˜Ÿ™ bÔ)Ø�‰˜ÔØ×Ñ˜Ÿ™ v hÕ/r   c                 ó  • [        5       n[        U5      n[        5       nS Ul        UR	                  U5        U R                  UR                  / 5        UR                  S5        U R                  UR                  S/5        g)z^
If a C{doWrite} returns a value indicating disconnection,
C{connectionLost} is called on it.
c                  ó   • [        5       $ r   r   r   r   r   rn   ÚCContinuousPollingTests.test_connectionLostOnWrite.<locals>.<lambda>»   s   € œ~Ô/r   ri   r'   N)r   r   r   r$   rJ   rQ   r   rb   rc   s       r   Útest_connectionLostOnWriteÚ1ContinuousPollingTests.test_connectionLostOnWrite³   sg   € ô
 “'ˆÜ# GÓ,ˆÜ‹|ˆÙ/ˆŒØ×Ñ˜ÔØ×Ñ˜Ÿ™ bÔ)Ø�‰˜ÔØ×Ñ˜Ÿ™ v hÕ/r   c                 óþ  • [        [        5       5      n[        5       n[        5       n[        5       nUR                  U5        UR                  U5        UR	                  U5        UR	                  U5        UR                  5       nU R                  UR                  5       / 5        U R                  UR                  5       / 5        U R                  [        U5      S5        U R                  [        U5      X#U15        g)z^
L{_ContinuousPolling.removeAll} removes all descriptors and returns
the readers and writers.
é   N)r   r   r8   r;   rJ   Ú	removeAllrQ   Ú
getReadersÚ
getWritersr^   Úset)r   rC   rD   rL   ÚbothÚremoveds         r   Útest_removeAllÚ%ContinuousPollingTests.test_removeAllÁ   sÊ   € ô
 $¤E£GÓ,ˆÜ“ˆÜ“ˆÜ‹xˆØ×Ñ˜Ô Ø×Ñ˜ÔØ×Ñ˜Ô Ø×Ñ˜ÔØ×"Ñ"Ó$ˆØ×Ñ˜×*Ñ*Ó,¨bÔ1Ø×Ñ˜×*Ñ*Ó,¨bÔ1Ø×Ñœ˜W› qÔ)Ø×Ñœ˜W›¨¸Ð'=Õ>r   c                 óž   • [        [        5       5      n[        5       nUR                  U5        U R	                  X!R                  5       5        g)zJ
L{_ContinuousPolling.getReaders} returns a list of the read
descriptors.
N)r   r   r8   r;   ÚassertInrz   rB   s      r   Útest_getReadersÚ&ContinuousPollingTests.test_getReadersÔ   ó:   € ô
 $¤E£GÓ,ˆÜ“ˆØ×Ñ˜Ô Ø�‰�f×/Ñ/Ó1Õ2r   c                 óž   • [        [        5       5      n[        5       nUR                  U5        U R	                  X!R                  5       5        g)zK
L{_ContinuousPolling.getWriters} returns a list of the write
descriptors.
N)r   r   r8   rJ   r‚   r{   rK   s      r   Útest_getWritersÚ&ContinuousPollingTests.test_getWritersÞ   r…   r   r   N)r,   r-   r.   r/   r0   rE   rM   rS   rX   r[   r_   rf   rj   rp   ru   r   rƒ   r‡   r1   r   r   r   r3   r3   +   sK   † ñò
2ò2ò
3ò
3ò&òDò&@ò"Cò"0ò0ò?ò&3õ3r   r3   )r0   Úunittestr   Útwisted.internet.errorr   Útwisted.internet.posixbaser   Útwisted.internet.taskr   Útwisted.trial.unittestr   Útwisted.internetr	   ÚImportErrorr   r3   r   r   r   Ú<module>r�      sm   ðñõ å 1Ý 9Ý 'Ý +ðÝ-÷
#ñ #ñ, ˆLÔÐDÓEôz3˜Xó z3ó Fñz3øð7 ó Ø‚Lðús   ¢A ÁAÁA