public void GenerateParserConfig() { var errorReporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); environment.Setup(x => x.GetResourceName(".table")).Returns("Buffalo.Core.Parser.Configuration.AutoConfigParser.table"); GeneratorRunner.Run <ParserGenerator>(ParserTestFiles.Parser(), errorReporter.Object, environment.Object); }
public void NoProductions() { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); reporter.Setup(x => x.AddError(1, 1, 1, 1, "No productions defined.")).Verifiable(); GeneratorRunner.Run <ParserGenerator>( ParserTestFiles.NoProductions(), reporter.Object, environment.Object); reporter.Verify(); }
public void UnknownOption() { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); reporter.Setup(x => x.AddError(1, 1, 1, 8, "'Disarray' is not a recognised option.")).Verifiable(); GeneratorRunner.Run <ParserGenerator>( ParserTestFiles.UnknownOption(), reporter.Object, environment.Object); reporter.Verify(); }
public void InvalidProductionArg() { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); reporter.Setup(x => x.AddError(6, 15, 6, 16, "Invalid argument reference")).Verifiable(); GeneratorRunner.Run <ParserGenerator>( ParserTestFiles.InvalidProductionArg(), reporter.Object, environment.Object); reporter.Verify(); }
public void ReduceReduceConflict() { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); reporter.Setup(x => x.AddError(10, 1, 10, 3, "<B> -> causes a reduce-reduce conflict with <A> -> a.")).Verifiable(); GeneratorRunner.Run <ParserGenerator>( ParserTestFiles.ReduceReduceConflict(), reporter.Object, environment.Object); reporter.Verify(); }
public void UndefinedProduction() { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); reporter.Setup(x => x.AddError(1, 9, 1, 11, "The non-terminal <B> is not defined.")).Verifiable(); GeneratorRunner.Run <ParserGenerator>( ParserTestFiles.UndefinedProduction(), reporter.Object, environment.Object); reporter.Verify(); }
public void ReduceAcceptConflict() { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); reporter.Setup(x => x.AddError(6, 6, 6, 8, "<A> -> <A> causes a reduce-accept conflict.")).Verifiable(); GeneratorRunner.Run <ParserGenerator>( ParserTestFiles.ReduceAcceptConflict(), reporter.Object, environment.Object); reporter.Verify(); }
public void PseudoReachable() { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); reporter.Setup(x => x.AddError(1, 1, 1, 1, "All accept actions were optomised away.")).Verifiable(); GeneratorRunner.Run <ParserGenerator>( ParserTestFiles.ParserPseudoReachable(), reporter.Object, environment.Object); reporter.Verify(); }
public void DuplicateProduction() { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); environment.Setup(x => x.GetResourceName(".table")).Returns((string)null); reporter.Setup(x => x.AddWarning(6, 1, 6, 3, "The non-terminal <A> has already been defined.")).Verifiable(); GeneratorRunner.Run <ParserGenerator>( ParserTestFiles.DuplicateProduction(), reporter.Object, environment.Object); reporter.Verify(); }
public void UnreachableNonTerminal() { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); environment.Setup(x => x.GetResourceName(".table")).Returns((string)null); reporter.Setup(x => x.AddWarning(6, 1, 6, 3, "The non-terminal <B> is not reachable.")).Verifiable(); GeneratorRunner.Run <ParserGenerator>( ParserTestFiles.UnreachableNonTerminal(), reporter.Object, environment.Object); reporter.Verify(); }
public void ReDefinedDifferentType() { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); reporter.Setup(x => x.AddError(8, 16, 8, 16, "This type conflicts with a previous definition of <NonTerminal>.")).Verifiable(); reporter.Setup(x => x.AddWarning(8, 1, 8, 13, "The non-terminal <NonTerminal> has already been defined.")).Verifiable(); GeneratorRunner.Run <ParserGenerator>( ParserTestFiles.ReDefinedDifferentType(), reporter.Object, environment.Object); reporter.Verify(); }
public void DuplicateEntryPoints() { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); reporter.Setup(x => x.AddWarning(2, 7, 2, 9, "The non-terminal <A> is already an entry point.")).Verifiable(); environment.Setup(x => x.GetResourceName(".table")).Returns((string)null); GeneratorRunner.Run <ParserGenerator>( ParserTestFiles.DuplicateEntryPoints(), reporter.Object, environment.Object); reporter.Verify(); }
public void Generate(string setName) { var reporter = new Mock <IErrorReporter>(MockBehavior.Strict); var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict); var set = ParserTestFiles.GetNamedResourceSet(setName); var builder = new StringBuilder("Buffalo.Core.Test.Parser.Generation."); builder.Append(set.Code.ResourceName, ParserTestFiles.Namespace.Length, set.Code.ResourceName.Length - ParserTestFiles.Namespace.Length - 5); builder.Append(".table"); environment.Setup(x => x.GetResourceName(".table")).Returns(builder.ToString()); GeneratorRunner.Run <ParserGenerator>(set, reporter.Object, environment.Object); }
public static object ParserParseGraph() { return(GenerateParseGraph(ParserTestFiles.Parser().Config.ReadString())); }