diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:24:48 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:24:48 +0000 |
commit | cca66b9ec4e494c1d919bff0f71a820d8afab1fa (patch) | |
tree | 146f39ded1c938019e1ed42d30923c2ac9e86789 /share/extensions/tests/test_inkex_units.py | |
parent | Initial commit. (diff) | |
download | inkscape-upstream/1.2.2.tar.xz inkscape-upstream/1.2.2.zip |
Adding upstream version 1.2.2.upstream/1.2.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | share/extensions/tests/test_inkex_units.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/share/extensions/tests/test_inkex_units.py b/share/extensions/tests/test_inkex_units.py new file mode 100644 index 0000000..7cabf5d --- /dev/null +++ b/share/extensions/tests/test_inkex_units.py @@ -0,0 +1,71 @@ +# coding=utf-8 +"""Test units inkex module functionality""" +from inkex.units import ( + are_near_relative, + convert_unit, + discover_unit, + parse_unit, + render_unit, +) +from inkex.tester import TestCase + + +class UnitsTest(TestCase): + """Tests for Inkscape Units handling""" + + def test_parse_unit(self): + """Test parsing a unit in a document""" + self.assertEqual(parse_unit("50px"), (50.0, "px")) + self.assertEqual(parse_unit("50"), (50.0, "px")) + self.assertEqual(parse_unit("50quaks"), None) + self.assertEqual(parse_unit("50quaks", default_value=10), (10.0, "px")) + self.assertEqual(parse_unit("50%"), (50.0, "%")) + + def test_near(self): + """Test the closeness of numbers""" + self.assertFalse(are_near_relative(10.0, 5.0)) + self.assertTrue(are_near_relative(10.0, 9.99)) + + def test_discover_unit(self): + """Based on the size of a document and it's viewBox""" + self.assertEqual(discover_unit("50px", 50), "px") + self.assertEqual(discover_unit("100mm", 3.94), "in") + self.assertEqual(discover_unit("3779", 1.0), "m") + self.assertEqual(discover_unit("50quaks", 150), "px") + + def test_convert_unit(self): + """Convert units from one to another""" + self.assertEqual(convert_unit("10mm", "px"), 37.79527559055118) + self.assertEqual(convert_unit("1in", "cm"), 2.54) + self.assertEqual(convert_unit("37.79527559055118px", "mm"), 10.0) + self.assertEqual(convert_unit("1in", ""), 96.0) + self.assertEqual(convert_unit("96", "in"), 1.0) + self.assertEqual(convert_unit("10%", "mm"), 0.0) + self.assertEqual(convert_unit("1in", "grad"), 0.0) + self.assertEqual(convert_unit("10quaks", "mm"), 0.0) + self.assertEqual(convert_unit("10mm", "quaks"), 0.0) + + def test_render_unit(self): + """Convert unit and value pair into rendered unit string""" + self.assertEqual(render_unit(10.0, "mm"), "10mm") + self.assertEqual(render_unit(10.01, "mm"), "10.01mm") + self.assertEqual(render_unit(10.000001, "mm"), "10mm") + self.assertEqual(render_unit("10cm", "mm"), "10cm") + + def test_number_parsing(self): + """Width number parsing test""" + for value in ( + "100mm", + "100 mm", + " 100mm", + "100mm ", + "+100mm", + "100.0mm", + "100.0e0mm", + "10.0e1mm", + "10.0e+1mm", + "1000.0e-1mm", + ".1e+3mm", + "+.1e+3mm", + ): + self.assertEqual(parse_unit(value), (100, "mm")) |