U
    ‰d   ã                   @   sf   d dl mZmZ d dlmZ G dd„ dejƒZG dd„ dejƒZG dd„ deƒZ	G d	d
„ d
ej
ƒZdS )é    )ÚcontextÚ	test_util)ÚThreadc                   @   s   e Zd ZdS )Ú	MyContextN©Ú__name__Ú
__module__Ú__qualname__© r
   r
   ú>/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/context_test.pyr   
   s   r   c                   @   s   e Zd ZdS )ÚDefaultMyContextNr   r
   r
   r
   r   r      s   r   c                   @   s   e Zd ZdS )ÚChildMyContextNr   r
   r
   r
   r   r      s   r   c                   @   sJ   e Zd Zdd„ Zdd„ Zeƒ dd„ ƒZdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚTestContextc              
   C   sx   zDt dƒD ]6}tƒ &}t dƒD ]}|  t ¡ |k¡ qW 5 Q R X q
W n. tk
rr } z| j |¡ W 5 d }~X Y nX d S )Néd   )Úranger   Ú
assertTrueÚcurrentÚ	ExceptionÚ_exceptionsÚappend)ÚselfÚ_ÚaÚer
   r
   r   Úuse_my_context   s    $zTestContext.use_my_contextc                 C   s\   g }g | _ tdƒD ]"}t| jd}| ¡  | |¡ q|D ]}| ¡  q:| j D ]}|‚qNd S )Né   )Útarget)r   r   r   r   Ústartr   Újoin)r   Úthreadsr   ÚthreadÚtr   r
   r
   r   ÚtestMultiThreaded   s    

zTestContext.testMultiThreadedc                 C   s   |   t ¡ ¡ d S ©N)ZassertIsNotNoner   r   ©r   r
   r
   r   ÚtestDecorator*   s    zTestContext.testDecoratorc              	   C   sN   |   t¡ t ¡  W 5 Q R X tƒ }|  tj|d|¡ |  tjdd¡ d S )N)ÚvalueF)Úrequired)ÚassertRaisesÚAssertionErrorr   r   ÚassertEqualZassertIsNone©r   Úctxr
   r
   r   ÚtestNonDefaultCurrent.   s
    z!TestContext.testNonDefaultCurrentc                 C   s   |   t ¡ t¡ d S r#   )ZassertIsInstancer   r   r$   r
   r
   r   ÚtestDefaultCurrent7   s    zTestContext.testDefaultCurrentc              
   C   sH   t ƒ 8}tƒ &}|  t ¡ |¡ |  t  ¡ |¡ W 5 Q R X W 5 Q R X d S r#   )r   r   r*   r   )r   Zctx1Zctx2r
   r
   r   ÚtestNestedContexts:   s    zTestContext.testNestedContextsc              	   C   s6   t ƒ &}|  t  ¡ |¡ |  t ¡ |¡ W 5 Q R X d S r#   )r   r*   r   r   r+   r
   r
   r   ÚtestChildClasses@   s    zTestContext.testChildClassesN)r   r   r	   r   r"   r   r%   r-   r.   r/   r0   r
   r
   r
   r   r      s   	
	r   N)Zcaffe2.pythonr   r   Ú	threadingr   ZManagedr   ZDefaultManagedr   r   ZTestCaser   r
   r
   r
   r   Ú<module>   s
   