public ImportTemplates ( IToken fileNameToken ) : void | ||
fileNameToken | IToken | |
return | void |
public void TestSuper() { string dir1 = Path.Combine(tmpdir, "d1"); string a = "a() ::= <<dir1 a>>\n"; string b = "b() ::= <<dir1 b>>\n"; writeFile(dir1, "a.st", a); writeFile(dir1, "b.st", b); string dir2 = Path.Combine(tmpdir, "d2"); a = "a() ::= << [<super.a()>] >>\n"; writeFile(dir2, "a.st", a); TemplateGroup group1 = new TemplateGroupDirectory(dir1); TemplateGroup group2 = new TemplateGroupDirectory(dir2); group2.ImportTemplates(group1); Template st = group2.GetInstanceOf("a"); string expected = " [dir1 a] "; string result = st.Render(); Assert.AreEqual(expected, result); }
public void TestUnloadImportedTemplate() { string dir1 = Path.Combine(tmpdir, "d1"); string a = "a() ::= <<dir1 a>>\n"; string b = "b() ::= <<dir1 b>>\n"; writeFile(dir1, "a.st", a); writeFile(dir1, "b.st", b); string dir2 = Path.Combine(tmpdir, "d2"); a = "a() ::= << <b()> >>\n"; writeFile(dir2, "a.st", a); TemplateGroup group1 = new TemplateGroupDirectory(dir1); TemplateGroup group2 = new TemplateGroupDirectory(dir2); group2.ImportTemplates(group1); Template st = group2.GetInstanceOf("a"); Template st2 = group2.GetInstanceOf("b"); int originalHashCode = RuntimeHelpers.GetHashCode(st); int originalHashCode2 = RuntimeHelpers.GetHashCode(st2); group1.Unload(); // blast cache st = group2.GetInstanceOf("a"); int newHashCode = RuntimeHelpers.GetHashCode(st); Assert.AreEqual(originalHashCode == newHashCode, false); // diff objects string expected = " dir1 b "; string result = st.Render(); Assert.AreEqual(expected, result); st = group2.GetInstanceOf("b"); int newHashCode2 = RuntimeHelpers.GetHashCode(st); Assert.AreEqual(originalHashCode2 == newHashCode2, false); // diff objects result = st.Render(); expected = "dir1 b"; Assert.AreEqual(expected, result); }
public void TestPolymorphicTemplateReference() { string dir1 = Path.Combine(tmpdir, "d1"); string b = "b() ::= <<dir1 b>>\n"; writeFile(dir1, "b.st", b); string dir2 = Path.Combine(tmpdir, "d2"); string a = "a() ::= << <b()> >>\n"; b = "b() ::= <<dir2 b>>\n"; writeFile(dir2, "a.st", a); writeFile(dir2, "b.st", b); TemplateGroup group1 = new TemplateGroupDirectory(dir1); TemplateGroup group2 = new TemplateGroupDirectory(dir2); group1.ImportTemplates(group2); // normal lookup; a created from dir2 calls dir2.b Template st = group2.GetInstanceOf("a"); string expected = " dir2 b "; string result = st.Render(); Assert.AreEqual(expected, result); // polymorphic lookup; a created from dir1 calls dir2.a which calls dir1.b st = group1.GetInstanceOf("a"); expected = " dir1 b "; result = st.Render(); Assert.AreEqual(expected, result); }
public void TestImportTemplateInGroupFileFromDir() { string dir = tmpdir; string a = "a() ::= << <b()> >>\n"; writeFile(dir, "x/a.st", a); string groupFile = "b() ::= \"group file b\"\n" + "c() ::= \"group file c\"\n"; writeFile(dir, Path.Combine("y", "group.stg"), groupFile); TemplateGroup group1 = new TemplateGroupDirectory(Path.Combine(dir, "x")); TemplateGroup group2 = new TemplateGroupFile(Path.Combine(dir, "y", "group.stg")); group1.ImportTemplates(group2); Template st = group1.GetInstanceOf("a"); st.impl.Dump(); string expected = " group file b "; string result = st.Render(); Assert.AreEqual(expected, result); }
public void TestImportTemplateFromSubdir() { // /randomdir/x/subdir/a and /randomdir/y/subdir/b string dir = tmpdir; string a = "a() ::= << </subdir/b()> >>\n"; string b = "b() ::= <<x's subdir/b>>\n"; writeFile(dir, Path.Combine("x", "subdir", "a.st"), a); writeFile(dir, Path.Combine("y", "subdir", "b.st"), b); TemplateGroup group1 = new TemplateGroupDirectory(Path.Combine(dir, "x")); TemplateGroup group2 = new TemplateGroupDirectory(Path.Combine(dir, "y")); group1.ImportTemplates(group2); Template st = group1.GetInstanceOf("subdir/a"); string expected = " x's subdir/b "; string result = st.Render(); Assert.AreEqual(expected, result); }
public void TestImportTemplateFromGroupFile() { // /randomdir/x/subdir/a and /randomdir/y/subdir.stg which has a and b string dir = tmpdir; string a = "a() ::= << </subdir/b()> >>\n"; // get b imported from subdir.stg writeFile(dir, Path.Combine("x", "subdir", "a.st"), a); string groupFile = "a() ::= \"group file: a\"\n" + "b() ::= \"group file: b\"\n"; writeFile(dir, Path.Combine("y", "subdir.stg"), groupFile); TemplateGroup group1 = new TemplateGroupDirectory(Path.Combine(dir, "x")); TemplateGroup group2 = new TemplateGroupDirectory(Path.Combine(dir, "y")); group1.ImportTemplates(group2); Template st = group1.GetInstanceOf("subdir/a"); Assert.IsNotNull(st); Assert.IsNotNull(group1.GetInstanceOf("subdir/b")); string expected = " group file: b "; string result = st.Render(); Assert.AreEqual(expected, result); }
public void TestImportTemplateFromAnotherGroupObject() { /* dir1 a.st b.st dir2 a.st */ string dir1 = tmpdir; string a = "a() ::= <<dir1 a>>\n"; string b = "b() ::= <<dir1 b>>\n"; writeFile(dir1, "a.st", a); writeFile(dir1, "b.st", b); string dir2 = tmpdir; a = "a() ::= << <b()> >>\n"; writeFile(dir2, "a.st", a); TemplateGroup group1 = new TemplateGroupDirectory(dir1); TemplateGroup group2 = new TemplateGroupDirectory(dir2); group2.ImportTemplates(group1); Template st = group2.GetInstanceOf("b"); string expected = "dir1 b"; string result = st.Render(); Assert.AreEqual(expected, result); // do it again, but make a template ref imported template st = group2.GetInstanceOf("a"); expected = " dir1 b "; result = st.Render(); Assert.AreEqual(expected, result); }