public void LowerCaseKeywordNext() { var code = new[] { "Dim i As Long", "Dim maxRow As Long", "", "maxRow = 120", "For i = 20 To maxRow Step 19", "", "Sheet5.Range(Rows(i), Rows(i + 4)).Cut Sheet61.Range(Rows(i))", "next i" }; var output = new[] { "Dim i As Long", "Dim maxRow As Long", "", "maxRow = 120", "For i = 20 To maxRow Step 19", "", " Sheet5.Range(Rows(i), Rows(i + 4)).Cut Sheet61.Range(Rows(i))", "next i" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(output.SequenceEqual(actual)); }
public void WorksOutsideOfProcedures() { var code = new[] { "#Const Foo = Bar 'Comment", "Private Sub Test()", "End Sub" }; var expected = new[] { "#Const Foo = Bar 'Comment", "", "Private Sub Test()", "End Sub" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void StandardGapWorks() { var code = new[] { "Private Sub Test()", "Debug.Print 'Comment", "End Sub" }; var expected = new[] { "Private Sub Test()", " Debug.Print 'Comment", "End Sub" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.EndOfLineCommentStyle = EndOfLineCommentStyle.StandardGap; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void IgnoreOperatorsInContinuationsOnWorks() { var code = new[] { "Private Function Test() As String", @"Test = ""String that is "" _", @"& ""split into multiple "" _", @"& ""lines.""", "End Function" }; var expected = new[] { "Private Function Test() As String", @" Test = ""String that is "" _", @" & ""split into multiple "" _", @" & ""lines.""", "End Function" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.IgnoreOperatorsInContinuations = true; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void AlignInColumnFallsBackToOneSpace() { var code = new[] { "Private Sub Test()", @"Debug.Print ""This string ends with a comment."" 'Comment", "End Sub" }; var expected = new[] { "Private Sub Test()", @" Debug.Print ""This string ends with a comment."" 'Comment", "End Sub" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void MultipleFunctionCallsWorks() { var code = new[] { "Private Function Foo()", "Foo = Bar(A, B, C + 1) = D * Baz(E, F, G) / (4 * X * Y) * Bar(A + 1, B + 1, C) _", "+ (D * (Bar(E, F, G) / D ^ 2 + Baz(X, Y, Z) / (2 * X)))", "End Function" }; var expected = new[] { "Private Function Foo()", " Foo = Bar(A, B, C + 1) = D * Baz(E, F, G) / (4 * X * Y) * Bar(A + 1, B + 1, C) _", " + (D * (Bar(E, F, G) / D ^ 2 + Baz(X, Y, Z) / (2 * X)))", "End Function" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.IgnoreOperatorsInContinuations = false; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void ContinuationsInProcedureDeclarationsWithAlignWorks() { var code = new[] { "Sub MySub()", "Dim x1 As Integer, x2 _", "As Integer", "End Sub" }; var expected = new[] { "Sub MySub()", " Dim x1 As Integer, x2 _", " As Integer", "End Sub" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.IndentFirstDeclarationBlock = true; s.AlignDims = true; s.AlignDimColumn = 15; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void ModulePrecompilerDirectivesWork() { var code = new[] { "#Const Foo = Bar", "#If Foo Then", "Const Baz = 1", "#Else", "Const Baz = 2", "#End If" }; var expected = new[] { "#Const Foo = Bar", "#If Foo Then", " Const Baz = 1", "#Else", " Const Baz = 2", "#End If" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void IndentationResetsAfterEnum() { var code = new[] { "Public Enum Foo", "X = 1", "Y = 2", "End Enum", "", "Private Sub Test()", "If Foo Then", "Debug.Print", "End If", "End Sub" }; var expected = new[] { "Public Enum Foo", " X = 1", " Y = 2", "End Enum", "", "Private Sub Test()", " If Foo Then", " Debug.Print", " End If", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void LineNumbersWithColonWork() { var code = new[] { "Private Sub Test()", "5: If Foo Then", "10: Debug.Print", "15: End If", "End Sub" }; var expected = new[] { "Private Sub Test()", "5: If Foo Then", "10: Debug.Print", "15: End If", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void LineNumberLongerThanIndentFallsBackToOneSpace() { var code = new[] { "Private Sub Test()", "10000 If Foo Then", "10001 Debug.Print", "10002 End If", "End Sub" }; var expected = new[] { "Private Sub Test()", "10000 If Foo Then", "10001 Debug.Print", "10002 End If", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void HexLineNumbersWork() { var code = new[] { "Private Sub Test()", "&HAAA If Foo Then", "&HABE Debug.Print", "&HAD2 End If", "End Sub" }; var expected = new[] { "Private Sub Test()", "2730 If Foo Then", "2750 Debug.Print", "2770 End If", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void LineNumbersAreNotIncludedInIndentAmount() { var code = new[] { "Private Sub Test()", "5 If Foo Then", "10 Debug.Print", "15 End If", "End Sub" }; var expected = new[] { "Private Sub Test()", "5 If Foo Then", "10 Debug.Print", "15 End If", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void SingleLineElseIfElseStatementWorks() { var code = new[] { "Public Sub Test()", "If x Then", "NotFoobar", "ElseIf Foo And Bar Then Foobar", "Else", "Baz", "End If", "End Sub" }; var expected = new[] { "Public Sub Test()", " If x Then", " NotFoobar", " ElseIf Foo And Bar Then Foobar", " Else", " Baz", " End If", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void DoWhileOnTwoLinesWorks() { var code = new[] { "Public Sub Test()", "Do _", "While X < 10: X = X + 1: Loop", "Debug.Print X", "End Sub" }; var expected = new[] { "Public Sub Test()", " Do _", " While X < 10: X = X + 1: Loop", " Debug.Print X", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void OverIndentationLeftAligns() { var code = new[] { " Private Sub Test()", " If Foo Then", " Debug.Print", " End If", " End Sub" }; var expected = new[] { "Private Sub Test()", " If Foo Then", " Debug.Print", " End If", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void ContinuedIfThenWorks() { var code = new[] { "Public Sub Test()", "If _", "Foo = True _", "Then", "Debug.Print", "End If", "End Sub" }; var expected = new[] { "Public Sub Test()", " If _", " Foo = True _", " Then", " Debug.Print", " End If", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void ElseIfStatementWorks() { var code = new[] { "Public Function Test() As Integer", "If Foo = 1 Then", "Bar = 3", "ElseIf Foo = 3 Then", "Bar = 1", "End If", "Test = Bar", "End Function" }; var expected = new[] { "Public Function Test() As Integer", " If Foo = 1 Then", " Bar = 3", " ElseIf Foo = 3 Then", " Bar = 1", " End If", " Test = Bar", "End Function" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void MultiLineContinuedFunctionWorks() { var code = new[] { "Public Sub Test()", "Debug.Print Foo(Var1, Var2, _", "Var3, Var4, _", "Var5)", "End Sub" }; var expected = new[] { "Public Sub Test()", " Debug.Print Foo(Var1, Var2, _", " Var3, Var4, _", " Var5)", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void SubFooTokenIsNotInterpretedAsProcedureStart() { var code = new[] { "Public Sub Test()", "If Subject = 0 Then", "Subject = 1", "End If", "End Sub" }; var expected = new[] { "Public Sub Test()", " If Subject = 0 Then", " Subject = 1", " End If", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void ContinuationWithOnlyCommentWorks() { var code = new[] { "Sub MySub()", "Debug.Print Foo _", "'Is this and end of line comment or not...?", "End Sub" }; var expected = new[] { "Sub MySub()", " Debug.Print Foo _", " 'Is this and end of line comment or not...?", "End Sub" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.AlignCommentsWithCode = false; s.IndentFirstDeclarationBlock = true; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void AlignmentAnchorsInStringLiteralsAreIgnored() { var code = new[] { "Sub Test()", "Dim LoremIpsum As String", @"LoremIpsum = ""Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam dictum,"" & vbCrLf _", @"& ""felis in tempor finibus, arcu lectus molestie urna, eget interdum turpis"" & vbCrLf _", @"& ""tellus ac diam. Nulla mauris lectus, vulputate et fringilla ac, iaculis eget urna."" & vbCrLf _", @"& ""Ut feugiat felis lacinia eros vestibulum facilisis. Ut euismod dapibus augue,"" & vbCrLf _", @"& ""lacinia elementum elit dictum in. Nam in imperdiet tortor. Curabitur efficitur libero"" & vbCrLf _", @"& ""lacus, et placerat metus sodales sit amet.""", "Debug.Print LoremIpsum", "End Sub" }; var expected = new[] { "Sub Test()", " Dim LoremIpsum As String", @" LoremIpsum = ""Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam dictum,"" & vbCrLf _", @" & ""felis in tempor finibus, arcu lectus molestie urna, eget interdum turpis"" & vbCrLf _", @" & ""tellus ac diam. Nulla mauris lectus, vulputate et fringilla ac, iaculis eget urna."" & vbCrLf _", @" & ""Ut feugiat felis lacinia eros vestibulum facilisis. Ut euismod dapibus augue,"" & vbCrLf _", @" & ""lacinia elementum elit dictum in. Nam in imperdiet tortor. Curabitur efficitur libero"" & vbCrLf _", @" & ""lacus, et placerat metus sodales sit amet.""", " Debug.Print LoremIpsum", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void MultipleSplitNamedParametersAlignCorrectly() { var code = new[] { "Sub Foo()", "Debug.Print WorksheetFunction.Sum(arg1:=1, arg2:=2, arg3 _", ":=3, arg4:=4, arg5:=6, arg6 _", ":=6)", "End Sub" }; var expected = new[] { "Sub Foo()", " Debug.Print WorksheetFunction.Sum(arg1:=1, arg2:=2, arg3 _", " :=3, arg4:=4, arg5:=6, arg6 _", " :=6)", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void IfThenDoesntGetMangled() { var code = new[] { "Private Sub Test()", "If (Foo And Bar) Or Baz Then", @"Debug.Print ""Foo & Bar | Baz""", "End If", "End Sub" }; var expected = new[] { "Private Sub Test()", " If (Foo And Bar) Or Baz Then", @" Debug.Print ""Foo & Bar | Baz""", " End If", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void CommentOnlyLineIgnoresEndOfLineSetting() { var code = new[] { "Private Sub Test()", "'Comment", "End Sub" }; var expected = new[] { "Private Sub Test()", " 'Comment", "End Sub" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void MultilineCommentAlignsCorrectly() { var code = new[] { "Private Sub Test()", "'Long multiline comment _", "blah blah blah, etc. _", "etc.", "End Sub" }; var expected = new[] { "Private Sub Test()", " 'Long multiline comment _", " blah blah blah, etc. _", " etc.", "End Sub" }; var indenter = new Indenter(null, () => IndenterSettingsTests.GetMockIndenterSettings()); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void WorksInsideEnums() { var code = new[] { "Public Enum Foo", "X = 1 'Comment", "Y = 2", "End Enum" }; var expected = new[] { "Public Enum Foo", " X = 1 'Comment", " Y = 2", "End Enum" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void ContinuedEndOfLineCommentAligned() { var code = new[] { "Private Sub Test()", "Dim Foo As Integer 'End of line comment _", "Continued end of line comment", "End Sub" }; var expected = new[] { "Private Sub Test()", " Dim Foo As Integer 'End of line comment _", " Continued end of line comment", "End Sub" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn; s.EndOfLineCommentColumnSpaceAlignment = 50; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void MixedSelectSyntaxWorks() { var code = new[] { "Public Sub Test()", "Select Case Foo", @"Case 1: Debug.Print ""Foo""", "Case 2", @"Debug.Print ""Bar""", "End Select", "End Sub" }; var expected = new[] { "Public Sub Test()", " Select Case Foo", @" Case 1: Debug.Print ""Foo""", " Case 2", @" Debug.Print ""Bar""", " End Select", "End Sub" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.IndentCase = true; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void IndentSpacesSettingIsUsed() { var code = new[] { "Private Sub Test()", "If Foo Then", "Debug.Print", "End If", "End Sub" }; var expected = new[] { "Private Sub Test()", " If Foo Then", " Debug.Print", " End If", "End Sub" }; var indenter = new Indenter(null, () => { var s = IndenterSettingsTests.GetMockIndenterSettings(); s.IndentSpaces = 3; return(s); }); var actual = indenter.Indent(code); Assert.IsTrue(expected.SequenceEqual(actual)); }