示例#1
0
 public void TestExecFor()
 {
     Assert.AreEqual("1234", TemplateCodeGen.CompileTemplateCodeByString("{% for Item in List %}{{ Item }}{% endfor %}").RenderToString(new TemplateScope(new Dictionary <String, object>()
     {
         { "List", new int[] { 1, 2, 3, 4 } },
     })));
 }
示例#2
0
 public void TestExecVariableSimple()
 {
     Assert.AreEqual("Hello Test", TemplateCodeGen.CompileTemplateCodeByString("Hello {{ User }}").RenderToString(new TemplateScope(new Dictionary <String, object>()
     {
         { "User", "Test" },
     })));
 }
        protected static TemplateCode CompileTemplateCodeByString(String Code)
        {
            var TemplateCodeGen = new TemplateCodeGen(Code);

            TemplateCodeGen.OutputGeneratedCode = true;
            return(TemplateCodeGen.GetTemplateCode());
        }
示例#4
0
 public void TestExecForInsideFor()
 {
     Assert.AreEqual("[1]1234[1][2]2468[2]", TemplateCodeGen.CompileTemplateCodeByString("{% for Item2 in List2 %}[{{ Item2 }}]{% for Item1 in List1 %}{{ Item1 * Item2 }}{% endfor %}[{{ Item2 }}]{% endfor %}{{ Item1 }}{{ Item2 }}").RenderToString(new TemplateScope(new Dictionary <String, object>()
     {
         { "List1", new int[] { 1, 2, 3, 4 } },
         { "List2", new int[] { 1, 2 } },
     })));
 }
示例#5
0
 public void TestExecAccessSimpleIndexer()
 {
     Assert.AreEqual("Value", TemplateCodeGen.CompileTemplateCodeByString("{{ Item['Key'] }}").RenderToString(new TemplateScope(new Dictionary <String, dynamic>()
     {
         { "Item", new Hashtable()
           {
               { "Key", "Value" },
           } }
     })));
 }
示例#6
0
 public void TestExecAccessInexistentSubKey()
 {
     Assert.AreEqual("", TemplateCodeGen.CompileTemplateCodeByString("{{ Item.Key.InexistentKey }}").RenderToString(new TemplateScope(new Dictionary <String, dynamic>()
     {
         { "Item", new Hashtable()
           {
               { "Key", new Hashtable()
                                 {
                                     { "SubKey", "Value" },
                                 } }
           } }
     })));
 }
示例#7
0
        public void TestTrueFalseNoneAreImmutableConstants()
        {
            var Scope = new TemplateScope(new Dictionary <String, object>()
            {
                { "true", false },
                { "false", true },
                { "none", 1 },
            });

            Assert.AreEqual("1", TemplateCodeGen.CompileTemplateCodeByString("{% if true %}1{% else %}0{% endif %}").RenderToString(Scope));
            Assert.AreEqual("0", TemplateCodeGen.CompileTemplateCodeByString("{% if false %}1{% else %}0{% endif %}").RenderToString(Scope));
            Assert.AreEqual("0", TemplateCodeGen.CompileTemplateCodeByString("{% if none %}1{% else %}0{% endif %}").RenderToString(Scope));
        }
示例#8
0
        public void TestExecForElse()
        {
            var Params1 = new TemplateScope(new Dictionary <String, object>()
            {
                { "List", new int[] { 1, 2, 3, 4, 5 } }
            });
            var Params2 = new TemplateScope(new Dictionary <String, object>()
            {
                { "List", new int[] { } }
            });

            Assert.AreEqual("12345", TemplateCodeGen.CompileTemplateCodeByString("{% for Item in List %}{{ Item }}{% else %}Empty{% endfor %}").RenderToString(Params1));
            Assert.AreEqual("Empty", TemplateCodeGen.CompileTemplateCodeByString("{% for Item in List %}{{ Item }}{% else %}Empty{% endfor %}").RenderToString(Params2));
        }
示例#9
0
 public void TestExecForObjects()
 {
     Assert.AreEqual("HelloWorld", TemplateCodeGen.CompileTemplateCodeByString("{% for Post in Posts %}{{ Post.Text }}{% endfor %}").RenderToString(new TemplateScope(new Dictionary <String, object>()
     {
         { "Posts", new List <Post>()
           {
               new Post()
               {
                   Text = "Hello"
               },
               new Post()
               {
                   Text = "World"
               },
           } },
     })));
 }
示例#10
0
 public void TestExecPow()
 {
     Assert.AreEqual("256", TemplateCodeGen.CompileTemplateCodeByString("{{ 2 ** 8 }}").RenderToString());
 }
示例#11
0
 public void TestExecEscapeTwice()
 {
     Assert.AreEqual("Hello &amp;lt;World&amp;gt;", TemplateCodeGen.CompileTemplateCodeByString("{{ 'Hello <World>'|e|e }}").RenderToString());
 }
示例#12
0
 public void TestExecAutoescapeOnEscapeShortcut()
 {
     Assert.AreEqual("Hello &lt;World&gt;", TemplateCodeGen.CompileTemplateCodeByString("{{ 'Hello <World>'|e }}").RenderToString());
 }
示例#13
0
 public void TestExecAutoescapeOffEscape()
 {
     Assert.AreEqual("Hello &lt;World&gt;", TemplateCodeGen.CompileTemplateCodeByString("{% autoescape false %}{{ 'Hello <World>'|escape }}{% endautoescape %}").RenderToString());
 }
示例#14
0
 public void TestExecForRange()
 {
     Assert.AreEqual("0123456789", TemplateCodeGen.CompileTemplateCodeByString("{% for Item in 0..9 %}{{ Item }}{% endfor %}").RenderToString());
 }
示例#15
0
 public void TestExecTernaryTrue()
 {
     Assert.AreEqual("A", TemplateCodeGen.CompileTemplateCodeByString("{{ 1 ? 'A' : 'B' }}").RenderToString());
 }
示例#16
0
 public void TestExecAccessInexistentKey()
 {
     Assert.AreEqual("", TemplateCodeGen.CompileTemplateCodeByString("{{ Item.InexistentKey }}").RenderToString());
 }
示例#17
0
 public void TestExecIfOr()
 {
     Assert.AreEqual("A", TemplateCodeGen.CompileTemplateCodeByString("{% if 0 || 2 %}A{% endif %}").RenderToString());
 }
示例#18
0
 public void TestExecUnary()
 {
     Assert.AreEqual("-6", TemplateCodeGen.CompileTemplateCodeByString("{{ -(1 + 2) + -3 }}").RenderToString());
 }
示例#19
0
 public void TestExecTernaryFalse()
 {
     Assert.AreEqual("B", TemplateCodeGen.CompileTemplateCodeByString("{{ (1 - 1) ? 'A' : 'B' }}").RenderToString());
 }
示例#20
0
 public void TestExecWithOperatorPrecedence()
 {
     Assert.AreEqual("Hello 5 World", TemplateCodeGen.CompileTemplateCodeByString("Hello {{ 1 + 2 * 2 }} World").RenderToString());
 }
示例#21
0
 public void TestExecBlock()
 {
     Assert.AreEqual("1", TemplateCodeGen.CompileTemplateCodeByString("{% block Body %}1{% endblock %}").RenderToString());
 }
示例#22
0
 public void TestExecFilter()
 {
     Assert.AreEqual("Hello World", TemplateCodeGen.CompileTemplateCodeByString("{{ 'Hello {0}'|format('World') }}").RenderToString());
     Assert.AreEqual("Hello &lt;World&gt;", TemplateCodeGen.CompileTemplateCodeByString("{{ 'Hello {0}'|format('<World>') }}").RenderToString());
     Assert.AreEqual("Hello <World>", TemplateCodeGen.CompileTemplateCodeByString("{{ 'Hello {0}'|format('<World>')|raw }}").RenderToString());
 }
示例#23
0
 public void TestExecIfElseCond1()
 {
     Assert.AreEqual("A", TemplateCodeGen.CompileTemplateCodeByString("{% if 1 %}A{% else %}B{% endif %}").RenderToString());
 }