def testDeDijsktra(): carte = Carte() carte.ajouterSommet('a') carte.ajouterSommet('b') carte.ajouterSommet('c') carte.ajouterSommet('d') carte.ajouterSommet('e') carte.ajouterSommet('f') carte.ajouterArete('a', 'b', 7) carte.ajouterArete('a', 'c', 9) carte.ajouterArete('a', 'f', 14) carte.ajouterArete('b', 'c', 10) carte.ajouterArete('b', 'd', 15) carte.ajouterArete('c', 'd', 11) carte.ajouterArete('c', 'f', 2) carte.ajouterArete('d', 'e', 6) carte.ajouterArete('e', 'f', 9) cheminement = Cheminement(carte) print 'Carte data:' for v in carte: for w in v.recupererConnection(): vid = v.recupererId() wid = w.recupererId() print '( %s , %s, %3d)' % ( vid, wid, v.recupererCout(w)) cheminement.dijkstra(carte.recupererSommet('a')) target = carte.recupererSommet('e') path = [target.recupererId()] cheminement.plusCourtChemin(target, path) print 'The shortest path : %s' % (path[::-1])
class TestUnitaire_Carte(unittest.TestCase): carte = Carte() point1 = (0, 0) point2 = (1, 1) def setUp(self): self.carte = Carte() self.positionXAleatoire = 100 self.positionYAleatoire = 100 self.point1 = (0, 0) self.point2 = (1, 1) def tearDown(self): self.carte = None def test_ajouterDesSommetsAugmenteLaListe(self): self.carte.ajouterSommet('a', self.positionXAleatoire, self.positionYAleatoire) self.carte.ajouterSommet('b', self.positionXAleatoire, self.positionYAleatoire) self.carte.ajouterSommet('c', self.positionXAleatoire, self.positionYAleatoire) self.assertEqual(len(self.carte.recupererSommets()), 3) def test_recupererSommetRetourneLeBonNoeud(self): self.carte.ajouterSommet('a', self.positionXAleatoire, self.positionYAleatoire) self.carte.ajouterSommet('b', self.positionXAleatoire, self.positionYAleatoire) self.carte.ajouterSommet('c', self.positionXAleatoire, self.positionYAleatoire) self.assertEqual(self.carte.recupererSommet(1).id, 'b') def test_ajouterAreteMetLesNoeudsVoisin(self): self.carte.ajouterSommet('a', self.positionXAleatoire, self.positionYAleatoire) self.carte.ajouterSommet('b', self.positionXAleatoire, self.positionYAleatoire) self.carte.ajouterSommet('c', self.positionXAleatoire, self.positionYAleatoire) self.carte.ajouterArete(self.carte.recupererSommet(0), self.carte.recupererSommet(1), 1) self.carte.ajouterArete(self.carte.recupererSommet(1), self.carte.recupererSommet(2), 1) self.assertEqual(len(self.carte.recupererSommet(0).adjacent), 1) self.assertEqual(len(self.carte.recupererSommet(1).adjacent), 2) def test_distanceEntreDeuxSommetsRetourneLaBonneDistance(self): valeurRetournee = self.carte.distanceEntrePoint(self.point1, self.point2) self.assertEqual(valeurRetournee, np.sqrt(2))
class TestUnitaire_Cheminement(unittest.TestCase) : carte = Carte() cheminement = Cheminement(carte) sommetA = Sommet('a', 10, 20, False) sommetB = Sommet('b', 100, 100, False) sommetC = Sommet('c', 95, 125, False) sommetD = Sommet('d', 0, 140, False) sommetE = Sommet('e', 80, -60, False) sommetF = Sommet('f', -150, -20, False) def setUp(self): self.carte = Carte() self.sommetA = Sommet(0, 10, 20, False) self.sommetB = Sommet(1, 100, 100, False) self.sommetC = Sommet(2, 95, 125, False) self.sommetD = Sommet(3, 0, 140, False) self.sommetE = Sommet(4, 80, -60, False) self.sommetF = Sommet(5, -150, -20, False) self.carte.ajouterSommet(self.sommetA.id, self.sommetA.x, self.sommetA.y) self.carte.ajouterSommet(self.sommetB.id, self.sommetB.x, self.sommetB.y) self.carte.ajouterSommet(self.sommetC.id, self.sommetC.x, self.sommetC.y) self.carte.ajouterSommet(self.sommetD.id, self.sommetD.x, self.sommetD.y) self.carte.ajouterSommet(self.sommetE.id, self.sommetE.x, self.sommetE.y) self.carte.ajouterSommet(self.sommetF.id, self.sommetF.x, self.sommetF.y) self.carte.ajouterArete(self.carte.recupererSommet(0), self.carte.recupererSommet(1), 7) self.carte.ajouterArete(self.carte.recupererSommet(0), self.carte.recupererSommet(2), 9) self.carte.ajouterArete(self.carte.recupererSommet(0), self.carte.recupererSommet(5), 14) self.carte.ajouterArete(self.carte.recupererSommet(1), self.carte.recupererSommet(2), 10) self.carte.ajouterArete(self.carte.recupererSommet(1), self.carte.recupererSommet(3), 15) self.carte.ajouterArete(self.carte.recupererSommet(2), self.carte.recupererSommet(3), 11) self.carte.ajouterArete(self.carte.recupererSommet(2), self.carte.recupererSommet(5), 2) self.carte.ajouterArete(self.carte.recupererSommet(3), self.carte.recupererSommet(4), 9) self.carte.ajouterArete(self.carte.recupererSommet(4), self.carte.recupererSommet(5), 9) self.cheminement = Cheminement(self.carte) def tearDown(self): pass def test_dijkstraRetourneLePrecedentLePlusProche(self): self.cheminement.dijkstra(self.carte.recupererSommet(0)) '''print self.sommetB.recupererConnection() print self.sommetB.adjacent print self.sommetB.precedent print self.sommetB.distance print self.carte.recupererSommet(1)''' self.assertEqual(self.carte.recupererSommet(0).precedent, None) self.assertEqual(self.carte.recupererSommet(1).precedent.id, self.sommetA.id) self.assertEqual(self.carte.recupererSommet(2).precedent.id, self.sommetA.id) self.assertEqual(self.carte.recupererSommet(3).precedent.id, self.sommetC.id) self.assertEqual(self.carte.recupererSommet(4).precedent.id, self.sommetF.id) self.assertEqual(self.carte.recupererSommet(5).precedent.id, self.sommetC.id) def test_trouverTrajectoireDonneLePlusCourtChemin(self): debut = (self.sommetA.x, self.sommetA.y) cible = (self.sommetE.x, self.sommetE.y) trajectoire = self.cheminement.trouverTrajectoire(debut, cible) self.assertEqual(trajectoire[0].id, 0) self.assertEqual(trajectoire[1].id, 2) self.assertEqual(trajectoire[2].id, 5)