Skip to content
Snippets Groups Projects

Resolve "simple pathfinding"

Merged Fabian Heinrich requested to merge 120-simple-pathfinding into dev
1 file
+ 79
0
Compare changes
  • Side-by-side
  • Inline
+ 79
0
 
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,
 
)
Loading