def setUp(self): root = os.path.dirname(__file__) impl = getDOMImplementation() template = os.path.join(root, 'simple_template.odt') self.document = impl.createDocument(None, "some_tag", None) self.engine = Renderer() self.engine.render(template)
class RenderTestCase(TestCase): def setUp(self): root = os.path.dirname(__file__) impl = getDOMImplementation() template = os.path.join(root, 'simple_template.odt') self.document = impl.createDocument(None, "some_tag", None) self.engine = Renderer() self.engine.render(template) def test__unescape_entities(self): test_samples = { # test scaping of > '{{ "greater_than_1" if 1>0 }}' : '{{ "greater_than_1" if 1>0 }}', '{% a > b %}' : '{% a > b %}', '{{ a > b }}' : '{{ a > b }}', '{% a|filter > b %}' : '{% a|filter > b %}', '<node>{% a == b %}</node>{% else if a > b %}': '<node>{% a == b %}</node>{% else if a > b %}', # test scaping of < and " '{{ "lower_than_1" if 1<0 }}' : '{{ "lower_than_1" if 1<0 }}', '{% a < b %}' : '{% a < b %}', '{{ a < b }}' : '{{ a < b }}', '{% a|filter < b %}' : '{% a|filter < b %}', '<node>{% a == b %}</node>{% else if a < b %}': '<node>{% a == b %}</node>{% else if a < b %}', # test scapig of multiple spaces, even encoded as <text:space> nodes '{{ if <text:s> multiple_spaces }}' : '{{ if multiple_spaces }}', '{{ if </text:s> multiple_spaces }}' : '{{ if multiple_spaces }}', '{{ if <text:s/> multiple_spaces }}' : '{{ if multiple_spaces }}', '{{ if <text:span/>[1,2,3]<text:span><</text:span>2 }}': '{{ if [1,2,3] < 2 }}', } for test, expect in test_samples.items(): assert self.engine._unescape_entities(test) == expect def test__encode_escape_chars(self): test_samples = { '<text:a>\n</text:a>': '<text:a><text:line-break/></text:a>', '<text:h>\n</text:h>': '<text:h><text:line-break/></text:h>', '<text:p>\n</text:p>': '<text:p><text:line-break/></text:p>', '<text:p>Hello\n</text:p>': '<text:p>Hello<text:line-break/></text:p>', '<text:p>Hello\nWorld\n!</text:p>': '<text:p>Hello<text:line-break/>World<text:line-break/>!</text:p>', '<text:ruby-base>\n</text:ruby-base>': '<text:ruby-base><text:line-break/></text:ruby-base>', '<text:meta>\u0009</text:meta>': '<text:meta><text:tab/></text:meta>', '<text:meta-field>\n</text:meta-field>': '<text:meta-field><text:line-break/></text:meta-field>', } for test, expect in test_samples.items(): assert self.engine._encode_escape_chars(test) == expect def test_create_test_node(self): assert self.engine.create_text_node(self.document, 'text').toxml() == 'text' def test_create_text_span_node(self): assert self.engine.create_text_span_node(self.document, 'text').toxml() == '<text:span>text</text:span>'