Пример #1
0
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,
    ]
Пример #2
0
def build_action(name, **kwargs):
    action_template = planner.Action(
        name=name,
        requirements=set(),
        effects=set(),
    )

    return action_template.copy(**kwargs)
Пример #3
0
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]
Пример #4
0
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]
Пример #5
0
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(),
    )