public void TestElifDeep() { var elifs = string.Join("\n", Enumerable.Range(1, 999).Select(index => string.Format(CultureInfo.InvariantCulture, "{{% elif a == {0} %}}{0}", index))); var templateString = string.Format(CultureInfo.InvariantCulture, "{{% if a == 0 %}}0{0}{{% else %}}x{{% endif %}}", elifs); dynamic template = new DynamicTemplateRenderer( _Environment.FromString(templateString) ); foreach (var x in new[] { 0, 10, 999 }) { MyAssert.AreEqual(x.ToString(CultureInfo.InvariantCulture), template.Render(a: x).Trim()); } MyAssert.AreEqual("x", template.Render(a: 1000).Trim()); }
public void TestElseScopingItem() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{% for item in [] %}{% else %}{{ item }}{% endfor %}") ); MyAssert.AreEqual("42", template.Render(item: 42)); }
public void TestSimple() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{% for item in seq %}{{ item }}{% endfor %}") ); MyAssert.AreEqual("0123456789", template.Render(seq: Enumerable.Range(0, 10).ToList())); }
public void TestCenter() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{{ \"foo\"|center(9) }}") ); MyAssert.AreEqual(" foo ", template.Render()); }
public void TestCapitalize() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{{ \"foo bar\"|capitalize }}") ); MyAssert.AreEqual("Foo bar", template.Render()); }
public void TestBoolSelect() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{{ [none, false, 0, 1, 2, 3, 4, 5]|select|join(\" | \") }}") ); MyAssert.AreEqual("1|2|3|4|5", template.Render()); }
public void TestBoolReject() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{{ [none, false, 0, 1, 2, 3, 4, 5]|reject|join(\" | \") }}") ); MyAssert.AreEqual("None|False|0", template.Render()); }
public void TestBlock() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{{ \"foo bar baz\"|wordcount }}") ); MyAssert.AreEqual("3", template.Render()); }
public void TestAbs() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{{ -1|abs }}|{{ 1|abs }}") ); MyAssert.AreEqual("1|1", template.Render()); }
public void TestEmptyBlocks() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("<{% for item in seq %}{% else %}{% endfor %}>") ); MyAssert.AreEqual("<>", template.Render()); }
public void TestComplete() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{% if a %}A{% elif b %}B{% elif c == d %}", "C{% else %}D{% endif %}") ); MyAssert.AreEqual("C", template.Render(a: 0, b: false, c: 42, d: 42.0)); }
public void TestCallerUndefined() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString(@"{% set caller = 42 %}{% macro test() %}{{ caller is not defined }}{% endmacro %}{{ test() }}") ); MyAssert.AreEqual("True", template.Render()); }
public void TestScoping() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString(@"{% macro level1(data1) %}{% macro level2(data2) %}{{ data1 }}|{{ data2 }}{% endmacro %}{{ level2('bar') }}{% endmacro %}{{ level1('foo') }}") ); MyAssert.AreEqual("foo|bar", template.Render()); }
public void TestVarArgs() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString(@"{% macro test() %}{{ varargs|join('|') }}{% endmacro %}{{ test(1, 2, 3) }}") ); MyAssert.AreEqual("1|2|3", template.Render()); }
public void TestSimple() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString(@"{% macro say_hello(name) %}Hello {{ name }}!{% endmacro %}{{ say_hello('Peter') }}") ); MyAssert.AreEqual("Hello Peter!", template.Render()); }
public void TestElse() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{% if false %}XXX{% else %}...{% endif %}") ); MyAssert.AreEqual("...", template.Render()); }
public void TestNamespaceLoop() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString( "{% set ns = namespace(found=false) %}", "{% for x in range(4) %}", "{% if x == v %}", "{% set ns.found = true %}", "{% endif %}", "{% endfor %}", "{{ ns.found }}" ) ); MyAssert.AreEqual("True", template.Render(v: 3)); MyAssert.AreEqual("False", template.Render(v: 4)); }
public void TestBlockEscaping() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{% set foo %}<em>{{ test }}</em>{% endset %}foo: {{ foo }}") ); MyAssert.AreEqual("foo: <em><unsafe></em>", template.Render(test: "<unsafe>")); }
public void TestNamespaceBlock() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{% set ns = namespace() %}{% set ns.bar %}42{% endset %}{{ ns.bar }}") ); MyAssert.AreEqual("42", template.Render()); }
public void TestNormal() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{% set foo = 1 %}{{ foo }}") ); MyAssert.AreEqual("1", template.Render()); }
public void TestBlock() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{% set foo %}42{% endset %}{{ foo }}") ); MyAssert.AreEqual("42", template.Render()); }
public void TestComplexCall() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString(@"{% macro test() %}[[{{ caller('data') }}]]{% endmacro %}{% call(data) test() %}{{ data }}{% endcall %}") ); MyAssert.AreEqual("[[data]]", template.Render()); }
public void TestDefault() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{{ missing|default('no') }}|{{ false|default('no') }}|{{ false|default('no', true) }}|{{ given|default('no') }}") ); MyAssert.AreEqual("no|False|no|yes", template.Render(given: "yes")); }
public void TestEmpty() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("[{% if true %}{% else %}{% endif %}]") ); MyAssert.AreEqual("[]", template.Render()); }
public void TestArguments() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString(@"{% macro m(a, b, c='c', d='d') %}{{ a }}|{{ b }}|{{ c }}|{{ d }}{% endmacro %}{{ m() }}|{{ m('a') }}|{{ m('a', 'b') }}|{{ m(1, 2, 3) }}") ); MyAssert.AreEqual("||c|d|a||c|d|a|b|c|d|1|2|3|d", template.Render()); }
public void TestChaining() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{{ ['<foo>', '<bar>']|first|upper|escape }}") ); MyAssert.AreEqual("<FOO>", template.Render()); }
public void TestBatch() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{{ foo|batch(3)|list }}|{{ foo|batch(3, 'X')|list }}") ); var output = template.Render(foo: Enumerable.Range(0, 10)); MyAssert.AreEqual("[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]|[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 'X', 'X']]", output); }
public void TestCallSelf() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString(@"{% macro foo(x) %}{{ x }}{% if x > 1 %}|", "{{ foo(x - 1) }}{% endif %}{% endmacro %}", "{{ foo(5) }}") ); MyAssert.AreEqual("5|4|3|2|1", template.Render()); }
public void TestInitNamespace() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString("{% set ns = namespace(d, self=37) %}{% set ns.b = 42 %}{{ ns.a }}|{{ ns.self }}|{{ ns.b }}") ); MyAssert.AreEqual("13|37|42", template.Render(d: new Dictionary <string, object?> { { "a", 13 } })); }
public void TestBlockFiltered() { dynamic template = new DynamicTemplateRenderer( _Environment.FromString( "{% set foo | trim | length | string %} 42 {% endset %}", "{{ foo }}" ) ); MyAssert.AreEqual("2", template.Render()); }