public void GenerateUpgrade() { IMdlParser mdlParser = new MdlParser(MdlParserTestFixture.CreateScanner(@"version 1: add table User: Login type => String, length => 200, nullable => false")); IAstNode astNode = mdlParser.Parse(); IMdlCompilerStage upgradeGenerationStage = new UpgradeGenerationStage(); astNode.Accept(upgradeGenerationStage); Assert.IsInstanceOfType(typeof(IUpgradeNode), astNode.ChildNodes[0]); Assert.AreEqual(1, astNode.ChildNodes[0].ChildNodes.Count); }
private IAstNode GetAstNode() { IAstNode astNode; using(Stream resourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("octalforty.Wizardby.Tests.Resources.Blog.mdl")) { IMdlParser mdlParser = new MdlParser(MdlParserTestFixture.CreateScanner(new StreamReader(resourceStream, Encoding.UTF8))); astNode = mdlParser.Parse(); } // using // // Process type aliases astNode.Accept(new TypeAliasResolutionCompilerStage()); // // Resolve PKs astNode.Accept(new PrimaryKeyResolutionCompilerStage()); // // Bind stuff BindingCompilerStage bindingCompilerStage = new BindingCompilerStage(); bindingCompilerStage.SetEnvironment(new Wizardby.Core.Compiler.Environment()); astNode.Accept(bindingCompilerStage); // // Flatten AST astNode.Accept(new AstFlattenerCompilerStage()); // // We also need to generate upgrade since that's what downgrade generator is expecting IMdlCompilerStage upgradeGenerationStage = new UpgradeGenerationStage(); astNode.Accept(upgradeGenerationStage); IMdlCompilerStage downgradeGenerationStage = new DowngradeGenerationStage(); downgradeGenerationStage.SetEnvironment(new Wizardby.Core.Compiler.Environment()); astNode.Accept(downgradeGenerationStage); return astNode; }