public void TestDefine()
        {
            var expectedResult = "COOL!";

            TemplateUtil.EvaluateDefine(expectedResult, "<DEFINE {Var}>" + expectedResult + "</DEFINE>{Var}");

            //Redefine
            TemplateUtil.EvaluateDefine(expectedResult, "<DEFINE {Var}>NOT COOL</DEFINE><DEFINE {Var}>" + expectedResult + "</DEFINE>{Var}");

            //Redefine in subscope is ignored
            TemplateUtil.EvaluateDefine(expectedResult, "<DEFINE {Var}>" + expectedResult + "</DEFINE><IF [\"True\"]><DEFINE {Var}>NOT COOL</DEFINE></IF>{Var}");
            TemplateUtil.EvaluateDefine(expectedResult, "<DEFINE {Var}>" + expectedResult + "</DEFINE><FOR [{I} From \"1\" To \"5\"]><DEFINE {Var}>NOT COOL</DEFINE></FOR>{Var}");
            TemplateUtil.EvaluateDefine(expectedResult, "<DEFINE {Var}>" + expectedResult + "</DEFINE><FOREACH [{X} IN (\"A\",\"B\",\"C\")]><DEFINE {Var}>NOT COOL</DEFINE></FOREACH>{Var}");
        }
        public void TestDefineArray()
        {
            var stuff          = new[] { "A", "B", "C", "D", "E", "F" };
            var expectedResult = string.Concat(stuff);

            TemplateUtil.EvaluateDefine(expectedResult, "<DEFINE_ARRAY {Vars}>" + string.Join(Environment.NewLine, stuff) + "</DEFINE_ARRAY><FOREACH {Vars}>{Vars}</FOREACH>");
            TemplateUtil.EvaluateDefine(expectedResult, "<DEFINE_ARRAY {Vars}>" + Environment.NewLine + string.Join(Environment.NewLine, stuff) + Environment.NewLine + "</DEFINE_ARRAY><FOREACH {Vars}>{Vars}</FOREACH>");

            //Redefine
            TemplateUtil.EvaluateDefine(expectedResult, "<DEFINE_ARRAY {Vars}>" + string.Concat(stuff.Reverse()) + "</DEFINE_ARRAY><DEFINE_ARRAY {Vars}>" + string.Join(Environment.NewLine, stuff) + "</DEFINE_ARRAY><FOREACH {Vars}>{Vars}</FOREACH>");

            //Redefine in subscope is ignored
            TemplateUtil.EvaluateDefine(expectedResult, "<DEFINE_ARRAY {Vars}>" + string.Join(Environment.NewLine, stuff) + "</DEFINE_ARRAY><IF [\"True\"]><DEFINE_ARRAY {Vars}>" + string.Concat(stuff.Reverse()) + "</DEFINE_ARRAY></IF><FOREACH {Vars}>{Vars}</FOREACH>");
            TemplateUtil.EvaluateDefine(expectedResult, "<DEFINE_ARRAY {Vars}>" + string.Join(Environment.NewLine, stuff) + "</DEFINE_ARRAY><FOR [{I} From \"1\" To \"5\"]><DEFINE_ARRAY {Vars}>" + string.Concat(stuff.Reverse()) + "</DEFINE_ARRAY></FOR><FOREACH {Vars}>{Vars}</FOREACH>");
            TemplateUtil.EvaluateDefine(expectedResult, "<DEFINE_ARRAY {Vars}>" + string.Join(Environment.NewLine, stuff) + "</DEFINE_ARRAY><FOREACH [{X} IN (\"A\",\"B\",\"C\")]><DEFINE_ARRAY {Vars}>" + string.Concat(stuff.Reverse()) + "</DEFINE_ARRAY></FOREACH><FOREACH {Vars}>{Vars}</FOREACH>");
        }