From 65a4a8e34e356ca93cf42faae79610888c64f64c Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Sun, 3 Apr 2022 04:25:10 +0200 Subject: [PATCH] refactoring --- .../coordinate/coordinate_transformer.py | 4 +- .../unit_tests/coordinate_transformer_test.py | 55 ++++++------------- 2 files changed, 18 insertions(+), 41 deletions(-) diff --git a/image_prediction/transformer/transformers/coordinate/coordinate_transformer.py b/image_prediction/transformer/transformers/coordinate/coordinate_transformer.py index b725a51..484f2a9 100644 --- a/image_prediction/transformer/transformers/coordinate/coordinate_transformer.py +++ b/image_prediction/transformer/transformers/coordinate/coordinate_transformer.py @@ -17,13 +17,13 @@ class CoordinateTransformer(Transformer): try: return self._forward(metadata) except TypeError: - return map(self._forward, metadata) + return list(map(self._forward, metadata)) def backward(self, metadata): try: return self._backward(metadata) except TypeError: - return map(self._backward, metadata) + return list(map(self._backward, metadata)) def transform(self, metadata): return self.forward(metadata) diff --git a/test/unit_tests/coordinate_transformer_test.py b/test/unit_tests/coordinate_transformer_test.py index 70e8197..0e4201c 100644 --- a/test/unit_tests/coordinate_transformer_test.py +++ b/test/unit_tests/coordinate_transformer_test.py @@ -1,11 +1,10 @@ import numpy as np import pytest from fpdf import fpdf -from funcy import project, second, compose +from funcy import compose from pdf2image import pdf2image from image_prediction.image_extractor.extractor import ImageMetadataPair -from image_prediction.image_extractor.extractors.parsable import ParsablePDFImageExtractor from image_prediction.info import Info from image_prediction.transformer.transformers.coordinate.fitz import FitzCoordinateTransformer from image_prediction.transformer.transformers.coordinate.fpdf import FPDFCoordinateTransformer @@ -74,24 +73,32 @@ def base_position_metadata(width=100, height=100): } +@pytest.fixture(params=["list", "dict"]) +def coordinate_type(request): + return request.param + + @pytest.fixture -def position_metadata_in_given_system(corner, coordinate_system): +def position_metadata_in_given_system(corner, coordinate_system, coordinate_type): if coordinate_system == "fpdf": - return get_fpdf_coordinates(corner) + coordinates = get_fpdf_coordinates(corner) elif coordinate_system == "fitz": - return get_fitz_coordinates(corner) + coordinates = get_fitz_coordinates(corner) elif coordinate_system == "pdfnet": - return get_pdfnet_coordinates(corner) + coordinates = get_pdfnet_coordinates(corner) else: raise ValueError(f"Unknown coordinate system: {coordinate_system}") + return [coordinates, coordinates] if coordinate_type == "list" else coordinates + @pytest.fixture -def position_metadata_in_reference_system(corner): - return get_fpdf_coordinates(corner) +def position_metadata_in_reference_system(corner, coordinate_type): + coordinates = get_fpdf_coordinates(corner) + return [coordinates, coordinates] if coordinate_type == "list" else coordinates @pytest.fixture @@ -120,18 +127,7 @@ def test_fpdf_coordinate_transformer(position_metadata_in_given_system, position @pytest.mark.parametrize("corner", ["top_left", "bottom_left"]) @pytest.mark.parametrize("coordinate_system", ["fitz"]) -def test_fitz_coordinate_transformer( - position_metadata_in_given_system, position_metadata_in_reference_system, coordinate_test_pdf, - coordinate_test_fpdf -): - # coordinate_test_fpdf.output("/tmp/x.pdf") - # coordinate_test_page_image.show() - - metadata_extracted = next(map(second, ParsablePDFImageExtractor()(coordinate_test_pdf))) - position_extracted = project(metadata_extracted, list(position_metadata_in_given_system.keys())) - - assert position_extracted == position_metadata_in_given_system - +def test_fitz_coordinate_transformer(position_metadata_in_given_system, position_metadata_in_reference_system): transformer = FitzCoordinateTransformer() assert transformer.forward(position_metadata_in_given_system) == position_metadata_in_reference_system assert transformer.backward(position_metadata_in_reference_system) == position_metadata_in_given_system @@ -142,25 +138,6 @@ def test_fitz_coordinate_transformer( )(position_metadata_in_reference_system) == position_metadata_in_reference_system -# @pytest.mark.parametrize("corner", ["top_left", "bottom_left"]) -# @pytest.mark.parametrize("coordinate_system", ["fitz"]) -# def test_pdfnet_coordinate_transformer( -# position_metadata_in_given_system, position_metadata_in_reference_system, coordinate_test_fpdf, coordinate_test_page_image -# ): -# # coordinate_test_page_image.show() -# # coordinate_test_fpdf.output("/tmp/xyz.pdf") -# -# position_metadata_transformed = PDFNetCoordinateTransformer().forward(position_metadata_in_reference_system) -# print(json.dumps(EnumFormatter()(position_metadata_transformed), indent=2)) -# -# with tempfile.NamedTemporaryFile(suffix=".pdf") as f: -# coordinate_test_fpdf.output(f.name) -# draw_metadata_box(f.name, EnumFormatter()(position_metadata_transformed), -# # os.path.join("/tmp", os.path.basename(f.name.replace(".pdf", "_annotated.pdf"))) -# "/tmp/bla.pdf" -# ) -# input() - @pytest.mark.parametrize("corner", ["top_left", "bottom_left"]) @pytest.mark.parametrize("coordinate_system", ["pdfnet"]) def test_pdfnet_coordinate_transformer(position_metadata_in_given_system, position_metadata_in_reference_system):