public void TestAnonMap() { string template = "hi <name:{n | <n>}>"; CompiledTemplate code = new TemplateCompiler().Compile(template); string asmExpected = "load_str 0, write, load_attr 1, load_str 2, map, write"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[hi , name, /_sub1]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }
public void TestAttr() { string template = "hi <name>"; CompiledTemplate code = new TemplateCompiler().Compile(template); string asmExpected = "load_str 0, " + "write, " + "load_attr 1, " + "write"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[hi , name]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }
public void TestElseIf() { string template = "go: <if(name)>hi, foo<elseif(user)>a user<endif>"; CompiledTemplate code = new TemplateCompiler().Compile(template); string asmExpected = "load_str 0, " + "write, " + "load_attr 1, " + "brf 17, " + "load_str 2, " + "write, " + "br 27, " + "load_attr 3, " + "brf 27, " + "load_str 4, " + "write"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[go: , name, hi, foo, user, a user]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }
public void TestEmbeddedRegion() { string template = "<@r>foo<@end>"; // compile as if in root dir and in template 'a' CompiledTemplate code = new TemplateCompiler(TemplateName.Root, new TemplateName("a")).Compile(template); string asmExpected = "new 0, write"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[/region__a__r]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }
public void TestRotMap() { string template = "hi <name:bold(),italics()>"; CompiledTemplate code = new TemplateCompiler().Compile(template); string asmExpected = "load_str 0, write, load_attr 1, load_str 2, load_str 3, rot_map 2, write"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[hi , name, /bold, /italics]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }
public void TestRegion() { string template = "x:<@r()>"; // compile as if in root dir and in template 'a' CompiledTemplate code = new TemplateCompiler(TemplateName.Root, new TemplateName("a")).Compile(template); string asmExpected = "load_str 0, write, new 1, write"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[x:, /region__a__r]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }
public void TestProp2() { string template = "<u.id>: <u.name>"; CompiledTemplate code = new TemplateCompiler().Compile(template); string asmExpected = "load_attr 0, load_prop 1, write, load_str 2, write, " + "load_attr 0, load_prop 3, write"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[u, id, : , name]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }
public void TestProp() { string template = "hi <a.b>"; CompiledTemplate code = new TemplateCompiler().Compile(template); string asmExpected = "load_str 0, write, load_attr 1, load_prop 2, write"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[hi , a, b]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }
public void TestOptions() { string template = "hi <name; anchor, wrap=foo(), separator=\", \">"; CompiledTemplate code = new TemplateCompiler().Compile(template); string asmExpected = "load_str 0, " + "write, " + "load_attr 1, " + "options, " + "load_str 2, " + "store_option 0, " + "new 3, " + "store_option 4, " + "load_str 4, " + "store_option 3, " + "write_opt"; string stringsExpected = // the ", , ," is the ", " separator string "[hi , name, true, /foo, , ]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); }
public void TestOptionAsTemplate() { string template = "hi <name; separator={, }>"; CompiledTemplate code = new TemplateCompiler().Compile(template); string asmExpected = "load_str 0, write, load_attr 1, options, new 2, store_option 3, write_opt"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[hi , name, /_sub1]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }
public void TestList() { string template = "<[a,b]>"; CompiledTemplate code = new TemplateCompiler().Compile(template); string asmExpected = "list, load_attr 0, add, load_attr 1, add, write"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[a, b]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }
public void TestInclude() { string template = "hi <foo()>"; CompiledTemplate code = new TemplateCompiler().Compile(template); string asmExpected = "load_str 0, write, new 1, write"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[hi , /foo]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }
public void TestIf() { string template = "go: <if(name)>hi, foo<endif>"; CompiledTemplate code = new TemplateCompiler().Compile(template); string asmExpected = "load_str 0, write, load_attr 1, brf 14, load_str 2, write"; string asmResult = code.Instructions(); Assert.AreEqual(asmExpected, asmResult); string stringsExpected = "[go: , name, hi, foo]"; string stringsResult = code.strings.ToElementString(); Assert.AreEqual(stringsExpected, stringsResult); }