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() | |