def test_autoescape(self): t = template.Template(r"<{{x}}>") self.assertEqual(t.generate(x="<"), "<<>") self.assertEqual(t.generate(x=">"), "<>>") t2 = template.Template(r"{% autoescape None %}<{{x}}>") self.assertEqual(t2.generate(x="<"), "<<>") self.assertEqual(t2.generate(x=">"), "<>>")
def test_set(self): self.assertEqual( template.Template(r"{% set x=42 %}{{ val + x }}").generate( val=-42), "0") self.assertEqual( template.Template(r"{% set x=val2 %}{{ val + x }}").generate( val=1, val2=10), "11")
def test_loops(self): self.assertEqual( template.Template( r"{% for x in [1,2,3,4] %}{{ x }}:{% end %}").generate(), "1:2:3:4:") self.assertEqual( template.Template( r"{% set x=0 %}{% while x < 10 %}{{x}};{% set x += 2 %}{% end %}" ).generate(), "0;2;4;6;8;")
def test_if(self): t = template.Template( r"{% if a == 1 %}One{% elif a < 0 %}Negative{% elif isinstance(a, basestring) %}String{% else %}Unknown{% end %}" ) self.assertEqual(t.generate(a=1), b"One") self.assertEqual(t.generate(a=-1), b"Negative") self.assertEqual(t.generate(a=-1.67), b"Negative") self.assertEqual(t.generate(a=-100), b"Negative") self.assertEqual(t.generate(a=42), b"Unknown") self.assertEqual(t.generate(a=42.5), b"Unknown") self.assertEqual(t.generate(a="meow"), b"String")
def test_deferreds(self): def _mkDeferred(rv, delay=None): d = defer.Deferred() if delay is None: d.callback(rv) else: reactor.callLater(delay, d.callback, rv) return d # Test that template immidiatly resolves deferreds if possible t = template.Template(r"-) {{x}} <-> {{y(63)}} :!") self.assertEqual(t.generate(x=_mkDeferred(42), y=_mkDeferred), "-) 42 <-> 63 :!") # Test delayed execution d = t.generate(x=_mkDeferred("hello", 0.1), y=lambda val: _mkDeferred(val - 60, 0.5)) self.assertTrue(isinstance(d, defer.Deferred), d) txt = yield d self.assertEqual(txt, "-) hello <-> 3 :!")
def test_comment(self): self.assertEqual( template.Template(r"{% comment blah! %}42").generate(), b"42")
def test_simple_var(self): t = template.Template(r"My name is: {{ name }}") self.assertEqual(t.generate(name="Alice"), "My name is: Alice") self.assertEqual(t.generate(name="Bob"), "My name is: Bob")