class TestUnitaire_Carte(unittest.TestCase):
    carte = Carte()

    def setUp(self):
        self.carte = Carte()
        self.positionXAleatoire = 100
        self.positionYAleatoire = 100

    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_retourneLeBonNoeud(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_ajouterUnArreteMetLesNoeudVoisin(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_SoitDeuxSommetsLaDistanceEntreLesDeuxSommetsEstExact(self):
        point1 = (0, 0)
        point2 = (1, 1)

        valeurRetournee = self.carte.distanceEntrePoint(point1,
                                                        point2)

        self.assertEqual(valeurRetournee, np.sqrt(2))