ó
    Ö›‘hé7  ã                   óî   • S SK r S SKJr  S SKJr  S SKJr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
r " S S\5      rS rS r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)é    N)Úpartial)ÚBytesIO)ÚmainÚprotocol)ÚStringTransport)Úfailure)Ú	iterbytes)Úbanana)ÚTestCasel   ÿÿÿÿ c                   ó   • \ rS rSrS rSrg)Ú	MathTestsé   c                 ób  • [        [        SS5      5      [        [        SS5      5      -   [        [        SS5      5      -   S/-   nU Hd  n[        5       n[        R                  " X#R
                  5        UR                  5       n[        R                  " U5      nU R                  XR5        Mf     g )Nr   éd   iè  iL  i@B i¤B l                )	ÚlistÚranger   r
   Úint2b128ÚwriteÚgetvalueÚb1282intÚassertEqual)ÚselfÚ	funkylistÚiÚxÚvÚys         ÚcC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/spread/test/test_banana.pyÚtest_int2b128ÚMathTests.test_int2b128   s“   € ä”�q˜#“ÓÜ”5˜˜tÓ$Ó%ñ&ä”5˜ 'Ó*Ó+ñ,ð ˆjñð 	ó ˆAÜ“	ˆAÜ�OŠO˜AŸw™wÔ'Ø—
‘
“ˆAÜ—’ Ó"ˆAØ×Ñ˜QÖ"ò ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__r"   r!   r   r   r      s   † õ#r!   r   c                 ó(   • U R                   " U5        g)zÈ
Dictate a Banana dialect to use.

@param protocol: A L{banana.Banana} instance which has not yet had a
    dialect negotiated.

@param dialect: A L{bytes} instance naming a Banana dialect to select.
N)Ú_selectDialect)r   Údialects     r   ÚselectDialectr+   #   s   € ð ×Ò˜GÕ$r!   c                 ó¬   • [        5       nU " 5       nUR                  " U5        UR                  5         UR                  " U5        UR	                  5       $ )a‹  
Banana encode an object using L{banana.Banana.sendEncoded}.

@param bananaFactory: A no-argument callable which will return a new,
    unconnected protocol instance to use to do the encoding (this should
    most likely be a L{banana.Banana} instance).

@param obj: The object to encode.
@type obj: Any type supported by Banana.

@return: A L{bytes} instance giving the encoded form of C{obj}.
)r   ÚmakeConnectionÚclearÚsendEncodedÚvalue)ÚbananaFactoryÚobjÚ	transportr
   s       r   Úencoder4   2   sF   € ô  Ó!€IÙ‹_€FØ
×Ò˜)Ô$Ø‡O�OÔà
×Ò�sÔØ�?‰?ÓÐr!   c                   óB   • \ rS rSrSr\R                  rS rS r	S r
Srg)ÚBananaTestBaseéH   zb
The base for test classes. It defines commonly used things and sets up a
connection for testing.
c                 ó^  • [        5       U l        U R                  5       U l        U R                  R	                  [
        R                  " U R                  5      5        [        U R                  S5        U R                  U R                  l	        [        [        U R                  5      U l        g )Ns   none)r   ÚioÚencClassÚencr-   r   ÚFileWrapperr+   Ú	putResultÚexpressionReceivedr   r4   ©r   s    r   ÚsetUpÚBananaTestBase.setUpP   si   € Ü“)ˆŒØ—=‘=“?ˆŒØ�‰×Ñ¤× 4Ò 4°T·W±WÓ =Ô>Ü�d—h‘h Ô(Ø&*§n¡nˆ�‰Ô#Üœf d§m¡mÓ4ˆ�r!   c                 ó   • Xl         g)zˆ
Store an expression received by C{self.enc}.

@param result: The object that was received.
@type result: Any type supported by Banana.
N)Úresult)r   rC   s     r   r=   ÚBananaTestBase.putResultX   s	   € ð �r!   c                 ó‚   • U R                   R                  [        R                  " [        R
                  5      5        U ? g ©N)r;   ÚconnectionLostr   ÚFailurer   ÚCONNECTION_DONEr?   s    r   ÚtearDownÚBananaTestBase.tearDowna   s(   € Ø�‰×Ñ¤§¢´×0DÑ0DÓ EÔFØ‰Hr!   )r;   r4   r9   rC   N)r#   r$   r%   r&   Ú__doc__r
   ÚBananar:   r@   r=   rJ   r'   r"   r!   r   r6   r6   H   s!   † ñð
 �}‰}€Hò5òõr!   r6   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S rS rS rS rS rS rS rS rS rS rSrg)ÚBananaTestséf   z
General banana tests.
c                 óÄ   • U R                   R                  S5        U R                   R                  U R                  R	                  5       5        U R
                  S:X  d   eg )Ns   hello)r;   r/   ÚdataReceivedr9   r   rC   r?   s    r   Útest_stringÚBananaTests.test_stringk   sE   € Ø�‰×Ñ˜XÔ&Ø�‰×Ñ˜dŸg™g×.Ñ.Ó0Ô1Ø�{‰{˜hÓ&Ð&Ñ&r!   c                 ó(   • U R                  SS5        g)z|
Banana does not support unicode.  ``Banana.sendEncoded`` raises
``BananaError`` if called with an instance of ``unicode``.
Úhellozbuiltins.strN)Ú_unsupportedTypeTestr?   s    r   Útest_unsupportedUnicodeÚ#BananaTests.test_unsupportedUnicodep   s   € ð
 	×!Ñ! '¨>Õ:r!   c                 ó0   • U R                  [        S5        g)z 
Banana does not support arbitrary builtin types like L{type}.
L{banana.Banana.sendEncoded} raises L{banana.BananaError} if called
with an instance of L{type}.
zbuiltins.typeN)rW   Útyper?   s    r   Útest_unsupportedBuiltinTypeÚ'BananaTests.test_unsupportedBuiltinTypew   s   € ð 	×!Ñ!¤$¨Õ8r!   c                 óF   • U R                  [        5       [        S-   5        g)zÆ
Banana does not support arbitrary user-defined types (such as those
defined with the ``class`` statement).  ``Banana.sendEncoded`` raises
``BananaError`` if called with an instance of such a type.
z
.MathTestsN)rW   r   r#   r?   s    r   Útest_unsupportedUserTypeÚ$BananaTests.test_unsupportedUserType€   s   € ð 	×!Ñ!¤)£+¬x¸,Ñ/FÕGr!   c                 ó¬   • U R                  [        R                  U R                  R                  U5      nU R                  SU S3[        U5      5        g)a³  
Assert that L{banana.Banana.sendEncoded} raises L{banana.BananaError}
if called with the given object.

@param obj: Some object that Banana does not support.
@param name: The name of the type of the object.

@raise: The failure exception is raised if L{Banana.sendEncoded} does
    not raise L{banana.BananaError} or if the message associated with the
    exception is not formatted to include the type of the unsupported
    object.
zBanana cannot send z objectsN)ÚassertRaisesr
   ÚBananaErrorr;   r/   ÚassertInÚstr)r   r2   ÚnameÚexcs       r   rW   Ú BananaTests._unsupportedTypeTestˆ   sD   € ð ×Ñ¤× 2Ñ 2°D·H±H×4HÑ4HÈ#ÓNˆØ�‰Ð+¨D¨6°Ð:¼CÀ»HÕEr!   c                 ó  • U R                   R                  S5        U R                   R                  U R                  R	                  5       5        U R                  U R                  S5        U R                  U R                  [        5        g)z·
A positive integer less than 2 ** 32 should round-trip through
banana without changing value and should come out represented
as an C{int} (regardless of the type which was encoded).
i§'  N)	r;   r/   rR   r9   r   r   rC   ÚassertIsInstanceÚintr?   s    r   Útest_intÚBananaTests.test_int˜   s]   € ð 	�‰×Ñ˜UÔ#Ø�‰×Ñ˜dŸg™g×.Ñ.Ó0Ô1Ø×Ñ˜Ÿ™ eÔ,Ø×Ñ˜dŸk™k¬3Õ/r!   c                 óV   • U R                   R                  nUS-  nSU-  S-
  nUS-   nU$ )Né   é   é   )r;   ÚprefixLimit)r   ÚbytesÚbitsÚlargestÚsmallests        r   Ú_getSmallestÚBananaTests._getSmallest£   s7   € à—‘×$Ñ$ˆð �q‰yˆà�T‘'˜A‘+ˆà˜Q‘;ˆØˆr!   c                 óŽ   • U R                  5       nU R                  [        R                  U R                  R
                  U5        g)zb
Test that a long above the implementation-specific limit is rejected
as too large to be encoded.
N)rw   rb   r
   rc   r;   r/   )r   rv   s     r   Útest_encodeTooLargeLongÚ#BananaTests.test_encodeTooLargeLong¯   s4   € ð
 ×$Ñ$Ó&ˆØ×Ñœ&×,Ñ,¨d¯h©h×.BÑ.BÀHÕMr!   c                 óö  • U R                  5       nU R                  R                  U R                  R                  S-  5        U R                  R	                  U5        U R
                  R                  5       nU R
                  R                  S5        U R                  R                  U R                  R                  S-  5        U R                  [        R                  U R                  R                  U5        g)zb
Test that a long above the implementation specific limit is rejected
as too large to be decoded.
rp   r   N)rw   r;   ÚsetPrefixLimitrr   r/   r9   r   Útruncaterb   r
   rc   rR   )r   rv   Úencodeds      r   Útest_decodeTooLargeLongÚ#BananaTests.test_decodeTooLargeLong·   s¬   € ð
 ×$Ñ$Ó&ˆØ�‰×Ñ §¡× 4Ñ 4°qÑ 8Ô9Ø�‰×Ñ˜XÔ&Ø—'‘'×"Ñ"Ó$ˆØ�‰×Ñ˜ÔØ�‰×Ñ §¡× 4Ñ 4¸Ñ 9Ô:à×Ñœ&×,Ñ,¨d¯h©h×.CÑ.CÀWÕMr!   c                 ó$   • U R                  5       * $ rF   )rw   r?   s    r   Ú_getLargestÚBananaTests._getLargestÅ   s   € Ø×!Ñ!Ó#Ð#Ð#r!   c                 óŽ   • U R                  5       nU R                  [        R                  U R                  R
                  U5        g)zk
Test that a negative long below the implementation-specific limit is
rejected as too small to be encoded.
N)rƒ   rb   r
   rc   r;   r/   )r   ru   s     r   Útest_encodeTooSmallLongÚ#BananaTests.test_encodeTooSmallLongÈ   s4   € ð
 ×"Ñ"Ó$ˆØ×Ñœ&×,Ñ,¨d¯h©h×.BÑ.BÀGÕLr!   c                 óö  • U R                  5       nU R                  R                  U R                  R                  S-  5        U R                  R	                  U5        U R
                  R                  5       nU R
                  R                  S5        U R                  R                  U R                  R                  S-  5        U R                  [        R                  U R                  R                  U5        g)zk
Test that a negative long below the implementation specific limit is
rejected as too small to be decoded.
rp   r   N)rƒ   r;   r}   rr   r/   r9   r   r~   rb   r
   rc   rR   )r   ru   r   s      r   Útest_decodeTooSmallLongÚ#BananaTests.test_decodeTooSmallLongÐ   s¬   € ð
 ×"Ñ"Ó$ˆØ�‰×Ñ §¡× 4Ñ 4°qÑ 8Ô9Ø�‰×Ñ˜WÔ%Ø—'‘'×"Ñ"Ó$ˆØ�‰×Ñ˜ÔØ�‰×Ñ §¡× 4Ñ 4¸Ñ 9Ô:à×Ñœ&×,Ñ,¨d¯h©h×.CÑ.CÀWÕMr!   c                 óØ   • U R                   R                  S5        U R                   R                  U R                  R	                  5       5        U R                  U R                  S5        g )Ni÷  ©r;   r/   rR   r9   r   r   rC   r?   s    r   Útest_integerÚBananaTests.test_integerÞ   sG   € Ø�‰×Ñ˜TÔ"Ø�‰×Ñ˜dŸg™g×.Ñ.Ó0Ô1Ø×Ñ˜Ÿ™ dÕ+r!   c                 óØ   • U R                   R                  S5        U R                   R                  U R                  R	                  5       5        U R                  U R                  S5        g )Ni	üÿÿrŒ   r?   s    r   Útest_negativeÚBananaTests.test_negativeã   sG   € Ø�‰×Ñ˜UÔ#Ø�‰×Ñ˜dŸg™g×.Ñ.Ó0Ô1Ø×Ñ˜Ÿ™ eÕ,r!   c                 óØ   • U R                   R                  S5        U R                   R                  U R                  R	                  5       5        U R                  U R                  S5        g )Ng     ¸�@rŒ   r?   s    r   Ú
test_floatÚBananaTests.test_floatè   sG   € Ø�‰×Ñ˜VÔ$Ø�‰×Ñ˜dŸg™g×.Ñ.Ó0Ô1Ø×Ñ˜Ÿ™ fÕ-r!   c           	      ó   • SSSS/SS/SSS	S
S//S// /nU R                   R                  U5        U R                   R                  U R                  R	                  5       5        U R                  U R                  U5        g )Nrq   rp   é   é   ç     €>@çš™™™™D@é   ó   sixó   sevenó   eighté	   é
   rŒ   ©r   Úfoos     r   Ú	test_listÚBananaTests.test_listí   s}   € àØØ�ˆFØ�4ˆLØØ�X ¨!˜}Ð-ØˆDØð	
ˆð 	�‰×Ñ˜SÔ!Ø�‰×Ñ˜dŸg™g×.Ñ.Ó0Ô1Ø×Ñ˜Ÿ™ cÕ*r!   c                 óV  • SSSS/SS/SSS	S
S//S/[         R                  S-  [         R                  S-  [         R                  S-  /
nU R                  R                  U5        U R	                  U R
                  R                  5       5        U R                  U R                  U5        g)zR
Test feeding the data byte per byte to the receiver. Normally
data is not split.
rq   rp   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   rŸ   éþÿÿÿN)	ÚsysÚmaxsizer;   r/   Úfeedr9   r   r   rC   r    s     r   Útest_partialÚBananaTests.test_partialü   s˜   € ð ØØ�ˆFØ�4ˆLØØ�X ¨!˜}Ð-ØˆDä�K‰K˜!‰OÜ�K‰K˜!‰OÜ�K‰K˜"Ñð
ˆð 	�‰×Ñ˜SÔ!Ø�	‰	�$—'‘'×"Ñ"Ó$Ô%Ø×Ñ˜Ÿ™ cÕ*r!   c                 ó^   • [        U5       H  nU R                  R                  U5        M      g)zg
Feed the data byte per byte to the receiver.

@param data: The bytes to deliver.
@type data: L{bytes}
N)r	   r;   rR   )r   ÚdataÚbytes      r   r¨   ÚBananaTests.feed  s$   € ô ˜d–OˆDØ�H‰H×!Ñ! $Ö'ò $r!   c                 ó^   • SnU R                  [        R                  U R                  U5        g )Ns   €©rb   r
   rc   r¨   ©r   r¬   s     r   Útest_oversizedListÚBananaTests.test_oversizedList  ó#   € Ø*ˆà×Ñœ&×,Ñ,¨d¯i©i¸Õ>r!   c                 ó^   • SnU R                  [        R                  U R                  U5        g )Ns   ‚r°   r±   s     r   Útest_oversizedStringÚ BananaTests.test_oversizedString!  r´   r!   c                 ót   • Sn U R                   R                  U5        g ! [        R                   a     g f = f)Ns       €)r;   rR   r
   rc   )r   ÚcrashStrings     r   Útest_crashStringÚBananaTests.test_crashString&  s6   € Ø1ˆð	à�H‰H×!Ñ! +Õ.øÜ×!Ñ!ó 	Ùð	ús   „   7¶7c                 óØ   • U R                   R                  S5        U R                   R                  U R                  R	                  5       5        U R                  U R                  S5        g )Né   €rŒ   r?   s    r   Útest_crashNegativeLongÚ"BananaTests.test_crashNegativeLong9  sI   € ð 	�‰×Ñ˜[Ô)Ø�‰×Ñ˜dŸg™g×.Ñ.Ó0Ô1Ø×Ñ˜Ÿ™ kÕ2r!   c                 ó¾  • SnSnSnU R                  U R                  US-
  5      SU-   5        U R                  U R                  US-
  5      SU-   5        U R                  U R                  US-
  5      S	U-   5        S
nU R                  U R                  US-   5      SU-   5        U R                  U R                  US-   5      SU-   5        U R                  U R                  US-   5      SU-   5        SnU R                  U R                  US-   5      SU-   5        U R                  U R                  US-   5      S	U-   5        U R                  U R                  US-   5      S5        SnU R                  U R                  US-
  5      SU-   5        U R                  U R                  US-
  5      SU-   5        U R                  U R                  US-
  5      SU-   5        g)z§
Test that integers below the maximum C{INT} token size cutoff are
serialized as C{INT} or C{NEG} and that larger integers are
serialized as C{LONGINT} or C{LONGNEG}.
iÿÿÿr½   s   �rp   ó   }rq   ó   ~r   ó   s      …ó    ó   r–   ó   s   ƒs       ƒs      †ó   N)r   r4   )r   Ú	baseIntInÚ	baseNegInÚ
baseIntOutÚbaseLongIntOutÚ
baseNegOutÚbaseLongNegOuts          r   Útest_sizedIntegerTypesÚ"BananaTests.test_sizedIntegerTypesE  s¶  € ð  ˆ	Øˆ	à,ˆ
Ø×Ñ˜Ÿ™ Y°¡]Ó3°W¸zÑ5IÔJØ×Ñ˜Ÿ™ Y°¡]Ó3°W¸zÑ5IÔJØ×Ñ˜Ÿ™ Y°¡]Ó3°W¸zÑ5IÔJà0ˆØ×Ñ˜Ÿ™ Y°¡]Ó3°W¸~Ñ5MÔNØ×Ñ˜Ÿ™ Y°¡]Ó3°W¸~Ñ5MÔNØ×Ñ˜Ÿ™ Y°¡]Ó3°W¸~Ñ5MÔNà,ˆ
Ø×Ñ˜Ÿ™ Y°¡]Ó3°W¸zÑ5IÔJØ×Ñ˜Ÿ™ Y°¡]Ó3°W¸zÑ5IÔJØ×Ñ˜Ÿ™ Y°¡]Ó3Ð5PÔQà0ˆØ×Ñ˜Ÿ™ Y°¡]Ó3°W¸~Ñ5MÔNØ×Ñ˜Ÿ™ Y°¡]Ó3°W¸~Ñ5MÔNØ×Ñ˜Ÿ™ Y°¡]Ó3°W¸~Ñ5MÕNr!   r"   N)r#   r$   r%   r&   rL   rS   rX   r\   r_   rW   rl   rw   rz   r€   rƒ   r†   r‰   r�   r�   r“   r¢   r©   r¨   r²   r¶   rº   r¾   rÎ   r'   r"   r!   r   rO   rO   f   s�   † ñò'ò
;ò9òHòFò 	0ò
òNòNò$òMòNò,ò
-ò
.ò
+ò+ò,(ò?ò
?ò
ò&
3õOr!   rO   c                   ó¸   • \ rS rSrSrSr\" \R                  R                  \   45      \R                  -   r\" S5      \R                  -   rS rS rS rS rS	rg
)ÚDialectTestsic  z*
Tests for Banana's handling of dialects.
s   remote)éz   c                 ón   • U R                  [        U R                  R                  U R                  5        g)zd
If no dialect has been selected and a PB VOCAB item is received,
L{NotImplementedError} is raised.
N)rb   ÚNotImplementedErrorr;   rR   ÚlegalPbItemr?   s    r   Útest_dialectNotSetÚDialectTests.test_dialectNotSetl  s'   € ð
 	×ÑÔ-¨t¯x©x×/DÑ/DÀd×FVÑFVÕWr!   c                 óÆ   • [        U R                  S5        U R                  R                  U R                  5        U R	                  U R
                  U R                  5        g)zC
If the PB dialect has been selected, a PB VOCAB item is accepted.
ó   pbN)r+   r;   rR   rÕ   r   rC   Úvocabr?   s    r   Útest_receivePbÚDialectTests.test_receivePbs  sB   € ô 	�d—h‘h Ô&Ø�‰×Ñ˜d×.Ñ.Ô/Ø×Ñ˜Ÿ™ d§j¡jÕ1r!   c                 óš   • [        U R                  S5        U R                  [        U R                  R                  U R
                  5        g)z†
If the PB dialect has been selected and an unrecognized PB VOCAB item
is received, L{banana.Banana.dataReceived} raises L{KeyError}.
rÙ   N)r+   r;   rb   ÚKeyErrorrR   ÚillegalPbItemr?   s    r   Útest_receiveIllegalPbÚ"DialectTests.test_receiveIllegalPb{  s4   € ô
 	�d—h‘h Ô&Ø×Ñœ( D§H¡H×$9Ñ$9¸4×;MÑ;MÕNr!   c                 óâ   • [        U R                  S5        U R                  R                  U R                  5        U R	                  U R
                  U R                  R                  5       5        g)zT
if pb dialect is selected, the sender must be able to send things in
that dialect.
rÙ   N)r+   r;   r/   rÚ   r   rÕ   r9   r   r?   s    r   Útest_sendPbÚDialectTests.test_sendPbƒ  sK   € ô
 	�d—h‘h Ô&Ø�‰×Ñ˜TŸZ™ZÔ(Ø×Ñ˜×)Ñ)¨4¯7©7×+;Ñ+;Ó+=Õ>r!   r"   N)r#   r$   r%   r&   rL   rÚ   rs   r
   rM   ÚoutgoingVocabularyÚVOCABrÕ   rß   rÖ   rÛ   rà   rã   r'   r"   r!   r   rÑ   rÑ   c  s[   † ñð €EÙ˜Ÿ™×9Ñ9¸%Ñ@ÐBÓCÀfÇlÁlÑR€KÙ˜&“M F§L¡LÑ0€MòXò2òOõ?r!   rÑ   c                   ó   • \ rS rSrSrS rSrg)ÚGlobalCoderTestsi�  zE
Tests for the free functions L{banana.encode} and L{banana.decode}.
c                 ó¶   • SnU R                  [        R                  [        R                  U5        SnU R	                  [        R                  " U5      S5        g)z:
Calls to L{banana.decode} are independent of each other.
sB   …s   �rq   N)rb   r
   rc   Údecoder   )r   ÚundecodableÚ	decodables      r   Útest_statelessDecodeÚ%GlobalCoderTests.test_statelessDecode’  sE   € ð
 -ˆØ×Ñœ&×,Ñ,¬f¯m©m¸[ÔIð  ˆ	Ø×ÑœŸš yÓ1°1Õ5r!   r"   N)r#   r$   r%   r&   rL   rí   r'   r"   r!   r   rè   rè   �  s   † ñõ6r!   rè   )r¦   Ú	functoolsr   r9   r   Útwisted.internetr   r   Útwisted.internet.testingr   Útwisted.pythonr   Útwisted.python.compatr	   Útwisted.spreadr
   Útwisted.trial.unittestr   Ú_maxintr   r+   r4   r6   rO   rÑ   rè   r"   r!   r   Ú<module>r÷      ss   ðó
 Ý Ý ç +Ý 4Ý "Ý +Ý !Ý +à
€ô#�ô #ò %òô,�Xô ô<zO�.ô zOôz'?�>ô '?ôT6�xõ 6r!   