diff --git a/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.StatementList.cs b/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.StatementList.cs index 1f6945f..6dedb21 100644 --- a/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.StatementList.cs +++ b/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.StatementList.cs @@ -23,7 +23,10 @@ public override void ExplicitVisit(StatementList node) } else { - NewLine(); + for (var i = 0; i < _options.NumNewlinesAfterStatement; i++) + { + NewLine(); + } } GenerateFragmentIfNotNull(statement); diff --git a/SqlScriptDom/ScriptDom/SqlServer/Settings/SqlScriptGeneratorOptions.xml b/SqlScriptDom/ScriptDom/SqlServer/Settings/SqlScriptGeneratorOptions.xml index e81fc47..1706235 100644 --- a/SqlScriptDom/ScriptDom/SqlServer/Settings/SqlScriptGeneratorOptions.xml +++ b/SqlScriptDom/ScriptDom/SqlServer/Settings/SqlScriptGeneratorOptions.xml @@ -28,6 +28,9 @@ IncludeSemiColons_Description Gets or sets a boolean indicating if a semi colon should be included after each statement + + Gets or sets the number of newlines to include after each statement + diff --git a/Test/SqlDom/ScriptGeneratorTests.cs b/Test/SqlDom/ScriptGeneratorTests.cs index 28e7404..ee21d8b 100644 --- a/Test/SqlDom/ScriptGeneratorTests.cs +++ b/Test/SqlDom/ScriptGeneratorTests.cs @@ -4,6 +4,7 @@ // //------------------------------------------------------------------------------ +using System; using Microsoft.SqlServer.TransactSql.ScriptDom; using Microsoft.VisualStudio.TestTools.UnitTesting; using SqlStudio.Tests.AssemblyTools.TestCategory; @@ -113,5 +114,48 @@ public void TestSqlServerlessScriptGenerator() var scriptGenerator = new SqlServerlessScriptGenerator(options); Assert.AreEqual(SqlVersion.Sql160, scriptGenerator.Options.SqlVersion); } + + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void TestNewlinesBetweenStatementsGeneratorOption() { + var tableName = new SchemaObjectName(); + tableName.Identifiers.Add(new Identifier { Value = "TableName" }); + + var tableStatement = new CreateTableStatement + { + SchemaObjectName = tableName + }; + var tableStatementString = "CREATE TABLE TableName;"; + + var statements = new StatementList(); + statements.Statements.Add(tableStatement); + statements.Statements.Add(tableStatement); + + var generatorOptions = new SqlScriptGeneratorOptions { + KeywordCasing = KeywordCasing.Uppercase, + IncludeSemicolons = true, + NumNewlinesAfterStatement = 0 + }; + + var generator = new Sql80ScriptGenerator(generatorOptions); + + generator.GenerateScript(statements, out var sql); + + Assert.AreEqual(tableStatementString + tableStatementString, sql); + + generatorOptions.NumNewlinesAfterStatement = 1; + generator = new Sql80ScriptGenerator(generatorOptions); + + generator.GenerateScript(statements, out sql); + + Assert.AreEqual(tableStatementString + Environment.NewLine + tableStatementString, sql); + + generatorOptions.NumNewlinesAfterStatement = 2; + generator = new Sql80ScriptGenerator(generatorOptions); + + generator.GenerateScript(statements, out sql); + Assert.AreEqual(tableStatementString + Environment.NewLine + Environment.NewLine + tableStatementString, sql); + } } }