summaryrefslogtreecommitdiff
path: root/gerbonara/gerber/tests/test_rs274x.py
diff options
context:
space:
mode:
Diffstat (limited to 'gerbonara/gerber/tests/test_rs274x.py')
-rw-r--r--gerbonara/gerber/tests/test_rs274x.py32
1 files changed, 17 insertions, 15 deletions
diff --git a/gerbonara/gerber/tests/test_rs274x.py b/gerbonara/gerber/tests/test_rs274x.py
index d91609f..aec2174 100644
--- a/gerbonara/gerber/tests/test_rs274x.py
+++ b/gerbonara/gerber/tests/test_rs274x.py
@@ -23,11 +23,6 @@ from .image_support import gerber_difference
deg_to_rad = lambda a: a/180 * math.pi
fail_dir = Path('gerbonara_test_failures')
-@pytest.fixture(scope='session', autouse=True)
-def clear_failure_dir(request):
- for f in chain(fail_dir.glob('*.gbr'), fail_dir.glob('*.png')):
- f.unlink()
-
reference_path = lambda reference: Path(__file__).parent / 'resources' / reference
@pytest.fixture
@@ -147,9 +142,9 @@ def test_rotation(temp_files, reference, angle):
f.save(tmp_gbr)
cx, cy = 0, to_gerbv_svg_units(10, unit='inch')
- mean, max = gerber_difference(ref, tmp_gbr, diff_out=tmp_png, svg_transform=f'rotate({angle} {cx} {cy})')
+ mean, _max, hist = gerber_difference(ref, tmp_gbr, diff_out=tmp_png, svg_transform=f'rotate({angle} {cx} {cy})')
assert mean < 1e-3 # relax mean criterion compared to above.
- assert max < 0.9
+ assert hist[9] == 0
@pytest.mark.filterwarnings('ignore:Deprecated.*statement found.*:DeprecationWarning')
@pytest.mark.filterwarnings('ignore::SyntaxWarning')
@@ -157,6 +152,9 @@ def test_rotation(temp_files, reference, angle):
@pytest.mark.parametrize('angle', TEST_ANGLES)
@pytest.mark.parametrize('center', [(0, 0), (-10, -10), (10, 10), (10, 0), (0, -10), (-10, 10), (10, 20)])
def test_rotation_center(temp_files, reference, angle, center):
+ if 'flash_rectangle' in reference and angle in (30, 1024):
+ # gerbv's rendering of this is broken, the hole is missing.
+ return
tmp_gbr, tmp_png = temp_files
ref = reference_path(reference)
@@ -167,11 +165,11 @@ def test_rotation_center(temp_files, reference, angle, center):
# calculate circle center in SVG coordinates
size = (10, 10) # inches
cx, cy = to_gerbv_svg_units(center[0]), to_gerbv_svg_units(10, 'inch')-to_gerbv_svg_units(center[1], 'mm')
- mean, max = gerber_difference(ref, tmp_gbr, diff_out=tmp_png,
+ mean, _max = gerber_difference(ref, tmp_gbr, diff_out=tmp_png,
svg_transform=f'rotate({angle} {cx} {cy})',
size=size)
assert mean < 1e-3
- assert max < 0.9
+ assert hist[9] == 0
@pytest.mark.filterwarnings('ignore:Deprecated.*statement found.*:DeprecationWarning')
@pytest.mark.filterwarnings('ignore::SyntaxWarning')
@@ -187,9 +185,9 @@ def test_offset(temp_files, reference, offset):
# flip y offset since svg's y axis is flipped compared to that of gerber
dx, dy = to_gerbv_svg_units(offset[0]), -to_gerbv_svg_units(offset[1])
- mean, max = gerber_difference(ref, tmp_gbr, diff_out=tmp_png, svg_transform=f'translate({dx} {dy})')
+ mean, _max, hist = gerber_difference(ref, tmp_gbr, diff_out=tmp_png, svg_transform=f'translate({dx} {dy})')
assert mean < 1e-4
- assert max < 0.9
+ assert hist[9] == 0
@pytest.mark.filterwarnings('ignore:Deprecated.*statement found.*:DeprecationWarning')
@pytest.mark.filterwarnings('ignore::SyntaxWarning')
@@ -198,6 +196,9 @@ def test_offset(temp_files, reference, offset):
@pytest.mark.parametrize('center', [(0, 0), (10, 0), (0, -10), (10, 20)])
@pytest.mark.parametrize('offset', [(0, 0), (100, 0), (0, 100), (100, 100), (100, 10)])
def test_combined(temp_files, reference, angle, center, offset):
+ if 'flash_rectangle' in reference and angle in (30, 1024):
+ # gerbv's rendering of this is broken, the hole is missing.
+ return
tmp_gbr, tmp_png = temp_files
ref = reference_path(reference)
@@ -209,9 +210,10 @@ def test_combined(temp_files, reference, angle, center, offset):
size = (10, 10) # inches
cx, cy = to_gerbv_svg_units(center[0]), to_gerbv_svg_units(10, 'inch')-to_gerbv_svg_units(center[1], 'mm')
dx, dy = to_gerbv_svg_units(offset[0]), -to_gerbv_svg_units(offset[1])
- mean, max = gerber_difference(ref, tmp_gbr, diff_out=tmp_png,
- svg_transform=f'rotate({anlge} {cx} {cy}) translate({dx} {dy})',
+ mean, _max, hist = gerber_difference(ref, tmp_gbr, diff_out=tmp_png,
+ svg_transform=f'rotate({angle} {cx} {cy}) translate({dx} {dy})',
size=size)
- assert mean < 1e-4
- assert max < 0.9
+ assert mean < 1e-3
+ assert hist[9] < 100
+ assert hist[3:].sum() < 1e-3*hist.size