def test_extends_depth(self): lookup = TemplateLookup() lookup['layout.html'] = Template(''' <%@ block name="header" %> <h1>Hello</h1> <%@ endblock %> <p><%@ body %>!!</p> ''', lookup=lookup) lookup['override.html'] = Template(''' <%@ extends name="layout.html" %> <%@ block name="header" %> <h1>Hi!!</h1> <%@ endblock %> <%@ body %> ''', lookup=lookup) text = '''<%@ extends name="override.html" %>World''' self.assertEquals(''' <h1>Hi!!</h1> <p>World!!</p> ''', Template(text, lookup=lookup).render())
def test_scriptlet(self): text = u''' <% a = 0 for i in [1, 2, 3, 4]: a = a + i %> a = <%= 10 %> ''' template = Template(text=text) self.assertEqual(u'\n\na = 10\n', template.render())
def test_include(self): lookup = TemplateLookup() lookup['hello.html'] = Template('Hello', lookup=lookup) text = ''' <p> <%@ include name="hello.html" %> </p>''' self.assertEquals(''' <p> Hello </p>''', Template(text, lookup=lookup).render())
def test_function(self): text = u''' <% def embed(): %> hello <%# end %> <% embed() %>''' self.assertEqual(u'''hello''', Template(text=text).render().strip())
def test_block(self): text = ''' <%@ block name="header" %> header <%@ endblock %> body ''' self.assertEquals('\n\nheader\n\n\nbody\n', Template(text).render())
def test_plaintext(self): text = u''' abc def qwer x ''' self.assertEqual(text, Template(text=text).render())
def test_expression(self): text = u''' lit is <%= 'language independent template' %> number: <%= 6 %> expression: <%= {'a':5}['a'] + 4 %> == 9 ''' self.assertEquals(u''' lit is language independent template number: 6 expression: 9 == 9 ''', Template(text=text).render())
def test_forloop(self): text = u''' <% s = 0 for i in [1, 2, 3, 4]: %> loop <%= i %><% s = s + i %> <%# end %> sum = <%= s %>''' self.assertEqual(u''' loop 1 loop 2 loop 3 loop 4 sum = 10''', Template(text=text).render())
def test_if(self): text = u'''<% if True: %><%= 1 %><%# end%><% else: %><%= 0 %><% end %>''' self.assertEqual(u'''1''', Template(text=text).render())
def test_context(self): text = u'''show <%= a %> <%= b %>''' self.assertEqual('show 5 Hello', Template(text=text).render(a=5, b='Hello'))