
    L`i	                    V    d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
mZ  G d d      Zy)z5Tests for executor-level dynamic replanning triggers.    )annotationsN)ActionExecutorc                  Z    e Zd ZdZddZddZej                  j                  dd       Z	y)TestDynamicReplanningz:Test SCAN_AREA trigger logic and replan callback emission.c                   t               }|j                  ddd      \  }}d}||u }|st        j                  d|fd||f      dt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}}d
}||v }|st        j                  d|fd||f      t        j                  |      dt	        j
                         v st        j                  |      rt        j                  |      nddz  }dd	|iz  }t        t        j                  |            d x}}y )N Tanalysisinterestingisz%(py0)s is %(py3)striggerpy0py3assert %(py5)spy5scan_marked_interestinginz%(py1)s in %(py3)sreasonspy1r   )
r   _should_replan_after_scan
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)	selfexecutorr   r   @py_assert2@py_assert1@py_format4@py_format6@py_assert0s	            Z/home/nelsen/Projects/kognitive/orchestrator/src/executor/tests/test_dynamic_replanning.py/test_should_replan_when_scan_marked_interestingzETestDynamicReplanning.test_should_replan_when_scan_marked_interesting   s    !##==D1
 w$w$ww$(3(G3333(G333(333333G333G3333333    c                   t               }|j                  ddi      \  }}d}||u }|st        j                  d|fd||f      dt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}}d
j                  |      }d}	|	|v }|st        j                  d|fd|	|f      t        j                  |	      dt	        j
                         v st        j                  |      rt        j                  |      nddz  }dd	|iz  }t        t        j                  |            d x}	}d}	|	|v }|st        j                  d|fd|	|f      t        j                  |	      dt	        j
                         v st        j                  |      rt        j                  |      nddz  }dd	|iz  }t        t        j                  |            d x}	}d}	|	|v }|st        j                  d|fd|	|f      t        j                  |	      dt	        j
                         v st        j                  |      rt        j                  |      nddz  }dd	|iz  }t        t        j                  |            d x}	}d}	|	|v }|st        j                  d|fd|	|f      t        j                  |	      dt	        j
                         v st        j                  |      rt        j                  |      nddz  }dd	|iz  }t        t        j                  |            d x}	}y )Nr
   z3Chemical vapor observed near an unconscious worker.Tr   r   r   r   r   r    zanalysis_keywords:r   r   joinedr   chemicalvaporunconscious)r   r   r   r   r   r    r!   r"   r#   r$   join)
r%   r&   r   r   r'   r(   r)   r*   r1   r+   s
             r,   -test_should_replan_when_analysis_has_keywordszCTestDynamicReplanning.test_should_replan_when_analysis_has_keywords   s   !##==NO
 w$w$ww$'"#-#v----#v---#------v---v-------#zV####zV###z######V###V####### w&    w&   w      &   &       &}&&&&}&&&}&&&&&&&&&&&&&&&&r.   c           	     h	  K   d }t        d|i      }dddddd	dd
didgd}g fd}|j                  ||       d {   }|j                  }d}||u }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            d x}x}}t              }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                        rt        j                        ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}d   d    }d!}||k(  }|slt        j                  d|fd"||f      t        j                  |      t        j                  |      d#z  }d$d%|iz  }t        t        j                  |            d x}x}}d   d&   }d}||k(  }|slt        j                  d|fd"||f      t        j                  |      t        j                  |      d#z  }d$d%|iz  }t        t        j                  |            d x}x}}d   d'   }d}||k(  }|slt        j                  d|fd"||f      t        j                  |      t        j                  |      d#z  }d$d%|iz  }t        t        j                  |            d x}x}}d(}d   d)   }||v }|slt        j                  d*|fd+||f      t        j                  |      t        j                  |      d#z  }d$d%|iz  }t        t        j                  |            d x}x}}d   d,   d-   }d}||u }|slt        j                  d|fd.||f      t        j                  |      t        j                  |      d#z  }d$d%|iz  }t        t        j                  |            d x}x}}y 7 mw)/Nc                   K   dddS w)Nz5Possible gas leak with collapsed worker on the floor.Tr	    )_step_context_resultss      r,   suspicious_scanzdTestDynamicReplanning.test_execute_plan_emits_replan_callback_for_scan_area.<locals>.suspicious_scan'   s     S# s   	SCAN_AREA)handlerszInspect officeDAGscan_plan_001scan1	EXECUTIONrobottargetoffice_tables)step_idtype
agent_roleactionparams)intentworkflow_topologyplan_idstepsc                (    j                  |        y )N)append)signalsignalss    r,   on_replan_requestedzhTestDynamicReplanning.test_execute_plan_emits_replan_callback_for_scan_area.<locals>.on_replan_requested@   s    NN6"r.   )rT   Tr   )z/%(py2)s
{%(py2)s = %(py0)s.success
} is %(py5)sreport)r   py2r   zassert %(py7)spy7   )==)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenrS   )r   r   r   py6zassert %(py8)spy8r   rH   dynamic_replan_requested)z%(py1)s == %(py4)s)r   py4zassert %(py6)sr[   rG   rJ   r   r   r   )z%(py1)s in %(py4)sscan_outputr   )z%(py1)s is %(py4)s)r   execute_plansuccessr   r   r   r    r!   r"   r#   r$   rZ   )r%   r=   r&   planrT   rU   r(   @py_assert4@py_assert3r*   @py_format8r'   @py_assert5@py_format7@py_format9r+   @py_format5rS   s                    @r,   5test_execute_plan_emits_replan_callback_for_scan_areazKTestDynamicReplanning.test_execute_plan_emits_replan_callback_for_scan_area%   s/    	 "K+IJ '!&&  ''"))'9	
 	#  ,,TGZ,[[~~%%~%%%%~%%%%%%v%%%v%%%~%%%%%%%%%%7| q |q    |q      s   s      7   7   |   q       qz&!?%??!%?????!%????!???%????????qz)$//$////$///$//////////qz(#2{2#{2222#{222#222{2222222(AGAJy,AA(,AAAAA(,AAAA(AAA,AAAAAAAAqz-(7?4?74????74???7???4??????? \s   ?R2R/Q-R2N)returnNone)
__name__
__module____qualname____doc__r-   r6   pytestmarkasynciorj   r9   r.   r,   r   r   
   s/    D4' [[%@ %@r.   r   )rp   
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   rq   executor.action_executorr   r   r9   r.   r,   <module>rz      s#    ; "    3A@ A@r.   