
    ye"                         d dl Z d dlmZ d dlmZ 	 d dlmZmZmZm	Z	m
Z
mZmZmZ d dlmZmZ dZn# e$ r dZY nw xY w G d d	e          ZdS )
    N)TestCase)SkipTest)IDENTITYPOLLINPOLLOUTPULLPUSHREPREQzmq_version_info)CffiTFc                   h    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 Zd Zd Zd Zd ZdS )TestCFFIBackendc                 2    t           st          d          d S )NzCFFI not available)have_ffi_backendr   )selfs    ;lib/python3.11/site-packages/zmq/tests/test_cffi_backend.pysetUpzTestCFFIBackend.setUp   s#     	1/000	1 	1    c                 V    t                      }|d         t          dd          v sJ d S )Nr         )r   range)r   versions     r   test_zmq_version_infoz%TestCFFIBackend.test_zmq_version_info   s0    "$$qzU1b\\))))))r   c                     t          j                    }|t          j        k    sJ dt          j        |          k    sJ d S Nr   )r   zmq_ctx_newr   NULLzmq_ctx_destroy)r   ctxs     r   test_zmq_ctx_new_destroyz(TestCFFIBackend.test_zmq_ctx_new_destroy"   s>    moochA%c********r   c                    t          j                    }t          j        |t                    }|t          j        k    sJ t          j        |k    sJ dt          j        |          k    sJ dt          j        |          k    sJ d S r   )r   r   
zmq_socketr	   r   r    	zmq_closer!   r   r"   sockets      r   test_zmq_socket_open_closez*TestCFFIBackend.test_zmq_socket_open_close(   s}    mooc4((chx6!!!!AK''''''A%c********r   c                    t          j                    }t          j        |t                    }t	          j        dd          }t          j        |t          t	          j        d|          d          }|dk    sJ |t          j	        k    sJ t          j	        |k    sJ dt          j
        |          k    sJ dt          j        |          k    sJ d S )Nchar[3]   zmqvoid*   r   )r   r   r%   r	   r   newzmq_setsockoptr   castr    r&   r!   )r   r"   r(   identityrets        r   test_zmq_setsockoptz#TestCFFIBackend.test_zmq_setsockopt1   s    mooc4((79f--vx'81L1LaPPaxxxxchx6!!!!AK''''''A%c********r   c                    t          j                    }t          j        |t                    }t	          j        dd          }t          j        |t          t	          j        d|          d          }|dk    sJ t	          j        dd          }t	          j        d          }t          j	        |t          t	          j        d|          |          }|dk    sJ t	          j
        t	          j        d|                    dd	         d
k    sJ t	          j
        t	          j        d|                    d	d         dk    sJ t	          j
        t	          j        d|                    dd         dk    sJ |t          j        k    sJ t          j        |k    sJ dt          j        |          k    sJ dt          j        |          k    sJ d S )Nchar[]r,   r-   r.   r   zsize_t*r+   char*      zr      m   q)r   r   r%   r	   r   r/   r0   r   r1   zmq_getsockoptstringr    r&   r!   )r   r"   r(   r2   r3   
option_lenoptions          r   test_zmq_getsockoptz#TestCFFIBackend.test_zmq_getsockopt>   s   mooc4((78V,,vx'81L1LaPPaxxxxWY**
##vx'61J1JJWWaxxxxz#(7F3344QqS9TAAAAz#(7F3344QqS9TAAAAz#(7F3344QqS9TAAAAchx6!!!!AK''''''A%c********r   c                 <   t          j                    }t          j        |d          }dt          j        |d          k    sJ |t          j        k    sJ t          j        |k    sJ dt          j        |          k    sJ dt          j        |          k    sJ d S )N   r      tcp://*:4444)r   r   r%   zmq_bindr   r    r&   r!   r'   s      r   test_zmq_bindzTestCFFIBackend.test_zmq_bindS   s    mooc1%%AJv777777chx6!!!!AK''''''A%c********r   c                    t          j                    }t          j        |t                    }t          j        |t                    }dt          j        |d          k    sJ dt          j        |d          k    sJ |t          j        k    sJ t          j        |k    sJ t          j        |k    sJ dt          j	        |          k    sJ dt          j	        |          k    sJ dt          j
        |          k    sJ d S )Nr   rC   s   tcp://127.0.0.1:4444)r   r   r%   r	   r   rD   zmq_connectr   r    r&   r!   )r   r"   socket1socket2s       r   test_zmq_bind_connectz%TestCFFIBackend.test_zmq_bind_connect]   s    moo,sD)),sD))AJw888888AM'+BCCCCCCchx7""""x7""""AK((((((AK((((((A%c********r   c                     t          j        d          }t           j        |k    sJ dt          j        |          k    sJ dt          j        |          k    sJ d S )N
zmq_msg_t*r   )r   r/   r    r   zmq_msg_initzmq_msg_closer   zmq_msgs     r   test_zmq_msg_init_closez'TestCFFIBackend.test_zmq_msg_init_closel   s`    ',''x7""""AN7++++++AOG,,,,,,,,r   c                     t          j        d          }t           j        |k    sJ dt          j        |d          k    sJ dt          j        |          k    sJ d S )NrL   r   
   )r   r/   r    r   zmq_msg_init_sizerN   rO   s     r   test_zmq_msg_init_sizez&TestCFFIBackend.test_zmq_msg_init_sizes   sc    ',''x7""""A'444444AOG,,,,,,,,r   c                 :   t          j        d          }t          j        dd          }dt          j        |t          j        d|          dt           j        t           j                  k    sJ t           j        |k    sJ dt          j        |          k    sJ d S )NrL   char[5]   Hellor   r-      )r   r/   r   zmq_msg_init_datar1   r    rN   )r   rP   messages      r   test_zmq_msg_init_dataz&TestCFFIBackend.test_zmq_msg_init_dataz   s    ',''')X..A'SXgw//CHch
 
 
 
 
 
 x7""""AOG,,,,,,,,r   c                    t          j        d          }t          j        dd          }dt          j        |t          j        d|          dt           j        t           j                  k    sJ t          j        |          }t           j        |k    sJ t          j        t          j        d|                    dk    sJ dt          j        |          k    sJ d S )NrL   r6   rX   r   r-   rY   r7   )	r   r/   r   rZ   r1   r    zmq_msg_datar=   rN   )r   rP   r[   datas       r   test_zmq_msg_dataz!TestCFFIBackend.test_zmq_msg_data   s    ','''(H--A'SXgw//CHch
 
 
 
 
 
 ~g&&x7""""z#(7D1122h>>>>AOG,,,,,,,,r   c                 &   t          j                    }t          j        |t                    }t          j        |t                    }dt          j        |d          k    sJ dt          j        |d          k    sJ t          j        d           t          j
        d          }t          j
        dd          }t          j        |t          j        d|          t          j        d	d
          t          j        t          j                   d
t          j        ||d          k    sJ dt          j        |          k    sJ t          j        |          dk    sJ t          j        |          dk    sJ t          j        |          dk    sJ d S )Nr   s   tcp://*:7777s   tcp://127.0.0.1:7777皙?rL   rW   rX   r-   size_trY   )r   r   r%   r   r
   rD   rG   timesleepr   r/   rZ   r1   r    zmq_msg_sendrN   r&   r!   )r   r"   senderreceiverrP   r[   s         r   test_zmq_sendzTestCFFIBackend.test_zmq_send   sk   mooc3''<S))AJx999999AM&*ABBBBBB
3',''')X..	HWg&&HXq!!HH	
 	
 	
 AN7FA666666AOG,,,,,,{6""a''''{8$$)))) %%******r   c                 <   t          j                    }t          j        |t                    }t          j        |t                    }dt          j        |d          k    sJ dt          j        |d          k    sJ t          j        d           t          j
        d          }t          j
        dd          }t          j        |t          j        d|          t          j        d	d
          t          j        t          j                   t          j
        d          }t          j        |           d
t          j        ||d          k    sJ d
t          j        ||d          k    sJ d
t          j        |          k    sJ dt          j        t          j        |          t          j        |                    d d          k    sJ t          j        |          dk    sJ t          j        |          dk    sJ t          j        |          dk    sJ d S )Nr   s   tcp://*:2222s   tcp://127.0.0.1:2222rb   rL   rW   rX   r-   rc   rY   )r   r   r%   r   r
   rD   rG   rd   re   r   r/   rZ   r1   r    rM   rf   zmq_msg_recvzmq_msg_sizebufferr^   r&   r!   )r   r"   rg   rh   rP   r[   zmq_msg2s          r   test_zmq_recvzTestCFFIBackend.test_zmq_recv   s   mooc3''<S))AJx999999AM&*ABBBBBB
3',''')X..	HWg&&HXq!!HH	
 	
 	
 7<((	x   AN7FA666666AN8Xq999999AN8,,,,,,z!.22AN84L4LMMaaaPQ Q Q Q {6""a''''{8$$)))) %%******r   c           	      
   t          j                    }t          j        |t                    }t          j        |t                    }t          j        |d          }t          j        |d          }t          j        d          }t          j        dd          }t          j	        |t          j
        d|          t          j
        dd          t          j        t          j                   t          j        d	          }||_        d
|_        t          t          z  |_        d
|_        t          j        t          j        d
d
          }	|	d
k    sJ t          j        |dd
          }	|	d
k    sJ t          j        ||d
          }	t)          t          j        t          j        t          j                                                   |	dk    sJ t1          j        d           t          j        |dd
          }	|	dk    sJ t5          |j                  t          z  sJ t5          |j                  t          z  rJ t          j        d          }
t          j        |
           t          j        |
|d
          }|dk    sJ dt          j        |
          k    sJ dt          j        t          j        |
          t          j        |
                    d d          k    sJ t          j        d	          }||_        d
|_        t          t          z  |_        d
|_        t          j        |dd
          }	|	d
k    sJ t          j        d          }t          j        dd          }t          j	        |t          j
        d|          t          j
        dd          t          j        t          j                   dt          j        ||d
          k    sJ t1          j        d           d
t          j        |dd
          k    sJ t5          |j                  t          z  sJ dt          j        |
|d
          k    sJ dt          j        |
          k    sJ dt          j        t          j        |
          t5          t          j        |
                              d d          k    sJ d
t          j         |          k    sJ d
t          j         |          k    sJ d
t          j!        |          k    sJ d
t          j"        |          k    sJ d
t          j"        |
          k    sJ d
t          j"        |          k    sJ d S )Ns   tcp://*:3333s   tcp://127.0.0.1:3333rL   rW   rX   r-   rc   rY   zzmq_pollitem_t*r   r8   g?zchar[11]s   Hello Againr   )#r   r   r%   r   r
   rD   rG   r   r/   rZ   r1   r    r(   fdr   r   eventsreventszmq_pollrf   printr=   zmq_strerror	zmq_errnord   re   intrM   rk   rl   rm   r^   r&   r!   rN   )r   r"   rg   rh   r1r2rP   r[   receiver_pollitemr3   rn   ret_recvsender_pollitemzmq_msg_againmessage_agains                  r   test_zmq_pollzTestCFFIBackend.test_zmq_poll   s   mooc3''<S))Z/22]6#:;;',''')X..	HWg&&HXq!!HH	
 	
 	
  G$566#+  #)G#3 $%!j1a((axxxxj*Aq11axxxxnWfa00cj6677888axxxx
3j*Aq11axxxx$,--6666(011G;;;;7<((	x   >(Ha881}}}}AN8,,,,,,z!.22AN84L4LMMaaaPQ Q Q Q '"344!'!''!1"#j!Q//axxxx--
N;;	HWm,,HXr""HH	
 	
 	
 Q^M8Q??????
3AJ1555555?*++f4444Q^Hfa888888Q^H------z!.22Cx8P8P4Q4QRRSTSTSTUV V V V AK''''''AK))))))A%c******AOG,,,,,,AOH------AOM22222222r   N)__name__
__module____qualname__r   r   r#   r)   r4   r@   rE   rJ   rQ   rU   r\   r`   ri   ro   r    r   r   r   r      s        1 1 1* * *
+ + ++ + ++ + ++ + +*+ + ++ + +- - -- - -	- 	- 	-- - -+ + +8"+ "+ "+H]3 ]3 ]3 ]3 ]3r   r   )rd   unittestr   	zmq.testsr   zmq.backend.cffir   r   r   r   r	   r
   r   r   zmq.backend.cffi._cffir   r   r   ImportErrorr   r   r   r   <module>r      s#               	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 .-------   W3 W3 W3 W3 W3h W3 W3 W3 W3 W3s   1 ;;