From 714482226206a7622ffd8f2572a8dd14c5c55e5e Mon Sep 17 00:00:00 2001 From: stakx Date: Thu, 8 Aug 2019 12:50:54 +0200 Subject: [PATCH 1/2] `SetupAllProperties` still cannot setup properties named `Item` --- tests/Moq.Tests/Regressions/IssueReportsFixture.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/Moq.Tests/Regressions/IssueReportsFixture.cs b/tests/Moq.Tests/Regressions/IssueReportsFixture.cs index 54c416db8..b136c8177 100644 --- a/tests/Moq.Tests/Regressions/IssueReportsFixture.cs +++ b/tests/Moq.Tests/Regressions/IssueReportsFixture.cs @@ -2705,10 +2705,24 @@ public void SetupAllProperties_can_process_Items_property_3() Assert.NotNull(httpContext.Object.Items); } + [Fact] + public void SetupAllProperties_can_process_Item_property() + { + var mock = new Mock(); + mock.SetupAllProperties(); + mock.Object.Item = "value"; + Assert.Equal("value", mock.Object.Item); + } + public abstract partial class HttpContext { public abstract IDictionary Items { get; set; } } + + public interface IFoo + { + string Item { get; set; } + } } #endregion From a1072717c672ed2374115e9af93d5c9b5a075c7b Mon Sep 17 00:00:00 2001 From: stakx Date: Thu, 8 Aug 2019 12:58:50 +0200 Subject: [PATCH 2/2] Re-define indexers as parameterized properties --- src/Moq/Extensions.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Moq/Extensions.cs b/src/Moq/Extensions.cs index 077fb67ec..5b53a0824 100644 --- a/src/Moq/Extensions.cs +++ b/src/Moq/Extensions.cs @@ -50,12 +50,12 @@ public static bool IsPropertyGetter(this MethodInfo method) public static bool IsPropertyIndexerGetter(this MethodInfo method) { - return method.IsSpecialName && method.Name.Equals("get_Item", StringComparison.Ordinal); + return method.IsSpecialName && method.Name.StartsWith("get_", StringComparison.Ordinal) && method.GetParameters().Length > 0; } public static bool IsPropertyIndexerSetter(this MethodInfo method) { - return method.IsSpecialName && method.Name.Equals("set_Item", StringComparison.Ordinal); + return method.IsSpecialName && method.Name.StartsWith("set_", StringComparison.Ordinal) && method.GetParameters().Length > 1; } public static bool IsPropertySetter(this MethodInfo method)