ó
    Ö›‘hÝ$  ã                   óì  • S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
Jr  SSKJrJr  SSKJr  SS	KJr   " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r\" 5       R1                  \R3                  5       5        \" 5       R1                  \R3                  5       5        \" 5       R1                  \R3                  5       5        \" 5       R1                  \R3                  5       5        g)aD  
Tests for implementations of L{IReactorSocket}.

Generally only tests for failure cases are found here.  Success cases for
this interface are tested elsewhere.  For example, the success case for
I{AF_INET} is in L{twisted.internet.test.test_tcp}, since that case should
behave exactly the same as L{IReactorTCP.listenTCP}.
é    N)Úverify)ÚUnsupportedAddressFamily)ÚIReactorSocket)ÚDatagramProtocolÚServerFactory)ÚReactorBuilderÚneedsRunningReactor)Úerr)Úplatformc                   ó$   • \ rS rSrSr\/rS rSrg)Ú&IReactorSocketVerificationTestsBuilderé   a#  
Builder for testing L{IReactorSocket} implementations for required
methods and method signatures.

L{ReactorBuilder} already runs L{IReactorSocket.providedBy} to
ensure that these tests will only be run on reactor classes that
claim to implement L{IReactorSocket}.

These tests ensure that reactors which claim to provide the
L{IReactorSocket} interface actually have all the required methods
and that those methods have the expected number of arguments.

These tests will be skipped for reactors which do not claim to
provide L{IReactorSocket}.
c                 óx   • U R                  5       nU R                  [        R                  " [        U5      5        g)zN
The reactor instance returned by C{buildReactor} provides
L{IReactorSocket}.
N)ÚbuildReactorÚ
assertTruer   ÚverifyObjectr   )ÚselfÚreactors     ÚeC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/internet/test/test_socket.pyÚtest_providerÚ4IReactorSocketVerificationTestsBuilder.test_provider-   s+   € ð
 ×#Ñ#Ó%ˆØ�‰œ×+Ò+¬N¸GÓDÕEó    © N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚrequiredInterfacesr   Ú__static_attributes__r   r   r   r   r      s   † ñð  )Ð)ÐõFr   r   c                   ó0   • \ rS rSrSr\/rS rS rS r	Sr
g)Ú!AdoptStreamPortErrorsTestsBuilderé6   a[  
Builder for testing L{IReactorSocket.adoptStreamPort} implementations.

Generally only tests for failure cases are found here.  Success cases for
this interface are tested elsewhere.  For example, the success case for
I{AF_INET} is in L{twisted.internet.test.test_tcp}, since that case should
behave exactly the same as L{IReactorTCP.listenTCP}.
c                 óþ  • U R                  5       n[        R                  " 5       nUR                  5       nUR                  5         U R	                  [        R
                  UR                  U[        R                  [        5       5      n[        R                  " 5       (       a.  U R                  UR                  S   [        R                  5        gU R                  UR                  S   [        R                  5        g)z‹
An implementation of L{IReactorSocket.adoptStreamPort} raises
L{socket.error} if passed an integer which is not associated with a
socket.
r   N)r   ÚsocketÚfilenoÚcloseÚassertRaisesÚerrorÚadoptStreamPortÚAF_INETr   r   Ú	isWindowsÚassertEqualÚargsÚerrnoÚWSAENOTSOCKÚEBADF©r   r   Úprober&   Úexcs        r   Útest_invalidDescriptorÚ8AdoptStreamPortErrorsTestsBuilder.test_invalidDescriptorB   s«   € ð ×#Ñ#Ó%ˆä—’“ˆØ—‘“ˆØ�‰Œà×ÑÜ�L‰LØ×#Ñ#ØÜ�N‰NÜ‹Oó
ˆô ×Ò×ÑØ×Ñ˜SŸX™X a™[¬%×*;Ñ*;Õ<à×Ñ˜SŸX™X a™[¬%¯+©+Õ6r   c                 ó>  • U R                  5       n[        R                  " 5       nUR                  S5        UR                  S5        U R	                  UR
                  5        SnU R                  [        UR                  UR                  5       U[        5       5        g)zŒ
An implementation of L{IReactorSocket.adoptStreamPort} raises
L{UnsupportedAddressFamily} if passed an address family it does not
support.
©z	127.0.0.1r   é   é  N)r   r%   ÚbindÚlistenÚ
addCleanupr'   r(   r   r*   r&   r   ©r   r   ÚportÚ	arbitrarys       r   Útest_invalidAddressFamilyÚ;AdoptStreamPortErrorsTestsBuilder.test_invalidAddressFamilyZ   su   € ð ×#Ñ#Ó%ˆä�}Š}‹ˆØ�	‰	Ð"Ô#Ø�‰�AŒØ�‰˜Ÿ
™
Ô#àˆ	à×ÑÜ$Ø×#Ñ#Ø�K‰K‹MØÜ‹Oõ	
r   c                 ó  ^ ^^^• T R                  5       m[        R                  " 5       mT R                  TR                  5        TR	                  S5        TR                  S5        TR                  S5        TR                  TR                  5       TR                  [        5       5      nUR                  5       mUU 4S jnTR                  U5        TR                  [        S5        [        TUU4S j5        TR!                  5         g)a	  
When the L{IListeningPort} returned by
L{IReactorSocket.adoptStreamPort} is stopped using
C{stopListening}, the underlying socket is closed but not
shutdown.  This allows another process which still has a
reference to it to continue accepting connections over it.
r8   r9   Fc                 óD  >• TR                  [        R                  TR                  5      n[        R
                  " 5       (       a.  TR                  UR                  S   [        R                  5        g TR                  UR                  S   [        R                  5        g )Nr   )r(   r%   r)   Úacceptr   r,   r-   r.   r/   ÚWSAEWOULDBLOCKÚEAGAIN©Úignoredr4   Ú
portSocketr   s     €€r   ÚstoppedÚFAdoptStreamPortErrorsTestsBuilder.test_stopOnlyCloses.<locals>.stoppedˆ   sj   ø€ ð ×#Ñ#¤F§L¡L°*×2CÑ2CÓDˆCÜ×!Ò!×#Ñ#Ø× Ñ  §¡¨!¡¬e×.BÑ.BÕCà× Ñ  §¡¨!¡¬e¯l©lÕ;r   z"Failed to accept on original port.c                  ó.   >• T R                  U4S j5      $ )Nc                 ó$   >• TR                  5       $ ©N©Ústop©rI   r   s    €r   Ú<lambda>ÚYAdoptStreamPortErrorsTestsBuilder.test_stopOnlyCloses.<locals>.<lambda>.<locals>.<lambda>–   ó   ø€ ¸7¿<¹<¼>r   ©ÚaddCallback©Údr   s   €€r   rS   ÚGAdoptStreamPortErrorsTestsBuilder.test_stopOnlyCloses.<locals>.<lambda>–   ó   ø€ ˜QŸ]™]Ô+IÔJr   N)r   r%   r=   r'   r;   r<   Úsetblockingr*   r&   Úfamilyr   ÚstopListeningrW   Ú
addErrbackr
   r	   Úrun©r   r?   rK   rY   rJ   r   s   `  @@@r   Útest_stopOnlyClosesÚ5AdoptStreamPortErrorsTestsBuilder.test_stopOnlyClosesq   sÎ   û€ ð ×#Ñ#Ó%ˆä—]’]“_ˆ
Ø�‰˜
×(Ñ(Ô)à�‰Ð(Ô)Ø×Ñ˜!ÔØ×Ñ˜uÔ%ð ×&Ñ&Ø×ÑÓ ×!2Ñ!2´M³Oó
ˆð ×ÑÓ ˆö	<ð 	
�‰�gÔØ	�‰”SÐ>Ô?äØÕJô	
ð 	�‰�r   r   N©r   r   r   r   r   r   r   r5   rA   rb   r    r   r   r   r"   r"   6   s!   † ñð )Ð)Ðò7ò0
õ.(r   r"   c                   ó$   • \ rS rSrSr\/rS rSrg)Ú'AdoptStreamConnectionErrorsTestsBuilderéœ   aa  
Builder for testing L{IReactorSocket.adoptStreamConnection}
implementations.

Generally only tests for failure cases are found here.  Success cases for
this interface are tested elsewhere.  For example, the success case for
I{AF_INET} is in L{twisted.internet.test.test_tcp}, since that case should
behave exactly the same as L{IReactorTCP.listenTCP}.
c                 óú   • U R                  5       n[        R                  " 5       nU R                  UR                  5        SnU R	                  [
        UR                  UR                  5       U[        5       5        g)z’
An implementation of L{IReactorSocket.adoptStreamConnection} raises
L{UnsupportedAddressFamily} if passed an address family it does not
support.
r:   N)	r   r%   r=   r'   r(   r   ÚadoptStreamConnectionr&   r   )r   r   Ú
connectionr@   s       r   rA   ÚAAdoptStreamConnectionErrorsTestsBuilder.test_invalidAddressFamily©   sb   € ð ×#Ñ#Ó%ˆä—]’]“_ˆ
Ø�‰˜
×(Ñ(Ô)àˆ	à×ÑÜ$Ø×)Ñ)Ø×ÑÓØÜ‹Oõ	
r   r   N)	r   r   r   r   r   r   r   rA   r    r   r   r   rf   rf   œ   s   † ñð )Ð)Ðõ
r   rf   c                   ó0   • \ rS rSrSr\/rS rS rS r	Sr
g)Ú#AdoptDatagramPortErrorsTestsBuilderé¿   zJ
Builder for testing L{IReactorSocket.adoptDatagramPort} implementations.
c                 óþ  • U R                  5       n[        R                  " 5       nUR                  5       nUR                  5         U R	                  [        R
                  UR                  U[        R                  [        5       5      n[        R                  " 5       (       a.  U R                  UR                  S   [        R                  5        gU R                  UR                  S   [        R                  5        g)z�
An implementation of L{IReactorSocket.adoptDatagramPort} raises
L{socket.error} if passed an integer which is not associated with a
socket.
r   N)r   r%   r&   r'   r(   r)   ÚadoptDatagramPortr+   r   r   r,   r-   r.   r/   r0   r1   r2   s        r   r5   Ú:AdoptDatagramPortErrorsTestsBuilder.test_invalidDescriptorÆ   s¬   € ð ×#Ñ#Ó%ˆä—’“ˆØ—‘“ˆØ�‰Œà×ÑÜ�L‰LØ×%Ñ%ØÜ�N‰NÜÓó
ˆô ×Ò×ÑØ×Ñ˜SŸX™X a™[¬%×*;Ñ*;Õ<à×Ñ˜SŸX™X a™[¬%¯+©+Õ6r   c                 ó6  • U R                  5       n[        R                  " [        R                  [        R                  5      nU R	                  UR
                  5        SnU R                  [        UR                  UR                  5       U[        5       5        g)zŽ
An implementation of L{IReactorSocket.adoptDatagramPort} raises
L{UnsupportedAddressFamily} if passed an address family it does not
support.
r:   N)r   r%   r+   Ú
SOCK_DGRAMr=   r'   r(   r   rp   r&   r   r>   s       r   rA   Ú=AdoptDatagramPortErrorsTestsBuilder.test_invalidAddressFamilyÞ   sm   € ð ×#Ñ#Ó%ˆä�}Š}œVŸ^™^¬V×->Ñ->Ó?ˆØ�‰˜Ÿ
™
Ô#àˆ	à×ÑÜ$Ø×%Ñ%Ø�K‰K‹MØÜÓõ	
r   c                 ó0  ^ ^^^• T R                  5       m[        R                  " [        R                  [        R                  5      mT R	                  TR
                  5        TR                  S5        TR                  S5        TR                  TR                  5       TR                  [        5       5      nUR                  5       mUU 4S jnTR                  U5        TR                  [        S5        [!        TUU4S j5        TR#                  5         g)a  
When the L{IListeningPort} returned by
L{IReactorSocket.adoptDatagramPort} is stopped using
C{stopListening}, the underlying socket is closed but not
shutdown.  This allows another process which still has a
reference to it to continue reading and writing to it.
r8   Fc                 óF  >• TR                  [        R                  TR                  S5      n[        R
                  " 5       (       a.  TR                  UR                  S   [        R                  5        g TR                  UR                  S   [        R                  5        g )Nr9   r   )r(   r%   r)   Úrecvfromr   r,   r-   r.   r/   rF   rG   rH   s     €€r   rK   ÚHAdoptDatagramPortErrorsTestsBuilder.test_stopOnlyCloses.<locals>.stopped	  sl   ø€ ð ×#Ñ#¤F§L¡L°*×2EÑ2EÀqÓIˆCÜ×!Ò!×#Ñ#Ø× Ñ  §¡¨!¡¬e×.BÑ.BÕCà× Ñ  §¡¨!¡¬e¯l©lÕ;r   z Failed to read on original port.c                  ó.   >• T R                  U4S j5      $ )Nc                 ó$   >• TR                  5       $ rO   rP   rR   s    €r   rS   Ú[AdoptDatagramPortErrorsTestsBuilder.test_stopOnlyCloses.<locals>.<lambda>.<locals>.<lambda>  rU   r   rV   rX   s   €€r   rS   ÚIAdoptDatagramPortErrorsTestsBuilder.test_stopOnlyCloses.<locals>.<lambda>  r[   r   N)r   r%   r+   rs   r=   r'   r;   r\   rp   r&   r]   r   r^   rW   r_   r
   r	   r`   ra   s   `  @@@r   rb   Ú7AdoptDatagramPortErrorsTestsBuilder.test_stopOnlyClosesó   sÑ   û€ ð ×#Ñ#Ó%ˆä—]’]¤6§>¡>´6×3DÑ3DÓEˆ
Ø�‰˜
×(Ñ(Ô)à�‰Ð(Ô)Ø×Ñ˜uÔ%ð ×(Ñ(Ø×ÑÓ ×!2Ñ!2Ô4DÓ4Fó
ˆð ×ÑÓ ˆö	<ð 	
�‰�gÔØ	�‰”SÐ<Ô=äØÕJô	
ð 	�‰�r   r   Nrd   r   r   r   rm   rm   ¿   s!   † ñð )Ð)Ðò7ò0
õ*&r   rm   )r   r/   r%   Úzope.interfacer   Útwisted.internet.errorr   Útwisted.internet.interfacesr   Útwisted.internet.protocolr   r   Ú#twisted.internet.test.reactormixinsr   r	   Útwisted.python.logr
   Útwisted.python.runtimer   r   r"   rf   rm   ÚglobalsÚupdateÚmakeTestCaseClassesr   r   r   Ú<module>rˆ      sÊ   ðñó Û å !å ;Ý 6ß Eß SÝ "Ý +ôF¨^ô Fô8c¨ô côL 
¨nô  
ôFZ¨.ô Zñz ƒ	× Ñ Ð7×KÑKÓMÔ NÙ ƒ	× Ñ Ð2×FÑFÓHÔ IÙ ƒ	× Ñ Ð8×LÑLÓNÔ OÙ ƒ	× Ñ Ð4×HÑHÓJÕ Kr   