U
    d                     @   sb   d dl Z d dlmZmZmZ d dlmZ d dlmZ d dl	Z
G dd dejZedkr^e   dS )    N)core	test_util	workspace)disambiguate_grad_if_op_output)ModelHelperc                   @   s   e Zd Zdd ZdS )TestControlc                 C   s  t dtd t dtd t dtd tdd}|jdd	 td
d}|jdd |jdd	 tjddddgd	dg|j	 |j	 d}d}t
|d| | |jd | |jD ]8}|jdkr| |jjd jd | q| |jd qd S )NZcondTZ	then_grad   Z	else_grad   Zthen_test_model)nameZ
input_gradZelse_test_modelZelse_temp_gradZ	else_tempZIf)then_netelse_netZinput_grad_autosplit_0r   r   r   )r   ZFeedBlobnparrayr   netZCopyr   ZCreateOperatorZProtor   assertEqualoutputargr
   nop)selfZ
then_modelZ
else_modelZgrad_opZnew_grad_outputr    r   G/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/control_ops_grad_test.py#test_disambiguate_grad_if_op_output   s,    




z/TestControl.test_disambiguate_grad_if_op_outputN)__name__
__module____qualname__r   r   r   r   r   r      s   r   __main__)ZunittestZcaffe2.pythonr   r   r   Zcaffe2.python.control_ops_gradr   Zcaffe2.python.model_helperr   Znumpyr   ZTestCaser   r   mainr   r   r   r   <module>   s   #