ó
L]c           @   sÌ   d  d l  Z  d  d l Z d  d l m Z d  d l m Z m Z yZ 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 e Z Wn e k
 r± e Z n Xd e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   TestCase(   t   BaseZMQTestCaset   SkipTest(   t   zmq_version_infot   PUSHt   PULLt   IDENTITYt   REQt   REPt   POLLINt   POLLOUT(   t   ffit   Ct   TestCFFIBackendc           B   s   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 RS(   c         C   s   t  s t d ƒ ‚ n  d  S(   Ns   CFFI not available(   t   have_ffi_backendR   (   t   self(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   setUp   s    c         C   s,   t  ƒ  } | d t d d ƒ k s( t ‚ d  S(   Ni    i   i   (   R   t   ranget   AssertionError(   R   t   version(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_version_info   s    	c         C   s@   t  j ƒ  } | t j k s! t ‚ d t  j | ƒ k s< t ‚ d  S(   Ni    (   R   t   zmq_ctx_newR   t   NULLR   t   zmq_ctx_destroy(   R   t   ctx(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_ctx_new_destroy!   s    c         C   s‚   t  j ƒ  } t  j | t ƒ } | t j k s3 t ‚ t j | k sH t ‚ d t  j | ƒ k sc t ‚ d t  j | ƒ k s~ t ‚ d  S(   Ni    (	   R   R   t
   zmq_socketR   R   R   R   t	   zmq_closeR   (   R   R   t   socket(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_socket_open_close'   s    c         C   sÊ   t  j ƒ  } t  j | t ƒ } t j d d ƒ } t  j | t t j d | ƒ d ƒ } | d k sf t	 ‚ | t j
 k s{ t	 ‚ t j
 | k s t	 ‚ d t  j | ƒ k s« t	 ‚ d t  j | ƒ k sÆ t	 ‚ d  S(   Ns   char[3]t   zmqs   void*i   i    (   R   R   R   R   R   t   newt   zmq_setsockoptR   t   castR   R   R   R   (   R   R   R   t   identityt   ret(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_setsockopt0   s    $c         C   s«  t  j ƒ  } t  j | t ƒ } t j d d ƒ } t  j | t t j d | ƒ d ƒ } | d k sf t	 ‚ t j d d ƒ } t j d ƒ } t  j
 | t t j d | ƒ | ƒ } | d k s½ t	 ‚ t j t j d | ƒ ƒ d d	 !d
 k së t	 ‚ t j t j d | ƒ ƒ d	 d !d k st	 ‚ t j t j d | ƒ ƒ d d !d k sGt	 ‚ | t j k s\t	 ‚ t j | k sqt	 ‚ d t  j | ƒ k sŒt	 ‚ d t  j | ƒ k s§t	 ‚ d  S(   Ns   char[]R   s   void*i   i    s   size_t*s   char[3]s   char*i   t   zi   t   mt   q(   R   R   R   R   R   R   R    R   R!   R   t   zmq_getsockoptt   stringR   R   R   (   R   R   R   R"   R#   t
   option_lent   option(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_getsockopt=   s&    $		...c         C   s    t  j ƒ  } t  j | d ƒ } d t  j | d ƒ k s< t ‚ | t j k sQ t ‚ t j | k sf t ‚ d t  j | ƒ k s t ‚ d t  j | ƒ k sœ t ‚ d  S(   Ni   i    s   tcp://*:4444(	   R   R   R   t   zmq_bindR   R   R   R   R   (   R   R   R   (    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_bindU   s    c         C   s   t  j ƒ  } t  j | t ƒ } t  j | t ƒ } d t  j | d ƒ k sN t ‚ d t  j | d ƒ k sl t ‚ | t j	 k s t ‚ t j	 | k s– t ‚ t j	 | k s« t ‚ d t  j
 | ƒ k sÆ t ‚ d t  j
 | ƒ k sá t ‚ d t  j | ƒ k sü t ‚ d  S(   Ni    s   tcp://*:4444s   tcp://127.0.0.1:4444(   R   R   R   R   R   R-   R   t   zmq_connectR   R   R   R   (   R   R   t   socket1t   socket2(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_bind_connect_   s    c         C   s^   t  j d ƒ } t  j | k s$ t ‚ d t j | ƒ k s? t ‚ d t j | ƒ k sZ t ‚ d  S(   Ns
   zmq_msg_t*i    (   R   R   R   R   R   t   zmq_msg_initt   zmq_msg_close(   R   t   zmq_msg(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_msg_init_closen   s    c         C   sa   t  j d ƒ } t  j | k s$ t ‚ d t j | d ƒ k sB t ‚ d t j | ƒ k s] t ‚ d  S(   Ns
   zmq_msg_t*i    i
   (   R   R   R   R   R   t   zmq_msg_init_sizeR4   (   R   R5   (    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_msg_init_sizeu   s    c         C   sŽ   t  j d ƒ } t  j d d ƒ } d t j | t  j d | ƒ d t  j t  j ƒ k sZ t ‚ t  j | k so t ‚ d t j | ƒ k sŠ t ‚ d  S(   Ns
   zmq_msg_t*s   char[5]t   Helloi    s   void*i   (   R   R   R   t   zmq_msg_init_dataR!   R   R   R4   (   R   R5   t   message(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_msg_init_data|   s    c         C   sÄ   t  j d ƒ } t  j d d ƒ } d t j | t  j d | ƒ d t  j t  j ƒ k sZ t ‚ t j | ƒ } t  j | k s~ t ‚ t  j t  j d | ƒ ƒ d k s¥ t ‚ d t j	 | ƒ k sÀ t ‚ d  S(   Ns
   zmq_msg_t*s   char[]R9   i    s   void*i   s   char*(
   R   R   R   R:   R!   R   R   t   zmq_msg_dataR)   R4   (   R   R5   R;   t   data(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_msg_data‰   s    'c         C   sb  t  j ƒ  } t  j | t ƒ } t  j | t ƒ } d t  j | d ƒ k sN t ‚ d t  j | d ƒ k sl t ‚ 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ò t ‚ d t  j | ƒ k st ‚ t  j | ƒ d k s(t ‚ t  j | ƒ d k sCt ‚ t  j | ƒ d k s^t ‚ d  S(   Ni    s   tcp://*:7777s   tcp://127.0.0.1:7777gš™™™™™¹?s
   zmq_msg_t*s   char[5]R9   s   void*t   size_ti   (   R   R   R   R   R   R-   R   R/   t   timet   sleepR   R   R:   R!   R   t   zmq_msg_sendR4   R   R   (   R   R   t   sendert   receiverR5   R;   (    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_send™   s$    	
!c         C   sÐ  t  j ƒ  } t  j | t ƒ } t  j | t ƒ } d t  j | d ƒ k sN t ‚ d t  j | d ƒ k sl t ‚ 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t ‚ d
 t  j | | d ƒ k s/t ‚ d
 t  j | ƒ k sJt ‚ d t
 j t  j | ƒ t  j | ƒ ƒ k s{t ‚ t  j | ƒ d k s–t ‚ t  j | ƒ d k s±t ‚ t  j | ƒ d k sÌt ‚ d  S(   Ni    s   tcp://*:2222s   tcp://127.0.0.1:2222gš™™™™™¹?s
   zmq_msg_t*s   char[5]R9   s   void*R@   i   (   R   R   R   R   R   R-   R   R/   RA   RB   R   R   R:   R!   R   R3   RC   t   zmq_msg_recvt   zmq_msg_sizet   bufferR=   R   R   (   R   R   RD   RE   R5   R;   t   zmq_msg2(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_recv³   s.    	
!!c         C   s¥  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 B| _ d
 | _ t  j t j d
 d
 ƒ }	 |	 d
 k st ‚ t  j | d d
 ƒ }	 |	 d
 k s4t ‚ t  j | | d
 ƒ }	 t j t  j t  j ƒ  ƒ ƒ GH|	 d k sxt ‚ t j d ƒ t  j | d d
 ƒ }	 |	 d k s¬t ‚ t | j ƒ t @sÅt ‚ t | j ƒ t @sßt ‚ t j d ƒ }
 t  j |
 ƒ t  j |
 | d
 ƒ } | d k s"t ‚ d t  j |
 ƒ k s=t ‚ d t j t  j |
 ƒ t  j |
 ƒ ƒ k snt ‚ t j d	 ƒ } | | _ d
 | _ t t B| _ d
 | _ t  j | d d
 ƒ }	 |	 d
 k sÌt ‚ 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 sEt ‚ t j d ƒ d
 t  j | d d
 ƒ k sst ‚ t | j ƒ t @sŒt ‚ d t  j |
 | d
 ƒ k s­t ‚ d t  j |
 ƒ k sÈt ‚ d t j t  j |
 ƒ t t  j |
 ƒ ƒ ƒ k sÿt ‚ d
 t  j  | ƒ k st ‚ d
 t  j  | ƒ k s5t ‚ d
 t  j! | ƒ k sPt ‚ d
 t  j" | ƒ k skt ‚ d
 t  j" |
 ƒ k s†t ‚ d
 t  j" | ƒ k s¡t ‚ d  S(   Ns   tcp://*:3333s   tcp://127.0.0.1:3333s
   zmq_msg_t*s   char[5]R9   s   void*R@   i   s   zmq_pollitem_t*i    i   gš™™™™™É?s   char[11]s   Hello Againi   (#   R   R   R   R   R   R-   R/   R   R   R:   R!   R   R   t   fdR	   R
   t   eventst   reventst   zmq_pollR   RC   R)   t   zmq_strerrort	   zmq_errnoRA   RB   t   intR3   RG   RH   RI   R=   R   R   R4   (   R   R   RD   RE   t   r1t   r2R5   R;   t   receiver_pollitemR#   RJ   t   ret_recvt   sender_pollitemt   zmq_msg_againt   message_again(    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   test_zmq_pollÓ   s€    	
							
!!!"(   t   __name__t
   __module__R   R   R   R   R$   R,   R.   R2   R6   R8   R<   R?   RF   RK   RZ   (    (    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyR      s   								
							 (   t   sysRA   t   unittestR    t	   zmq.testsR   R   t   zmq.backend.cffiR   R   R   R   R   R   R	   R
   t   zmq.backend.cffi._cffiR   R   t   TrueR   t   ImportErrort   FalseR   (    (    (    s:   lib/python2.7/site-packages/zmq/tests/test_cffi_backend.pyt   <module>   s   :

