summaryrefslogtreecommitdiffstats
path: root/share/extensions/tests/test_inkex_units.py
diff options
context:
space:
mode:
Diffstat (limited to 'share/extensions/tests/test_inkex_units.py')
-rw-r--r--share/extensions/tests/test_inkex_units.py64
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'))