def test_apply_transformation_to_image(self):

        counter = 0
        self.image_transformer.modified_image = self.image_transformer.create_new_image(
        )

        for original_face_idx, original_face in self.image_transformer.original_face_to_vts.items(
        ):
            original_image_points, modified_image_points = self.image_transformer.get_all_image_points(
                original_face_idx)
            matrix_computer = MatrixComputer(original_image_points,
                                             modified_image_points)
            sections = matrix_computer.get_transforming_triangles()
            matrices = matrix_computer.get_transformations(sections)

            for triangles, matrix in zip(sections, matrices):
                source_triangle, destination_triangle = triangles
                self.image_transformer.apply_transformation_to_image(
                    source_triangle, destination_triangle, matrix)
                filename = self.get_apply_transformation_filename(counter)
                self.image_transformer.modified_image.save(filename)
                counter += 1

        for step_number in self.transformations:
            expected = self.get_expected_applied_filename(step_number)
            actual = self.get_apply_transformation_filename(step_number)
            self.assertTrue(
                self.image_equal(expected, actual),
                "transformation_" + str(step_number) + ".pngs are not equal ")

        self.teardown_apply_transformation_to_image()
    def setUp(self):
        #the points are picked because they're a simple translation
        source_pts = [(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)]
        destination_pts = [(1.0, 0.0), (2.0, 0.0), (2.0, 1.0), (1.0, 1.0)]

        self.computer = MatrixComputer(source_pts, destination_pts)