
    i4                         S SK r S SKrS SKJrJrJr  S SKrS SKrS SKrS SK	J
r
JrJrJr    " S S5      r " S S5      r " S S	5      r " S
 S\R"                  5      r\S:X  a  \R(                  " 5         gg)    N)Mockpatch	MagicMock)
DispatcherDispatcherBaseSSLDispatcherWrappedDispatcherc                       \ rS rSrSrS rSrg)MockApp#   zMock WebSocketApp for testingc                 b    SU l         [        5       U l        [        5       U R                  l        g NT)keep_runningr   sockselfs    LC:\des-py\RoboSAPF\venv\Lib\site-packages\websocket/tests/test_dispatcher.py__init__MockApp.__init__&   s      F			    )r   r   N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__ r   r   r   r   #   s
    ' r   r   c                   $    \ rS rSrSrS rS rSrg)
MockSocket,   zMock socket for testingc                     SU l         g NFpending_returnr   s    r   r   MockSocket.__init__/   s
    #r   c                     U R                   $ Nr#   r   s    r   pendingMockSocket.pending2   s    """r   r#   N)r   r   r   r   r   r   r(   r   r   r   r   r   r   ,   s    !$#r   r   c                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)MockDispatcher6   z6Mock external dispatcher for WrappedDispatcher testingc                 J    / U l         / U l        / U l        / U l        / U l        g r'   )signal_callsabort_calls
read_callsbuffwrite_callstimeout_callsr   s    r   r   MockDispatcher.__init__9   s)    !r   c                 <    U R                   R                  X45        g r'   )r.   append)r   sighandlers      r   signalMockDispatcher.signal@   s      #0r   c                 :    U R                   R                  S5        g r   )r/   r5   r   s    r   abortMockDispatcher.abortC   s    %r   c                 <    U R                   R                  X45        g r'   )r0   r5   )r   r   callbacks      r   readMockDispatcher.readF   s    /0r   c                 >    U R                   R                  XX445        g r'   )r1   r5   )r   r   data	send_funcdisconnect_handlers        r   	buffwriteMockDispatcher.buffwriteI   s    ##T$OPr   c                 >    U R                   R                  XU45        g r'   )r2   r5   )r   secondsr>   argss       r   timeoutMockDispatcher.timeoutL   s    !!7d";<r   )r/   r1   r0   r.   r2   N)r   r   r   r   r   r   r8   r;   r?   rE   rJ   r   r   r   r   r+   r+   6   s$    @ 1&1Q=r   r+   c                   z    \ 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)DispatcherTestP   c                 "    [        5       U l        g r'   )r   appr   s    r   setUpDispatcherTest.setUpQ   s    9r   c                     [        U R                  S5      nU R                  UR                  U R                  5        U R                  UR                  S5        g)z"Test DispatcherBase initialization      >@N)r   rP   assertEqualping_timeout)r   
dispatchers     r   test_dispatcher_base_init(DispatcherTest.test_dispatcher_base_initT   s@    #DHHd3
200$7r   c                 j   [        U R                  S5      n[        5       nUR                  SU5        UR	                  5         UR                  5         [        R                  " 5       nUR                  SU5        [        R                  " 5       U-
  nUR	                  5         U R                  US5        g)z"Test DispatcherBase timeout methodrT   Ng?g?)r   rP   r   rJ   assert_called_once
reset_mocktimeassertGreaterEqual)r   rW   r>   
start_timeelapseds        r   test_dispatcher_base_timeout+DispatcherTest.test_dispatcher_base_timeout[   s    #DHHd3
6 	4*##% 	YY[
3)))+
*##%.r   c                 H   [        U R                  S5      n[        5       nUR                  SU5        UR	                  SS9  UR                  5         [        S5      Ul        U R                  [        5         UR                  SU5        SSS5        g! , (       d  f       g= f)z$Test DispatcherBase reconnect methodrT      T)reconnectingzUser interruptedN)	r   rP   r   	reconnectassert_called_once_withr\   KeyboardInterruptside_effectassertRaises)r   rW   reconnectors      r   test_dispatcher_base_reconnect-DispatcherTest.test_dispatcher_base_reconnectm   s    #DHHd3
f 	Q,+++> 	 "34F"G01  K0 211s   7B
B!c                 ,   [        U R                  S5      n[        5       nSn[        S5       n[	        U5      Ul        UR                  X#5      nUR                  X#5        U R                  U[	        U5      5        SSS5        g! , (       d  f       g= f)zTest DispatcherBase send methodrT   	   test datawebsocket._dispatcher.sendN)	r   rP   r   r   lenreturn_valuesendrg   rU   )r   rW   	mock_sock	test_data	mock_sendresults         r   test_dispatcher_base_send(DispatcherTest.test_dispatcher_base_send}   sq    #DHHd3
F	 	/0I%(^I"__Y:F--iCVS^4 100s   AB
Bc                   ^  [        T R                  S5      n[        SS9n[        5       n[        5       n[        S5       n[        5       nXel        / UR
                  l        U 4S jnXvR
                  l        UR                  XBU5        UR                  R                  5         UR
                  R                  S5        UR                  R                  5         UR                  5         SSS5        g! , (       d  f       g= f)zTest Dispatcher read method      @Trr   selectors.DefaultSelectorc                  *   > STR                   l        / $ r"   rP   r   rI   r   s    r   ri   8DispatcherTest.test_dispatcher_read.<locals>.side_effect       (-%	r   N)r   rP   r   r   rr   selectri   r?   registerassert_calledassert_called_withclose)r   rW   read_callbackcheck_callbackrt   mock_selector_classmock_selectorri   s   `       r   test_dispatcher_read#DispatcherTest.test_dispatcher_read   s    #.
$/F	 ./3F FM/<, 13M  - 0;  ,OOInE ""002  33C8--/((*) 0//s    B)C22
D c                 n  ^ ^ [        T R                  S5      n[        SS9n[        5       n[        5       n[        S5       n[        5       nXel        SmUU 4S jnXvR
                  l        UR                  XBU5        UR                  5         UR                  5         SSS5        g! , (       d  f       g= f)z2Test Dispatcher read method when data is availabler{   Tr|   r}   r   c                  F   > TS-  mTS:X  a  S/$ STR                   l        / $ )Nrd   TFr   )rI   
call_countr   s    r   select_side_effectIDispatcherTest.test_dispatcher_read_with_data.<locals>.select_side_effect   s+    a
? 6M,1DHH)Ir   N)	r   rP   r   r   rr   r   ri   r?   r   )	r   rW   r   r   rt   r   r   r   r   s	   `       @r   test_dispatcher_read_with_data-DispatcherTest.test_dispatcher_read_with_data   s    #.
$/F	./3F FM/<, J 0B  ,OOInE'')((*+ 0//s   AB&&
B4c                   ^  [        T R                  S5      n[        SS9n[        5       n[        5       nUT R                  R                  l        [        S5       n[        5       nXel        / UR                  l        U 4S jnXvR                  l        UR                  SX#5        UR                  R                  5         UR                  5         SSS5        g! , (       d  f       g= f)zTest SSLDispatcher read methodr{   Tr|   r}   c                  *   > STR                   l        / $ r"   r   r   s    r   ri   <DispatcherTest.test_ssl_dispatcher_read.<locals>.side_effect   r   r   N)r   rP   r   r   r   r   rr   r   ri   r?   r   r   )r   rW   r   r   mock_ssl_sockr   r   ri   s   `       r   test_ssl_dispatcher_read'DispatcherTest.test_ssl_dispatcher_read   s    "488S1
$/ #*./3F FM/<,02M  - 0;  ,OOD-@""002((* 0//s   A4C
C&c                     [        U R                  S5      n[        5       nSUl        X R                  R                  l        [        5       nUR                  SU5      nU R                  XB/5        g)z2Test SSLDispatcher select method with pending datar{   TN)r   rP   r   r$   r   r   r   rU   r   rW   r   r   rw   s        r   'test_ssl_dispatcher_select_with_pending6DispatcherTest.test_ssl_dispatcher_select_with_pending   sZ    "488S1
"'+$*""47 	1r   c                 >   [        U R                  S5      n[        5       nSUl        X R                  R                  l        [        5       nUS4/UR                  l        UR                  SU5      nU R                  XB5        UR                  R                  S5        g)z5Test SSLDispatcher select method without pending datar{   FN)
r   rP   r   r$   r   r   r   rr   rU   r   r   s        r   *test_ssl_dispatcher_select_without_pending9DispatcherTest.test_ssl_dispatcher_select_without_pending   s    "488S1
"',$*.;T-B,C)""47 	///4r   c                    [        U R                  S5      n[        5       nSUl        X R                  R                  l        [        5       n/ UR                  l        UR                  SU5      nU R                  U5        g)z0Test SSLDispatcher select method with no resultsr{   FN)	r   rP   r   r$   r   r   r   rr   assertIsNoner   s        r   %test_ssl_dispatcher_select_no_results4DispatcherTest.test_ssl_dispatcher_select_no_results   sf    "488S1
"',$*,.)""47 	&!r   c                    [        5       n[        5       n[        U R                  SX5      nU R	                  UR                  U R                  5        U R	                  UR
                  S5        U R	                  UR                  U5        U R	                  UR                  U5        U R	                  [        UR                  5      S5        UR                  S   u  pEU R	                  US5        U R	                  XQR                  5        g)z%Test WrappedDispatcher initialization      $@rd   r      N)r+   r   r	   rP   rU   rV   rW   handleDisconnectrq   r.   r;   )r   mock_dispatcherhandle_disconnectwrappedr6   r7   s         r   test_wrapped_dispatcher_init+DispatcherTest.test_wrapped_dispatcher_init  s    (* F#DHHdOWdhh/--t4++_=113DE 	_99:A>&33A6a "7"78r   c                     [        5       n[        5       n[        U R                  SX5      n[        5       n[        5       n[        5       nUR	                  XEU5        U R                  [        UR                  5      S5        U R                  UR                  S   XE45        U R                  [        UR                  5      S5        UR                  S   nU R                  US   S5        U R                  US   U5        g)z"Test WrappedDispatcher read methodr   rd   r   N	r+   r   r	   rP   r?   rU   rq   r0   r2   )r   r   r   r   rt   r   r   timeout_calls           r   test_wrapped_dispatcher_read+DispatcherTest.test_wrapped_dispatcher_read  s    (* F#DHHdOWF	Y~> 	_778!<33A68RS 	_::;Q?&44Q7a$/a.9r   c                 N   [        5       n[        5       n[        U R                  SX5      n[        5       n[        5       n[        5       nUR	                  XEU5        U R                  [        UR                  5      S5        U R                  [        UR                  5      S5        g)z7Test WrappedDispatcher read method without ping timeoutNrd   r   r   )r   r   r   r   rt   r   r   s          r   ,test_wrapped_dispatcher_read_no_ping_timeout;DispatcherTest.test_wrapped_dispatcher_read_no_ping_timeout3  s    (* F#DHHdOWF	Y~> 	_778!< 	_::;Q?r   c                 $   [        5       n[        5       n[        U R                  SX5      n[        5       nSn[	        S5       nUR                  XE5      nU R                  [        UR                  5      S5        UR                  S   nU R                  US   U5        U R                  US   U5        U R                  US   U5        U R                  US   U5        U R                  U[        U5      5        SSS5        g! , (       d  f       g= f)	z"Test WrappedDispatcher send methodr   ro   rp   rd   r   r      N)	r+   r   r	   rP   r   rs   rU   rq   r1   )	r   r   r   r   rt   ru   rv   rw   calls	            r   test_wrapped_dispatcher_send+DispatcherTest.test_wrapped_dispatcher_sendE  s    (* F#DHHdOWF	 	/0I\\)7F S!@!@A1E"2215DT!Wi0T!Wi0T!Wi0T!W&78 VS^4 100s   B5D
Dc                    [        5       n[        5       n[        U R                  SX5      n[        5       nSnUR                  " SU/UQ76   U R                  [        UR                  5      S5        UR                  S   nU R                  US   S5        U R                  US   U5        U R                  US   U5        g)z%Test WrappedDispatcher timeout methodr   )arg1arg2r{   rd   r   r   N)r+   r   r	   rP   rJ   rU   rq   r2   )r   r   r   r   r>   rI   r   s          r   test_wrapped_dispatcher_timeout.DispatcherTest.test_wrapped_dispatcher_timeout\  s    (* F#DHHdOW6X-- 	_::;Q?,,Q/a#&a(+a$'r   c                 x   [        5       n[        5       n[        U R                  SX5      n[        5       nUR	                  SU5        U R                  [        UR                  5      S5        UR                  S   nU R                  US   S5        U R                  US   U5        U R                  US   S5        g)z'Test WrappedDispatcher reconnect methodr   r   rd   r   r   )TN)r+   r   r	   rP   rf   rU   rq   r2   )r   r   r   r   rk   r   s         r   !test_wrapped_dispatcher_reconnect0DispatcherTest.test_wrapped_dispatcher_reconnectn  s    (* F#DHHdOWf![) 	_::;Q?,,Q/a!$a+.a'*r   )rP   N)r   r   r   r   rQ   rX   ra   rl   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   rM   P   sX    8/$1 5+<+<+625"9$:,@$5.($+r   rM   __main__)socketunittestunittest.mockr   r   r   	threadingr]   	websocketwebsocket._dispatcherr   r   r   r	   r   r   r+   TestCaserM   r   mainr   r   r   <module>r      st      0 0    &   # #= =4m+X&& m+`	 zMMO r   