§
    Ìtºf|Z  ã                   óÜ   — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d„ Z	d„ Z
dd	„Z G d
„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )é    N)ÚDecimal)Úmessage)Úrole)Ú
serializerc                  óÀ  — t          j        d¦  «        } d}d}d}dddd| |d	d| |d
œg}d	d| ||dœ}g t          j        ddt	          j        ¦   «         i¦  «        ‘t          j        ddt	          j        ¦   «         i¦  «        ‘t          j        ddt	          j        ¦   «         i¦  «        ‘t          j        ddt	          j        ¦   «         i¦  «        ‘t          j        dt	          j        ¦   «         t	          j        ¦   «         t	          j        ¦   «         t	          j        ¦   «         dœ¦  «        ‘t          j	        ¦   «         ‘t          j
        d¦  «        ‘t          j
        d|¬¦  «        ‘t          j
        dg |¬¦  «        ‘t          j
        d||¬¦  «        ‘t          j
        dd¬¦  «        ‘t          j        d¦  «        ‘t          j        dt          j        j        ¬¦  «        ‘t          j        dd¦  «        ‘t          j        dd|¬¦  «        ‘t          j        ddg |¬¦  «        ‘t          j        dd||¬¦  «        ‘t          j        ddd¬¦  «        ‘t          j        d¦  «        ‘t          j        d|¬¦  «        ‘t          j        dg |¬¦  «        ‘t          j        d||¬¦  «        ‘t          j        dd¬¦  «        ‘t          j        d¦  «        ‘t          j        dt          j        j        ¬¦  «        ‘t          j        d|¦  «        ‘t          j        d||¬¦  «        ‘t          j        d|g |¬¦  «        ‘t          j        d|||¬¦  «        ‘t          j        d|d¬¦  «        ‘t          j        d|¦  «        ‘t          j        d||¬¦  «        ‘t          j        d|g |¬¦  «        ‘t          j        d|||¬¦  «        ‘t          j        d|d¬¦  «        ‘t          j        d¦  «        ‘t          j        dd¦  «        ‘t          j        dd¦  «        ‘t          j        d|¦  «        ‘t          j        d|d¬¦  «        ‘t          j        d|d¬¦  «        ‘t          j        d|¦  «        ‘t          j        d|d¬¦  «        ‘t          j        d|d¬¦  «        ‘t          j        dd¦  «        ‘t          j        dd|¬¦  «        ‘t          j        ddg |¬¦  «        ‘t          j        dd||¬¦  «        ‘t          j        ddd¬ ¦  «        ‘t          j        dd¦  «        ‘t          j        d|¦  «        ‘t          j        d||¬¦  «        ‘t          j        d|g |¬¦  «        ‘t          j        d|||¬¦  «        ‘t          j        d|d!dgg d"¢¬#¦  «        ‘t          j        d|¦  «        ‘t          j        d||¬¦  «        ‘t          j        d|g |¬¦  «        ‘t          j        d|||¬¦  «        ‘t          j        d|d!dgg d"¢¬#¦  «        ‘t          j        d¦  «        ‘t          j        dd¦  «        ‘t          j        dd¦  «        ‘t          j        d|¦  «        ‘t          j        d|t          j        j        ¬¦  «        ‘t          j        d|¦  «        ‘t          j        d|t          j        j        ¬¦  «        ‘t          j        t          j        j        d|¦  «        ‘t          j        t          j        j        d||¬¦  «        ‘t          j        t          j        j        d|g |¬¦  «        ‘t          j        t          j        j        d|||¬¦  «        ‘t          j        t          j        j        d|¦  «        ‘t          j        t          j        j        d||¬¦  «        ‘t          j        t          j        j        d|g |¬¦  «        ‘t          j        t          j        j        d|||¬¦  «        ‘t          j        d¦  «        ‘t          j        d|¬¦  «        ‘t          j        d||¬¦  «        ‘}d$„ |D ¦   «         S )%z·
    List of WAMP test message used for serializers. Expand this if you add more
    options or messages.

    This list of WAMP message does not contain any binary app payloads!
    é    u   ã�“ã‚“ã�«ã�¡ã�¯ä¸–ç•Œzcom.myapp.foobaru   com.myapp.ä½ å¥½ä¸–ç•Œ.bazé   é   é   Úhelloé   )ÚfooÚbarÚbazÚmoo)r   r   r   r   ÚarrÚrealm1Ú
subscriberÚ	publisherÚcallerÚcallee)r   r   r   r   é@â ©Úargs©r   ÚkwargsT)Úprogress)Úmodeéƒ
 i'  )ÚtimeoutÚprefix)ÚmatchÚ
roundrobin)Úinvokeé,  )r   F)éd   éÈ   r%   )Ú
exclude_meÚexcludeÚeligiblec                 ó   — g | ]}d |f‘ŒS ©F© ©Ú.0Úmsgs     úf/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/wamp/test/test_wamp_serializer.pyú
<listcomp>z*generate_test_messages.<locals>.<listcomp>‹   s   € Ð)Ð)Ð)˜SˆU�CˆLÐ)Ð)Ð)ó    )ÚosÚurandomr   ÚHellor   ÚRoleSubscriberFeaturesÚRolePublisherFeaturesÚRoleCallerFeaturesÚRoleCalleeFeaturesÚGoodbyeÚYieldÚ	InterruptÚKILLÚ
InvocationÚResultÚCancelÚCallÚUnregisteredÚ
UnregisterÚ
RegisteredÚRegisterÚEventÚ	PublishedÚPublishÚUnsubscribedÚUnsubscribeÚ
SubscribedÚ	SubscribeÚMATCH_PREFIXÚErrorÚMESSAGE_TYPE)Ú
some_bytesÚsome_unicodeÚsome_uriÚsome_unicode_uriÚ	some_argsÚsome_kwargsÚmsgss          r1   Úgenerate_test_messagesrX   &   så	  € õ ”˜B‘”€JØ?€Là!€HØ?Ðà�A�q˜' :¨|ÀRÐPWÐ`jÐsð  >Að  >Að  B€IØ W°ZÈÐ]fÐgÐg€KðTÝŒ�h ­tÔ/JÑ/LÔ/LÐ MÑNÔNðTåŒ�h ­dÔ.HÑ.JÔ.JÐ KÑLÔLðTõ 	Œ�h ­4Ô+BÑ+DÔ+DÐ EÑFÔFðTõ 	Œ�h ­4Ô+BÑ+DÔ+DÐ EÑFÔFð	Tõ
 	Œ�hÝÔ5Ñ7Ô7ÝÔ3Ñ5Ô5ÝÔ-Ñ/Ô/ÝÔ-Ñ/Ô/ð	!
ð !
ñ 	ô 	ðTõ 	ŒÑÔðTõ 	Œ�fÑÔðTõ 	Œ�f 9Ð-Ñ-Ô-ðTõ 	Œ�f 2¨kÐ:Ñ:Ô:ðTõ 	Œ�f 9°[ÐAÑAÔAðTõ  	Œ�f tÐ,Ñ,Ô,ð!Tõ" 	Ô˜&Ñ!Ô!ð#Tõ$ 	Ô˜&¥wÔ'8Ô'=Ð>Ñ>Ô>ð%Tõ& 	Ô˜6 6Ñ*Ô*ð'Tõ( 	Ô˜6 6°	Ð:Ñ:Ô:ð)Tõ* 	Ô˜6 6°¸;ÐGÑGÔGð+Tõ, 	Ô˜6 6°	À+ÐNÑNÔNð-Tõ. 	Ô˜6 6°5Ð9Ñ9Ô9ð/Tõ0 	Œ�vÑÔð1Tõ2 	Œ�v IÐ.Ñ.Ô.ð3Tõ4 	Œ�v B¨{Ð;Ñ;Ô;ð5Tõ6 	Œ�v I°kÐBÑBÔBð7Tõ8 	Œ�v¨Ð-Ñ-Ô-ð9Tõ: 	Œ�vÑÔð;Tõ< 	Œ�v¥G¤NÔ$7Ð8Ñ8Ô8ð=Tõ> 	Œ�V˜XÑ&Ô&ð?Tõ@ 	Œ�V˜X¨IÐ6Ñ6Ô6ðATõB 	Œ�V˜X¨B°{ÐCÑCÔCðCTõD 	Œ�V˜X¨I¸kÐJÑJÔJðETõF 	Œ�V˜X¨uÐ5Ñ5Ô5ðGTõH 	Œ�VÐ-Ñ.Ô.ðITõJ 	Œ�VÐ-°IÐ>Ñ>Ô>ðKTõL 	Œ�VÐ-°B¸{ÐKÑKÔKðMTõN 	Œ�VÐ-°IÀkÐRÑRÔRðOTõP 	Œ�VÐ-°uÐ=Ñ=Ô=ðQTõR 	Ô˜VÑ$Ô$ðSTõT 	Ô˜6 6Ñ*Ô*ðUTõV 	Ô˜6 6Ñ*Ô*ðWTõX 	Ô˜ Ñ*Ô*ðYTõZ 	Ô˜ °Ð:Ñ:Ô:ð[Tõ\ 	Ô˜ °,Ð?Ñ?Ô?ð]Tõ^ 	Ô˜Ð!1Ñ2Ô2ð_Tõ` 	Ô˜Ð!1¸ÐBÑBÔBðaTõb 	Ô˜Ð!1¸,ÐGÑGÔGðcTõd 	Œ�f˜fÑ%Ô%ðeTõf 	Œ�f˜f¨9Ð5Ñ5Ô5ðgTõh 	Œ�f˜f¨2°kÐBÑBÔBðiTõj 	Œ�f˜f¨9¸[ÐIÑIÔIðkTõl 	Œ�f˜f°Ð4Ñ4Ô4ðmTõn 	Ô˜& &Ñ)Ô)ðoTõp 	Œ˜ Ñ)Ô)ðqTõr 	Œ˜ ¨yÐ9Ñ9Ô9ðsTõt 	Œ˜ ¨r¸+ÐFÑFÔFðuTõv 	Œ˜ ¨yÀÐMÑMÔMðwTõx 	Œ˜ °UÀSÀEÐTcÐTcÐTcÐdÑdÔdðyTõz 	Œ˜Ð 0Ñ1Ô1ð{Tõ| 	Œ˜Ð 0°yÐAÑAÔAð}Tõ~ 	Œ˜Ð 0°rÀ+ÐNÑNÔNðTõ@ 	Œ˜Ð 0°yÈÐUÑUÔUðATõB 	Œ˜Ð 0¸UÈSÈEÐ\kÐ\kÐ\kÐlÑlÔlðCTõD 	Ô˜VÑ$Ô$ðETõF 	Ô˜F FÑ+Ô+ðGTõH 	Ô˜6 6Ñ*Ô*ðITõJ 	Ô˜& (Ñ+Ô+ðKTõL 	Ô˜& (µ'Ô2CÔ2PÐQÑQÔQðMTõN 	Ô˜&Ð"2Ñ3Ô3ðOTõP 	Ô˜&Ð"2½'Ô:KÔ:XÐYÑYÔYðQTõR 	Œ•g”lÔ/°¸ÑBÔBðSTõT 	Œ•g”lÔ/°¸È	ÐRÑRÔRðUTõV 	Œ•g”lÔ/°¸ÈÐS^Ð_Ñ_Ô_ðWTõX 	Œ•g”lÔ/°¸È	ÐZeÐfÑfÔfðYTõZ 	Œ•g”lÔ/°Ð9IÑJÔJð[Tõ\ 	Œ•g”lÔ/°Ð9IÐPYÐZÑZÔZð]Tõ^ 	Œ•g”lÔ/°Ð9IÐPRÐ[fÐgÑgÔgð_Tõ` 	Œ•g”lÔ/°Ð9IÐPYÐbmÐnÑnÔnðaTõb 	Œ�vÑÔðcTõd 	Œ�v IÐ.Ñ.Ô.ðeTõf 	Œ�v I°kÐBÑBÔBðgT€Dðj *Ð) DÐ)Ñ)Ô)Ð)r3   c                  óÄ  — g } dddt          j        d¦  «        t          j        d¦  «        t          j        d¦  «        t          j        d¦  «        t          j        d¦  «        t          j        d	¦  «        f	D ][}|                      t          j        d
d|g¬¦  «        ¦  «         |                      t          j        d
d|gd|i¬¦  «        ¦  «         Œ\d„ | D ¦   «         S )a!  
    Generate WAMP test messages which contain binary app payloads.

    With the JSON serializer, this currently only works on Python 3 (both CPython3 and PyPy3),
    because even on Python 3, we need to patch the stdlib JSON, and on Python 2, the patching
    would be even hackier.
    r3   ó    ó   é   é   é€   é   i   i   r   r   r   r   r   c                 ó   — g | ]}d |f‘ŒS )Tr-   r.   s     r1   r2   z1generate_test_messages_binary.<locals>.<listcomp>¢   s   € Ð(Ð(Ð(˜CˆT�3ˆKÐ(Ð(Ð(r3   )r4   r5   Úappendr   rG   )rW   Úbinarys     r1   Úgenerate_test_messages_binaryrc   Ž   sÓ   € ð €DØØØÝ”:˜a‘=”=Ý”:˜b‘>”>Ý”:˜c‘?”?Ý”:˜c‘?”?Ý”:˜c‘?”?Ý”:˜dÑ#Ô#ð%ð 
Zð 
Zˆð 	�Š•G”M &¨&¸°xÐ@Ñ@Ô@ÑAÔAÐAØ�Š•G”M &¨&¸°xÈÐPVÈÐXÑXÔXÑYÔYÐYÐYØ(Ð( 4Ð(Ñ(Ô(Ð(r3   Fc                 ó„  — g }|                      t          j        | ¬¦  «        ¦  «         |                      t          j        d| ¬¦  «        ¦  «         |                      t          j        ¦   «         ¦  «         |                      t          j        d¬¦  «        ¦  «         | sœ|                      t          j        ¦   «         ¦  «         |                      t          j        d¬¦  «        ¦  «         |                      t          j        ¦   «         ¦  «         |                      t          j        d¬¦  «        ¦  «         |S )N©Úuse_decimal_from_strT)Úbatchedrf   )rg   )ra   r   ÚJsonSerializerÚCBORSerializerÚMsgPackSerializerÚUBJSONSerializer)Údecimal_supportÚ_serializerss     r1   Úcreate_serializersrn   ¥   s  € Ø€Là×Ò�
Ô1ÀÐWÑWÔWÑXÔXÐXØ×Ò�
Ô1¸$ÐUdÐeÑeÔeÑfÔfÐfà×Ò�
Ô1Ñ3Ô3Ñ4Ô4Ð4Ø×Ò�
Ô1¸$Ð?Ñ?Ô?Ñ@Ô@Ð@àð Gà×Ò�JÔ8Ñ:Ô:Ñ;Ô;Ð;Ø×Ò�JÔ8ÀÐFÑFÔFÑGÔGÐGð 	×Ò�JÔ7Ñ9Ô9Ñ:Ô:Ð:Ø×Ò�JÔ7ÀÐEÑEÔEÑFÔFÐFð Ðr3   c                   ó   — e Zd Zd„ ZdS )ÚTestFlatBuffersSerializerc           	      óD  — t          j        ddg d¢dddœdd¬	¦  «        t          j        dd
g d¢dddœd¬¦  «        g}t          j        ¦   «         }|D ]L}|                     |¦  «        \  }}|                     ||¦  «        d         }|                      ||¦  «         ŒMd S )Nr   r   ©r	   r
   r   r   r   )r   r   iš  T)r   r   r   Úretainedzcom.example.topic1)r   r   Úretainr   )r   rG   rI   r   ÚFlatBuffersSerializerÚ	serializeÚunserializeÚassertEqual)ÚselfÚmessagesÚserr0   Úpayloadrb   Úmsg2s          r1   Ú
test_basicz$TestFlatBuffersSerializer.test_basicÁ   sá   € åŒM˜&Ø Ø(˜y˜yØ)+°GÐ!<Ð!<Ø$'Ø#'ð)ñ )ô )õ ŒO˜FØ0Ø!*  Ø+-°gÐ#>Ð#>Ø#'ð	)ñ )ô )ð
ˆõ Ô.Ñ0Ô0ˆð ð 	(ð 	(ˆCð "Ÿmšm¨CÑ0Ô0‰OˆG�Vð —?’? 7¨FÑ3Ô3°AÔ6ˆDð ×Ò˜S $Ñ'Ô'Ð'Ð'ð	(ð 	(r3   N)Ú__name__Ú
__module__Ú__qualname__r~   r-   r3   r1   rp   rp   ¿   s#   € € € € € ð(ð (ð (ð (ð (r3   rp   c                   ó2   — e Zd ZdZd	d„Zd„ Zd„ Zd„ Zd„ ZdS )
ÚTestDecimalSerializera©  
    binary fixed-point
    binary floating-point:          float (float32), double (float64)
    decimal floating-point:         decimal128, decimal256
    decimal fixed-point:            NUMERIC(precision, scale)
    decimal arbitrary precision:    NUMERIC, decimal.Decimal

    https://developer.nvidia.com/blog/implementing-high-precision-decimal-arithmetic-with-cuda-int128/
    https://github.com/johnmcfarlane/cnl
    ÚreturnNc                 óÌ  — t          d¬¦  «        | _        dt          j        ¦   «         _        dt          j        ¦   «         t          j        dd¦  «        t          j        dd¦  «        t          j        dddz  ¦  «        t          j        ddd	z  ¦  «        d
dt          j        d¦  «        ddddd d
dt          j        d¦  «        gdœ	fg| _	        dt          j        ¦   «         t          j        dd¦  «        t          j        dd¦  «        t          j        dddz  ¦  «        t          j        ddd	z  ¦  «        d
dt          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          j        d¦  «        ddddd d
dt          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          j        d¦  «        gdœfg| _        d S )NT)rl   éL   r   l          l            r
   r^   r_   g^öF7Ýš¿?g6!Y¤ì?é   éÿÿÿÿr	   )	ÚaÚbÚcÚdÚeÚfÚgÚyÚzz'0.1234567890123456789012345678901234567z'0.8765432109876543210987654321098765434zM0.123456789012345678901234567890123456701234567890123456789012345678901234567zM0.876543210987654321098765432109876543298765432109876543210987654321098765434)r‰   rŠ   r‹   rŒ   r�   rŽ   r�   ÚhÚiÚjÚkr�   r‘   )rn   Ú_test_serializersÚdecimalÚ
getcontextÚprecÚrandomÚrandintr4   r5   Ú_test_messages_no_decr   Ú_test_messages_dec©ry   s    r1   ÚsetUpzTestDecimalSerializer.setUpð   sÐ  € Ý!3ÀDÐ!IÑ!IÔ!IˆÔð %'�ÔÑÔÔ!ð å”m‘o”oÝ”n Q¨Ñ0Ô0Ý”n Q¨Ñ0Ô0Ý”n Q¨¨S©Ñ1Ô1Ý”n Q¨¨S©Ñ1Ô1à)Ø(Ý”j ‘m”màØØØØØ(Ø'Ý”Z ‘]”]ð	ðð ðð&
ˆÔ"ð2 å”m‘o”oÝ”n Q¨Ñ0Ô0Ý”n Q¨Ñ0Ô0Ý”n Q¨¨S©Ñ1Ô1Ý”n Q¨¨S©Ñ1Ô1à)Ø(åÐGÑHÔHÝÐGÑHÔHåÐmÑnÔnÝÐmÑnÔnÝ”j ‘m”màØØØØØ(Ø'ÝÐFÑGÔGÝÐFÑGÔGÝÐlÑmÔmÝÐlÑmÔmÝ”Z ‘]”]ðð!ð ðð!#
ˆÔÐÐr3   c                 ó  — t          j        d¬¦  «        }| j        D ]n\  }}|                     |                     |¦  «        ¦  «        d         }|                      ||¦  «         |                      d|d         |d         z   ¦  «         ŒodS )zZ
        Test without ``use_decimal_from_str`` feature of JSON object serializer.
        Fre   r   ç     ð?rŽ   r�   N)r   ÚJsonObjectSerializerrœ   rw   rv   rx   ©ry   r{   Úcontains_binaryÚobjÚ_objs        r1   Útest_json_no_decimalz*TestDecimalSerializer.test_json_no_decimal1  s›   € õ Ô-À5ÐIÑIÔIˆØ$(Ô$>ð 	Hð 	HÑ ˆO˜SØ—?’? 3§=¢=°Ñ#5Ô#5Ñ6Ô6°qÔ9ˆDØ×Ò˜S $Ñ'Ô'Ð'Ø×ÒÐ/°°c´¸TÀ#¼YÑ1FÑGÔGÐGÐGð	Hð 	Hr3   c                 óä  — t          j        d¬¦  «        }| j        D ]Ò\  }}|                     |                     |¦  «        ¦  «        d         }|                      ||¦  «         |                      d|d         |d         z   ¦  «         |                      t          d¦  «        |d         |d	         z   ¦  «         |                      t          d
¦  «        |d         |d         z   ¦  «         ŒÓdS )zR
        Test ``use_decimal_from_str`` feature of JSON object serializer.
        Tre   r   r¡   rŽ   r�   z'1.0000000000000000000000000000000000001r’   r“   zM1.000000000000000000000000000000000000000000000000000000000000000000000000001r”   r•   N)r   r¢   r�   rw   rv   rx   r   r£   s        r1   Útest_json_decimalz'TestDecimalSerializer.test_json_decimal;  s  € õ Ô-À4ÐHÑHÔHˆØ$(Ô$;ð 	Nð 	NÑ ˆO˜SØ—?’? 3§=¢=°Ñ#5Ô#5Ñ6Ô6°qÔ9ˆDØ×Ò˜S $Ñ'Ô'Ð'Ø×ÒÐ/°°c´¸TÀ#¼YÑ1FÑGÔGÐGØ×Ò�WÐ%NÑOÔOÐQUÐVYÔQZÐ]aÐbeÔ]fÑQfÑgÔgÐgØ×Ò�WÐ%tÑuÔuÐw{Ð|ô  xAð  DHð  ILô  DMñ  xMñ  Nô  Nð  Nð  Nð	Nð 	Nr3   c                 óÞ   — | j         D ]d}|j        }| j        | j        z   D ]K\  }}|                     |¦  «        }|                     |¦  «        }|                      ||d         ¦  «         ŒLŒed S ©Nr   ©r–   Ú_serializerrœ   r�   rv   rw   rx   )ry   Úwamp_serr{   r¤   r0   r|   r}   s          r1   Útest_roundtrip_msgz(TestDecimalSerializer.test_roundtrip_msgG  s‰   € ØÔ.ð 	/ð 	/ˆHØÔ&ˆCØ(,Ô(BÀTÔE\Ñ(\ð /ð /Ñ$� ØŸ-š-¨Ñ,Ô,�Ø—’ wÑ/Ô/�Ø× Ò   d¨1¤gÑ.Ô.Ð.Ð.ð/ð	/ð 	/r3   c                 óh  — | j         D ]©}|j        }| j        | j        z   D ]�\  }}|                     |¦  «        }|                     |¦  «        }|d         }| j         D ]Q}|j        }|                     |¦  «        }	|                     |	¦  «        }
|
d         }
|                      ||
¦  «         ŒRŒ‘Œªd S r«   r¬   )ry   Ú	wamp_ser1Úser1r¤   r0   Úpayload1Úmsg1Ú	wamp_ser2Úser2Úpayload2r}   s              r1   Útest_crosstrip_msgz(TestDecimalSerializer.test_crosstrip_msgO  sÜ   € ØÔ/ð 	0ð 	0ˆIØÔ(ˆDØ(,Ô(BÀTÔE\Ñ(\ð 	0ð 	0Ñ$� ØŸ>š>¨#Ñ.Ô.�Ø×'Ò'¨Ñ1Ô1�Ø˜A”w�Ø!%Ô!7ð 0ð 0�IØ$Ô0�DØ#Ÿ~š~¨dÑ3Ô3�HØ×+Ò+¨HÑ5Ô5�DØ œ7�DØ×$Ò$ S¨$Ñ/Ô/Ð/Ð/ð0ð		0ð	0ð 	0r3   )r„   N)	r   r€   r�   Ú__doc__rŸ   r§   r©   r¯   r¸   r-   r3   r1   rƒ   rƒ   å   su   € € € € € ð	ð 	ð?
ð ?
ð ?
ð ?
ðBHð Hð Hð
Nð 
Nð 
Nð/ð /ð /ð0ð 0ð 0ð 0ð 0r3   rƒ   c                   óJ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdS )ÚTestSerializerc                 óp   — t          ¦   «         t          ¦   «         z   | _        t          ¦   «         | _        d S )N)rX   rc   Ú_test_messagesrn   r–   rž   s    r1   rŸ   zTestSerializer.setUpa  s0   € Ý4Ñ6Ô6Õ9VÑ9XÔ9XÑXˆÔÝ!3Ñ!5Ô!5ˆÔÐÐr3   c                 óž   — t          j        d¦  «        }ddd|g d¢dg d¢idœ|g}dddg d¢i|g d¢dd	œ|g}|                      ||¦  «         d
S )zK
        Test deep object equality assert (because I am paranoid).
        é
   r	   r
   r   )é	   r   r
   r   rr   )r   r   r   Úgoo)rÁ   r   r   r   N)r4   r5   rx   )ry   ÚvÚo1Úo2s       r1   Útest_deep_equal_msgz"TestSerializer.test_deep_equal_msgf  s~   € õ ŒJ�r‰NŒNˆØ�˜E¨!°I°I°IÀuÈiÈiÈiÐFXÐYÐYÐ[\Ð]ˆØ�˜U I I IÐ.°qÀÀÀÐSXÐYÐYÐ[\Ð]ˆØ×Ò˜˜RÑ Ô Ð Ð Ð r3   c                 ó¾   — | j         D ]T}| j        D ]J\  }}|                     |¦  «        \  }}|                     ||¦  «        }|                      |g|¦  «         ŒKŒUdS )z;
        Test round-tripping over each serializer.
        N©r–   r½   rv   rw   rx   )ry   r{   r¤   r0   r|   rb   r}   s          r1   r¯   z!TestSerializer.test_roundtrip_msgo  s…   € ð Ô)ð 	.ð 	.ˆCà(,Ô(;ð 	.ð 	.Ñ$� ð #&§-¢-°Ñ"4Ô"4‘�˜ð —’ w°Ñ7Ô7�ð × Ò  # ¨Ñ-Ô-Ð-Ð-ð	.ð	.ð 	.r3   c                 ó>  — | j         D ]”}| j        D ]Š\  }}|                     |¦  «        \  }}|                     ||¦  «        }|d         }| j         D ]G}|                     |¦  «        \  }}|                     ||¦  «        }|                      |g|¦  «         ŒHŒ‹Œ•dS )zV
        Test cross-tripping over 2 serializers (as is done by WAMP routers).
        r   NrÇ   )	ry   r²   r¤   r0   r|   rb   r´   r¶   r}   s	            r1   r¸   z!TestSerializer.test_crosstrip_msg€  sÕ   € ð Ô*ð 	2ð 	2ˆDà(,Ô(;ð 2ð 2Ñ$� ð #'§.¢.°Ñ"5Ô"5‘�˜ð ×'Ò'¨°Ñ8Ô8�Ø˜A”w�à Ô2ð 
2ð 
2�Dð '+§n¢n°TÑ&:Ô&:‘O�G˜Vð  ×+Ò+¨G°VÑ<Ô<�Dð ×$Ò$ c U¨DÑ1Ô1Ð1Ð1ð
2ð2ð	2ð 	2r3   c                 óÔ  — | j         D ]ß\  }}|                      |j        i ¦  «         | j        D ]·}|                      |j        |j        v ¦  «         |                     |¦  «        \  }}|                      |j        |j        v ¦  «         |                      |j        |j                 |¦  «         |                     ¦   «          |                      |j        |j        v ¦  «         Œ¸ŒàdS )z5
        Test message serialization caching.
        N)	r½   rx   Ú_serializedr–   ÚassertFalser­   rv   Ú
assertTrueÚuncache)ry   r¤   r0   r{   r|   rb   s         r1   Útest_cache_msgzTestSerializer.test_cache_msg›  sü   € ð %)Ô$7ð 	Eð 	EÑ ˆO˜Sð ×Ò˜Sœ_¨bÑ1Ô1Ð1àÔ-ð Eð E�ð × Ò  ¤°C´OÐ!CÑDÔDÐDØ"%§-¢-°Ñ"4Ô"4‘�˜ð —’ ¤°3´?Ð BÑCÔCÐCØ× Ò  ¤°´Ô!AÀ7ÑKÔKÐKð —’‘”�Ø× Ò  ¤°C´OÐ!CÑDÔDÐDÐDðEð	Eð 	Er3   c                 óÞ  — | j         D ]ä}|                     d¬¦  «        }|                      |d         d         d¦  «         |                      |d         d         d¦  «         |                      |d         d         d¦  «         |                      |d         d         d¦  «         |                      |d         d         d¦  «         |                      |d         d         d¦  «         Œåd	S )
zA
        Test initial serializer stats are indeed empty.
        T©ÚdetailsÚ
serializedÚbytesr   rz   Úrated_messagesÚunserializedN)r–   Ústatsrx   )ry   r{   rÖ   s      r1   Útest_initial_statsz!TestSerializer.test_initial_stats³  sü   € ð Ô)ð 
	Ið 
	IˆCà—I’I d�IÑ+Ô+ˆEà×Ò˜U <Ô0°Ô9¸1Ñ=Ô=Ð=Ø×Ò˜U <Ô0°Ô<¸aÑ@Ô@Ð@Ø×Ò˜U <Ô0Ð1AÔBÀAÑFÔFÐFà×Ò˜U >Ô2°7Ô;¸QÑ?Ô?Ð?Ø×Ò˜U >Ô2°:Ô>ÀÑBÔBÐBØ×Ò˜U >Ô2Ð3CÔDÀaÑHÔHÐHÐHð
	Ið 
	Ir3   c                 óv  — | j         D ]°}| j        D ]3\  }}|                     |¦  «        \  }}|                     ||¦  «         Œ4|                     d¬¦  «        }|                      |d         dk    ¦  «         |                      |d         dk    ¦  «         |                      |d         dk    ¦  «         Œ±dS )ú_
        Test serializer stats are non-empty after serializing/unserializing messages.
        FrÐ   rÓ   r   rz   rÔ   N)r–   r½   rv   rw   rÖ   rÌ   ©ry   r{   r¤   r0   r|   rb   rÖ   s          r1   Útest_serialize_statsz#TestSerializer.test_serialize_statsÃ  sÑ   € ð Ô)ð 	9ð 	9ˆCà(,Ô(;ð 1ð 1Ñ$� ð #&§-¢-°Ñ"4Ô"4‘�˜ð —’ ¨Ñ0Ô0Ð0Ð0à—I’I e�IÑ,Ô,ˆEà�OŠO˜E 'œN¨QÒ.Ñ/Ô/Ð/Ø�OŠO˜E *Ô-°Ò1Ñ2Ô2Ð2Ø�OŠO˜EÐ"2Ô3°aÒ7Ñ8Ô8Ð8Ð8ð	9ð 	9r3   c                 ó�  — | j         D �]¼}| j        D ]3\  }}|                     |¦  «        \  }}|                     ||¦  «         Œ4|                     d¬¦  «        }|                      |d         d         dk    ¦  «         |                      |d         d         dk    ¦  «         |                      |d         d         dk    ¦  «         |                      |d         d         dk    ¦  «         |                      |d         d         dk    ¦  «         |                      |d         d         dk    ¦  «         |                      |d         d         |d         d         ¦  «         |                      |d         d         |d         d         ¦  «         |                      |d         d         |d         d         ¦  «         �Œ¾d	S )
zp
        Test serializer stats - with details - are non-empty after serializing/unserializing messages.
        TrÐ   rÒ   rÓ   r   rz   rÔ   rÕ   N)r–   r½   rv   rw   rÖ   rÌ   rx   rÚ   s          r1   Ú!test_serialize_stats_with_detailsz0TestSerializer.test_serialize_stats_with_details×  sÍ  € ð Ô)ð 	mñ 	mˆCà(,Ô(;ð 1ð 1Ñ$� ð #&§-¢-°Ñ"4Ô"4‘�˜ð —’ ¨Ñ0Ô0Ð0Ð0à—I’I d�IÑ+Ô+ˆEð
 �OŠO˜E ,Ô/°Ô8¸1Ò<Ñ=Ô=Ð=Ø�OŠO˜E ,Ô/°
Ô;¸aÒ?Ñ@Ô@Ð@Ø�OŠO˜E ,Ô/Ð0@ÔAÀAÒEÑFÔFÐFà�OŠO˜E .Ô1°'Ô:¸QÒ>Ñ?Ô?Ð?Ø�OŠO˜E .Ô1°*Ô=ÀÒAÑBÔBÐBØ�OŠO˜E .Ô1Ð2BÔCÀaÒGÑHÔHÐHà×Ò˜U <Ô0°Ô9¸5ÀÔ;PÐQXÔ;YÑZÔZÐZØ×Ò˜U <Ô0°Ô<¸eÀNÔ>SÐT^Ô>_Ñ`Ô`Ð`Ø×Ò˜U <Ô0Ð1AÔBÀEÈ.ÔDYÐZjÔDkÑlÔlÐlÑlð3	mð 	mr3   c                 ó€  — | j         D �]4}| j        D ]3\  }}|                     |¦  «        \  }}|                     ||¦  «         Œ4|                     ¦   «          |                     d¬¦  «        }|                      |d         d         d¦  «         |                      |d         d         d¦  «         |                      |d         d         d¦  «         |                      |d         d         d¦  «         |                      |d         d         d¦  «         |                      |d         d         d¦  «         �Œ6d	S )
z]
        Test serializer stats are reset after fetching stats - depending on option.
        TrÐ   rÒ   rÓ   r   rz   rÔ   rÕ   N)r–   r½   rv   rw   rÖ   rx   rÚ   s          r1   Útest_reset_statszTestSerializer.test_reset_statsö  sP  € ð Ô)ð 	Iñ 	IˆCà(,Ô(;ð 1ð 1Ñ$� ð #&§-¢-°Ñ"4Ô"4‘�˜ð —’ ¨Ñ0Ô0Ð0Ð0à�IŠI‰KŒKˆKØ—I’I d�IÑ+Ô+ˆEà×Ò˜U <Ô0°Ô9¸1Ñ=Ô=Ð=Ø×Ò˜U <Ô0°Ô<¸aÑ@Ô@Ð@Ø×Ò˜U <Ô0Ð1AÔBÀAÑFÔFÐFà×Ò˜U >Ô2°7Ô;¸QÑ?Ô?Ð?Ø×Ò˜U >Ô2°:Ô>ÀÑBÔBÐBØ×Ò˜U >Ô2Ð3CÔDÀaÑHÔHÐHÑHð'	Ið 	Ir3   c                 óÊ   ‡ — ‰ j         D ]Y}ˆ fd„}|                     dd|¦  «         ‰ j        D ]3\  }}|                     |¦  «        \  }}|                     ||¦  «         Œ4ŒZdS )rÙ   c                 óÂ   •— ‰                      | d         dk    ¦  «         ‰                      | d         dk    ¦  «         ‰                      | d         dk    ¦  «         d S )NrÓ   r   rz   rÔ   )rÌ   )rÖ   ry   s    €r1   Úon_statsz0TestSerializer.test_auto_stats.<locals>.on_stats  s]   ø€ Ø—’  g¤°Ò 2Ñ3Ô3Ð3Ø—’  jÔ 1°AÒ 5Ñ6Ô6Ð6Ø—’ Ð&6Ô 7¸!Ò ;Ñ<Ô<Ð<Ð<Ð<r3   r¿   r   N)r–   Úset_stats_autoresetr½   rv   rw   )ry   r{   râ   r¤   r0   r|   rb   s   `      r1   Útest_auto_statszTestSerializer.test_auto_stats  s    ø€ ð Ô)ð 	1ð 	1ˆCð=ð =ð =ð =ð =ð
 ×#Ò# B¨¨8Ñ4Ô4Ð4à(,Ô(;ð 1ð 1Ñ$� ð #&§-¢-°Ñ"4Ô"4‘�˜ð —’ ¨Ñ0Ô0Ð0Ð0ð1ð	1ð 	1r3   N)r   r€   r�   rŸ   rÅ   r¯   r¸   rÎ   r×   rÛ   rÝ   rß   rä   r-   r3   r1   r»   r»   _  s¶   € € € € € ð6ð 6ð 6ð
!ð !ð !ð.ð .ð .ð"2ð 2ð 2ð6Eð Eð Eð0Ið Ið Ið 9ð 9ð 9ð(mð mð mð>Ið Ið Ið21ð 1ð 1ð 1ð 1r3   r»   r,   )r4   Úunittestrš   r—   r   Úautobahn.wampr   r   r   rX   rc   rn   ÚTestCaserp   rƒ   r»   r-   r3   r1   ú<module>rè      sN  ðð6 
€	€	€	Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $ðe*ð e*ð e*ðP)ð )ð )ð.ð ð ð ð4!(ð !(ð !(ð !(ð !( Ô 1ñ !(ô !(ð !(ðLv0ð v0ð v0ð v0ð v0˜HÔ-ñ v0ô v0ð v0ðtC1ð C1ð C1ð C1ð C1�XÔ&ñ C1ô C1ð C1ð C1ð C1r3   