/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Features/VisualBasicTest/SplitOrMergeIfStatements/MergeNestedIfStatementsTests_WithNested.vb
322 строки
8 KB
Cyrus Najmabadi
Move test down to features layer
10 янв 2024, 05:32
10 янв 2024, 05:32
9d952ca
Код
Авторство
О чём код?
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.SplitOrMergeIfStatements Partial Public NotInheritable Class MergeNestedIfStatementsTests <Fact> Public Async Function MergedOnOuterIf() As Task Await TestInRegularAndScriptAsync( "class C sub M(a as boolean, b as boolean) [||]if a then if b then end if end if end sub end class", "class C sub M(a as boolean, b as boolean) if a AndAlso b then end if end sub end class") End Function <Theory> <InlineData("[||]elseif a then")> <InlineData("el[||]seif a then")> <InlineData("elseif[||] a then")> <InlineData("elseif a [||]then")> <InlineData("elseif a th[||]en")> <InlineData("elseif a then[||]")> <InlineData("[|elseif|] a then")> <InlineData("[|elseif a then|]")> Public Async Function MergedOnOuterElseIfSpans(elseIfLine As String) As Task Await TestInRegularAndScriptAsync( $"class C sub M(a as boolean, b as boolean) if true then {elseIfLine} if b then end if end if end sub end class", "class C sub M(a as boolean, b as boolean) if true then elseif a AndAlso b then end if end sub end class") End Function <Fact> Public Async Function MergedOnOuterElseIfExtendedStatementSelection() As Task Await TestInRegularAndScriptAsync( "class C sub M(a as boolean, b as boolean) if true then [| elseif a then |] if b then end if end if end sub end class", "class C sub M(a as boolean, b as boolean) if true then elseif a AndAlso b then end if end sub end class") End Function <Fact> Public Async Function MergedOnOuterElseIfFullSelection() As Task Await TestInRegularAndScriptAsync( "class C sub M(a as boolean, b as boolean) if true then [| elseif a then if b then end if end if |] end sub end class", "class C sub M(a as boolean, b as boolean) if true then elseif a AndAlso b then end if end sub end class") End Function <Fact> Public Async Function MergedOnOuterElseIfFullSelectionWithElseClause() As Task Await TestInRegularAndScriptAsync( "class C sub M(a as boolean, b as boolean) if true then [|elseif a then if b then System.Console.WriteLine() else end if else end if|] end sub end class", "class C sub M(a as boolean, b as boolean) if true then elseif a AndAlso b then System.Console.WriteLine() else end if end sub end class") End Function <Fact> Public Async Function NotMergedOnOuterElseIfFullSelectionWithoutElseClause() As Task Await TestMissingInRegularAndScriptAsync( "class C sub M(a as boolean, b as boolean) if true then [|elseif a then if b then System.Console.WriteLine() else end if|] else end if end sub end class") End Function <Fact> Public Async Function NotMergedOnOuterElseIfFullSelectionWithParentIf() As Task Await TestMissingInRegularAndScriptAsync( "class C sub M(a as boolean, b as boolean) [|if true then elseif a then if b then System.Console.WriteLine() else end if else end if|] end sub end class") End Function <Theory> <InlineData("elseif [||]a then")> <InlineData("[|else|]if a then")> <InlineData("[|elseif a|] then")> <InlineData("elseif [|a|] then")> <InlineData("elseif a [|then|]")> Public Async Function NotMergedOnOuterElseIfSpans(elseIfLine As String) As Task Await TestMissingInRegularAndScriptAsync( $"class C sub M(a as boolean, b as boolean) if true then {elseIfLine} if b then end if end if end sub end class") End Function <Fact> Public Async Function NotMergedOnOuterElseIfOverreachingSelection() As Task Await TestMissingInRegularAndScriptAsync( "class C sub M(a as boolean, b as boolean) if true then [|elseif a then |] if b then end if end if end sub end class") End Function <Fact> Public Async Function NotMergedOnOuterElseIfEndStatementSelection() As Task Await TestMissingInRegularAndScriptAsync( "class C sub M(a as boolean, b as boolean) if true then elseif a then if b then end if [|end if|] end sub end class") End Function <Fact> Public Async Function NotMergedOnOuterElseIfEndStatementCaret() As Task Await TestMissingInRegularAndScriptAsync( "class C sub M(a as boolean, b as boolean) if true then elseif a then if b then end if [||]end if end sub end class") End Function <Fact> Public Async Function MergedOnMiddleIfMergableWithNestedOnly() As Task Const Initial As String = "class C sub M(a as boolean, b as boolean, c as boolean) if a then [||]if b then if c then System.Console.WriteLine() end if end if return end if end sub end class" Const Expected As String = "class C sub M(a as boolean, b as boolean, c as boolean) if a then if b AndAlso c then System.Console.WriteLine() end if return end if end sub end class" Await TestActionCountAsync(Initial, 1) Await TestInRegularAndScriptAsync(Initial, Expected) End Function <Fact> Public Async Function MergedOnMiddleIfMergableWithOuterOnly() As Task Const Initial As String = "class C sub M(a as boolean, b as boolean, c as boolean) if a then [||]if b then if c then System.Console.WriteLine() end if return end if end if end sub end class" Const Expected As String = "class C sub M(a as boolean, b as boolean, c as boolean) if a AndAlso b then if c then System.Console.WriteLine() end if return end if end sub end class" Await TestActionCountAsync(Initial, 1) Await TestInRegularAndScriptAsync(Initial, Expected) End Function <Fact> Public Async Function MergedOnMiddleIfMergableWithBoth() As Task Const Initial As String = "class C sub M(a as boolean, b as boolean, c as boolean) if a then [||]if b then if c then System.Console.WriteLine() end if end if end if end sub end class" Const Expected1 As String = "class C sub M(a as boolean, b as boolean, c as boolean) if a AndAlso b then if c then System.Console.WriteLine() end if end if end sub end class" Const Expected2 As String = "class C sub M(a as boolean, b as boolean, c as boolean) if a then if b AndAlso c then System.Console.WriteLine() end if end if end sub end class" Await TestActionCountAsync(Initial, 2) Await TestInRegularAndScriptAsync(Initial, Expected1, index:=0) Await TestInRegularAndScriptAsync(Initial, Expected2, index:=1) End Function End Class End Namespace