提交 2ff41e0c 编写于 作者: C CyrusNajmabadi

Add VB tests.

上级 41fbcd0f
......@@ -195,6 +195,7 @@
<Compile Include="CodeActions\ConvertIfToSwitch\ConvertIfToSwitchTests.vb" />
<Compile Include="CodeActions\ConvertNumericLiteral\ConvertNumericLiteralTests.vb" />
<Compile Include="CodeActions\UseNamedArguments\UseNamedArgumentsTests.vb" />
<Compile Include="MoveDeclarationNearReference\MoveDeclarationNearReferenceTests.vb" />
<Compile Include="RemoveUnusedVariable\RemoveUnusedVariableTest.vb" />
<Compile Include="InitializeParameter\AddParameterCheckTests.vb" />
<Compile Include="OrderModifiers\OrderModifiersTests.vb" />
......
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports System.Threading.Tasks
Imports Microsoft.CodeAnalysis.CodeRefactorings
Imports Microsoft.CodeAnalysis.VisualBasic.MoveDeclarationNearReference
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.CodeRefactorings
Imports Roslyn.Test.Utilities
Imports Xunit
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.MoveDeclarationNearReference
Public Class MoveDeclarationNearReferenceTests
Inherits AbstractVisualBasicCodeActionTest
Protected Overrides Function CreateCodeRefactoringProvider(workspace As Workspace, parameters As TestParameters) As CodeRefactoringProvider
Return New VisualBasicMoveDeclarationNearReferenceCodeRefactoringProvider()
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestMove1() As Task
Await TestInRegularAndScriptAsync(
"class C
sub M()
dim [||]x as integer
if true
Console.WriteLine(x)
end if
end sub
end class",
"class C
sub M()
if true
dim x as integer
Console.WriteLine(x)
end if
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestMove2() As Task
Await TestInRegularAndScriptAsync(
"class C
sub M()
dim [||]x as integer
Console.WriteLine()
Console.WriteLine(x)
end sub
end class",
"class C
sub M()
Console.WriteLine()
dim x as integer
Console.WriteLine(x)
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestMove3() As Task
Await TestInRegularAndScriptAsync(
"class C
sub M()
dim [||]x as integer
Console.WriteLine()
if true
Console.WriteLine(x)
end if
if true
Console.WriteLine(x)
end if
end sub
end class",
"class C
sub M()
Console.WriteLine()
dim x as integer
if true
Console.WriteLine(x)
end if
if true
Console.WriteLine(x)
end if
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestMove4() As Task
Await TestInRegularAndScriptAsync(
"class C
sub M()
dim [||]x as integer
Console.WriteLine()
if true
Console.WriteLine(x)
end if
end sub
end class",
"class C
sub M()
Console.WriteLine()
if true
dim x as integer
Console.WriteLine(x)
end if
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestAssign1() As Task
Await TestInRegularAndScriptAsync(
"class C
sub M()
dim [||]x as integer
if true
x = 5
Console.WriteLine(x)
end if
end sub
end class",
"class C
sub M()
if true
dim x as integer = 5
Console.WriteLine(x)
end if
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestAssign2() As Task
Await TestInRegularAndScriptAsync(
"class C
sub M()
dim [||]x as integer = 0
if true
x = 5
Console.WriteLine(x)
end if
end sub
end class",
"class C
sub M()
if true
dim x as integer = 5
Console.WriteLine(x)
end if
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestAssign3() As Task
Await TestInRegularAndScriptAsync(
"class C
sub M()
dim [||]x = ctype(0, integer)
if true
x = 5
Console.WriteLine(x)
end if
end sub
end class",
"class C
sub M()
if true
dim x = ctype(0, integer)
x = 5
Console.WriteLine(x)
end if
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestMissing1() As Task
Await TestMissingInRegularAndScriptAsync(
"class C
sub M()
dim [||]x as integer
Console.WriteLine(x)
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestMissingWhenReferencedInDeclaration() As Task
Await TestMissingInRegularAndScriptAsync(
"class Program
sub M()
dim [||]x as object() = { x }
x.ToString()
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestMissingWhenInDeclarationGroup() As Task
Await TestMissingInRegularAndScriptAsync(
"class Program
sub M()
dim [||]i as integer = 5
dim j as integer = 10
Console.WriteLine(i)
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestWarnOnChangingScopes1() As Task
Await TestInRegularAndScriptAsync(
"imports System.Linq
class Program
sub M()
dim [||]gate = new object()
dim x = sub()
Console.WriteLine(gate)
end sub()
end sub
end class",
"imports System.Linq
class Program
sub M()
dim x = sub()
{|Warning:dim gate = new object()|}
Console.WriteLine(gate)
end sub()
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function TestWarnOnChangingScopes2() As Task
Await TestInRegularAndScriptAsync(
"using System
using System.Linq
class Program
sub M()
dim [||]i = 0
for each (v in x)
Console.Write(i)
i = i + 1
next
end sub
end class",
"using System
using System.Linq
class Program
sub M()
for each (v in x)
{|Warning:dim i = 0|}
Console.Write(i)
i = i + 1
next
end sub
end class")
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)>
Public Async Function MissingIfNotInDeclarationSpan() As Task
Await TestMissingInRegularAndScriptAsync(
"using System
using System.Collections.Generic
using System.Linq
class Program
sub M()
' Comment [||]about foo!
' Comment about foo!
' Comment about foo!
' Comment about foo!
' Comment about foo!
' Comment about foo!
' Comment about foo!
dim foo = 0
Console.WriteLine()
Console.WriteLine(foo)
end sub
end class")
End Function
End Class
End Namespace
......@@ -3,7 +3,6 @@
using System.Composition;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CodeFixes;
using Microsoft.CodeAnalysis.CodeRefactorings;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.MoveDeclarationNearReference;
......@@ -11,7 +10,7 @@
namespace Microsoft.CodeAnalysis.CSharp.MoveDeclarationNearReference
{
[ExportCodeRefactoringProvider(LanguageNames.CSharp, Name = PredefinedCodeRefactoringProviderNames.MoveDeclarationNearReference), Shared]
[ExtensionOrder(After = PredefinedCodeFixProviderNames.AddImport)]
[ExtensionOrder(After = PredefinedCodeRefactoringProviderNames.InlineTemporary)]
internal partial class CSharpMoveDeclarationNearReferenceCodeRefactoringProvider :
AbstractMoveDeclarationNearReferenceCodeRefactoringProvider<
CSharpMoveDeclarationNearReferenceCodeRefactoringProvider,
......
......@@ -92,6 +92,7 @@
<Compile Include="CodeFixes\GenerateParameterizedMember\GenerateParameterizedMemberCodeFixProvider.vb" />
<Compile Include="CodeFixes\GenerateType\GenerateTypeCodeFixProvider.vb" />
<Compile Include="GenerateVariable\VisualBasicGenerateVariableCodeFixProvider.vb" />
<Compile Include="MoveDeclarationNearReference\VisualBasicMoveDeclarationNearReferenceCodeRefactoringProvider.vb" />
<Compile Include="RemoveUnusedVariable\VisualBasicRemoveUnusedVariableCodeFixProvider.vb" />
<Compile Include="ConvertIfToSwitch\VisualBasicConvertIfToSwitchCodeRefactoringProvider.Pattern.vb" />
<Compile Include="ConvertIfToSwitch\VisualBasicConvertIfToSwitchCodeRefactoringProvider.vb" />
......
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports System.Composition
Imports System.Threading
Imports Microsoft.CodeAnalysis.CodeRefactorings
Imports Microsoft.CodeAnalysis.MoveDeclarationNearReference
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.VisualBasic.MoveDeclarationNearReference
<ExportCodeRefactoringProvider(LanguageNames.VisualBasic, Name:=PredefinedCodeRefactoringProviderNames.MoveDeclarationNearReference), [Shared]>
<ExtensionOrder(After:=PredefinedCodeRefactoringProviderNames.InlineTemporary)>
Friend Class VisualBasicMoveDeclarationNearReferenceCodeRefactoringProvider
Inherits AbstractMoveDeclarationNearReferenceCodeRefactoringProvider(Of
VisualBasicMoveDeclarationNearReferenceCodeRefactoringProvider,
StatementSyntax,
LocalDeclarationStatementSyntax,
VariableDeclaratorSyntax)
Protected Overrides Function IsMeaningfulBlock(node As SyntaxNode) As Boolean
Return TypeOf node Is LambdaExpressionSyntax OrElse
TypeOf node Is ForOrForEachBlockSyntax OrElse
TypeOf node Is WhileStatementSyntax OrElse
TypeOf node Is DoStatementSyntax OrElse
TypeOf node Is LoopStatementSyntax
End Function
Protected Overrides Function GetVariableDeclaratorSymbolNode(variableDeclarator As VariableDeclaratorSyntax) As SyntaxNode
Return variableDeclarator.Names(0)
End Function
Protected Overrides Function IsValidVariableDeclarator(variableDeclarator As VariableDeclaratorSyntax) As Boolean
Return variableDeclarator.Names.Count = 1
End Function
Protected Overrides Function GetIdentifierOfVariableDeclarator(variableDeclarator As VariableDeclaratorSyntax) As SyntaxToken
Return variableDeclarator.Names(0).Identifier
End Function
Protected Overrides Function CreateMergedDeclarationStatement(
localDeclaration As LocalDeclarationStatementSyntax,
statementSyntax As StatementSyntax) As LocalDeclarationStatementSyntax
Dim assignment = DirectCast(statementSyntax, AssignmentStatementSyntax)
Dim declarator = localDeclaration.Declarators(0)
Return localDeclaration.ReplaceNode(
declarator,
declarator.WithInitializer(
SyntaxFactory.EqualsValue(assignment.OperatorToken, assignment.Right)))
End Function
Protected Overrides Function TypesAreCompatibleAsync(document As Document, localSymbol As ILocalSymbol, declarationStatement As LocalDeclarationStatementSyntax, right As SyntaxNode, cancellationToken As CancellationToken) As Task(Of Boolean)
Return SpecializedTasks.True
End Function
End Class
End Namespace
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册