o
    i"                     @   s   d dl Z d dlmZ d dlmZ 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W n ey;   dZY nw G dd	 d	eZdS )
    N)TestCase)SkipTest)IDENTITYPOLLINPOLLOUTPULLPUSHREPREQzmq_version_info)CffiTFc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) TestCFFIBackendc                 C   s   t stdd S )NzCFFI not available)have_ffi_backendr   )self r   V/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/zmq/tests/test_cffi_backend.pysetUp   s   zTestCFFIBackend.setUpc                 C   s    t  }|d tddv sJ d S )Nr         )r   range)r   versionr   r   r   test_zmq_version_info   s   z%TestCFFIBackend.test_zmq_version_infoc                 C   s,   t  }|tjksJ dt |ksJ d S Nr   )r   zmq_ctx_newr   NULLzmq_ctx_destroy)r   ctxr   r   r   test_zmq_ctx_new_destroy"   s   z(TestCFFIBackend.test_zmq_ctx_new_destroyc                 C   sX   t  }t |t}|tjksJ tj|ksJ dt |ks!J dt |ks*J d S r   )r   r   
zmq_socketr   r   r   	zmq_closer   r   r   socketr   r   r   test_zmq_socket_open_close(   s   z*TestCFFIBackend.test_zmq_socket_open_closec                 C   s   t  }t |t}tdd}t |ttd|d}|dks"J |tj	ks)J tj	|ks0J dt 
|ks9J dt |ksBJ d S )Nchar[3]   zmqvoid*   r   )r   r   r   r   r   newzmq_setsockoptr   castr   r    r   )r   r   r"   identityretr   r   r   test_zmq_setsockopt1   s   z#TestCFFIBackend.test_zmq_setsockoptc                 C   s(  t  }t |t}tdd}t |ttd|d}|dks"J tdd}td}t 	|ttd||}|dks?J t
td|dd	 d
ksPJ t
td|d	d dksaJ t
td|dd dksrJ |tjksyJ tj|ksJ dt |ksJ dt |ksJ d S )Nchar[]r%   r&   r'   r   zsize_t*r$   char*      zr      m   q)r   r   r   r   r   r(   r)   r   r*   zmq_getsockoptstringr   r    r   )r   r   r"   r+   r,   
option_lenoptionr   r   r   test_zmq_getsockopt>   s    
"""z#TestCFFIBackend.test_zmq_getsockoptc                 C   sl   t  }t |d}dt |dksJ |tjksJ tj|ks"J dt |ks+J dt |ks4J d S )N   r      tcp://*:4444)r   r   r   zmq_bindr   r   r    r   r!   r   r   r   test_zmq_bindS   s   zTestCFFIBackend.test_zmq_bindc                 C   s   t  }t |t}t |t}dt |dksJ dt |dks$J |tjks+J tj|ks2J tj|ks9J dt 	|ksBJ dt 	|ksKJ dt 
|ksTJ d S )Nr   r:   s   tcp://127.0.0.1:4444)r   r   r   r   r   r;   zmq_connectr   r   r    r   )r   r   socket1socket2r   r   r   test_zmq_bind_connect]   s   z%TestCFFIBackend.test_zmq_bind_connectc                 C   s@   t d}t j|ksJ dt|ksJ dt|ksJ d S )N
zmq_msg_t*r   )r   r(   r   r   zmq_msg_initzmq_msg_closer   zmq_msgr   r   r   test_zmq_msg_init_closel   s   
z'TestCFFIBackend.test_zmq_msg_init_closec                 C   sB   t d}t j|ksJ dt|dksJ dt|ksJ d S )NrA   r   
   )r   r(   r   r   zmq_msg_init_sizerC   rD   r   r   r   test_zmq_msg_init_sizes   s   
z&TestCFFIBackend.test_zmq_msg_init_sizec                 C   s`   t d}t dd}dt|t d|dt jt jksJ t j|ks%J dt|ks.J d S )NrA   char[5]   Hellor   r&      )r   r(   r   zmq_msg_init_datar*   r   rC   )r   rE   messager   r   r   test_zmq_msg_init_dataz   s   

z&TestCFFIBackend.test_zmq_msg_init_datac                 C   s   t d}t dd}dt|t d|dt jt jksJ t|}t j|ks*J t t d|dks7J dt|ks@J d S )NrA   r.   rK   r   r&   rL   r/   )	r   r(   r   rM   r*   r   zmq_msg_datar5   rC   )r   rE   rN   datar   r   r   test_zmq_msg_data   s   


z!TestCFFIBackend.test_zmq_msg_datac                 C   s   t  }t |t}t |t}dt |dksJ dt |dks$J td t	
d}t	
dd}t |t	d|t	d	d
t	jt	j d
t ||dksRJ dt |ks[J t |dksdJ t |dksmJ t |dksvJ d S )Nr   s   tcp://*:7777s   tcp://127.0.0.1:7777皙?rA   rJ   rK   r&   size_trL   )r   r   r   r
   r	   r;   r=   timesleepr   r(   rM   r*   r   zmq_msg_sendrC   r    r   )r   r   senderreceiverrE   rN   r   r   r   test_zmq_send   s(   



zTestCFFIBackend.test_zmq_sendc                 C   sB  t  }t |t}t |t}dt |dksJ dt |dks$J td t	
d}t	
dd}t |t	d|t	d	d
t	jt	j t	
d}t | d
t ||dks\J d
t ||dksgJ d
t |kspJ dt	t |t |d d  ksJ t |dksJ t |dksJ t |dksJ d S )Nr   s   tcp://*:2222s   tcp://127.0.0.1:2222rS   rA   rJ   rK   r&   rT   rL   )r   r   r   r
   r	   r;   r=   rU   rV   r   r(   rM   r*   r   rB   rW   zmq_msg_recvzmq_msg_sizebufferrP   r    r   )r   r   rX   rY   rE   rN   zmq_msg2r   r   r   test_zmq_recv   s4   





zTestCFFIBackend.test_zmq_recvc                 C   sR  t  }t |t}t |t}t |d}t |d}td}tdd}t 	|t
d|t
ddtjtj td	}||_d
|_ttB |_d
|_t tjd
d
}	|	d
ks[J t |dd
}	|	d
kshJ t ||d
}	ttt t   |	dksJ td t |dd
}	|	dksJ t|jt@ sJ t|jt@ rJ td}
t |
 t |
|d
}|dksJ dt |
ksJ dtt |
t |
d d  ksJ td	}||_d
|_ttB |_d
|_t |dd
}	|	d
ksJ td}tdd}t 	|t
d|t
ddtjtj dt ||d
ks#J td d
t |dd
ks4J t|jt@ s>J dt |
|d
ksJJ dt |
ksTJ dtt |
tt |
d d  kskJ d
t  |ksuJ d
t  |ksJ d
t !|ksJ d
t "|ksJ d
t "|
ksJ d
t "|ksJ d S )Ns   tcp://*:3333s   tcp://127.0.0.1:3333rA   rJ   rK   r&   rT   rL   zzmq_pollitem_t*r   r0   g?zchar[11]s   Hello Againr   )#r   r   r   r
   r	   r;   r=   r   r(   rM   r*   r   r"   fdr   r   eventsreventszmq_pollrW   printr5   zmq_strerror	zmq_errnorU   rV   intrB   r[   r\   r]   rP   r    r   rC   )r   r   rX   rY   r1r2rE   rN   receiver_pollitemr,   r^   ret_recvsender_pollitemzmq_msg_againmessage_againr   r   r   test_zmq_poll   s   













"
zTestCFFIBackend.test_zmq_pollN)__name__
__module____qualname__r   r   r   r#   r-   r8   r<   r@   rF   rI   rO   rR   rZ   r_   ro   r   r   r   r   r      s     	
$r   )rU   unittestr   	zmq.testsr   zmq.backend.cffir   r   r   r   r   r	   r
   r   zmq.backend.cffi._cffir   r   r   ImportErrorr   r   r   r   r   <module>   s    (
