Skip to content
Snippets Groups Projects
Commit 51a575be authored by Fabian Heinrich's avatar Fabian Heinrich
Browse files

Added tests for movement graph

parent 1ced66cc
No related branches found
No related tags found
1 merge request!89Resolve "simple pathfinding"
import json
from argparse import ArgumentParser from argparse import ArgumentParser
import networkx
import pytest
from cooperative_cuisine.environment import Environment
from cooperative_cuisine.state_representation import (
create_movement_graph,
restrict_movement_graph,
astar_heuristic,
)
from cooperative_cuisine.utils import ( from cooperative_cuisine.utils import (
url_and_port_arguments, url_and_port_arguments,
add_list_of_manager_ids_arguments, add_list_of_manager_ids_arguments,
...@@ -9,6 +19,7 @@ from cooperative_cuisine.utils import ( ...@@ -9,6 +19,7 @@ from cooperative_cuisine.utils import (
create_layout_with_counters, create_layout_with_counters,
setup_logging, setup_logging,
) )
from tests.test_start import env_config, layout_empty_config, item_info
def test_parser_gen(): def test_parser_gen():
...@@ -44,3 +55,71 @@ def test_layout_creation(): ...@@ -44,3 +55,71 @@ def test_layout_creation():
def test_setup_logging(): def test_setup_logging():
setup_logging() setup_logging()
def test_movement_graph(env_config, layout_empty_config, item_info):
env = Environment(env_config, layout_empty_config, item_info, as_files=False)
player_name = "0"
env.add_player(player_name)
state_string = env.get_json_state(player_id=player_name)
state = json.loads(state_string)
graph_diag = create_movement_graph(state, diagonal=True)
graph = create_movement_graph(
json.loads(env.get_json_state(player_id=player_name)), diagonal=False
)
path = networkx.astar_path(
graph,
source=(0, 0),
target=(3, 3),
heuristic=astar_heuristic,
)
assert len(path) != 0, "No path found, but should have."
graph_restricted = restrict_movement_graph(graph_diag, [(1, 0), (0, 1), (1, 1)])
with pytest.raises(networkx.exception.NetworkXNoPath) as e_info:
path = networkx.astar_path(
graph_restricted,
source=(0, 0),
target=(3, 3),
heuristic=astar_heuristic,
)
with pytest.raises(networkx.exception.NodeNotFound) as e_info:
path = networkx.astar_path(
graph_restricted,
source=(20, 20),
target=(40, 40),
heuristic=astar_heuristic,
)
assert len(path) != 0, "No path found, but should have."
path = networkx.astar_path(
restrict_movement_graph(
graph=graph_diag,
player_positions=[],
),
source=(0, 0),
target=(5, 5),
heuristic=astar_heuristic,
)
assert len(path) != 0
graph_diag_restricted = restrict_movement_graph(
graph_diag, [(1, 0), (0, 1), (1, 1)]
)
with pytest.raises(networkx.exception.NetworkXNoPath) as e_info:
_ = networkx.astar_path(
graph_diag_restricted,
source=(0, 0),
target=(3, 3),
heuristic=astar_heuristic,
)
with pytest.raises(networkx.exception.NodeNotFound) as e_info:
_ = networkx.astar_path(
graph_diag,
source=(20, 20),
target=(40, 40),
heuristic=astar_heuristic,
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment