diff options
Diffstat (limited to 'share/extensions/tests/test_inkex_units.py')
-rw-r--r-- | share/extensions/tests/test_inkex_units.py | 64 |
1 files changed, 64 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..aaba871 --- /dev/null +++ b/share/extensions/tests/test_inkex_units.py @@ -0,0 +1,64 @@ +# 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')) |