示例#1
0
        public void TestAbs()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("{{ -1|abs }}|{{ 1|abs }}")
                );

            MyAssert.AreEqual("1|1", template.Render());
        }
示例#2
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());
        }
示例#3
0
        public void TestChaining()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("{{ ['<foo>', '<bar>']|first|upper|escape }}")
                );

            MyAssert.AreEqual("&lt;FOO&gt", template.Render());
        }
示例#4
0
        public void TestBlock()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("{{ \"foo bar baz\"|wordcount }}")
                );

            MyAssert.AreEqual("3", template.Render());
        }
示例#5
0
        public void TestBlock()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("{% set foo %}42{% endset %}{{ foo }}")
                );

            MyAssert.AreEqual("42", template.Render());
        }
示例#6
0
        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));
        }
示例#7
0
        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"));
        }
示例#8
0
        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());
        }
示例#9
0
        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());
        }
示例#10
0
        public void TestElseScopingItem()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("{% for item in [] %}{% else %}{{ item }}{% endfor %}")
                );

            MyAssert.AreEqual("42", template.Render(item: 42));
        }
示例#11
0
        public void TestComplexCall()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString(@"{% macro test() %}[[{{ caller('data') }}]]{% endmacro %}{% call(data) test() %}{{ data }}{% endcall %}")
                );

            MyAssert.AreEqual("[[data]]", template.Render());
        }
示例#12
0
        public void TestCenter()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("{{ \"foo\"|center(9) }}")
                );

            MyAssert.AreEqual("   foo   ", template.Render());
        }
示例#13
0
        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()));
        }
示例#14
0
        public void TestCapitalize()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("{{ \"foo bar\"|capitalize }}")
                );

            MyAssert.AreEqual("Foo bar", template.Render());
        }
示例#15
0
        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());
        }
示例#16
0
        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());
        }
示例#17
0
        public void TestBlockEscaping()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("{% set foo %}<em>{{ test }}</em>{% endset %}foo: {{ foo }}")
                );

            MyAssert.AreEqual("foo: <em>&lt;unsafe&gt;</em>", template.Render(test: "<unsafe>"));
        }
示例#18
0
        public void TestEmptyBlocks()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("<{% for item in seq %}{% else %}{% endfor %}>")
                );

            MyAssert.AreEqual("<>", template.Render());
        }
示例#19
0
        public void TestNamespaceBlock()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("{% set ns = namespace() %}{% set ns.bar %}42{% endset %}{{ ns.bar }}")
                );

            MyAssert.AreEqual("42", template.Render());
        }
示例#20
0
        public void TestElse()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("{% if false %}XXX{% else %}...{% endif %}")
                );

            MyAssert.AreEqual("...", template.Render());
        }
示例#21
0
        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());
        }
示例#22
0
        public void TestEmpty()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("[{% if true %}{% else %}{% endif %}]")
                );

            MyAssert.AreEqual("[]", template.Render());
        }
示例#23
0
        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());
        }
示例#24
0
        public void TestNormal()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString("{% set foo = 1 %}{{ foo }}")
                );

            MyAssert.AreEqual("1", template.Render());
        }
示例#25
0
        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);
        }
示例#26
0
        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());
        }
示例#27
0
        public void TestBlockFiltered()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString(
                    "{% set foo | trim | length | string %} 42    {% endset %}",
                    "{{ foo }}"
                    )
                );

            MyAssert.AreEqual("2", template.Render());
        }
示例#28
0
        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 }
            }));
        }
示例#29
0
        public void TestWithArgumentScoping()
        {
            dynamic template = new DynamicTemplateRenderer(
                _Environment.FromString(@"
        {%- with a=1, b=2, c=b, d=e, e=5 -%}
            {{ a }}|{{ b }}|{{ c }}|{{ d }}|{{ e }}
        {%- endwith -%}
")
                );

            MyAssert.AreEqual("1|2|3|4|5", template.Render(b: 3, e: 4));
        }
示例#30
0
        public void TestInclude()
        {
            var environment = new JinjaEnvironment(new DictLoader(new Dictionary <string, string>
            {
                { "include", "{% macro test(foo) %}[{{ foo }}]{% endmacro %}" }
            }));
            dynamic template = new DynamicTemplateRenderer(
                environment.FromString("{% from \"include\" import test %}{{ test(\"foo\") }}")
                );

            MyAssert.AreEqual("[foo]", template.Render());
        }