def test_plan_simple(): add_x = planner.Action( name='add_x', requirements=set(), effects={'x'}, ) add_y = planner.Action( name='add_y', requirements={'x'}, effects={'y'}, ) replace_x_z = planner.Action( name='replace_x_z', requirements={'x'}, effects={'z', 'x__unset'}, ) _planner = planner.Planner() assert _planner.plan( state=set(), goal={'x', 'y', 'z'}, actions={ add_x, add_y, replace_x_z, } ) == [ add_x, replace_x_z, add_x, add_y, ]
def build_action(name, **kwargs): action_template = planner.Action( name=name, requirements=set(), effects=set(), ) return action_template.copy(**kwargs)
def test_graph_layer_actions_noop(): builder = planner.GraphBuilder() next_layer = builder.calculate_next_layer( current_state=build_layer( propositions={'x'}, ), available_actions=[], ) noop_action = planner.Action( name='noop_x', requirements={'x'}, effects={'x'}, ) assert next_layer.actions == [noop_action]
def test_graph_layer_add_actions(): builder = planner.GraphBuilder() action_add_x = planner.Action( name='add_x', requirements=set(), effects=set(), ) next_layer = builder.calculate_next_layer( current_state=build_layer(), available_actions=[ action_add_x ] ) assert next_layer.actions == [action_add_x]
def test_graph_layer_action_requirements(): builder = planner.GraphBuilder() action = planner.Action( name='add_x', requirements=set('not_met_requirement'), effects=set(), ) next_layer = builder.calculate_next_layer( current_state=build_layer(), available_actions=[ action ] ) assert next_layer == planner.Layer( actions=[], propositions=set(), )