示例#1
0
 def test_eq_none_none_2(self):
     a = SVGLength('1')
     b = SVGLength('1.0000000001')  # -> 1
     self.assertNotEqual(a.value(), b.value())
     self.assertAlmostEqual(a.value(a.unit), b.value(a.unit))
     self.assertEqual(a.tostring(), b.tostring(a.unit))  # '1' == '1'
     self.assertTrue(a == b)  # 1 == 1
示例#2
0
    def test_negative_zero(self):
        a = SVGLength(-0.0)  # -0.0 -> 0
        self.assertEqual('-0.0', str(a.value()))
        self.assertEqual('0', a.tostring())

        a = SVGLength('-0.0001')
        self.assertEqual('-0.0001', str(a.value()))
        self.assertEqual('0', a.tostring())
示例#3
0
    def test_le(self):
        a = SVGLength('1in')  # 1in = 96
        b = SVGLength('1.0001in')  # 1.0001in = 96.0096
        self.assertTrue(a <= b, msg=(a.value(), b.value()))
        self.assertTrue(a < b, msg=(a.value(), b.value()))
        self.assertFalse(a == b, msg=(a.value(), b.value()))

        a = SVGLength('1in')  # 1in = 96
        b = SVGLength('2.54cm')  # 1in = 2.54cm
        self.assertTrue(a <= b, msg=(a.value(), b.value()))
        self.assertFalse(a < b, msg=(a.value(), b.value()))
        self.assertTrue(a == b, msg=(a.value(), b.value()))
示例#4
0
    def test_abs(self):
        a = SVGLength('0.1')
        b = abs(a)
        self.assertEqual(0.1, a.value())
        self.assertEqual(0.1, b.value())

        a = SVGLength('-0.1')
        b = abs(a)
        self.assertEqual(-0.1, a.value())
        self.assertEqual(0.1, b.value())

        a = SVGLength('-0.1px')
        b = abs(a)
        self.assertEqual(-0.1, a.value())
        self.assertEqual(0.1, b.value())
示例#5
0
 def test_add_mm_mm(self):
     # 0.1(mm) + 0.1(mm) + 0.1(mm)
     a = SVGLength('0.1mm')
     a = a + SVGLength('0.1mm')
     a = a + SVGLength('0.1mm')
     self.assertEqual('0.3mm', a.tostring())
     self.assertEqual('mm', a.unit)
     self.assertEqual(0.3, a.value(SVGLength.TYPE_MM))
示例#6
0
    def test_font_size_vw(self):
        # 'vw unit'
        parser = SVGParser()
        root = parser.create_element('svg')
        root.attributes.update({
            'width': '200mm',
        })
        group = root.create_sub_element('g')
        text = group.create_sub_element('text')
        text.attributes.update({
            'font-size': '8vw',
        })

        a = SVGLength(text.attributes['font-size'].value, context=None)
        expected = 8
        self.assertEqual(expected, a.value(), msg=a)

        a = SVGLength(text.attributes['font-size'].value, context=text)
        expected = 8 * 200 / 100  # 16mm
        self.assertAlmostEqual(expected, a.value(SVGLength.TYPE_MM), msg=a)
示例#7
0
    def test_sub(self):
        a = SVGLength('0.1mm')
        a = a - SVGLength('0.1mm')
        a = a - SVGLength('0.1mm')  # -0.1mm
        self.assertEqual('-0.1mm', a.tostring())
        self.assertTrue(SVGLength('-0.1mm') == a, msg=a.value(a.unit))

        a = SVGLength('10.2cm')  # 10.2 * 96 / 2.54 (px) = 385.511811...px
        a = a - SVGLength('1.8in')  # 1.8in = 1.8 * 2.54cm = 4.572cm = 172.8px
        self.assertEqual('5.628cm', a.tostring())  # 10.2 - 4.572 (cm)
        self.assertTrue(SVGLength('212.711811px') == a)  # 385.511811 - 172.8
示例#8
0
    def test_iadd(self):
        a = SVGLength('0.1mm')
        a += SVGLength('0.1mm')
        a += SVGLength('0.1mm')  # 0.30000000000000004mm
        self.assertEqual('0.3mm', a.tostring())
        self.assertTrue(a == SVGLength('0.3mm'), msg=a.value(a.unit))

        a = SVGLength('10.2cm')  # 10.2 * 96 / 2.54 (px) = 385.511811...px
        a += SVGLength('1.8in')  # 1.8in = 1.8 * 2.54cm = 4.572cm = 172.8px
        self.assertEqual('14.772cm', a.tostring())  # 10.2 + 4.572 (cm)
        self.assertTrue(SVGLength('558.311811px') == a)  # 385.511811 + 172.8
示例#9
0
    def test_new_value_percentage2(self):
        parser = SVGParser()
        root = parser.create_element('svg')
        group = root.create_sub_element('g')
        group.attributes.update({
            'font-size': '16',
        })

        a = SVGLength(context=group)
        a.new_value(92.00042345, SVGLength.TYPE_PERCENTAGE)
        self.assertEqual(92.00042345, a.value(SVGLength.TYPE_PERCENTAGE))
        self.assertEqual('%', a.unit)
        self.assertEqual('92%', a.tostring())
示例#10
0
 def test_eq_cm_mm(self):
     # 1(cm) == 10(mm)
     a = SVGLength('1cm')  # 37.79527559055118
     b = SVGLength('10mm')  # 37.795275590551185
     self.assertNotEqual(a.value(), b.value())
     self.assertAlmostEqual(a.value(), b.value())
     self.assertAlmostEqual(a.value(a.unit), b.value(a.unit))
     self.assertEqual(a.tostring(), b.tostring(a.unit))
     self.assertTrue(a == b)
示例#11
0
    def test_font_relative_lengths_ch01(self):
        # See also: length02.html
        base_font_size = 18
        element_font_size = 20
        Font.default_font_size = base_font_size

        parser = SVGParser()
        root = parser.create_element('svg')
        group = root.create_sub_element('g')
        group.attributes.update({
            'font-family': 'DejaVu Sans, sans-serif',
            'font-size': str(element_font_size),
        })
        text = group.create_sub_element('text')
        text.attributes.update({
            'font-size': '1em',
        })

        a = SVGLength('1ch', context=text)
        expected = 12.724
        self.assertAlmostEqual(expected, a.value(), msg=a, places=places)
示例#12
0
    def test_font_relative_lengths_rem02(self):
        # See also: length02.html
        base_font_size = 18
        element_font_size = 20
        Font.default_font_size = base_font_size

        parser = SVGParser()
        root = parser.create_element('svg')
        group = root.create_sub_element('g')
        group.attributes.update({
            'font-family': 'IPAmjMincho, serif',
            'font-size': str(element_font_size),
        })
        text = group.create_sub_element('text')
        text.attributes.update({
            'font-size': '1em',
        })

        a = SVGLength('1rem', context=text)
        expected = base_font_size
        self.assertAlmostEqual(expected, a.value(), msg=a)
示例#13
0
    def test_eq_none_none(self):
        # 1 == 1.000000001?
        SVGLength.rel_tol = 1e-9
        a = SVGLength('1')
        b = SVGLength('1.000000001')
        self.assertNotEqual(a.value(), b.value())
        self.assertAlmostEqual(a.value(a.unit), b.value(a.unit))
        self.assertEqual(a.tostring(), b.tostring(a.unit))  # '1' == '1'
        self.assertFalse(a == b)  # 1 != 1.000000001

        SVGLength.rel_tol = 1e-8
        self.assertTrue(a == b)  # 1 == 1.00000000

        SVGLength.rel_tol = 1e-9
        SVGLength.abs_tol = 1e-9
        a = SVGLength('0')
        b = SVGLength('-0.000000001')
        self.assertNotEqual(a.value(), b.value())
        self.assertAlmostEqual(a.value(a.unit), b.value(a.unit))
        self.assertEqual(a.tostring(), b.tostring(a.unit))  # '1' == '1'
        self.assertTrue(a == b)

        SVGLength.abs_tol = 1e-10
        self.assertFalse(a == b)
示例#14
0
    def test_ne(self):
        a = SVGLength('1cm')  # 37.79527559055118
        b = SVGLength('10mm')  # 37.795275590551185
        self.assertNotEqual(a.value(), b.value())
        self.assertEqual(a.tostring(), b.tostring(a.unit))
        self.assertFalse(a != b)

        a = SVGLength('1')
        b = SVGLength('1.000000001')
        self.assertNotEqual(a.value(), b.value())
        self.assertEqual(a.tostring(), b.tostring(a.unit))  # '1' == '1'
        self.assertTrue(a != b)

        a = SVGLength('1')
        b = SVGLength('1.0000000001')  # -> 1
        self.assertNotEqual(a.value(), b.value())
        self.assertEqual(a.tostring(), b.tostring(a.unit))  # '1' == '1'
        self.assertFalse(a != b)
示例#15
0
 def test_ge_false(self):
     a = SVGLength(0.0000009)
     b = SVGLength(0.000001)
     self.assertFalse(a >= b, msg=(a.value(), b.value()))
     self.assertFalse(a > b, msg=(a.value(), b.value()))
     self.assertFalse(a == b, msg=(a.value(), b.value()))
示例#16
0
 def test_new_value_percentage(self):
     a = SVGLength()
     a.new_value(92.00042345, SVGLength.TYPE_PERCENTAGE)
     self.assertEqual(92.00042345, a.value(SVGLength.TYPE_PERCENTAGE))
     self.assertEqual('%', a.unit)
     self.assertEqual('92%', a.tostring())
示例#17
0
 def test_new_value_number(self):
     a = SVGLength()
     a.new_value(1.0001, SVGLength.TYPE_NUMBER)
     self.assertEqual(1.0001, a.value())
     self.assertIsNone(a.unit)
     self.assertEqual('1', a.tostring())
示例#18
0
 def test_init(self):
     a = SVGLength()
     self.assertEqual(0, a.value())
     self.assertIsNone(a.unit)
     self.assertEqual('0', a.tostring())
示例#19
0
 def test_ge_in_in_5f(self):
     a = SVGLength('1.00001in')  # 1.00001in = 96.00096
     b = SVGLength('1in')  # 1in = 96
     self.assertTrue(a >= b, msg=(a.value(), b.value()))
     self.assertTrue(a > b, msg=(a.value(), b.value()))
     self.assertFalse(a == b, msg=(a.value(), b.value()))