def test_convert01(self): # with context parser = SVGParser() root = parser.create_element('svg') group = root.create_sub_element('g') group.attributes.update({ 'font-family': 'DejaVu Sans, sans-serif', 'font-size': '16', }) # 1(rem) = 16(px) text = group.create_sub_element('text') a = SVGLength('1in', context=text) self.assertEqual('in', a.unit) self.assertEqual('1in', a.tostring()) a.convert(SVGLength.TYPE_CM) # 1(in) = 2.54(cm) self.assertEqual('cm', a.unit) self.assertEqual('2.54cm', a.tostring()) a.convert(SVGLength.TYPE_PX) # 2.54(cm) = 96(px) self.assertEqual('px', a.unit) self.assertEqual('96px', a.tostring()) a.convert(SVGLength.TYPE_NUMBER) # 96(px) = 96 self.assertIsNone(a.unit) self.assertEqual('96', a.tostring()) a.convert(SVGLength.TYPE_MM) # 96(px) = 25.4(mm) self.assertEqual('mm', a.unit) self.assertEqual('25.4mm', a.tostring()) # 100(%) = 16(px) a.convert(SVGLength.TYPE_PERCENTAGE) # 96(px) = 600(%) self.assertEqual('%', a.unit) self.assertEqual('600%', a.tostring()) # 100(%) = 1(em) a.convert(SVGLength.TYPE_EMS) # 600(%) = 6(em) self.assertEqual('em', a.unit) self.assertEqual('6em', a.tostring()) # 1(ex) = x-height(px) # 96(px) -> x-height: 53(px) # 96(px) / 53(px) = 1.8113... a.convert(SVGLength.TYPE_EXS) self.assertEqual('ex', a.unit) self.assertEqual('1.811ex', a.tostring()) # font-family: "DejaVu Sans", sans-serif # element font size: 16(px) -> 1(ex) = 9(px) # 1.8113(ex) = 1.8113 * 9 = 16.3017...(px) # 1(px) = 0.75(pt) # 16.3017 * 0.75 = 12.2263...(pt) a.convert(SVGLength.TYPE_PT) self.assertEqual('pt', a.unit) self.assertEqual('12.226pt', a.tostring()) # 1(pt) = 1 / 12(pc) # 12.2263(pt) = 1.0189...(pc) a.convert(SVGLength.TYPE_PC) self.assertEqual('pc', a.unit) self.assertEqual('1.019pc', a.tostring())
def test_convert03(self): # without context Font.default_font_size = 20 a = SVGLength('1em') self.assertEqual('em', a.unit) self.assertEqual('1em', a.tostring()) # 1(em) = 2(ex) a.convert(SVGLength.TYPE_EXS) self.assertEqual('ex', a.unit) self.assertEqual('2ex', a.tostring()) # 1(em) = default font size(px) a.convert(SVGLength.TYPE_PX) self.assertEqual('px', a.unit) self.assertEqual('20px', a.tostring()) # 1(rem) = default font size(px) a.convert(SVGLength.TYPE_REMS) self.assertEqual('rem', a.unit) self.assertEqual('1rem', a.tostring()) # 1(ch) = default font size / 2(px) a.convert(SVGLength.TYPE_CHS) self.assertEqual('ch', a.unit) self.assertEqual('2ch', a.tostring()) # 100(%) = default font size(px) a.convert(SVGLength.TYPE_PERCENTAGE) self.assertEqual('%', a.unit) self.assertEqual('100%', a.tostring()) # 1(ex) = 0.5(em) a = SVGLength('1ex') a.convert(SVGLength.TYPE_EMS) self.assertEqual('em', a.unit) self.assertEqual('0.5em', a.tostring())