diff options
Diffstat (limited to 'gerbonara/tests/test_utils.py')
-rw-r--r-- | gerbonara/tests/test_utils.py | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/gerbonara/tests/test_utils.py b/gerbonara/tests/test_utils.py new file mode 100644 index 0000000..6f243c8 --- /dev/null +++ b/gerbonara/tests/test_utils.py @@ -0,0 +1,120 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- +# +# Author: Hamilton Kibbe <ham@hamiltonkib.be> +# Author: Jan Götte <code@jaseg.de> +# + +import pytest +from ..cam import FileSettings + + +def test_zero_suppression(): + # Default format + settings = FileSettings(number_format=(2,5), zeros='leading') + test_cases = [ + ("1", 0.00001), + ("10", 0.0001), + ("100", 0.001), + ("1000", 0.01), + ("10000", 0.1), + ("100000", 1.0), + ("1000000", 10.0), + ("-1", -0.00001), + ("-10", -0.0001), + ("-100", -0.001), + ("-1000", -0.01), + ("-10000", -0.1), + ("-100000", -1.0), + ("-1000000", -10.0), + ("0", 0.0), + ] + + assert settings.write_gerber_value(0.000000001) == "0" + + for string, value in test_cases: + assert value == settings.parse_gerber_value(string) + assert string == settings.write_gerber_value(value) + + settings = FileSettings(number_format=(2,5), zeros='trailing') + test_cases = [ + ("1", 10.0), + ("01", 1.0), + ("001", 0.1), + ("0001", 0.01), + ("00001", 0.001), + ("000001", 0.0001), + ("0000001", 0.00001), + ("-1", -10.0), + ("-01", -1.0), + ("-001", -0.1), + ("-0001", -0.01), + ("-00001", -0.001), + ("-000001", -0.0001), + ("-0000001", -0.00001), + ("0", 0.0), + ] + + assert settings.write_gerber_value(0.000000001) == "0" + + for string, value in test_cases: + assert value == settings.parse_gerber_value(string) + assert string == settings.write_gerber_value(value) + + +def test_format(): + test_cases = [ + ((2, 7), "1", 0.0000001), + ((2, 6), "1", 0.000001), + ((2, 5), "1", 0.00001), + ((2, 4), "1", 0.0001), + ((2, 3), "1", 0.001), + ((2, 2), "1", 0.01), + ((2, 1), "1", 0.1), + ((2, 7), "-1", -0.0000001), + ((2, 6), "-1", -0.000001), + ((2, 5), "-1", -0.00001), + ((2, 4), "-1", -0.0001), + ((2, 3), "-1", -0.001), + ((2, 2), "-1", -0.01), + ((2, 1), "-1", -0.1), + ((2, 6), "0", 0), + ] + for fmt, string, value in test_cases: + settings = FileSettings(number_format=fmt, zeros='leading') + assert value == settings.parse_gerber_value(string) + assert string == settings.write_gerber_value(value) + + test_cases = [ + ((6, 5), "1", 100000.0), + ((5, 5), "1", 10000.0), + ((4, 5), "1", 1000.0), + ((3, 5), "1", 100.0), + ((2, 5), "1", 10.0), + ((1, 5), "1", 1.0), + ((6, 5), "-1", -100000.0), + ((5, 5), "-1", -10000.0), + ((4, 5), "-1", -1000.0), + ((3, 5), "-1", -100.0), + ((2, 5), "-1", -10.0), + ((1, 5), "-1", -1.0), + ((2, 5), "0", 0), + ] + for fmt, string, value in test_cases: + settings = FileSettings(number_format=fmt, zeros='trailing') + assert value == settings.parse_gerber_value(string) + assert string == settings.write_gerber_value(value) + +def test_parse_format_validation(): + for fmt in (7,5), (5,8), (13,1): + with pytest.raises(ValueError): + settings = FileSettings(number_format=fmt) + settings.parse_gerber_value('00001111') + + +def test_write_format_validation(): + for fmt in (7,5), (5,8), (13,1): + with pytest.raises(ValueError): + settings = FileSettings(number_format=fmt) + settings.write_gerber_value(69.0) + |