TravelNER / app /travel_resolver /tests /graph_algo_test.py
DuquesnoyPaul
feat(pathfinder) : implementation of a new dijkstra algo version with start end end nodes
9649602
import unittest
from travel_resolver.libs.pathfinder.graph import Graph
from typing import Dict
class TestGraphAlgo(unittest.TestCase):
def setUp(self):
# Initialisation d'un graphe d'exemple et des heuristiques pour les tests
self.graph_data: Dict[str, Dict[str, float]] = {
'A': {'B': 1, 'C': 4},
'B': {'A': 1, 'C': 2, 'D': 5},
'C': {'A': 4, 'B': 2, 'D': 1},
'D': {'B': 5, 'C': 1}
}
self.heuristic_data: Dict[str, float] = {
'A': 7,
'B': 5,
'C': 2,
'D': 0
}
self.graph = Graph(self.graph_data)
def test_RunDijkstra(self):
# Test du chemin le plus court avec Dijkstra depuis le noeud 'A'
expected_distances = {'A': 0, 'B': 1, 'C': 3, 'D': 4}
distances = self.graph.RunDijkstra('A')
self.assertEqual(distances, expected_distances)
def test_RunDijkstraBetweenTwoNodes(self):
# Test du chemin le plus court avec Dijkstra depuis le noeud 'A' vers le noeud 'D'
expected_path = ['A', 'B', 'C', 'D']
expected_cost = {'A': 0, 'B': 1, 'C': 3, 'D': 4}
path, costs = self.graph.RunDijkstraBetweenTwoNodes('A','D')
self.assertEqual(path, expected_path)
self.assertEqual(costs, expected_cost)
def test_RunAStar(self):
# Test de l'algorithme A* depuis le noeud 'A' vers 'D'
expected_path = ['A', 'B', 'C', 'D']
expected_costs = {'A': 0, 'B': 1, 'C': 3, 'D': 4}
path, costs = self.graph.RunAStar('A', 'D', self.heuristic_data)
self.assertEqual(path, expected_path)
self.assertEqual(costs, expected_costs)
if __name__ == '__main__':
unittest.main()