diff --git a/src/EditorFeatures/VisualBasicTest/GenerateEqualsAndGetHashCodeFromMembers/GenerateEqualsAndGetHashCodeFromMembersTests.vb b/src/EditorFeatures/VisualBasicTest/GenerateEqualsAndGetHashCodeFromMembers/GenerateEqualsAndGetHashCodeFromMembersTests.vb index 818885e55c604224f799fcf1d8d81fdf665d0fff..8a72b5d06c44d540c23bef04a25dfcc84cdb033e 100644 --- a/src/EditorFeatures/VisualBasicTest/GenerateEqualsAndGetHashCodeFromMembers/GenerateEqualsAndGetHashCodeFromMembersTests.vb +++ b/src/EditorFeatures/VisualBasicTest/GenerateEqualsAndGetHashCodeFromMembers/GenerateEqualsAndGetHashCodeFromMembersTests.vb @@ -3,13 +3,15 @@ Imports Microsoft.CodeAnalysis.CodeRefactorings Imports Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.CodeRefactorings Imports Microsoft.CodeAnalysis.GenerateEqualsAndGetHashCodeFromMembers +Imports Microsoft.CodeAnalysis.PickMembers Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.GenerateConstructorFromMembers Public Class GenerateEqualsAndGetHashCodeFromMembersTests Inherits AbstractVisualBasicCodeActionTest Protected Overrides Function CreateCodeRefactoringProvider(workspace As Workspace, parameters As TestParameters) As CodeRefactoringProvider - Return New GenerateEqualsAndGetHashCodeFromMembersCodeRefactoringProvider() + Return New GenerateEqualsAndGetHashCodeFromMembersCodeRefactoringProvider( + DirectCast(parameters.fixProviderData, IPickMembersService)) End Function @@ -93,5 +95,111 @@ Partial Class c1(Of V As {New}, U) End Function End Class") End Function + + + Public Async Function TestGenerateOperators1() As Task + Await TestWithPickMembersDialogAsync( +" +Imports System.Collections.Generic + +Class Program + Public s As String + [||] +End Class", +" +Imports System.Collections.Generic + +Class Program + Public s As String + + Public Overrides Function Equals(obj As Object) As Boolean + Dim program = TryCast(obj, Program) + Return program IsNot Nothing AndAlso + s = program.s + End Function + + Public Shared Operator =(program1 As Program, program2 As Program) As Boolean + Return EqualityComparer(Of Program).Default.Equals(program1, program2) + End Operator + + Public Shared Operator <>(program1 As Program, program2 As Program) As Boolean + Return Not program1 = program2 + End Operator +End Class", +chosenSymbols:=Nothing, +optionsCallback:=Sub(options) options(0).Value = True) + End Function + + + Public Async Function TestGenerateOperators3() As Task + Await TestWithPickMembersDialogAsync( +" +Imports System.Collections.Generic + +Class Program + Public s As String + [||] + + Public Shared Operator =(program1 As Program, program2 As Program) As Boolean + Return True + End Operator +End Class", +" +Imports System.Collections.Generic + +Class Program + Public s As String + + Public Overrides Function Equals(obj As Object) As Boolean + Dim program = TryCast(obj, Program) + Return program IsNot Nothing AndAlso + s = program.s + End Function + + Public Shared Operator =(program1 As Program, program2 As Program) As Boolean + Return True + End Operator +End Class", +chosenSymbols:=Nothing, +optionsCallback:=Sub(Options) Assert.Empty(Options)) + End Function + + + Public Async Function TestGenerateOperators4() As Task + Await TestWithPickMembersDialogAsync( +" +Imports System.Collections.Generic + +Structure Program + Public s As String + [||] +End Structure", +" +Imports System.Collections.Generic + +Structure Program + Public s As String + + Public Overrides Function Equals(obj As Object) As Boolean + If Not (TypeOf obj Is Program) Then + Return False + End If + + Dim program = DirectCast(obj, Program) + Return s = program.s + End Function + + Public Shared Operator =(program1 As Program, program2 As Program) As Boolean + Return program1.Equals(program2) + End Operator + + Public Shared Operator <>(program1 As Program, program2 As Program) As Boolean + Return Not program1 = program2 + End Operator +End Structure", +chosenSymbols:=Nothing, +optionsCallback:=Sub(options) options(0).Value = True, +ignoreTrivia:=False) + End Function End Class End Namespace \ No newline at end of file