+
    üÐj;  ã                   ó˜  € R t ^ RIHt ^ RIHtHtHtHtHt ^ RI	H
t
HtHtHtHtHtHtHt ^ RIHt ^ RIHtHtHtHtHtHt ^ RIHtHt ^ RIHt ^ RI H!t! ^ R	I"H#t# ^ R
I$H%t% ^ RI&H't'H(t( ^ RI)H*t* ^RI+H,t,H-t-H.t.H/t/H+t+ ^RI0H1t1H2t2 ]! R4      t3 ! R R]*4      t4 ! R R]*4      t5 ! R R]#4      t6R R lt7 ! R R]*4      t8 ! R R]*4      t9R# )z*
Tests for L{twisted.trial._dist.stream}.
)ÚRandom)Ú	AwaitableÚDictÚListÚTypeVarÚUnion)Úall_ofÚassert_thatÚcallingÚequal_toÚ
has_lengthÚis_Úless_than_or_equal_toÚraises)Úgiven)ÚbinaryÚintegersÚjustÚlistsÚrandomsÚtext)ÚDeferredÚfail)Ú	IProtocol)ÚProtocol)ÚAMP)ÚFailure)ÚFakeTransportÚconnect)ÚSynchronousTestCase)Ú
StreamOpenÚStreamReceiverÚStreamWriteÚchunkÚstream)ÚHasSumÚIsSequenceOfÚTc                   óþ   a € ] tR t^"t o Rt]! ]! ]! ]! 4       4      4      ]! 4       4      V 3R lR l4       t	]! ]
! 4       ]! R4      4      V 3R lR l4       t]! ]
! 4       4      V 3R lR l4       tV 3R	 lR
 ltRtV tR# )ÚStreamReceiverTestsz
Tests for L{StreamReceiver}
c                óJ   <€ V ^8„  d   QhRS[ S[ S[,          ,          RS[RR/# )é   ÚstreamsÚrandomÚreturnN)r   Úbytesr   )ÚformatÚ__classdict__s   "€ÚF/usr/lib/python3/dist-packages/twisted/trial/_dist/test/test_stream.pyÚ__annotate__Ú StreamReceiverTests.__annotate__(   s,   ø€ ÷ =ñ =©4±±UµÕ+<ð =Áfð =ÐQUñ =ó    c                ó¸  € \        4       pV Uu. uF  qCP                  4       NK  	  ppVP                  V4       \        \	        WQ4      4      pVP                  4        F  w  rxV F  p	VP                  Wy4       K  	  K!  	  VP                  V4       V Uu/ uF  qwVP                  V4      bK  	  p
p\        V
\        \        V4      4      4       R# u upi u upi )z{
All data passed to L{StreamReceiver.write} is returned by a call to
L{StreamReceiver.finish} with a matching C{streamId}.
N)r!   ÚopenÚshuffleÚdictÚzipÚitemsÚwriteÚfinishr	   r   r   )Úselfr,   r-   ÚreceiverÚ_Ú	streamIdsÚexpectedDataÚstreamIdÚstringsÚsÚ
actualDatas   &&&        r2   Útest_streamReceivedÚ'StreamReceiverTests.test_streamReceived'   sº   € ô "Ó#ˆÙ.5Ó6©g¨—]‘]–_©gˆ	Ð6ð 	�‰�yÔ!äœC 	Ó3Ó4ˆØ!-×!3Ñ!3Ö!5ÑˆHÛ�Ø—‘˜xÖ+ó ñ "6ð
 	�‰�yÔ!áJSÓTÉ)¸h §¡°Ó 9Ò9É)ˆ
ÐTä�J¤¤H¨\Ó$:Ó ;Ö<ùò 7ùò Us   �CÂCÚdatac                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r+   rC   rI   r.   N)ÚintÚstr)r0   r1   s   "€r2   r3   r4   @   s'   ø€ ÷ Yñ Y©cð Y¹ð YÀñ Yr5   c                ó�   € \        4       p\        \        VP                  4      P	                  W4      \        \        4      4       R# )zj
L{StreamReceiver.write} raises L{KeyError} if called with a
streamId not associated with an open stream.
N)r!   r	   r
   r<   Ú	with_argsr   ÚKeyError)r>   rC   rI   r?   s   &&& r2   Útest_writeBadStreamIdÚ)StreamReceiverTests.test_writeBadStreamId?   s/   € ô "Ó#ˆÜ”G˜HŸN™NÓ+×5Ñ5°hÓEÄvÌhÓGWÖXr5   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r+   rC   r.   N)rK   )r0   r1   s   "€r2   r3   r4   I   s   ø€ ÷ Tñ T©sð T°tñ Tr5   c                ó�   € \        4       p\        \        VP                  4      P	                  V4      \        \        4      4       R# )zk
L{StreamReceiver.finish} raises L{KeyError} if called with a
streamId not associated with an open stream.
N)r!   r	   r
   r=   rN   r   rO   )r>   rC   r?   s   && r2   Útest_badFinishStreamIdÚ*StreamReceiverTests.test_badFinishStreamIdH   s/   € ô "Ó#ˆÜ”G˜HŸO™OÓ,×6Ñ6°xÓ@Ä&ÌÓBRÖSr5   c                ó   <€ V ^8„  d   QhRR/# )r+   r.   N© )r0   r1   s   "€r2   r3   r4   Q   s   ø€ ÷ Tñ T¨$ñ Tr5   c                óÒ   € \        4       pVP                  4       pVP                  V4       \        \	        VP                  4      P                  V4      \        \        4      4       R# )z9
L{StreamReceiver.finish} removes the identified stream.
N)r!   r7   r=   r	   r
   rN   r   rO   )r>   r?   rC   s   &  r2   Útest_finishRemovesStreamÚ,StreamReceiverTests.test_finishRemovesStreamQ   sF   € ô "Ó#ˆØ—=‘=“?ˆØ�‰˜Ô!Ü”G˜HŸO™OÓ,×6Ñ6°xÓ@Ä&ÌÓBRÖSr5   rW   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   rG   r   r   rP   rT   rY   Ú__static_attributes__Ú__classdictcell__©r1   s   @r2   r)   r)   "   s~   ø‡ € ññ ‰5‘‘v“x“Ó!¡7£9Ó-÷=ó .ð=ñ. ‰8‹:‘t˜F“|Ó$÷Yó %ðYñ ‰8‹:Ó÷Tó ðT÷Tö Tr5   r)   c                   ó\   a € ] tR t^[t o Rt]! ]! 4       ]! ^R7      R7      R 4       tRt	V t
R# )Ú
ChunkTestsz
Tests for ``chunk``.
)Ú	min_value)rI   Ú	chunkSizec                óÄ   € \        \        W4      4      p\        V\        \	        \        \        V4      4      4      \        \        V4      VR,          4      4      4       R# )z¬
L{chunk} returns an iterable of L{str} where each element is no
longer than the given limit.  The concatenation of the strings is also
equal to the original input string.
:Né    NN)	Úlistr#   r	   r   r&   r   r   r%   r   )r>   rI   rf   Úchunkss   &&& r2   Ú
test_chunkÚChunkTests.test_chunk`   sP   € ô ”e˜DÓ,Ó-ˆÜØÜÜÜÔ4°YÓ?Ó@óô ”x “~ t¨B¥xÓ0ó	ö	
r5   rW   N)r[   r\   r]   r^   r_   r   r   r   rk   r`   ra   rb   s   @r2   rd   rd   [   s,   ø‡ € ññ ‘“¡(°QÔ"7Ô8ñ
ó 9ö
r5   rd   c                   ó–   a € ] tR t^st o RtV 3R lR lt]P                  V 3R lR l4       t]	P                  V 3R lR l4       t
RtV tR	# )
ÚAMPStreamReceiverz.
A simple AMP interface to L{StreamReceiver}.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r+   r,   r.   N)r!   )r0   r1   s   "€r2   r3   ÚAMPStreamReceiver.__annotate__x   s   ø€ ÷ ñ ¡ð °4ñ r5   c                ó   € Wn         R # ©N©r,   )r>   r,   s   &&r2   Ú__init__ÚAMPStreamReceiver.__init__x   s   € ØŽr5   c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# ©r+   r.   )r   rL   Úobject)r0   r1   s   "€r2   r3   rp   |   s   ø€ ÷ 1ñ 1™D¡¡f Õ-ñ 1r5   c                ó:   € R V P                   P                  4       /# )rC   )r,   r7   ©r>   s   &r2   Ú
streamOpenÚAMPStreamReceiver.streamOpen{   s   € à˜DŸL™L×-Ñ-Ó/Ð0Ð0r5   c                óB   <€ V ^8„  d   QhRS[ RS[RS[S[S[3,          /# )r+   rC   rI   r.   )rK   r/   r   rL   rx   )r0   r1   s   "€r2   r3   rp   €   s+   ø€ ÷ ñ ¡Cð ©uð ¹¹cÁ6¸kÕ9Jñ r5   c                ó<   € V P                   P                  W4       / # rr   )r,   r<   )r>   rC   rI   s   &&&r2   ÚstreamWriteÚAMPStreamReceiver.streamWrite   s   € à�‰×Ñ˜8Ô*Øˆ	r5   rs   N)r[   r\   r]   r^   r_   rt   r    Ú	responderr{   r"   r   r`   ra   rb   s   @r2   rn   rn   s   sH   ø‡ € ñ÷ð ð ×Ñ÷1ó ð1ð ×Ñ÷ó ör5   rn   c                ó^   € V ^8„  d   QhR\         R\         R\        \        ,          R\        /# )r+   ÚserverÚclientÚinteractionr.   )r   r   r'   )r0   s   "r2   r3   r3   …   s-   € ÷ ?ñ ?”Yð ?¬	ð ?Ä	Ì!Åð ?ÔQRñ ?r5   c           
     óh  aaa€ RoR V3R llpR VV3R llp\        V \        V RR7      V\        VRR7      4      p\        P                  ! V! 4       4      pVP	                  V4       VP                  4        S'       d)   \        S\        4      '       d   SP                  4        S# \        R4      h)	zG
Let C{server} and C{client} exchange bytes while C{interaction} runs.
Fc                ó$   € V ^8„  d   QhR\         /# rw   )r'   )r0   s   "r2   r3   Úinteract.<locals>.__annotate__Œ   s   € ÷ !ñ !¤ñ !r5   c               “   ó$   <"  € S G R j  x€L
 #  L5irr   rW   )r…   s   €r2   Úto_coroutineÚinteract.<locals>.to_coroutineŒ   s   øé € Ø × Ð Ñ ùs   ƒ‰Šc                óJ   € V ^8„  d   QhR\         \        \        3,          RR/# )r+   Úrr.   N)r   r   r'   )r0   s   "r2   r3   rˆ   �   s#   € ÷ ñ œ%¤¬ 
Õ+ð °ñ r5   c                 ó   <€ R oV oR# )TNrW   )r�   ÚfinishedÚresults   &€€r2   Úcollect_resultÚ interact.<locals>.collect_result�   s   ø€ àˆØŠr5   T)ÚisServerz'Interaction failed to produce a result.)
r   r   r   ÚfromCoroutineÚaddBothÚflushÚ
isinstancer   ÚraiseExceptionÚ	Exception)	rƒ   r„   r…   rŠ   r‘   ÚpumpÚinteractingr�   r�   s	   &&f    @@r2   Úinteractrœ   …   sœ   ú€ ð €H÷!ð !÷ñ ô
 ØÜ�f tÔ,ØÜ�f uÔ-ó	€Dô ×(Ò(©«Ó8€KØ×Ñ˜Ô'à‡J�J„LçÜ�fœg×&Ò&Ø×!Ñ!Ô#ØˆÜ
Ð=Ó
>Ð>r5   c                   ó0   a € ] tR t^¦t o RtR tR tRtV tR# )ÚInteractTestsz(
Tests for the test helper L{interact}.
c           
     óæ   €  ! R R\         4      pV P                  V4      ;_uu_ 4        \        \        4       \        4       \	        V! 4       4      4       RRR4       R#   + '       g   i     R# ; i)zO
If the interaction results in a failure then L{interact} raises an
exception.
c                   ó   € ] tR t^±tRtR# )Ú6InteractTests.test_failure.<locals>.ArbitraryExceptionrW   N)r[   r\   r]   r^   r`   rW   r5   r2   ÚArbitraryExceptionr¡   ±   s   † Ûr5   r¢   N)r™   ÚassertRaisesrœ   r   r   )r>   r¢   s   & r2   Útest_failureÚInteractTests.test_failure«   sJ   € ô	¤ô 	ð ×ÑÐ1×2Õ2Ü”X“Z¤£¬TÑ2DÓ2FÓ-GÔH÷ 3×2×2Ò2ús   ©,AÁA0	c                óÄ   € V P                  \        4      ;_uu_ 4        \        \        4       \        4       \	        4       4       RRR4       R#   + '       g   i     R# ; i)zT
If the interaction fails to produce a result then L{interact} raises
an exception.
N)r£   r™   rœ   r   r   rz   s   &r2   Útest_incompleteÚInteractTests.test_incomplete·   s6   € ð
 ×Ñœy×)Õ)Ü”X“Z¤£¬X«ZÔ8÷ *×)×)Ò)ús   ž&AÁA	rW   N)	r[   r\   r]   r^   r_   r¤   r§   r`   ra   rb   s   @r2   rž   rž   ¦   s   ø‡ € ñò
I÷9ð 9r5   rž   c                   ób   a € ] tR t^Àt o Rt]! ]! ]! 4       4      4      V 3R lR l4       tRt	V t
R# )ÚStreamTestsz
Tests for L{stream}.
c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r+   rj   r.   N)r   r/   )r0   r1   s   "€r2   r3   ÚStreamTests.__annotate__Æ   s#   ø€ ÷ 
Eñ 
E¡$¡u¥+ð 
E°$ñ 
Er5   c           
     óÚ   € \        4       p\        4       p\        \        V4      V\	        V\        V4      4      4      p\        VP                  V4      \        \        V4      4      4       R# )zg
All of the chunks passed to L{stream} are sent in order over a
stream using the given AMP connection.
N)
r   r!   rœ   rn   r$   Úiterr	   r=   r   r   )r>   rj   Úsenderr,   rC   s   &&   r2   Útest_streamÚStreamTests.test_streamÅ   sS   € ô “ˆÜ Ó"ˆÜÜ˜gÓ&¨´°v¼tÀF»|Ó0Ló
ˆô 	�G—N‘N 8Ó,¬c´(¸6Ó2BÓ.CÖDr5   rW   N)r[   r\   r]   r^   r_   r   r   r   r°   r`   ra   rb   s   @r2   rª   rª   À   s+   ø‡ € ññ ‰5‘“‹?Ó÷
Eó ö
Er5   rª   N):r_   r-   r   Útypingr   r   r   r   r   Úhamcrestr   r	   r
   r   r   r   r   r   Ú
hypothesisr   Úhypothesis.strategiesr   r   r   r   r   r   Útwisted.internet.deferr   r   Útwisted.internet.interfacesr   Útwisted.internet.protocolr   Útwisted.protocols.ampr   Útwisted.python.failurer   Útwisted.test.iosimr   r   Útwisted.trial.unittestr   r$   r    r!   r"   r#   Úmatchersr%   r&   r'   r)   rd   rn   rœ   rž   rª   rW   r5   r2   Ú<module>r¾      s¡   ðñõ ß 8Õ 8÷	÷ 	ó 	õ ß N× Nç 1Ý 1Ý .Ý %Ý *ß 5Ý 6ß KÕ Kß *áˆCƒL€ô6TÐ-ô 6Tôr
Ð$ô 
ô0˜ô õ$?ôB9Ð'ô 9ô4EÐ%ö Er5   