From d9d88736ce244ddf4b73319ad1ed64131fb6203d Mon Sep 17 00:00:00 2001 From: CyrusNajmabadi Date: Wed, 16 Nov 2016 16:49:06 -0800 Subject: [PATCH] Simplify API for tests to create options. --- .../EncapsulateField/EncapsulateFieldTests.cs | 4 +- .../IntroduceVariableTests.cs | 7 ++- .../GenerateVariable/GenerateVariableTests.cs | 8 +-- .../ImplementAbstractClassTests.cs | 20 +++--- .../PreferFrameworkTypeTests.cs | 24 +++---- .../SimplifyTypeNamesTests.cs | 18 +++--- .../SimplifyTypeNamesTests_FixAllTests.cs | 5 +- .../UseExplicitTypeTests.cs | 48 +++++++------- .../UseImplicitTypeTests.cs | 58 ++++++++--------- .../CSharpInlineDeclarationTests.cs | 10 +-- .../AbstractCodeActionOrUserDiagnosticTest.cs | 63 ++++++++++++++++--- .../TestUtilities/OptionExtensions.cs | 2 + 12 files changed, 157 insertions(+), 110 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/CodeActions/EncapsulateField/EncapsulateFieldTests.cs b/src/EditorFeatures/CSharpTest/CodeActions/EncapsulateField/EncapsulateFieldTests.cs index 3dd6385c9c1..eab682baed8 100644 --- a/src/EditorFeatures/CSharpTest/CodeActions/EncapsulateField/EncapsulateFieldTests.cs +++ b/src/EditorFeatures/CSharpTest/CodeActions/EncapsulateField/EncapsulateFieldTests.cs @@ -170,8 +170,8 @@ void baz() "; await TestAsync(text, expected, options: OptionsSet( - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedProperties, true, NotificationOption.None), - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, false, NotificationOption.None))); + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedProperties, true, NotificationOption.None), + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, false, NotificationOption.None))); } [Fact, Trait(Traits.Feature, Traits.Features.EncapsulateField)] diff --git a/src/EditorFeatures/CSharpTest/CodeActions/IntroduceVariable/IntroduceVariableTests.cs b/src/EditorFeatures/CSharpTest/CodeActions/IntroduceVariable/IntroduceVariableTests.cs index 33a11282703..901d075685c 100644 --- a/src/EditorFeatures/CSharpTest/CodeActions/IntroduceVariable/IntroduceVariableTests.cs +++ b/src/EditorFeatures/CSharpTest/CodeActions/IntroduceVariable/IntroduceVariableTests.cs @@ -24,9 +24,10 @@ protected override CodeRefactoringProvider CreateCodeRefactoringProvider(Workspa // specify all options explicitly to override defaults. private IDictionary ImplicitTypingEverywhere() => - OptionSet(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithInfo); + OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithInfo)); internal IDictionary OptionSet(OptionKey option, object value) { diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/GenerateVariable/GenerateVariableTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/GenerateVariable/GenerateVariableTests.cs index 3406b16e758..12f08ca375f 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/GenerateVariable/GenerateVariableTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/GenerateVariable/GenerateVariableTests.cs @@ -28,10 +28,10 @@ public class GenerateVariableTests : AbstractCSharpDiagnosticProviderBasedUserDi private readonly CodeStyleOption onWithInfo = new CodeStyleOption(true, NotificationOption.Suggestion); // specify all options explicitly to override defaults. - private IDictionary ImplicitTypingEverywhere() => - OptionSet(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithInfo); + private IDictionary ImplicitTypingEverywhere() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithInfo)); internal IDictionary OptionSet(OptionKey option, object value) { diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/ImplementAbstractClass/ImplementAbstractClassTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/ImplementAbstractClass/ImplementAbstractClassTests.cs index c1ee855d8d8..0668a01fedd 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/ImplementAbstractClass/ImplementAbstractClassTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/ImplementAbstractClass/ImplementAbstractClassTests.cs @@ -1257,8 +1257,8 @@ public override int M } } }", options: OptionsSet( - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedProperties, true, NotificationOption.None), - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, false, NotificationOption.None))); + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedProperties, true, NotificationOption.None), + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, false, NotificationOption.None))); } [WorkItem(581500, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/581500")] @@ -1296,8 +1296,8 @@ public override int M } } }", options: OptionsSet( - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedProperties, true, NotificationOption.None), - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, false, NotificationOption.None))); + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedProperties, true, NotificationOption.None), + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, false, NotificationOption.None))); } [WorkItem(581500, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/581500")] @@ -1356,8 +1356,8 @@ class T : A } } }", options: OptionsSet( - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedIndexers, true, NotificationOption.None), - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, false, NotificationOption.None))); + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedIndexers, true, NotificationOption.None), + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, false, NotificationOption.None))); } [WorkItem(581500, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/581500")] @@ -1395,8 +1395,8 @@ class T : A } } }", options: OptionsSet( - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedIndexers, true, NotificationOption.None), - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, false, NotificationOption.None))); + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedIndexers, true, NotificationOption.None), + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, false, NotificationOption.None))); } [WorkItem(581500, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/581500")] @@ -1426,8 +1426,8 @@ public override int M get => throw new NotImplementedException(); } }", options: OptionsSet( - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedProperties, false, NotificationOption.None), - Tuple.Create((IOption)CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, true, NotificationOption.None))); + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedProperties, false, NotificationOption.None), + SingleOption(CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, true, NotificationOption.None))); } [WorkItem(581500, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/581500")] diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/PreferFrameworkType/PreferFrameworkTypeTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/PreferFrameworkType/PreferFrameworkTypeTests.cs index 67987bde53f..94a4821e166 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/PreferFrameworkType/PreferFrameworkTypeTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/PreferFrameworkType/PreferFrameworkTypeTests.cs @@ -24,21 +24,21 @@ public partial class PreferFrameworkTypeTests : AbstractCSharpDiagnosticProvider private readonly CodeStyleOption onWithInfo = new CodeStyleOption(true, NotificationOption.Suggestion); private readonly CodeStyleOption offWithInfo = new CodeStyleOption(false, NotificationOption.Suggestion); - private IDictionary NoFrameworkType => - Option(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, true, NotificationOption.Suggestion) - .With(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, onWithInfo, GetLanguage()); + private IDictionary NoFrameworkType => OptionsSet( + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, true, NotificationOption.Suggestion), + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, onWithInfo, GetLanguage())); - private IDictionary FrameworkTypeEverywhere => - Option(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, false, NotificationOption.Suggestion) - .With(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, offWithInfo, GetLanguage()); + private IDictionary FrameworkTypeEverywhere => OptionsSet( + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, false, NotificationOption.Suggestion), + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, offWithInfo, GetLanguage())); - private IDictionary FrameworkTypeInDeclaration => - Option(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, false, NotificationOption.Suggestion) - .With(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, onWithInfo, GetLanguage()); + private IDictionary FrameworkTypeInDeclaration => OptionsSet( + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, false, NotificationOption.Suggestion), + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, onWithInfo, GetLanguage())); - private IDictionary FrameworkTypeInMemberAccess => - Option(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, true, NotificationOption.Suggestion) - .With(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, offWithInfo, GetLanguage()); + private IDictionary FrameworkTypeInMemberAccess => OptionsSet( + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, true, NotificationOption.Suggestion), + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, offWithInfo, GetLanguage())); [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseFrameworkType)] public async Task NotWhenOptionsAreNotSet() diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/SimplifyTypeNames/SimplifyTypeNamesTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/SimplifyTypeNames/SimplifyTypeNamesTests.cs index 812e2b6400a..ae1171423b1 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/SimplifyTypeNames/SimplifyTypeNamesTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/SimplifyTypeNames/SimplifyTypeNamesTests.cs @@ -3770,17 +3770,17 @@ private async Task TestWithPredefinedTypeOptionsAsync(string code, string expect await TestAsync(code, expected, index, options: PreferIntrinsicTypeEverywhere); } - private IDictionary PreferIntrinsicTypeEverywhere => - Option(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, true, NotificationOption.Error) - .With(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, this.onWithError, GetLanguage()); + private IDictionary PreferIntrinsicTypeEverywhere => OptionsSet( + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, true, NotificationOption.Error), + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, this.onWithError, GetLanguage())); - private IDictionary PreferIntrinsicTypeInDeclaration => - Option(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, true, NotificationOption.Error) - .With(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, this.offWithNone, GetLanguage()); + private IDictionary PreferIntrinsicTypeInDeclaration => OptionsSet( + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, true, NotificationOption.Error), + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, this.offWithNone, GetLanguage())); - private IDictionary PreferIntrinsicTypeInMemberAccess => - Option(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, true, NotificationOption.Error) - .With(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, this.offWithNone, GetLanguage()); + private IDictionary PreferIntrinsicTypeInMemberAccess => OptionsSet( + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, true, NotificationOption.Error), + SingleOption(CodeStyleOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, this.offWithNone, GetLanguage())); private readonly CodeStyleOption onWithNone = new CodeStyleOption(true, NotificationOption.None); private readonly CodeStyleOption offWithNone = new CodeStyleOption(false, NotificationOption.None); diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/SimplifyTypeNames/SimplifyTypeNamesTests_FixAllTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/SimplifyTypeNames/SimplifyTypeNamesTests_FixAllTests.cs index c035224ff12..0bf20c37613 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/SimplifyTypeNames/SimplifyTypeNamesTests_FixAllTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/SimplifyTypeNames/SimplifyTypeNamesTests_FixAllTests.cs @@ -932,8 +932,9 @@ void N() "; var options = OptionsSet( - Tuple.Create((IOption)CodeStyleOptions.QualifyPropertyAccess, false, NotificationOption.Suggestion), - Tuple.Create((IOption)CodeStyleOptions.QualifyFieldAccess, true, NotificationOption.Suggestion)); + SingleOption(CodeStyleOptions.QualifyPropertyAccess, false, NotificationOption.Suggestion), + SingleOption(CodeStyleOptions.QualifyFieldAccess, true, NotificationOption.Suggestion)); + await TestAsync( initialMarkup: input, expectedMarkup: expected, diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/UseImplicitOrExplicitType/UseExplicitTypeTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/UseImplicitOrExplicitType/UseExplicitTypeTests.cs index b9afdd3124a..43c3f67f383 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/UseImplicitOrExplicitType/UseExplicitTypeTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/UseImplicitOrExplicitType/UseExplicitTypeTests.cs @@ -34,30 +34,30 @@ public partial class UseExplicitTypeTests : AbstractCSharpDiagnosticProviderBase private readonly CodeStyleOption offWithError = new CodeStyleOption(false, NotificationOption.Error); // specify all options explicitly to override defaults. - private IDictionary ExplicitTypeEverywhere() => - Options(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, offWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo); - - private IDictionary ExplicitTypeExceptWhereApparent() => - Options(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo); - - private IDictionary ExplicitTypeForBuiltInTypesOnly() => - Options(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo); - - private IDictionary ExplicitTypeEnforcements() => - Options(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithWarning) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, offWithError) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo); - - private IDictionary ExplicitTypeNoneEnforcement() => - Options(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithNone) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, offWithNone) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithNone); + private IDictionary ExplicitTypeEverywhere() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, offWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo)); + + private IDictionary ExplicitTypeExceptWhereApparent() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo)); + + private IDictionary ExplicitTypeForBuiltInTypesOnly() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo)); + + private IDictionary ExplicitTypeEnforcements() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithWarning), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, offWithError), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo)); + + private IDictionary ExplicitTypeNoneEnforcement() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithNone), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, offWithNone), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithNone)); private IDictionary Options(OptionKey option, object value) { diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/UseImplicitOrExplicitType/UseImplicitTypeTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/UseImplicitOrExplicitType/UseImplicitTypeTests.cs index 1fdd54555e5..9b9c699627e 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/UseImplicitOrExplicitType/UseImplicitTypeTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/UseImplicitOrExplicitType/UseImplicitTypeTests.cs @@ -34,35 +34,35 @@ public partial class UseImplicitTypeTests : AbstractCSharpDiagnosticProviderBase private static readonly CodeStyleOption offWithError = new CodeStyleOption(false, NotificationOption.Error); // specify all options explicitly to override defaults. - public static IDictionary ImplicitTypeEverywhere() => - Options(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithInfo); - - private IDictionary ImplicitTypeWhereApparent() => - Options(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo); - - private IDictionary ImplicitTypeWhereApparentAndForIntrinsics() => - Options(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithInfo); - - public static IDictionary ImplicitTypeButKeepIntrinsics() => - Options(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo); - - private IDictionary ImplicitTypeEnforcements() => - Options(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithWarning) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithError) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithInfo); - - private IDictionary ImplicitTypeNoneEnforcement() => - Options(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithNone) - .With(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithNone) - .With(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithNone); + public IDictionary ImplicitTypeEverywhere() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithInfo)); + + private IDictionary ImplicitTypeWhereApparent() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo)); + + private IDictionary ImplicitTypeWhereApparentAndForIntrinsics() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, offWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithInfo)); + + public IDictionary ImplicitTypeButKeepIntrinsics() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, offWithInfo), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithInfo)); + + private IDictionary ImplicitTypeEnforcements() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithWarning), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithError), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithInfo)); + + private IDictionary ImplicitTypeNoneEnforcement() => OptionsSet( + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWherePossible, onWithNone), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeWhereApparent, onWithNone), + SingleOption(CSharpCodeStyleOptions.UseImplicitTypeForIntrinsicTypes, onWithNone)); private static IDictionary Options(OptionKey option, object value) { diff --git a/src/EditorFeatures/CSharpTest/InlineDeclaration/CSharpInlineDeclarationTests.cs b/src/EditorFeatures/CSharpTest/InlineDeclaration/CSharpInlineDeclarationTests.cs index fa0e996030b..499c4bdf94c 100644 --- a/src/EditorFeatures/CSharpTest/InlineDeclaration/CSharpInlineDeclarationTests.cs +++ b/src/EditorFeatures/CSharpTest/InlineDeclaration/CSharpInlineDeclarationTests.cs @@ -209,7 +209,7 @@ void M(string v) { } } -}", options: UseImplicitTypeTests.ImplicitTypeEverywhere()); +}", options: new UseImplicitTypeTests().ImplicitTypeEverywhere()); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsInlineDeclaration)] @@ -234,7 +234,7 @@ void M(string v) { } } -}", options: UseImplicitTypeTests.ImplicitTypeButKeepIntrinsics()); +}", options: new UseImplicitTypeTests().ImplicitTypeButKeepIntrinsics()); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsInlineDeclaration)] @@ -568,7 +568,7 @@ void M2(out int i) void M2(out string s) { } -}", options: UseImplicitTypeTests.ImplicitTypeEverywhere()); +}", options: new UseImplicitTypeTests().ImplicitTypeEverywhere()); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsInlineDeclaration)] @@ -609,7 +609,7 @@ void M2(out int i) void M2(out string s) { } -}", options: UseImplicitTypeTests.ImplicitTypeEverywhere()); +}", options: new UseImplicitTypeTests().ImplicitTypeEverywhere()); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsInlineDeclaration)] @@ -642,7 +642,7 @@ void M() void M2(out T i) { } -}", options: UseImplicitTypeTests.ImplicitTypeEverywhere()); +}", options: new UseImplicitTypeTests().ImplicitTypeEverywhere()); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsInlineDeclaration)] diff --git a/src/EditorFeatures/TestUtilities/CodeActions/AbstractCodeActionOrUserDiagnosticTest.cs b/src/EditorFeatures/TestUtilities/CodeActions/AbstractCodeActionOrUserDiagnosticTest.cs index a8e1dfa7c70..329b9fa0fc2 100644 --- a/src/EditorFeatures/TestUtilities/CodeActions/AbstractCodeActionOrUserDiagnosticTest.cs +++ b/src/EditorFeatures/TestUtilities/CodeActions/AbstractCodeActionOrUserDiagnosticTest.cs @@ -534,25 +534,68 @@ protected static IList FlattenActions(IEnumerable codeAc : new[] { a }).ToList(); } - protected IDictionary Option(IOption option, CodeStyleOption notification) + protected (OptionKey, object) SingleOption(Option> option, bool enabled, NotificationOption notification) + => throw new Exception(); + + protected (OptionKey, object) SingleOption(Option> option, CodeStyleOption codeStyle) + => throw new Exception(); + + protected (OptionKey, object) SingleOption(PerLanguageOption> option, bool enabled, NotificationOption notification) + => throw new Exception(); + + protected (OptionKey, object) SingleOption(PerLanguageOption> option, CodeStyleOption codeStyle) + => throw new Exception(); + + protected (OptionKey, object) SingleOption(PerLanguageOption> option, CodeStyleOption codeStyle, string language) + => throw new Exception(); + + protected IDictionary Option(Option> option, bool enabled, NotificationOption notification) + => OptionsSet(SingleOption(option, enabled, notification)); + + protected IDictionary Option(Option> option, CodeStyleOption codeStyle) + => OptionsSet(SingleOption(option, codeStyle)); + + protected IDictionary Option(PerLanguageOption> option, bool enabled, NotificationOption notification) + => OptionsSet(SingleOption(option, enabled, notification)); + + protected IDictionary Option(PerLanguageOption> option, CodeStyleOption codeStyle) + => OptionsSet(SingleOption(option, codeStyle)); + + protected IDictionary OptionsSet( + params (OptionKey key, object value)[] options) + { + var result = new Dictionary(); + foreach (var option in options) + { + result.Add(option.key, option.value); + } + + return result; + } + +#if false + protected IDictionary SingleOption(IOption option, CodeStyleOption notification) => Option(option, notification.Value, notification.Notification); - protected IDictionary Option(IOption option, bool value, NotificationOption notification) - => OptionsSet(Tuple.Create(option, value, notification)); + protected IDictionary SingleOption(IOption option, bool value, NotificationOption notification) + => Options((option, value, notification)); + + protected IDictionary Options(params (IOption option, bool enabled, NotificationOption notification)[] optionsToSet) + => Options(optionsToSet.Select(vt => ( + optionKey: new OptionKey(vt.option, vt.option.IsPerLanguage ? GetLanguage() : null), + value: (object)new CodeStyleOption(vt.enabled, vt.notification))).ToArray()); - protected IDictionary OptionsSet(params Tuple[] optionsToSet) + protected IDictionary Options( + params (OptionKey key, object value)[] optionsToSet) { var options = new Dictionary(); - foreach (var triple in optionsToSet) + foreach (var option in optionsToSet) { - var option = triple.Item1; - var value = triple.Item2; - var notification = triple.Item3; - var optionKey = new OptionKey(option, option.IsPerLanguage ? GetLanguage() : null); - options.Add(optionKey, new CodeStyleOption(value, notification)); + options.Add(option.key, option.value); } return options; } +#endif } } \ No newline at end of file diff --git a/src/EditorFeatures/TestUtilities/OptionExtensions.cs b/src/EditorFeatures/TestUtilities/OptionExtensions.cs index 3bea45a6af7..efe3d88ce53 100644 --- a/src/EditorFeatures/TestUtilities/OptionExtensions.cs +++ b/src/EditorFeatures/TestUtilities/OptionExtensions.cs @@ -8,6 +8,7 @@ namespace Microsoft.CodeAnalysis.Editor.UnitTests { internal static class OptionExtensions { +#if false internal static IDictionary With(this IDictionary options, OptionKey option, object value) { options.Add(option, value); @@ -19,5 +20,6 @@ internal static class OptionExtensions options.Add(new OptionKey(option, language), value); return options; } +#endif } } -- GitLab