added additional corners coordinates for coordinate transformation tests

This commit is contained in:
Matthias Bisping 2022-04-04 10:18:23 +02:00
parent 2ee36dcb54
commit b4b0058475

View File

@ -23,7 +23,21 @@ def coordinate_test_fpdf():
return pdf
@pytest.fixture(params=["top_left", "bottom_left", "bottom_right", "top_right"])
def corner(request):
return request.param
def get_fpdf_coordinates(corner):
"""Origin top left, y1 <= y2; all coords on page are positive
(0,0)--+--(2,0)--+
|////| |////|
+--(1,1) +--(3,1)
(0,2)--+ (2,2)--+
|////| |////|
+--(1,3) +--(3,3)
"""
metadata = base_position_metadata()
if corner == "top_left":
@ -32,22 +46,32 @@ def get_fpdf_coordinates(corner):
elif corner == "bottom_left":
metadata.update({Info.X1: 0, Info.Y1: 200, Info.X2: 100, Info.Y2: 300})
elif corner == "bottom_right":
metadata.update({Info.X1: 200, Info.Y1: 200, Info.X2: 300, Info.Y2: 300})
elif corner == "top_right":
metadata.update({Info.X1: 200, Info.Y1: 0, Info.X2: 300, Info.Y2: 100})
else:
raise ValueError(f"No coordinates specified for corner {corner}.")
return metadata
def get_fitz_coordinates(corner):
metadata = base_position_metadata()
if corner == "top_left":
metadata.update({Info.X1: 0, Info.Y1: 0, Info.X2: 100, Info.Y2: 100})
elif corner == "bottom_left":
metadata.update({Info.X1: 0, Info.Y1: 200, Info.X2: 100, Info.Y2: 300})
return metadata
return get_fpdf_coordinates(corner)
def get_pdfnet_coordinates(corner):
"""Origin bottom left, y1 <= y2; all coords on page are positive
+---(1,3) +--(3,3)
|////| |////|
(0,2)--+ (2,2)--+
+--(1,1) +--(3,1)
|////| |////|
(0,0)--+ (2,0)--+
"""
metadata = base_position_metadata()
if corner == "top_left":
@ -56,6 +80,15 @@ def get_pdfnet_coordinates(corner):
elif corner == "bottom_left":
metadata.update({Info.X1: 0, Info.Y1: 0, Info.X2: 100, Info.Y2: 100})
elif corner == "bottom_right":
metadata.update({Info.X1: 200, Info.Y1: 0, Info.X2: 300, Info.Y2: 100})
elif corner == "top_right":
metadata.update({Info.X1: 200, Info.Y1: 200, Info.X2: 300, Info.Y2: 300})
else:
raise ValueError(f"No coordinates specified for corner {corner}.")
return metadata
@ -112,7 +145,6 @@ def coordinate_test_page_image(coordinate_test_pdf):
return pdf2image.convert_from_bytes(coordinate_test_pdf)[0]
@pytest.mark.parametrize("corner", ["top_left", "bottom_left"])
@pytest.mark.parametrize("coordinate_system", ["fpdf"])
def test_fpdf_coordinate_transformer(position_metadata_in_given_system, position_metadata_in_reference_system):
"""We use FPDF's coordinate system as the reference system (arbitrarily). Hence, FPDFCoordinateTransformer
@ -128,7 +160,6 @@ 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):
"""How I inferred the transformation:
@ -147,7 +178,6 @@ def test_fitz_coordinate_transformer(position_metadata_in_given_system, position
)
@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):
"""How I inferred the transformation: