class TestUnitaire_Sommet(unittest.TestCase):
    localisationTresor = LocalisationTresor()
    orientationCamera = 90
    orientationRobot = 90
    centreX = 0
    angleTresor = 180
    x1 = 10
    y1 = 10
    pointDeCroisement = (20, 20)
    positionXRobot = 0
    positionYRobot = 0
    origine1 = (20, 0)
    fin1 = (20, 40)
    origine2 = (10, 0)
    fin2 = (10, 40)
    origine3 = (10, 20)
    fin3 = (30, 20)

    def setUp(self):
        self.localisationTresor = LocalisationTresor()
        self.orientationCamera = 90
        self.orientationRobot = 90
        self.centreX = 0
        self.angleTresor = 180
        self.x1 = 10
        self.y1 = 10
        self.pointDeCroisement = (20, 20)
        self.positionXRobot = 0
        self.positionYRobot = 0
        self.origine1 = (20, 0)
        self.fin1 = (20, 40)
        self.origine2 = (10, 0)
        self.fin2 = (10, 40)
        self.origine3 = (10, 20)
        self.fin3 = (30, 20)

    def tearDown(self):
        pass

    def test_recupererAngleTresorRetourneLeBonAngle(self):
        angle = self.localisationTresor.recupererAngleTresor(
            self.orientationCamera, self.orientationRobot, self.centreX
        )

        self.assertEqual(angle, 112.5)

    def test_recupererPositionXTresorAvecAngleRetourneLaBonnePosition(self):
        positionX = self.localisationTresor.recupererPositionXTresorAvecAngle(self.angleTresor, self.x1)

        self.assertEqual(positionX, -2490.0)

    def test_recupererPositionYTresorAvecAngleRetourneLaBonnePosition(self):
        positionY = self.localisationTresor.recupererPositionYTresorAvecAngle(self.angleTresor, self.y1)

        self.assertEqual(int(round(positionY)), 10.0)

    def test_calculerDistanceEntreRobotEtTresorRetourneLaBonneDistance(self):
        distance = self.localisationTresor.calculerDistanceEntreRobotEtTresor(
            self.pointDeCroisement, self.positionXRobot, self.positionYRobot
        )
        self.assertEqual(distance, sqrt(800.0))

    def test_trouverCroisementEntreDeuxSegmentsParallelesRetourneFalseEtLePointOrigine(self):
        sontCroisees = self.localisationTresor.trouverCroisement(self.origine1, self.fin1, self.origine2, self.fin2)

        self.assertEqual(sontCroisees, (False, (0, 0)))

    def test_trouverCroisementEntreDeuxSegmentsNonParallelesRetourneTrueEtLePointDeCroisement(self):
        sontCroisees = self.localisationTresor.trouverCroisement(self.origine1, self.fin1, self.origine3, self.fin3)

        self.assertEqual(sontCroisees, (True, (20, 20)))