U
    luf}                     @   sb   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d Z
ejG dd	 d	eZdS )
    N)wraps)mark)BaseZMQTestCase)allow_interruptc                    s    t  fdd d _ S )Nc               	      s$   z| |W S   j d7  _ X d S )N   )	__calls__)argskwds_f =/tmp/pip-unpacked-wheel-h6ekxre8/zmq/tests/test_win32_shim.pyr      s    zcount_calls.<locals>._r   )r   r   )r   r   r
   r   count_calls   s    r   c                   @   s2   e Zd Zejejejd dddd Z	dS ) TestWindowsConsoleControlHandlerwinzWindows only test)reasonc           	   	   C   s   t dd }ddlm} ddlm}m} |d}|j}||f|_||_	z,t
|}|dd}td W 5 Q R X W n tk
r   Y nX |dkrt n
| d |jd	kstd S )
Nc                   S   s   t d d S )NzCaught CTRL-C!)printr   r   r   r   interrupt_polling   s    zHTestWindowsConsoleControlHandler.test_handler.<locals>.interrupt_pollingr   )windll)BOOLDWORDkernel32g      ?z(Expecting `KeyboardInterrupt` exception!r   )r   ctypesr   Zctypes.wintypesr   r   LoadLibraryGenerateConsoleCtrlEventargtypesrestyper   timesleepKeyboardInterruptOSErrorZfailr   AssertionError)	selfr   r   r   r   r   r   contextresultr   r   r   test_handler   s$    





z-TestWindowsConsoleControlHandler.test_handlerN)
__name__
__module____qualname__r   new_consoleZskipifsysplatform
startswithr&   r   r   r   r   r      s   r   )r+   r   	functoolsr   Zpytestr   Z	zmq.testsr   Zzmq.utils.win32r   r   r*   r   r   r   r   r   <module>   s   