Пример #1
0
        public void AnalyzerThrowExceptionTest(string input, string templateName)
        {
            var            isFail       = false;
            var            errorMessage = string.Empty;
            TemplateEngine engine       = null;

            try
            {
                engine = new TemplateEngine().AddFile(GetExampleFilePath(input));
            }
            catch (Exception)
            {
                isFail       = true;
                errorMessage = "error occurs when parsing file";
            }

            if (!isFail)
            {
                try
                {
                    engine.AnalyzeTemplate(templateName);
                    isFail       = true;
                    errorMessage = "No exception is thrown.";
                }
                catch (Exception e)
                {
                    TestContext.WriteLine(e.Message);
                }
            }

            if (isFail)
            {
                Assert.Fail(errorMessage);
            }
        }
        public void TestAnalyzer()
        {
            var testData = new object[]
            {
                new
                {
                    name               = "orderReadOut",
                    variableOptions    = new string[] { "orderType", "userName", "base", "topping", "bread", "meat" },
                    templateRefOptions = new string[] { "wPhrase", "pizzaOrderConfirmation", "sandwichOrderConfirmation" }
                },
                new
                {
                    name               = "sandwichOrderConfirmation",
                    variableOptions    = new string[] { "bread", "meat" },
                    templateRefOptions = new string[] { }
                },
                new
                {
                    name = "template1",

                    // TODO: input.property should really be: customer.property but analyzer needs to be
                    variableOptions    = new string[] { "alarms", "customer", "tasks[0]", "age", "city" },
                    templateRefOptions = new string[] { "template2", "template3", "template4", "template5", "template6" }
                },
                new
                {
                    name               = "coffee-to-go-order",
                    variableOptions    = new string[] { "coffee", "userName", "size", "price" },
                    templateRefOptions = new string[] { "wPhrase", "LatteOrderConfirmation", "MochaOrderConfirmation", "CuppuccinoOrderConfirmation" }
                },
                new
                {
                    name               = "structureTemplate",
                    variableOptions    = new string[] { "text", "newText" },
                    templateRefOptions = new string[] { "ST2" }
                },
            };

            foreach (var testItem in testData)
            {
                var engine                = new TemplateEngine().AddFile(GetExampleFilePath("analyzer.lg"));
                var evaled1               = engine.AnalyzeTemplate(testItem.GetType().GetProperty("name").GetValue(testItem).ToString());
                var variableEvaled        = evaled1.Variables;
                var variableEvaledOptions = testItem.GetType().GetProperty("variableOptions").GetValue(testItem) as string[];
                Assert.AreEqual(variableEvaledOptions.Length, variableEvaled.Count);
                variableEvaledOptions.ToList().ForEach(element => Assert.AreEqual(variableEvaled.Contains(element), true));
                var templateEvaled        = evaled1.TemplateReferences;
                var templateEvaledOptions = testItem.GetType().GetProperty("templateRefOptions").GetValue(testItem) as string[];
                Assert.AreEqual(templateEvaledOptions.Length, templateEvaled.Count);
                templateEvaledOptions.ToList().ForEach(element => Assert.AreEqual(templateEvaled.Contains(element), true));
            }
        }
        public void TestAnalyzelgTemplateFunction()
        {
            var engine         = new TemplateEngine().AddFile(GetExampleFilePath("lgTemplate.lg"));
            var evaled         = engine.AnalyzeTemplate("TemplateD");
            var variableEvaled = evaled.Variables;
            var options        = new List <string>()
            {
                "b"
            };

            Assert.AreEqual(variableEvaled.Count, options.Count);
            options.ForEach(e => Assert.AreEqual(variableEvaled.Contains(e), true));
        }