ImportTemplates() public method

public ImportTemplates ( IToken fileNameToken ) : void
fileNameToken IToken
return void
Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }