+
    üÐjÕ  ã                  ó    € R t ^ RIHt ^ RIHt ^ RIHtHtHt	 ^ RI
HtHt ^ RIHt ^RIHt  ! R R]4      t ! R	 R
]4      t ! R R]4      tR# )zY
Tests for L{twisted.internet.abstract}, a collection of APIs for implementing
reactors.
)Úannotations)ÚUnion)ÚexampleÚgivenÚ
strategies)ÚFileDescriptorÚisIPv6Address)ÚSynchronousTestCase)Ú_FakeFDSetReactorc                  ób   € ] tR t^tRtR R ltR R ltR R ltR R	 ltR
 R lt	R R lt
RtR# )ÚIPv6AddressTestszk
Tests for L{isIPv6Address}, a function for determining if a particular
string is an IPv6 address literal.
c               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚNone© )Úformats   "ÚE/usr/lib/python3/dist-packages/twisted/internet/test/test_abstract.pyÚ__annotate__ÚIPv6AddressTests.__annotate__   s   € ÷ ,ñ ,˜Dñ ,ó    c                ó:   € V P                  \        R4      4       R# )z2
The empty string is not an IPv6 address literal.
Ú N©ÚassertFalser   ©Úselfs   &r   Ú
test_emptyÚIPv6AddressTests.test_empty   s   € ð 	×Ñœ rÓ*Ö+r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r      s   € ÷ -ñ -˜Dñ -r   c                ó:   € V P                  \        R4      4       R# )z1
A single C{":"} is not an IPv6 address literal.
Ú:Nr   r   s   &r   Ú
test_colonÚIPv6AddressTests.test_colon   s   € ð 	×Ñœ sÓ+Ö,r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r   %   s   € ÷ .ñ .˜tñ .r   c                ó:   € V P                  \        R4      4       R# )z0
C{"::1"} is the IPv6 loopback address literal.
z::1N©Ú
assertTruer   r   s   &r   Útest_loopbackÚIPv6AddressTests.test_loopback%   s   € ð 	�‰œ eÓ,Ö-r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r   +   s   € ÷ 6ñ 6˜dñ 6r   c                ó¢   € V P                  \        R4      4       V P                  \        R4      4       V P                  \        R4      4       R# )zn
An otherwise valid IPv6 address literal may also include a C{"%"}
followed by an arbitrary scope identifier.
zfe80::1%eth0ú	fe80::2%1zfe80::3%en2Nr'   r   s   &r   Útest_scopeIDÚIPv6AddressTests.test_scopeID+   s7   € ð
 	�‰œ nÓ5Ô6Ø�‰œ kÓ2Ô3Ø�‰œ mÓ4Ö5r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r   4   s   € ÷ 6ñ 6¨ñ 6r   c                ó¢   € V P                  \        R4      4       V P                  \        R4      4       V P                  \        R4      4       R# )z^
An otherwise invalid IPv6 address literal is still invalid with a
trailing scope identifier.
z%eth0z:%eth0ú
hello%eth0Nr   r   s   &r   Útest_invalidWithScopeIDÚ(IPv6AddressTests.test_invalidWithScopeID4   s=   € ð
 	×Ñœ wÓ/Ô0Ø×Ñœ xÓ0Ô1Ø×Ñœ |Ó4Ö5r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r   =   s   € ÷ 
7ñ 
7 dñ 
7r   c                ó
  € V P                  \        R4      4       V P                  \        R4      4       V P                  \        R4      4       V P                  \        R4      4       V P                  \        R4      4       R# )zA
L{isIPv6Address} evaluates ASCII-encoded bytes as well as text.
s	   fe80::2%1r-   u   äŒ¡r2   s
   hello%eth0N)r(   r   r   r   s   &r   Útest_unicodeAndBytesÚ%IPv6AddressTests.test_unicodeAndBytes=   s_   € ð 	�‰œ lÓ3Ô4Ø�‰œ kÓ2Ô3Ø×Ñœ xÓ0Ô1Ø×Ñœ |Ó4Ô5Ø×Ñœ }Ó5Ö6r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r#   r)   r.   r3   r7   Ú__static_attributes__r   r   r   r   r      s*   † ñõ
,õ-õ.õ6õ6÷
7ñ 
7r   r   c                  ó:   € ] tR t^JtRtRtRtR R ltR R ltRt	R	# )
ÚTrackingFileDescriptorz6
Write a limited amount, and track what gets written.
TFc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú
operationszlist[Union[int, bytes]]Úwrittenzlist[bytes]Ú
send_limitÚintr   )r   s   "r   r   Ú#TrackingFileDescriptor.__annotate__S   s$   € ÷ ;ñ ;Ø1ð;Ø<Gð;ØUXñ;r   c                	óh   € Wn         W n        W0n        \        P                  ! V \        4       4       R # ©N)rB   rC   Ú
SEND_LIMITr   Ú__init__r
   )r   rB   rC   rD   s   &&&&r   rJ   ÚTrackingFileDescriptor.__init__S   s'   € ð %ŒØŒØ$ŒÜ×Ò Ô&7Ó&9Ö:r   c               ó    € V ^8„  d   QhRRRR/# )r   ÚdataÚbytesr   rE   r   )r   s   "r   r   rF   [   s   € ÷ ñ  %ð ¨Cñ r   c                	óÒ   € V P                   P                  ^ 4      p\        V\        4      '       g   Q h\	        V\        V4      4      pV P                  P                  VRV 4       V# )é    N)rB   ÚpopÚ
isinstancerE   ÚminÚlenrC   Úappend)r   rM   ÚtoWrites   && r   ÚwriteSomeDataÚ$TrackingFileDescriptor.writeSomeData[   sV   € Ø—/‘/×%Ñ% aÓ(ˆÜ˜'¤3×'Ò'Ð'Ð'Ü�gœs 4›yÓ)ˆØ�‰×Ñ˜D  '˜NÔ+Øˆr   )rI   rB   rC   N)
r9   r:   r;   r<   r=   Ú	connectedÚ_writeDisconnectedrJ   rW   r>   r   r   r   r@   r@   J   s#   † ñð
 €IØÐõ;÷ñ r   r@   c                  óê   € ] tR t^ctRt]! ]P                  ! ]P                  ! ]P                  ! ^^
R7      ]P                  ! ^ ^
R7      4      ^^R7      R7      ]! . R	OR7      R R l4       4       tRtR# )
ÚWriteBufferingTestsz=
Tests for the complex logic in the L{FileDescriptor} class.
)Úmin_sizeÚmax_size)Ú	min_valueÚ	max_value)rB   c               ó    € V ^8„  d   QhRRRR/# )r   rB   zlist[Union[bytes, int]]r   r   r   )r   s   "r   r   Ú WriteBufferingTests.__annotate__t   s   € ÷ +ñ +Ð.Eð +È$ñ +r   c                ó¨  € RP                  R V 4       4      p. p^p\        WV4      pW^,          .^\        V4      V,          ,           ,          ,          pV'       dR   \        V^ ,          \        4      '       d#   VP                  VP                  ^ 4      4       KG  VP                  4        KY  RP                  V4      pV P                  W&4       R# )a-  
A sequence of C{write()} and C{doWrite()} will eventually write all the
data correctly and in order.

@param operations: A list of C{bytes} (indicating a C{write()}) or
    C{int} (indicating C{doWrite()} with the integer being how much
    C{writeSomeData()} writeSomeData will successfully write).
r   c              3  óV   "  € T F  p\        V\        4      '       g   K  Vx € K!  	  R # 5irH   )rR   rN   )Ú.0Úops   & r   Ú	<genexpr>Ú:WriteBufferingTests.test_writeBuffering.<locals>.<genexpr>}   s   é € ÐM© 2´zÀ"Äe×7LŸBšB«ùs   ‚)Ÿ
)N)	Újoinr@   rT   rR   rN   ÚwriterQ   ÚdoWriteÚassertEqual)r   rB   ÚexpectedrC   rI   ÚfdÚresults   &&     r   Útest_writeBufferingÚ'WriteBufferingTests.test_writeBufferingh   s¢   € ð* —8‘8ÑM©ÓMÓMˆØ!ˆð
 ˆ
Ü# J¸ÓDˆð 	 A•~Ð&¨!¬c°(«m¸zÕ.IÕ*IÕJÕJˆ
çÜ˜* Q�-¬×/Ò/Ø—‘˜Ÿ™¨Ó*Ö+à—
‘
–à—‘˜'Ó"ˆØ×Ñ˜Ö*r   r   N)s   abcdefrP   ó   g)r9   r:   r;   r<   r=   r   ÚstÚlistsÚone_ofÚbinaryÚintegersr   rp   r>   r   r   r   r\   r\   c   sl   † ññ Ø—8’8Ø�IŠIØ—	’	 1¨rÔ2Ø—’ a°2Ô6óð Øô
ô	ñ Ò,Ô-ô+ó .ó	ô+r   r\   N)r=   Ú
__future__r   Útypingr   Ú
hypothesisr   r   r   rs   Útwisted.internet.abstractr   r   Útwisted.trial.unittestr	   Útest_tcpr
   r   r@   r\   r   r   r   Ú<module>r~      sH   ðñõ #å ç 7Ñ 7ç CÝ 6Ý 'ô47Ð*ô 47ôn˜^ô ô2-+Ð-ö -+r   