From 8637fb620f5f63befbdb816cc9827e76f9f25125 Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Fri, 3 Apr 2020 12:00:39 -0700 Subject: [PATCH] Convert combinatorics tests to theories --- ...hangeSignature_CheckAllSignatureChanges.cs | 31 +++++++++---- .../AbstractChangeSignatureTests.cs | 21 +++------ ...hangeSignature_CheckAllSignatureChanges.vb | 45 ++++++++++++++----- 3 files changed, 63 insertions(+), 34 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/ChangeSignature/ChangeSignature_CheckAllSignatureChanges.cs b/src/EditorFeatures/CSharpTest/ChangeSignature/ChangeSignature_CheckAllSignatureChanges.cs index 803e7700761..8b8d729754d 100644 --- a/src/EditorFeatures/CSharpTest/ChangeSignature/ChangeSignature_CheckAllSignatureChanges.cs +++ b/src/EditorFeatures/CSharpTest/ChangeSignature/ChangeSignature_CheckAllSignatureChanges.cs @@ -13,8 +13,9 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.ChangeSignature { public partial class ChangeSignatureTests : AbstractChangeSignatureTests { - [WpfFact, Trait(Traits.Feature, Traits.Features.ChangeSignature)] - public async Task TestAllSignatureChanges_1This_3Regular_2Default_1Params() + [WpfTheory, Trait(Traits.Feature, Traits.Features.ChangeSignature)] + [MemberData(nameof(AbstractChangeSignatureTests.GetAllSignatureSpecificationsForTheory), new[] { 1, 3, 2, 1 }, MemberType = typeof(AbstractChangeSignatureTests))] + public async Task TestAllSignatureChanges_1This_3Regular_2Default_1Params(int totalParameters, int[] signature) { var markup = @" static class Ext @@ -57,12 +58,19 @@ static class Ext M(p: new[] { 5 }, y: ""four"", x: 3, c: true, b: ""two"", a: 1, o: t); } }"; - var signaturePartCounts = new[] { 1, 3, 2, 1 }; - await TestAllSignatureChangesAsync(LanguageNames.CSharp, markup, signaturePartCounts); + + await TestChangeSignatureViaCommandAsync( + LanguageNames.CSharp, + markup, + expectedSuccess: true, + updatedSignature: signature, + totalParameters: totalParameters, + verifyNoDiagnostics: true); } - [WpfFact, Trait(Traits.Feature, Traits.Features.ChangeSignature)] - public async Task TestAllSignatureChanges_OnDelegate_3Regular() + [WpfTheory, Trait(Traits.Feature, Traits.Features.ChangeSignature)] + [MemberData(nameof(AbstractChangeSignatureTests.GetAllSignatureSpecificationsForTheory), new[] { 0, 3, 0, 0 }, MemberType = typeof(AbstractChangeSignatureTests))] + public async Task TestAllSignatureChanges_OnDelegate_3Regular(int totalParameters, int[] signature) { var markup = @" using System; @@ -151,8 +159,15 @@ void M() /// void Goo5(int a, string b, bool c) { } }"; - var signaturePartCounts = new[] { 0, 3, 0, 0 }; - await TestAllSignatureChangesAsync(LanguageNames.CSharp, markup, signaturePartCounts, new CSharpParseOptions(LanguageVersion.CSharp7)); + + await TestChangeSignatureViaCommandAsync( + LanguageNames.CSharp, + markup, + expectedSuccess: true, + updatedSignature: signature, + totalParameters: totalParameters, + verifyNoDiagnostics: true, + parseOptions: new CSharpParseOptions(LanguageVersion.CSharp7)); } } } diff --git a/src/EditorFeatures/DiagnosticsTestUtilities/ChangeSignature/AbstractChangeSignatureTests.cs b/src/EditorFeatures/DiagnosticsTestUtilities/ChangeSignature/AbstractChangeSignatureTests.cs index b67485162df..09147a0545e 100644 --- a/src/EditorFeatures/DiagnosticsTestUtilities/ChangeSignature/AbstractChangeSignatureTests.cs +++ b/src/EditorFeatures/DiagnosticsTestUtilities/ChangeSignature/AbstractChangeSignatureTests.cs @@ -157,7 +157,7 @@ private string GetSignatureDescriptionString(int[] signature, int? totalParamete /// /// A four element array containing [s, m, n, p] as /// described above. - public async Task TestAllSignatureChangesAsync(string languageName, string markup, int[] signaturePartCounts, ParseOptions parseOptions = null) + public static IEnumerable GetAllSignatureSpecificationsForTheory(int[] signaturePartCounts) { Assert.Equal(4, signaturePartCounts.Length); Assert.True(signaturePartCounts[0] == 0 || signaturePartCounts[0] == 1); @@ -167,18 +167,11 @@ public async Task TestAllSignatureChangesAsync(string languageName, string marku foreach (var signature in GetAllSignatureSpecifications(signaturePartCounts)) { - await TestChangeSignatureViaCommandAsync( - languageName, - markup, - expectedSuccess: true, - updatedSignature: signature, - totalParameters: totalParameters, - verifyNoDiagnostics: true, - parseOptions: parseOptions); + yield return new object[] { totalParameters, signature }; } } - private IEnumerable GetAllSignatureSpecifications(int[] signaturePartCounts) + private static IEnumerable GetAllSignatureSpecifications(int[] signaturePartCounts) { var regularParameterStartIndex = signaturePartCounts[0]; var defaultValueParameterStartIndex = signaturePartCounts[0] + signaturePartCounts[1]; @@ -204,7 +197,7 @@ private IEnumerable GetAllSignatureSpecifications(int[] signaturePartCoun } } - private IEnumerable> GetPermutedSubsets(int startIndex, int count) + private static IEnumerable> GetPermutedSubsets(int startIndex, int count) { foreach (var subset in GetSubsets(Enumerable.Range(startIndex, count))) { @@ -215,7 +208,7 @@ private IEnumerable> GetPermutedSubsets(int startIndex, int cou } } - private IEnumerable> GetPermutations(IEnumerable list) + private static IEnumerable> GetPermutations(IEnumerable list) { if (!list.Any()) { @@ -236,7 +229,7 @@ private IEnumerable> GetPermutations(IEnumerable list) } } - private IEnumerable GetListWithoutElementAtIndex(IEnumerable list, int skippedIndex) + private static IEnumerable GetListWithoutElementAtIndex(IEnumerable list, int skippedIndex) { var index = 0; foreach (var x in list) @@ -250,7 +243,7 @@ private IEnumerable GetListWithoutElementAtIndex(IEnumerable list, int } } - private IEnumerable> GetSubsets(IEnumerable list) + private static IEnumerable> GetSubsets(IEnumerable list) { if (!list.Any()) { diff --git a/src/EditorFeatures/VisualBasicTest/ChangeSignature/ChangeSignature_CheckAllSignatureChanges.vb b/src/EditorFeatures/VisualBasicTest/ChangeSignature/ChangeSignature_CheckAllSignatureChanges.vb index 4afb6aca940..fc63d8f7825 100644 --- a/src/EditorFeatures/VisualBasicTest/ChangeSignature/ChangeSignature_CheckAllSignatureChanges.vb +++ b/src/EditorFeatures/VisualBasicTest/ChangeSignature/ChangeSignature_CheckAllSignatureChanges.vb @@ -9,8 +9,9 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.ChangeSignature Partial Public Class ChangeSignatureTests Inherits AbstractChangeSignatureTests - - Public Async Function TestAllSignatureChanges_1This_3Regular_2Default() As Task + + + Public Async Function TestAllSignatureChanges_1This_3Regular_2Default(totalParameters As Integer, signature As Integer()) As Task Dim markup = .NormalizedValue() - Dim signaturePartCounts = {1, 3, 2, 0} - Await TestAllSignatureChangesAsync(LanguageNames.VisualBasic, markup, signaturePartCounts) + + Await TestChangeSignatureViaCommandAsync( + LanguageNames.VisualBasic, + markup, + expectedSuccess:=True, + updatedSignature:=signature, + totalParameters:=totalParameters, + verifyNoDiagnostics:=True) End Function - - Public Async Function TestAllSignatureChanges_1This_3Regular_1ParamArray() As Task + + + Public Async Function TestAllSignatureChanges_1This_3Regular_1ParamArray(totalParameters As Integer, signature As Integer()) As Task Dim markup = .NormalizedValue() - Dim signaturePartCounts = {1, 3, 0, 1} - Await TestAllSignatureChangesAsync(LanguageNames.VisualBasic, markup, signaturePartCounts) + + Await TestChangeSignatureViaCommandAsync( + LanguageNames.VisualBasic, + markup, + expectedSuccess:=True, + updatedSignature:=signature, + totalParameters:=totalParameters, + verifyNoDiagnostics:=True) End Function - - Public Async Function TestAllSignatureChanges_Delegate_3() As Task + + + Public Async Function TestAllSignatureChanges_Delegate_3(totalParameters As Integer, signature As Integer()) As Task Dim markup = .NormalizedValue() - Dim signaturePartCounts = {0, 3, 0, 0} - Await TestAllSignatureChangesAsync(LanguageNames.VisualBasic, markup, signaturePartCounts) + + Await TestChangeSignatureViaCommandAsync( + LanguageNames.VisualBasic, + markup, + expectedSuccess:=True, + updatedSignature:=signature, + totalParameters:=totalParameters, + verifyNoDiagnostics:=True) End Function End Class End Namespace -- GitLab