示例#1
0
        public void Kleins_ShouldProduceTextRepresentation_OfTheTokensOfAProgram()
        {
            var result = ScriptRunner.Execute(TestContext.CurrentContext.TestDirectory,
                                              @".\kleins.ps1 ..\..\Programs\scanner\reserved-words-and-symbols.kln");

            ConsoleWriteLine.If(result.HasErrors, result.ToString());
            Assert.That(result.HasErrors, Is.False);
            Assert.That(result.Output.Count, Is.EqualTo(23));
            Assert.That(result.Output[0].ToString(), Is.EqualTo("IntegerType 'integer'"));
        }
示例#2
0
        public void Compiler_ShouldCompile_AllOfMyPrograms()
        {
            var  folder  = Path.Combine(TestContext.CurrentContext.TestDirectory, @"..\..\..\KleinPrograms");
            var  files   = Directory.GetFiles(folder, "*.kln");
            bool allPass = true;
            var  result  = new StringBuilder();

            foreach (var file in files)
            {
                var input    = File.ReadAllText(file);
                var frontEnd = new FrontEnd();
                if (frontEnd.Compile(input) == null)
                {
                    allPass = false;
                    result.AppendLine($"{Path.GetFileName(file)}{frontEnd.ErrorRecord.FilePosition} {frontEnd.ErrorRecord}");
                }
            }
            ConsoleWriteLine.If(allPass != true, result.ToString());
            Assert.That(allPass, Is.True);
        }