diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_Implementing_Static_Abstract_Interface.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_Implementing_Static_Abstract_Interface.verified.txt index 4dad239b74..56117654e9 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_Implementing_Static_Abstract_Interface.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_Implementing_Static_Abstract_Interface.verified.txt @@ -66,6 +66,52 @@ public static class StaticAbstractImpl_MockMemberExtensions public global::TUnit.Mocks.PropertyMockCall InstanceValue => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, 0, "InstanceValue", true, false); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Constructor_Parameters_Extension_Discovery.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Constructor_Parameters_Extension_Discovery.verified.txt index f275e44e04..da19864d9e 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Constructor_Parameters_Extension_Discovery.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Constructor_Parameters_Extension_Discovery.verified.txt @@ -103,6 +103,52 @@ public static class MyService_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "GetValue", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Required_Members.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Required_Members.verified.txt index d4a51f01a5..303d11b09a 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Required_Members.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Required_Members.verified.txt @@ -49,6 +49,51 @@ file static class ConfigBasePartialMockFactory public static class ConfigBase_MockMemberExtensions { + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Same_Arity_Constructor_Overloads.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Same_Arity_Constructor_Overloads.verified.txt index ff1c3dbe24..399af5e97e 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Same_Arity_Constructor_Overloads.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Class_With_Same_Arity_Constructor_Overloads.verified.txt @@ -112,6 +112,52 @@ public static class MyService_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "GetValue", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Conflict_With_Existing_Type_Falls_Back_To_Generated_Namespace.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Conflict_With_Existing_Type_Falls_Back_To_Generated_Namespace.verified.txt index 90bfeea9b4..f40a12bdd0 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Conflict_With_Existing_Type_Falls_Back_To_Generated_Namespace.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Conflict_With_Existing_Type_Falls_Back_To_Generated_Namespace.verified.txt @@ -99,6 +99,52 @@ namespace TUnit.Mocks.Generated.MyApp var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_name.Matcher }; return new MyApp_IGreeter_Greet_M0_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "Greet", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/GenerateMock_Attribute_With_Concrete_Class.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/GenerateMock_Attribute_With_Concrete_Class.verified.txt index 17415160da..04c80bd9f2 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/GenerateMock_Attribute_With_Concrete_Class.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/GenerateMock_Attribute_With_Concrete_Class.verified.txt @@ -78,6 +78,52 @@ public static class MyService_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.VoidMockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, "DoWork", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_Extension_Discovery.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_Extension_Discovery.verified.txt index 4fdd5c35f5..a60dc683a2 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_Extension_Discovery.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_Extension_Discovery.verified.txt @@ -108,6 +108,52 @@ public static class IRepository_T__MockMemberExtensions var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_entity.Matcher }; return new IRepository_T__Save_M1_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, "Save", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock> mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock> mock, string stateName, global::System.Action>> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock> mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Class_Type_Argument.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Class_Type_Argument.verified.txt index a1f9d4e143..e6f53978db 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Class_Type_Argument.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Class_Type_Argument.verified.txt @@ -109,6 +109,52 @@ namespace Sandbox public global::TUnit.Mocks.PropertyMockCall Value => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, 0, "Value", true, false); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock> mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock> mock, string stateName, global::System.Action>> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock> mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Enum_Type_Argument.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Enum_Type_Argument.verified.txt index 4a38d47577..7c5e5f0e94 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Enum_Type_Argument.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Enum_Type_Argument.verified.txt @@ -86,6 +86,52 @@ namespace Sandbox public global::TUnit.Mocks.PropertyMockCall Value => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, 0, "Value", true, false); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock> mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock> mock, string stateName, global::System.Action>> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock> mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Multiple_Non_Builtin_Type_Arguments.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Multiple_Non_Builtin_Type_Arguments.verified.txt index f05cf9a4bf..f815e708c7 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Multiple_Non_Builtin_Type_Arguments.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Multiple_Non_Builtin_Type_Arguments.verified.txt @@ -93,6 +93,52 @@ namespace Sandbox var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_input.Matcher }; return new Sandbox_IMapper_TIn_TOut__Map_M0_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "Map", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock> mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock> mock, string stateName, global::System.Action>> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock> mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Nested_Generic_Type_Argument.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Nested_Generic_Type_Argument.verified.txt index 133ad10e61..0cbac0b8d9 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Nested_Generic_Type_Argument.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Nested_Generic_Type_Argument.verified.txt @@ -86,6 +86,52 @@ namespace Sandbox var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "Get", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock> mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock> mock, string stateName, global::System.Action>> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock> mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Nested_Namespace_Type_Argument.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Nested_Namespace_Type_Argument.verified.txt index 016ba92e5b..0ccb05bf4d 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Nested_Namespace_Type_Argument.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Generic_Interface_With_Nested_Namespace_Type_Argument.verified.txt @@ -109,6 +109,52 @@ namespace Sandbox var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_config.Matcher }; return new Sandbox_IService_T__Apply_M1_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, "Apply", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock> mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock> mock, string stateName, global::System.Action>> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock> mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Directly_Inheriting_IEnumerable.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Directly_Inheriting_IEnumerable.verified.txt index bfcf4730e0..3820d604f5 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Directly_Inheriting_IEnumerable.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Directly_Inheriting_IEnumerable.verified.txt @@ -124,6 +124,52 @@ public static class ICustomCollection_MockMemberExtensions public global::TUnit.Mocks.PropertyMockCall Count => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, 0, "Count", true, false); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_FluentUI_Shape_Nullable_Warnings.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_FluentUI_Shape_Nullable_Warnings.verified.txt index 000504d5c7..5542924cb6 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_FluentUI_Shape_Nullable_Warnings.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_FluentUI_Shape_Nullable_Warnings.verified.txt @@ -97,6 +97,52 @@ public static class IDialogReference_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "GetReturnValueAsync", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } @@ -358,6 +404,52 @@ public static class IDialogService_MockMemberExtensions { ((global::TUnit.Mocks.IRaisable)global::TUnit.Mocks.MockRegistry.GetEngine(mock).Raisable!).RaiseEvent("OnShow", (object?)new object?[] { arg1, arg2, arg3, arg4 }); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_IEnumerable_Generic.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_IEnumerable_Generic.verified.txt index 59169fea9a..b787edede1 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_IEnumerable_Generic.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_IEnumerable_Generic.verified.txt @@ -82,6 +82,52 @@ public static class ITestEnum_T__MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall>(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "GetEnumerator", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock> mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock> mock, string stateName, global::System.Action>> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock> mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_Multiple_Interfaces.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_Multiple_Interfaces.verified.txt index 1323d592c6..a7942fb781 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_Multiple_Interfaces.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_Multiple_Interfaces.verified.txt @@ -123,6 +123,52 @@ public static class IReadWriter_MockMemberExtensions var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_data.Matcher }; return new IReadWriter_Write_M2_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 2, "Write", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_Nested_Generic_IEnumerable.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_Nested_Generic_IEnumerable.verified.txt index d9c5c1b8b9..94ee439399 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_Nested_Generic_IEnumerable.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_Inheriting_Nested_Generic_IEnumerable.verified.txt @@ -105,6 +105,52 @@ public static class IPagedResult_T__MockMemberExtensions public global::TUnit.Mocks.PropertyMockCall PageSize => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, 0, "PageSize", true, false); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock> mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock> mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock> mock, string stateName, global::System.Action>> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock> mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Async_Methods.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Async_Methods.verified.txt index 2dcaf4859b..0a70ee893b 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Async_Methods.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Async_Methods.verified.txt @@ -196,6 +196,52 @@ public static class IAsyncService_MockMemberExtensions var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_ct.Matcher }; return new IAsyncService_InitializeAsync_M3_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 3, "InitializeAsync", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Events.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Events.verified.txt index f0d8ea3e51..76d4edd9d0 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Events.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Events.verified.txt @@ -153,6 +153,52 @@ public static class INotifier_MockMemberExtensions { ((global::TUnit.Mocks.IRaisable)global::TUnit.Mocks.MockRegistry.GetEngine(mock).Raisable!).RaiseEvent("ItemAdded", (object?)e); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Generic_Method_Constraints_On_Explicit_Impl.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Generic_Method_Constraints_On_Explicit_Impl.verified.txt index a8b59cf085..a3664f9148 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Generic_Method_Constraints_On_Explicit_Impl.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Generic_Method_Constraints_On_Explicit_Impl.verified.txt @@ -156,6 +156,52 @@ public static class IConstrained_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 5, "GetStructDisposable", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Generic_Methods.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Generic_Methods.verified.txt index 3d450283af..caa923f50f 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Generic_Methods.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Generic_Methods.verified.txt @@ -134,6 +134,52 @@ public static class IRepository_MockMemberExtensions var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_input.Matcher }; return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 2, "Transform", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Inherited_Static_Abstract_Members.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Inherited_Static_Abstract_Members.verified.txt index a20849b6dc..2377602141 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Inherited_Static_Abstract_Members.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Inherited_Static_Abstract_Members.verified.txt @@ -112,6 +112,52 @@ public static class IMyService_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, "CreateDefaultConfig", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Keyword_Member_Names.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Keyword_Member_Names.verified.txt index dacbf5c1b8..ed1f297e36 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Keyword_Member_Names.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Keyword_Member_Names.verified.txt @@ -162,6 +162,52 @@ public static class IEscapedNames_MockMemberExtensions public global::TUnit.Mocks.PropertyMockCall @class => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, 0, "class", true, false); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Keyword_Parameter_Names.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Keyword_Parameter_Names.verified.txt index d2604ec92a..6f2dba30f9 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Keyword_Parameter_Names.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Keyword_Parameter_Names.verified.txt @@ -136,6 +136,52 @@ public static class ITest_MockMemberExtensions var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { global::TUnit.Mocks.Matchers.AnyMatcher.Instance, global::TUnit.Mocks.Matchers.AnyMatcher.Instance }; return new ITest_Get_M1_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, "Get", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Mixed_Members.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Mixed_Members.verified.txt index 7ebb9926e6..a9aa55f165 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Mixed_Members.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Mixed_Members.verified.txt @@ -210,6 +210,52 @@ public static class IService_MockMemberExtensions { ((global::TUnit.Mocks.IRaisable)global::TUnit.Mocks.MockRegistry.GetEngine(mock).Raisable!).RaiseEvent("StatusChanged", (object?)e); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Multiple_Multi_Parameter_Events.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Multiple_Multi_Parameter_Events.verified.txt index 2ad6f87070..be2e6d2cdb 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Multiple_Multi_Parameter_Events.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Multiple_Multi_Parameter_Events.verified.txt @@ -173,6 +173,52 @@ public static class IDualEvents_MockMemberExtensions { ((global::TUnit.Mocks.IRaisable)global::TUnit.Mocks.MockRegistry.GetEngine(mock).Raisable!).RaiseEvent("Second", (object?)new object?[] { sender, value }); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event.verified.txt index 6179e96e15..e8d6fa04a3 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event.verified.txt @@ -130,6 +130,52 @@ public static class IFoo_MockMemberExtensions { ((global::TUnit.Mocks.IRaisable)global::TUnit.Mocks.MockRegistry.GetEngine(mock).Raisable!).RaiseEvent("Something", (object?)e); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event_And_Nullable_Args.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event_And_Nullable_Args.verified.txt index f5fa0fef3d..122e0613e3 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event_And_Nullable_Args.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event_And_Nullable_Args.verified.txt @@ -130,6 +130,52 @@ public static class IFoo_MockMemberExtensions { ((global::TUnit.Mocks.IRaisable)global::TUnit.Mocks.MockRegistry.GetEngine(mock).Raisable!).RaiseEvent("Something", (object?)e); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event_Args.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event_Args.verified.txt index 78104c6342..2358bda7f8 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event_Args.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Event_Args.verified.txt @@ -130,6 +130,52 @@ public static class IFoo_MockMemberExtensions { ((global::TUnit.Mocks.IRaisable)global::TUnit.Mocks.MockRegistry.GetEngine(mock).Raisable!).RaiseEvent("Something", (object?)e); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Reference_Type_Parameters.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Reference_Type_Parameters.verified.txt index 5d0c9ffe42..2835e0e26c 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Reference_Type_Parameters.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Nullable_Reference_Type_Parameters.verified.txt @@ -260,6 +260,52 @@ public static class IFoo_MockMemberExtensions public global::TUnit.Mocks.PropertyMockCall NullableProp => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 4, 5, "NullableProp", true, true); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Obsolete_DiagnosticId_NamedArgs.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Obsolete_DiagnosticId_NamedArgs.verified.txt index 3d9294c4f2..5dbdd0fd62 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Obsolete_DiagnosticId_NamedArgs.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Obsolete_DiagnosticId_NamedArgs.verified.txt @@ -86,6 +86,52 @@ public static class IDeprecatedApi_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "WithDiagnosticId", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Obsolete_Members.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Obsolete_Members.verified.txt index 3485eb7b1e..d4a22c151d 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Obsolete_Members.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Obsolete_Members.verified.txt @@ -71,6 +71,52 @@ public static class BaseDialog_MockMemberExtensions var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_input.Matcher }; return new BaseDialog_Compute_M0_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "Compute", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] @@ -455,6 +501,52 @@ public static class IDialogService_MockMemberExtensions { ((global::TUnit.Mocks.IRaisable)global::TUnit.Mocks.MockRegistry.GetEngine(mock).Raisable!).RaiseEvent("Opened", (object?)e); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Out_Ref_Parameters.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Out_Ref_Parameters.verified.txt index 7e318a2a91..4e535452f7 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Out_Ref_Parameters.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Out_Ref_Parameters.verified.txt @@ -120,6 +120,52 @@ public static class IDictionary_MockMemberExtensions var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { a.Matcher, b.Matcher }; return new IDictionary_Swap_M1_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, "Swap", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Overloaded_Methods.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Overloaded_Methods.verified.txt index 4c7a84fa8f..d9f0a4f1ee 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Overloaded_Methods.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Overloaded_Methods.verified.txt @@ -213,6 +213,52 @@ public static class IFormatter_MockMemberExtensions var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_template.Matcher, __fa_arg1.Matcher, __fa_arg2.Matcher }; return new IFormatter_Format_M3_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 3, "Format", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Properties.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Properties.verified.txt index 61a687c750..ceaca05373 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Properties.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Properties.verified.txt @@ -105,6 +105,52 @@ public static class IRepository_MockMemberExtensions public global::TUnit.Mocks.PropertyMockCall IsOpen => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, 4, "IsOpen", false, true); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_RefStruct_Parameters.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_RefStruct_Parameters.verified.txt index 21e1e6ea60..8180c0ea3f 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_RefStruct_Parameters.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_RefStruct_Parameters.verified.txt @@ -139,6 +139,52 @@ public static class IBufferProcessor_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 2, "GetName", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Static_Abstract_Members.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Static_Abstract_Members.verified.txt index b29f73196d..30bbf5041e 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Static_Abstract_Members.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Static_Abstract_Members.verified.txt @@ -134,6 +134,52 @@ public static class IServiceFactory_MockMemberExtensions public global::TUnit.Mocks.PropertyMockCall ServiceId => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 2, 3, "ServiceId", true, true); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Static_Abstract_Transitive_Return_Type.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Static_Abstract_Transitive_Return_Type.verified.txt index 662f151369..8a9a383860 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Static_Abstract_Transitive_Return_Type.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Static_Abstract_Transitive_Return_Type.verified.txt @@ -110,6 +110,52 @@ public static class IMyService_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, "GetConfigProvider", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Unconstrained_Nullable_Generic.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Unconstrained_Nullable_Generic.verified.txt index 9403244107..1ce7aa8f33 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Unconstrained_Nullable_Generic.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Unconstrained_Nullable_Generic.verified.txt @@ -123,6 +123,52 @@ public static class IFoo_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall<(T?, string)>(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 2, "GetPair", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Multi_Method_Interface.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Multi_Method_Interface.verified.txt index b9eb295a5d..f924d214ac 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Multi_Method_Interface.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Multi_Method_Interface.verified.txt @@ -171,6 +171,48 @@ public static class ICalculator_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.VoidMockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 2, "Reset", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Filters_Internal_Virtual_Members_From_External_Assembly.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Filters_Internal_Virtual_Members_From_External_Assembly.verified.txt index 0433237990..76f13b1ebc 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Filters_Internal_Virtual_Members_From_External_Assembly.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Filters_Internal_Virtual_Members_From_External_Assembly.verified.txt @@ -115,6 +115,52 @@ namespace ExternalLib public global::TUnit.Mocks.PropertyMockCall PublicProperty => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 2, 3, "PublicProperty", true, true); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Filters_Members_With_Internal_Signature_Types.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Filters_Members_With_Internal_Signature_Types.verified.txt index 1057c815e9..6b5275b108 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Filters_Members_With_Internal_Signature_Types.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Filters_Members_With_Internal_Signature_Types.verified.txt @@ -75,6 +75,52 @@ namespace ExternalLib var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_key.Matcher }; return new ExternalLib_ServiceClient_GetValue_M0_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "GetValue", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Omits_Inaccessible_Property_Setters.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Omits_Inaccessible_Property_Setters.verified.txt index 9b77367aa9..11a2f81a23 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Omits_Inaccessible_Property_Setters.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_Omits_Inaccessible_Property_Setters.verified.txt @@ -108,6 +108,52 @@ namespace ExternalLib public global::TUnit.Mocks.PropertyMockCall Reason => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 2, 3, "Reason", true, true); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_With_Generic_Constrained_Virtual_Methods.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_With_Generic_Constrained_Virtual_Methods.verified.txt index 5cbe270d27..58660c9c71 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_With_Generic_Constrained_Virtual_Methods.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Partial_Mock_With_Generic_Constrained_Virtual_Methods.verified.txt @@ -125,6 +125,52 @@ public static class BaseService_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall>(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 3, "GetAll", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/SelfEquatable_Generates_EqualsOf_GetHashCodeOf_ToStringOf.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/SelfEquatable_Generates_EqualsOf_GetHashCodeOf_ToStringOf.verified.txt index eebcb821f1..1e972c0dcb 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/SelfEquatable_Generates_EqualsOf_GetHashCodeOf_ToStringOf.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/SelfEquatable_Generates_EqualsOf_GetHashCodeOf_ToStringOf.verified.txt @@ -122,6 +122,52 @@ public static class SelfEquatableSnapshot_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 3, "ToString", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Simple_Interface_With_One_Method.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Simple_Interface_With_One_Method.verified.txt index d1bc823adc..bc78a82a59 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Simple_Interface_With_One_Method.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Simple_Interface_With_One_Method.verified.txt @@ -91,6 +91,52 @@ public static class IGreeter_MockMemberExtensions var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_name.Matcher }; return new IGreeter_Greet_M0_MockCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "Greet", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Static_Extension_Discovery_Without_Mock_Of.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Static_Extension_Discovery_Without_Mock_Of.verified.txt index 8a23d7fe0a..5237aaa69e 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Static_Extension_Discovery_Without_Mock_Of.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Static_Extension_Discovery_Without_Mock_Of.verified.txt @@ -107,6 +107,52 @@ public static class INotifier_MockMemberExtensions var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, "GetStatus", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Wrap_Mock_Filters_Internal_Virtual_Members_From_External_Assembly.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Wrap_Mock_Filters_Internal_Virtual_Members_From_External_Assembly.verified.txt index a8915f2e1e..87d6276206 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Wrap_Mock_Filters_Internal_Virtual_Members_From_External_Assembly.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Wrap_Mock_Filters_Internal_Virtual_Members_From_External_Assembly.verified.txt @@ -96,6 +96,52 @@ namespace ExternalLib public global::TUnit.Mocks.PropertyMockCall PublicProperty => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, 2, "PublicProperty", true, true); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } } diff --git a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Wrap_Mock_With_Generic_Constrained_Virtual_Methods.verified.txt b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Wrap_Mock_With_Generic_Constrained_Virtual_Methods.verified.txt index 6854171bca..e1f13a7971 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Wrap_Mock_With_Generic_Constrained_Virtual_Methods.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Wrap_Mock_With_Generic_Constrained_Virtual_Methods.verified.txt @@ -95,6 +95,52 @@ public static class Repository_MockMemberExtensions var matchers = new global::TUnit.Mocks.Arguments.IArgumentMatcher[] { __fa_item.Matcher }; return new global::TUnit.Mocks.VoidMockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, "Store", matchers); } + + #if NET9_0_OR_GREATER + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void Reset(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.Reset(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyAll(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyAll(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void VerifyNoOtherCalls(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.VerifyNoOtherCalls(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetupAllProperties(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.SetupAllProperties(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static global::TUnit.Mocks.Diagnostics.MockDiagnostics GetDiagnostics(this global::TUnit.Mocks.Mock mock) + => global::TUnit.Mocks.Mock.GetDiagnostics(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void SetState(this global::TUnit.Mocks.Mock mock, string? stateName) + => global::TUnit.Mocks.Mock.SetState(mock, stateName); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public static void InState(this global::TUnit.Mocks.Mock mock, string stateName, global::System.Action> configure) + => global::TUnit.Mocks.Mock.InState(mock, stateName, configure); + + extension(global::TUnit.Mocks.Mock mock) + { + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock); + + [global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)] + public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider + { + get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock); + set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value); + } + } + #endif } diff --git a/TUnit.Mocks.SourceGenerator/Builders/MockMembersBuilder.cs b/TUnit.Mocks.SourceGenerator/Builders/MockMembersBuilder.cs index 5b43d01fcb..b62905d5f2 100644 --- a/TUnit.Mocks.SourceGenerator/Builders/MockMembersBuilder.cs +++ b/TUnit.Mocks.SourceGenerator/Builders/MockMembersBuilder.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; +using System.Runtime.CompilerServices; using TUnit.Mocks.SourceGenerator.Models; using static TUnit.Mocks.SourceGenerator.IdentifierEscaping; @@ -17,11 +18,18 @@ internal static class MockMembersBuilder private const int MaxTypedParams = 8; private const int MaxFuncOverloadParams = 4; - // Two distinct shadowing problems below — different fixes because the kinds collide differently. + private const string PriorityMinusOneAttribute = + "[global::System.Runtime.CompilerServices.OverloadResolutionPriority(-1)]"; - // "Object" clashes with the Mock.Object PROPERTY (member-kind collision: property vs. - // generated method/property). A trailing underscore is enough since nothing on object - // is named "Object_". + // Closed, structural collision set. Framework operations on Mock live on the + // IMockControl explicit interface — they are NOT instance members on Mock and + // therefore cannot shadow generated extensions. The only names that can ever collide + // are the four below: "Object" (the one deliberately-public instance property kept + // for ergonomics) plus the three inherited object instance methods. + + // "Object" clashes with the Mock.Object PROPERTY. Trailing underscore is the + // primary rename; if the user interface declares the suffixed form too, the iterative + // suffix in GetSafeMemberName escalates (_, __, ___, …). private static readonly HashSet MockMemberNames = new(System.StringComparer.Ordinal) { "Object", @@ -116,6 +124,15 @@ public static string Build(MockTypeModel model) firstMember = false; GenerateRaiseExtensionMethods(writer, model); } + + // net9.0+ ergonomic polyfills: restore instance-style mock.Reset() / + // mock.VerifyAll() / mock.Invocations etc. for users via low-priority extensions + // emitted into THIS static class. [OverloadResolutionPriority] only ranks within a + // single containing type, so the polyfills must live alongside the generated + // setup/verify extensions. When the mocked interface already declares a member of + // that name, we skip the corresponding polyfill to avoid a CS0111 duplicate — the + // framework operation is still reachable via the static helper (Mock.Reset(m), …). + GenerateMockControlPolyfills(writer, model, isFirstMember: firstMember); } // Generate unified sealed classes for qualifying methods @@ -206,11 +223,48 @@ private static bool ShouldGenerateTypedWrapper(MockMemberModel method, MockTypeM private static string GetWrapperName(string safeName, MockMemberModel method) => $"{safeName}_{method.Name}_M{method.MemberId}_MockCall"; - private static string GetSafeMemberName(string name) + private static string GetSafeMemberName(string name, MockTypeModel model) + { + // Only escalate when we've actually renamed away from `name`. A passthrough name IS the + // user member's own name; comparing it against the user-name set always self-collides. + if (ObjectMemberDisambiguations.TryGetValue(name, out var disambiguated)) + { + return EscapeIdentifier(EscalateUntilUnique(disambiguated, GetUserMemberNames(model))); + } + if (MockMemberNames.Contains(name)) + { + return EscapeIdentifier(EscalateUntilUnique(name + "_", GetUserMemberNames(model))); + } + return EscapeIdentifier(name); + } + + // Iteratively append "_" until the candidate doesn't collide with another member of the + // mocked type. Guards against the "Object" + "Object_" trailing-underscore overflow from + // discussion #4981. + private static string EscalateUntilUnique(string candidate, HashSet userMemberNames) + { + while (userMemberNames.Contains(candidate)) + { + candidate += "_"; + } + return candidate; + } + + // Cached per MockTypeModel instance via ConditionalWeakTable. Build() and its many helpers + // call GetUserMemberNames repeatedly across one generator pass; computing once and reusing + // avoids ~N HashSet allocations per emitted type. + private static readonly ConditionalWeakTable> _userMemberNamesCache = new(); + + private static HashSet GetUserMemberNames(MockTypeModel model) + => _userMemberNamesCache.GetValue(model, BuildUserMemberNames); + + private static HashSet BuildUserMemberNames(MockTypeModel model) { - if (ObjectMemberDisambiguations.TryGetValue(name, out var renamed)) - return renamed; - return EscapeIdentifier(MockMemberNames.Contains(name) ? name + "_" : name); + var set = new HashSet(System.StringComparer.Ordinal); + foreach (var m in model.Methods) set.Add(m.Name); + foreach (var p in model.Properties) set.Add(p.Name); + foreach (var e in model.Events) set.Add(e.Name); + return set; } private static string GetCombinedTypeParameterList(MockTypeModel model, MockMemberModel method) @@ -863,7 +917,7 @@ private static void EmitMemberMethodBody(CodeWriter writer, MockMemberModel meth ? MockImplBuilder.GetConstraintClauses(method) : GetCombinedConstraintClauses(model, method); - var safeMemberName = GetSafeMemberName(method.Name); + var safeMemberName = GetSafeMemberName(method.Name, model); var fullParamList = captureModelTypeParameters ? paramList : BuildExtensionMethodParameterList(model, paramList); @@ -977,7 +1031,7 @@ private static void EmitAnyArgsOverload(CodeWriter writer, MockMemberModel metho ? MockImplBuilder.GetConstraintClauses(method) : GetCombinedConstraintClauses(model, method); - var safeMemberName = GetSafeMemberName(method.Name); + var safeMemberName = GetSafeMemberName(method.Name, model); var paramListInner = "global::TUnit.Mocks.Arguments.AnyArgs _"; var fullParamList = captureModelTypeParameters ? paramListInner @@ -1089,7 +1143,7 @@ private static void EmitSingleFuncOverload(CodeWriter writer, MockMemberModel me ? MockImplBuilder.GetConstraintClauses(method) : GetCombinedConstraintClauses(model, method); - var safeMemberName = GetSafeMemberName(method.Name); + var safeMemberName = GetSafeMemberName(method.Name, model); var fullParamList = captureModelTypeParameters ? paramList : BuildExtensionMethodParameterList(model, paramList); @@ -1166,7 +1220,7 @@ private static void GeneratePropertyExtensionBlock(CodeWriter writer, List {safePropName}"); writer.AppendLine($" => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), {getterMemberId}, {setterMemberId}, \"{prop.Name}\", {hasGetter}, {hasSetter});"); @@ -1222,6 +1276,107 @@ private static void GenerateIndexerExtensionMethods(CodeWriter writer, MockMembe } } + // Methods polyfilled with instance-style ergonomics on net9.0+. Each entry: (member name, + // return type, parameter list excluding `this Mock`, argument list forwarded to the + // matching Mock static helper). + private static readonly (string Name, string ReturnType, string Parameters, string ForwardArgs)[] MethodPolyfills = + { + ("Reset", "void", "", ""), + ("VerifyAll", "void", "", ""), + ("VerifyNoOtherCalls", "void", "", ""), + ("SetupAllProperties", "void", "", ""), + ("GetDiagnostics", "global::TUnit.Mocks.Diagnostics.MockDiagnostics", "", ""), + ("SetState", "void", "string? stateName", ", stateName"), + }; + + private static void GenerateMockControlPolyfills(CodeWriter writer, MockTypeModel model, bool isFirstMember) + { + var userNames = GetUserMemberNames(model); + + // Cache one Contains() per polyfill name and reuse for both the early-return guard and + // the emission below. Each `emitX` is true when the corresponding polyfill SHOULD emit + // (i.e. user doesn't already declare that name). + var emitMethods = MethodPolyfills.Where(p => !userNames.Contains(p.Name)).ToArray(); + var emitInState = !userNames.Contains("InState"); + var emitInvocations = !userNames.Contains("Invocations"); + var emitBehavior = !userNames.Contains("Behavior"); + var emitDefaultValueProvider = !userNames.Contains("DefaultValueProvider"); + + // Skip entirely when every polyfill name collides with a user member — keeps the + // separator blank line (below) and the surrounding #if/#endif from being emitted. + if (emitMethods.Length == 0 && !emitInState + && !emitInvocations && !emitBehavior && !emitDefaultValueProvider) + { + return; + } + + var mockableType = MockImplBuilder.GetMockableTypeName(model); + var typeParams = MockImplBuilder.GetTypeParameterList(model); + var constraints = MockImplBuilder.GetConstraintClauses(model); + var receiverParam = $"this global::TUnit.Mocks.Mock<{mockableType}> mock"; + + if (!isFirstMember) writer.AppendLine(); + writer.AppendLine("#if NET9_0_OR_GREATER"); + + bool first = true; + + foreach (var (name, ret, parms, fwd) in emitMethods) + { + if (!first) writer.AppendLine(); + first = false; + var paramList = string.IsNullOrEmpty(parms) ? receiverParam : $"{receiverParam}, {parms}"; + writer.AppendLine(PriorityMinusOneAttribute); + writer.AppendLine($"public static {ret} {name}{typeParams}({paramList}){constraints}"); + writer.AppendLine($" => global::TUnit.Mocks.Mock.{name}(mock{fwd});"); + } + + // InState takes an Action> — emit separately so the generic argument is correct. + if (emitInState) + { + if (!first) writer.AppendLine(); + first = false; + writer.AppendLine(PriorityMinusOneAttribute); + writer.AppendLine($"public static void InState{typeParams}({receiverParam}, string stateName, global::System.Action> configure){constraints}"); + writer.AppendLine($" => global::TUnit.Mocks.Mock.InState(mock, stateName, configure);"); + } + + // Property polyfills via C# 14 extension block so users write mock.Invocations rather + // than mock.Invocations(). + if (emitInvocations || emitBehavior || emitDefaultValueProvider) + { + if (!first) writer.AppendLine(); + using (writer.Block($"extension{typeParams}(global::TUnit.Mocks.Mock<{mockableType}> mock){constraints}")) + { + bool firstProp = true; + if (emitInvocations) + { + writer.AppendLine(PriorityMinusOneAttribute); + writer.AppendLine("public global::System.Collections.Generic.IReadOnlyList Invocations => global::TUnit.Mocks.Mock.Invocations(mock);"); + firstProp = false; + } + if (emitBehavior) + { + if (!firstProp) writer.AppendLine(); + writer.AppendLine(PriorityMinusOneAttribute); + writer.AppendLine("public global::TUnit.Mocks.MockBehavior Behavior => global::TUnit.Mocks.Mock.Behavior(mock);"); + firstProp = false; + } + if (emitDefaultValueProvider) + { + if (!firstProp) writer.AppendLine(); + writer.AppendLine(PriorityMinusOneAttribute); + using (writer.Block("public global::TUnit.Mocks.IDefaultValueProvider? DefaultValueProvider")) + { + writer.AppendLine("get => global::TUnit.Mocks.Mock.GetDefaultValueProvider(mock);"); + writer.AppendLine("set => global::TUnit.Mocks.Mock.SetDefaultValueProvider(mock, value);"); + } + } + } + } + + writer.AppendLine("#endif"); + } + private static void GenerateRaiseExtensionMethods(CodeWriter writer, MockTypeModel model) { var mockableType = MockImplBuilder.GetMockableTypeName(model); diff --git a/TUnit.Mocks.Tests/AdditionalCoverageTests.cs b/TUnit.Mocks.Tests/AdditionalCoverageTests.cs index 5d3f4e45f8..d1bbb71a1e 100644 --- a/TUnit.Mocks.Tests/AdditionalCoverageTests.cs +++ b/TUnit.Mocks.Tests/AdditionalCoverageTests.cs @@ -211,7 +211,7 @@ public async Task VerifyAll_Message_Includes_Matcher_Descriptions() // Act — don't call the method // Assert - var ex = Assert.Throws(() => mock.VerifyAll()); + var ex = Assert.Throws(() => Mock.VerifyAll(mock)); await Assert.That(ex.Message).Contains("Add("); await Assert.That(ex.Message).Contains("never invoked"); } @@ -228,7 +228,7 @@ public async Task VerifyAll_Message_Lists_Multiple_Uninvoked_Setups() // Act — don't call any methods // Assert - var ex = Assert.Throws(() => mock.VerifyAll()); + var ex = Assert.Throws(() => Mock.VerifyAll(mock)); await Assert.That(ex.Message).Contains("Add("); await Assert.That(ex.Message).Contains("GetName()"); await Assert.That(ex.Message).Contains("Log("); @@ -247,7 +247,7 @@ public async Task VerifyAll_Passes_When_All_Setups_Invoked() mock.Object.GetName(); // Assert — no exception - mock.VerifyAll(); + Mock.VerifyAll(mock); await Assert.That(true).IsTrue(); } } @@ -266,7 +266,7 @@ public async Task Invocations_Are_In_Call_Order() mock.Object.GetName(); mock.Object.Add(3, 4); - var invocations = mock.Invocations; + var invocations = Mock.Invocations(mock); await Assert.That(invocations).Count().IsEqualTo(4); await Assert.That(invocations[0].MemberName).IsEqualTo("Add"); await Assert.That(invocations[1].MemberName).IsEqualTo("Log"); @@ -283,7 +283,7 @@ public async Task Invocations_Sequence_Numbers_Are_Monotonically_Increasing() mock.Object.GetName(); mock.Object.Log("msg"); - var invocations = mock.Invocations; + var invocations = Mock.Invocations(mock); for (int i = 1; i < invocations.Count; i++) { await Assert.That(invocations[i].SequenceNumber) @@ -306,7 +306,7 @@ public class AutoTrackPropertyResetTests public async Task Reset_Clears_Auto_Tracked_Property_Values() { var mock = ISettingsService.Mock(); - mock.SetupAllProperties(); + Mock.SetupAllProperties(mock); var svc = mock.Object; svc.Theme = "dark"; @@ -316,8 +316,8 @@ public async Task Reset_Clears_Auto_Tracked_Property_Values() await Assert.That(svc.FontSize).IsEqualTo(14); // Reset should clear tracked values - mock.Reset(); - mock.SetupAllProperties(); + Mock.Reset(mock); + Mock.SetupAllProperties(mock); // After reset + re-enable auto-track, values are back to defaults await Assert.That(svc.Theme).IsNotEqualTo("dark"); @@ -374,9 +374,9 @@ public async Task DefaultValueProvider_Get_Set_Roundtrip() var mock = IGreeter.Mock(); var provider = new FixedStringProvider(); - mock.DefaultValueProvider = provider; + Mock.SetDefaultValueProvider(mock, provider); - await Assert.That(mock.DefaultValueProvider).IsEqualTo(provider); + await Assert.That(Mock.GetDefaultValueProvider(mock)).IsEqualTo(provider); } [Test] @@ -399,13 +399,13 @@ public class MockBehaviorPropertyTests public async Task Loose_Mock_Has_Loose_Behavior() { var mock = ICalculator.Mock(); - await Assert.That(mock.Behavior).IsEqualTo(MockBehavior.Loose); + await Assert.That(Mock.Behavior(mock)).IsEqualTo(MockBehavior.Loose); } [Test] public async Task Strict_Mock_Has_Strict_Behavior() { var mock = ICalculator.Mock(MockBehavior.Strict); - await Assert.That(mock.Behavior).IsEqualTo(MockBehavior.Strict); + await Assert.That(Mock.Behavior(mock)).IsEqualTo(MockBehavior.Strict); } } diff --git a/TUnit.Mocks.Tests/AutoTrackPropertyTests.cs b/TUnit.Mocks.Tests/AutoTrackPropertyTests.cs index 6c71aae746..069e34a135 100644 --- a/TUnit.Mocks.Tests/AutoTrackPropertyTests.cs +++ b/TUnit.Mocks.Tests/AutoTrackPropertyTests.cs @@ -23,7 +23,7 @@ public async Task AutoTrack_Set_Then_Get_Returns_Value() { // Arrange — opt in to auto-tracking var mock = IAutoTrackEntity.Mock(); - mock.SetupAllProperties(); + Mock.SetupAllProperties(mock); // Act mock.Object.Name = "Alice"; @@ -38,7 +38,7 @@ public async Task AutoTrack_Multiple_Properties_Track_Independently() { // Arrange var mock = IAutoTrackEntity.Mock(); - mock.SetupAllProperties(); + Mock.SetupAllProperties(mock); // Act mock.Object.Name = "Bob"; @@ -68,7 +68,7 @@ public async Task Explicit_Setup_Overrides_AutoTrack() { // Arrange var mock = IAutoTrackEntity.Mock(); - mock.SetupAllProperties(); + Mock.SetupAllProperties(mock); mock.Name.Returns("Configured"); // Act — set a tracked value, but explicit setup should win @@ -83,7 +83,7 @@ public async Task AutoTrack_Overwrite_Value() { // Arrange var mock = IAutoTrackEntity.Mock(); - mock.SetupAllProperties(); + Mock.SetupAllProperties(mock); // Act — set then overwrite mock.Object.Name = "First"; @@ -111,7 +111,7 @@ public async Task Loose_Mode_AutoTracks_After_SetupAllProperties() { // Arrange — explicit opt-in enables auto-tracking var mock = IAutoTrackEntity.Mock(); - mock.SetupAllProperties(); + Mock.SetupAllProperties(mock); // Act mock.Object.Name = "Alice"; @@ -140,7 +140,7 @@ public async Task Strict_Mode_With_SetupAllProperties_Tracks() { // Arrange — strict mode with explicit opt-in var mock = IAutoTrackEntity.Mock(MockBehavior.Strict); - mock.SetupAllProperties(); + Mock.SetupAllProperties(mock); mock.Name.Set(Any()); mock.Name.Returns(""); @@ -156,11 +156,11 @@ public async Task Reset_Clears_Tracked_Values_But_Keeps_AutoTrack() { // Arrange var mock = IAutoTrackEntity.Mock(); - mock.SetupAllProperties(); + Mock.SetupAllProperties(mock); mock.Object.Name = "Alice"; // Act - mock.Reset(); + Mock.Reset(mock); // Assert — tracked values cleared, but auto-track still active await Assert.That(mock.Object.Name).IsEmpty(); diff --git a/TUnit.Mocks.Tests/BasicMockTests.cs b/TUnit.Mocks.Tests/BasicMockTests.cs index 2d9c27c225..4b03d99ac5 100644 --- a/TUnit.Mocks.Tests/BasicMockTests.cs +++ b/TUnit.Mocks.Tests/BasicMockTests.cs @@ -160,7 +160,7 @@ public async Task Reset_Clears_Setups() await Assert.That(calc.Add(1, 1)).IsEqualTo(42); // Act - mock.Reset(); + Mock.Reset(mock); // Assert — after reset, returns default await Assert.That(calc.Add(1, 1)).IsEqualTo(0); diff --git a/TUnit.Mocks.Tests/DefaultValueProviderTests.cs b/TUnit.Mocks.Tests/DefaultValueProviderTests.cs index 8f703158f7..ef01c29bc0 100644 --- a/TUnit.Mocks.Tests/DefaultValueProviderTests.cs +++ b/TUnit.Mocks.Tests/DefaultValueProviderTests.cs @@ -28,7 +28,7 @@ public async Task Custom_Provider_Returns_String_Default() { // Arrange var mock = IGreeter.Mock(); - mock.DefaultValueProvider = new CustomProvider(); + Mock.SetDefaultValueProvider(mock, new CustomProvider()); IGreeter greeter = mock.Object; @@ -44,7 +44,7 @@ public async Task Custom_Provider_Returns_Int_Default() { // Arrange var mock = ICalculator.Mock(); - mock.DefaultValueProvider = new CustomProvider(); + Mock.SetDefaultValueProvider(mock, new CustomProvider()); ICalculator calc = mock.Object; @@ -60,7 +60,7 @@ public async Task Setup_Takes_Precedence_Over_Provider() { // Arrange var mock = ICalculator.Mock(); - mock.DefaultValueProvider = new CustomProvider(); + Mock.SetDefaultValueProvider(mock, new CustomProvider()); mock.Add(1, 2).Returns(100); ICalculator calc = mock.Object; @@ -92,7 +92,7 @@ public async Task BuiltIn_Provider_Returns_Empty_String() { // Arrange var mock = IGreeter.Mock(); - mock.DefaultValueProvider = DefaultValueProvider.Instance; + Mock.SetDefaultValueProvider(mock, DefaultValueProvider.Instance); IGreeter greeter = mock.Object; diff --git a/TUnit.Mocks.Tests/DiagnosticsTests.cs b/TUnit.Mocks.Tests/DiagnosticsTests.cs index d35f187094..b3842a1376 100644 --- a/TUnit.Mocks.Tests/DiagnosticsTests.cs +++ b/TUnit.Mocks.Tests/DiagnosticsTests.cs @@ -16,7 +16,7 @@ public async Task Unused_Setups_Detected() ICalculator calc = mock.Object; _ = calc.Add(1, 2); // only exercise the first setup - var diag = mock.GetDiagnostics(); + var diag = Mock.GetDiagnostics(mock); await Assert.That(diag.TotalSetups).IsEqualTo(2); await Assert.That(diag.ExercisedSetups).IsEqualTo(1); @@ -36,7 +36,7 @@ public async Task Unmatched_Calls_Detected() _ = calc.Add(1, 2); // matches setup _ = calc.Add(5, 5); // no setup match — unmatched - var diag = mock.GetDiagnostics(); + var diag = Mock.GetDiagnostics(mock); await Assert.That(diag.UnmatchedCalls).Count().IsEqualTo(1); await Assert.That(diag.UnmatchedCalls[0].MemberName).IsEqualTo("Add"); @@ -52,7 +52,7 @@ public async Task All_Setups_Exercised() ICalculator calc = mock.Object; _ = calc.Add(1, 2); - var diag = mock.GetDiagnostics(); + var diag = Mock.GetDiagnostics(mock); await Assert.That(diag.TotalSetups).IsEqualTo(1); await Assert.That(diag.ExercisedSetups).IsEqualTo(1); @@ -67,7 +67,7 @@ public async Task No_Calls_Means_All_Setups_Unused() mock.Add(1, 2).Returns(3); mock.Add(3, 4).Returns(7); - var diag = mock.GetDiagnostics(); + var diag = Mock.GetDiagnostics(mock); await Assert.That(diag.TotalSetups).IsEqualTo(2); await Assert.That(diag.ExercisedSetups).IsEqualTo(0); @@ -80,7 +80,7 @@ public async Task Matcher_Descriptions_Populated() var mock = ICalculator.Mock(); mock.Add(Any(), Is(x => x > 0)).Returns(1); - var diag = mock.GetDiagnostics(); + var diag = Mock.GetDiagnostics(mock); await Assert.That(diag.UnusedSetups).Count().IsEqualTo(1); var setup = diag.UnusedSetups[0]; @@ -98,9 +98,9 @@ public async Task Reset_Clears_Diagnostics() ICalculator calc = mock.Object; _ = calc.Add(5, 5); // unmatched - mock.Reset(); + Mock.Reset(mock); - var diag = mock.GetDiagnostics(); + var diag = Mock.GetDiagnostics(mock); await Assert.That(diag.TotalSetups).IsEqualTo(0); await Assert.That(diag.ExercisedSetups).IsEqualTo(0); @@ -113,7 +113,7 @@ public async Task Empty_Mock_Has_Clean_Diagnostics() { var mock = ICalculator.Mock(); - var diag = mock.GetDiagnostics(); + var diag = Mock.GetDiagnostics(mock); await Assert.That(diag.TotalSetups).IsEqualTo(0); await Assert.That(diag.ExercisedSetups).IsEqualTo(0); diff --git a/TUnit.Mocks.Tests/EdgeCaseTests.cs b/TUnit.Mocks.Tests/EdgeCaseTests.cs index 7edb5b364e..b273dfa1e4 100644 --- a/TUnit.Mocks.Tests/EdgeCaseTests.cs +++ b/TUnit.Mocks.Tests/EdgeCaseTests.cs @@ -582,7 +582,7 @@ public async Task Reset_Then_Reconfigure_Different_Behavior() await Assert.That(firstResult).IsEqualTo("A"); // Reset and reconfigure - mock.Reset(); + Mock.Reset(mock); mock.GetConfig("key").Returns("B"); // Second phase @@ -609,7 +609,7 @@ public async Task Reset_Mid_Test_Changes_Verification_Baseline() mock.GetConfig("key2").WasCalled(Times.Once); // Reset — clears call history - mock.Reset(); + Mock.Reset(mock); // Post-reset: previous calls should not count mock.GetConfig("key1").WasNeverCalled(); diff --git a/TUnit.Mocks.Tests/EventSubscriptionSetupTests.cs b/TUnit.Mocks.Tests/EventSubscriptionSetupTests.cs index 5ac8a958c3..700d9092be 100644 --- a/TUnit.Mocks.Tests/EventSubscriptionSetupTests.cs +++ b/TUnit.Mocks.Tests/EventSubscriptionSetupTests.cs @@ -87,7 +87,7 @@ public async Task Reset_Clears_Subscription_Callbacks() var callbackFired = false; mock.Events.DataReady.OnSubscribe(() => callbackFired = true); - mock.Reset(); + Mock.Reset(mock); mock.Object.DataReady += (sender, args) => { }; diff --git a/TUnit.Mocks.Tests/EventSubscriptionVerifyTests.cs b/TUnit.Mocks.Tests/EventSubscriptionVerifyTests.cs index 40b02e20e8..213c051a84 100644 --- a/TUnit.Mocks.Tests/EventSubscriptionVerifyTests.cs +++ b/TUnit.Mocks.Tests/EventSubscriptionVerifyTests.cs @@ -83,7 +83,7 @@ public async Task Reset_Clears_Subscription_History() mock.Object.OnStringAction += _ => { }; // Act - mock.Reset(); + Mock.Reset(mock); // Assert await Assert.That(mock.Events.OnStringAction.WasSubscribed).IsFalse(); diff --git a/TUnit.Mocks.Tests/InvocationsTests.cs b/TUnit.Mocks.Tests/InvocationsTests.cs index c22fc48316..503a53d17c 100644 --- a/TUnit.Mocks.Tests/InvocationsTests.cs +++ b/TUnit.Mocks.Tests/InvocationsTests.cs @@ -19,7 +19,7 @@ public async Task Invocations_Returns_All_Calls() svc.GetValue("key2"); svc.Process(42); - await Assert.That(mock.Invocations.Count).IsEqualTo(3); + await Assert.That(Mock.Invocations(mock).Count).IsEqualTo(3); } [Test] @@ -32,7 +32,7 @@ public async Task Invocations_Contains_Correct_Method_Names() svc.GetValue("key1"); svc.Process(99); - var invocations = mock.Invocations; + var invocations = Mock.Invocations(mock); await Assert.That(invocations[0].MemberName).IsEqualTo("GetValue"); await Assert.That(invocations[1].MemberName).IsEqualTo("Process"); } @@ -46,14 +46,14 @@ public async Task Invocations_Contains_Correct_Arguments() var svc = mock.Object; svc.GetValue("hello"); - await Assert.That(mock.Invocations[0].Arguments[0]).IsEqualTo("hello"); + await Assert.That(Mock.Invocations(mock)[0].Arguments[0]).IsEqualTo("hello"); } [Test] public async Task Invocations_Is_Empty_When_No_Calls_Made() { var mock = IService.Mock(); - await Assert.That(mock.Invocations.Count).IsEqualTo(0); + await Assert.That(Mock.Invocations(mock).Count).IsEqualTo(0); } [Test] @@ -65,8 +65,8 @@ public async Task Invocations_Is_Empty_After_Reset() var svc = mock.Object; svc.GetValue("key1"); - mock.Reset(); + Mock.Reset(mock); - await Assert.That(mock.Invocations.Count).IsEqualTo(0); + await Assert.That(Mock.Invocations(mock).Count).IsEqualTo(0); } } diff --git a/TUnit.Mocks.Tests/MockRepositoryTests.cs b/TUnit.Mocks.Tests/MockRepositoryTests.cs index e8e842c69e..617aff399f 100644 --- a/TUnit.Mocks.Tests/MockRepositoryTests.cs +++ b/TUnit.Mocks.Tests/MockRepositoryTests.cs @@ -137,8 +137,8 @@ public async Task Repository_Reset_Clears_All_Mocks() // Assert — setups and history are cleared await Assert.That(serviceMock.Object.GetData(1)).IsEmpty(); // no setup, returns smart default - await Assert.That(serviceMock.Invocations).Count().IsEqualTo(1); // only the new call - await Assert.That(loggerMock.Invocations).Count().IsEqualTo(0); // history cleared + await Assert.That(Mock.Invocations(serviceMock)).Count().IsEqualTo(1); // only the new call + await Assert.That(Mock.Invocations(loggerMock)).Count().IsEqualTo(0); // history cleared } [Test] @@ -149,7 +149,7 @@ public async Task Repository_Uses_Default_Behavior() var mock = repo.Of(); // Assert — mock inherits strict behavior - await Assert.That(mock.Behavior).IsEqualTo(MockBehavior.Strict); + await Assert.That(Mock.Behavior(mock)).IsEqualTo(MockBehavior.Strict); } [Test] @@ -160,7 +160,7 @@ public async Task Repository_Behavior_Can_Be_Overridden_Per_Mock() var looseMock = repo.Of(MockBehavior.Loose); // Assert — specific behavior overrides repository default - await Assert.That(looseMock.Behavior).IsEqualTo(MockBehavior.Loose); + await Assert.That(Mock.Behavior(looseMock)).IsEqualTo(MockBehavior.Loose); } [Test] @@ -274,7 +274,7 @@ public async Task Repository_Of_ClassMock_With_Strict_Behavior() var mock = repo.Of(); // Assert — partial mock inherits strict behavior from repository - await Assert.That(mock.Behavior).IsEqualTo(MockBehavior.Strict); + await Assert.That(Mock.Behavior(mock)).IsEqualTo(MockBehavior.Strict); } [Test] @@ -285,6 +285,6 @@ public async Task Repository_Of_ClassMock_Behavior_Override() var mock = repo.Of(MockBehavior.Loose); // Assert — behavior overridden - await Assert.That(mock.Behavior).IsEqualTo(MockBehavior.Loose); + await Assert.That(Mock.Behavior(mock)).IsEqualTo(MockBehavior.Loose); } } diff --git a/TUnit.Mocks.Tests/MultipleInterfaceTests.cs b/TUnit.Mocks.Tests/MultipleInterfaceTests.cs index 1615513f61..ec0fcc692d 100644 --- a/TUnit.Mocks.Tests/MultipleInterfaceTests.cs +++ b/TUnit.Mocks.Tests/MultipleInterfaceTests.cs @@ -114,7 +114,7 @@ public async Task Multi_Mock_Shares_Single_Engine() ((IMultiDisposable)mock.Object).Dispose(); // Assert — all calls recorded in invocations - await Assert.That(mock.Invocations).Count().IsEqualTo(2); + await Assert.That(Mock.Invocations(mock)).Count().IsEqualTo(2); } [Test] @@ -180,7 +180,7 @@ public async Task Mock_Of_Four_Interfaces_Tracks_All_Calls() ((IMultiCloneable)mock.Object).Clone(); // Assert — all 4 calls tracked - await Assert.That(mock.Invocations).Count().IsEqualTo(4); + await Assert.That(Mock.Invocations(mock)).Count().IsEqualTo(4); } [Test] @@ -190,6 +190,6 @@ public async Task Mock_Of_Two_Interfaces_With_Strict_Behavior() var mock = Mock.Of(MockBehavior.Strict); // Assert — strict behavior inherited - await Assert.That(mock.Behavior).IsEqualTo(MockBehavior.Strict); + await Assert.That(Mock.Behavior(mock)).IsEqualTo(MockBehavior.Strict); } } diff --git a/TUnit.Mocks.Tests/NameCollisionTests.cs b/TUnit.Mocks.Tests/NameCollisionTests.cs new file mode 100644 index 0000000000..68187c8b6b --- /dev/null +++ b/TUnit.Mocks.Tests/NameCollisionTests.cs @@ -0,0 +1,219 @@ +using TUnit.Mocks.Arguments; + +namespace TUnit.Mocks.Tests; + +/// +/// Verifies that source-generated extension members never collide with framework members on +/// . Each interface here defines members whose names match either the +/// one deliberately-public Mock<T> instance property (Object) or the inherited +/// object methods (Equals, GetHashCode, ToString). All framework +/// operations live on as explicit interface implementations and +/// are reached via static helpers, so members named Reset, +/// VerifyAll, Invocations, etc. on the mocked interface are reachable as +/// generated extensions without conflict. +/// +public class NameCollisionTests +{ + public interface IFrameworkNameMember + { + // Names that previously lived as public instance members on Mock. They must + // now be reachable as generated setup/verify extensions, not shadowed by Mock. + int Reset(); + int VerifyAll(); + int VerifyNoOtherCalls(); + int Invocations(); + int Behavior(); + int SetupAllProperties(); + int GetDiagnostics(); + int SetState(string s); + int InState(); + int DefaultValueProvider(); + } + + [Test] + public async Task Generated_Extensions_Win_Over_Former_Framework_Member_Names() + { + var mock = IFrameworkNameMember.Mock(); + + mock.Reset().Returns(1); + mock.VerifyAll().Returns(2); + mock.VerifyNoOtherCalls().Returns(3); + mock.Invocations().Returns(4); + mock.Behavior().Returns(5); + mock.SetupAllProperties().Returns(6); + mock.GetDiagnostics().Returns(7); + mock.SetState(Any()).Returns(8); + mock.InState().Returns(9); + mock.DefaultValueProvider().Returns(10); + + var svc = mock.Object; + await Assert.That(svc.Reset()).IsEqualTo(1); + await Assert.That(svc.VerifyAll()).IsEqualTo(2); + await Assert.That(svc.VerifyNoOtherCalls()).IsEqualTo(3); + await Assert.That(svc.Invocations()).IsEqualTo(4); + await Assert.That(svc.Behavior()).IsEqualTo(5); + await Assert.That(svc.SetupAllProperties()).IsEqualTo(6); + await Assert.That(svc.GetDiagnostics()).IsEqualTo(7); + await Assert.That(svc.SetState("x")).IsEqualTo(8); + await Assert.That(svc.InState()).IsEqualTo(9); + await Assert.That(svc.DefaultValueProvider()).IsEqualTo(10); + + mock.Reset().WasCalled(Times.Once); + mock.SetState("x").WasCalled(Times.Once); + + // Framework operations remain reachable via the static helpers. + await Assert.That(Mock.Invocations(mock).Count).IsEqualTo(10); + Mock.Reset(mock); + await Assert.That(Mock.Invocations(mock).Count).IsEqualTo(0); + } + + public interface IObjectCollision + { + int Object { get; } + } + + [Test] + public async Task User_Object_Property_Is_Reachable_Via_Renamed_Extension() + { + var mock = IObjectCollision.Mock(); + // The Mock.Object property still exists, so the generated extension is renamed. + // The single-trailing-underscore form is the primary rename. + mock.Object_.Returns(42); + + await Assert.That(mock.Object.Object).IsEqualTo(42); + } + + public interface IObjectOverflow + { + int Object { get; } + int Object_ { get; } + } + + [Test] + public async Task Object_And_Object_Underscore_Both_Reachable_With_Iterative_Suffix() + { + var mock = IObjectOverflow.Mock(); + // User's Object property — extension renamed past the user-defined Object_ to Object__. + mock.Object__.Returns(7); + // User's Object_ property — name doesn't clash with framework, kept as Object_. + mock.Object_.Returns(11); + + await Assert.That(mock.Object.Object).IsEqualTo(7); + await Assert.That(mock.Object.Object_).IsEqualTo(11); + } + + public interface IEqualsCollision + { + bool Equals(string other); + int GetHashCode(int seed); + string ToString(string format); + } + + [Test] + public async Task Inherited_Object_Method_Names_Use_Of_Suffix() + { + var mock = IEqualsCollision.Mock(); + mock.EqualsOf(Any()).Returns(true); + mock.GetHashCodeOf(Any()).Returns(99); + mock.ToStringOf(Any()).Returns("formatted"); + + var svc = mock.Object; + await Assert.That(svc.Equals("x")).IsTrue(); + await Assert.That(svc.GetHashCode(5)).IsEqualTo(99); + await Assert.That(svc.ToString("D")).IsEqualTo("formatted"); + } + + public interface IPolyfillSubject + { + // Plain interface — no member names that overlap with framework operations, + // so the net9.0+ generator polyfills emit instance-style ergonomics for + // Reset / VerifyAll / Invocations / etc. + int GetValue(); + } + +#if NET9_0_OR_GREATER + [Test] + public async Task Polyfill_Restores_Instance_Style_Mock_Reset_On_Net9_Plus() + { + var mock = IPolyfillSubject.Mock(); + mock.GetValue().Returns(7); + + await Assert.That(mock.Object.GetValue()).IsEqualTo(7); + await Assert.That(mock.Invocations.Count).IsEqualTo(1); + + mock.Reset(); + + await Assert.That(mock.Invocations.Count).IsEqualTo(0); + await Assert.That(mock.Object.GetValue()).IsEqualTo(0); + } + + [Test] + public async Task Polyfill_VerifyAll_And_VerifyNoOtherCalls_Reachable() + { + var mock = IPolyfillSubject.Mock(); + mock.GetValue().Returns(1); + _ = mock.Object.GetValue(); + + // No throw — setup invoked, no unverified calls outside the WasCalled. + mock.GetValue().WasCalled(); + mock.VerifyNoOtherCalls(); + mock.VerifyAll(); + await Assert.That(true).IsTrue(); + } + + [Test] + public async Task Polyfill_Property_Getters_And_Setter_Are_Reachable() + { + var mock = IPolyfillSubject.Mock(); + await Assert.That(mock.Behavior).IsEqualTo(MockBehavior.Loose); + await Assert.That(mock.Invocations).IsNotNull(); + + var provider = new NoopDefaults(); + mock.DefaultValueProvider = provider; + await Assert.That(mock.DefaultValueProvider).IsSameReferenceAs(provider); + } + + private sealed class NoopDefaults : IDefaultValueProvider + { + public bool CanProvide(Type type) => false; + public object? GetDefaultValue(Type type) => null; + } + + [Test] + public async Task Polyfill_Skipped_When_User_Member_Collides() + { + // IFrameworkNameMember.Reset is a user-declared method returning int. + // The polyfill must NOT emit a competing void Reset(this Mock) — the user's + // generated setup extension is the only mock.Reset(...) form. Reaching the + // framework operation requires Mock.Reset(mock). + var mock = IFrameworkNameMember.Mock(); + mock.Reset().Returns(99); + await Assert.That(mock.Object.Reset()).IsEqualTo(99); + + // The static helper remains the canonical way to clear setups. + Mock.Reset(mock); + await Assert.That(Mock.Invocations(mock).Count).IsEqualTo(0); + } +#endif + + public interface IEqualsOfOverflow + { + bool Equals(string other); + bool EqualsOf(string other); + } + + [Test] + public async Task EqualsOf_Overflow_Escalates_With_Underscore() + { + var mock = IEqualsOfOverflow.Mock(); + // User's Equals — primary rename EqualsOf collides with user-defined EqualsOf, + // iterative suffix escalates to EqualsOf_. + mock.EqualsOf_(Any()).Returns(true); + // User's literal EqualsOf — unchanged (only Equals/GetHashCode/ToString are renamed). + mock.EqualsOf(Any()).Returns(false); + + var svc = mock.Object; + await Assert.That(svc.Equals("x")).IsTrue(); + await Assert.That(svc.EqualsOf("x")).IsFalse(); + } +} diff --git a/TUnit.Mocks.Tests/OrderedVerificationTests.cs b/TUnit.Mocks.Tests/OrderedVerificationTests.cs index dc0200e889..3943ad754c 100644 --- a/TUnit.Mocks.Tests/OrderedVerificationTests.cs +++ b/TUnit.Mocks.Tests/OrderedVerificationTests.cs @@ -340,7 +340,7 @@ public void VerifyInOrder_Marks_Calls_As_Verified_For_VerifyNoOtherCalls() }); // This should pass because the calls above were verified in VerifyInOrder - mock.VerifyNoOtherCalls(); + Mock.VerifyNoOtherCalls(mock); } [Test] @@ -365,7 +365,7 @@ public async Task VerifyInOrder_Partial_Verification_Leaves_Unverified_Calls() // Log("hello") was not verified, so this should fail var exception = Assert.Throws(() => { - mock.VerifyNoOtherCalls(); + Mock.VerifyNoOtherCalls(mock); }); await Assert.That(exception.Message).Contains("Log(hello)"); diff --git a/TUnit.Mocks.Tests/PerformanceOptimizationTests.cs b/TUnit.Mocks.Tests/PerformanceOptimizationTests.cs index 2afbba5a6e..1e9be01ed9 100644 --- a/TUnit.Mocks.Tests/PerformanceOptimizationTests.cs +++ b/TUnit.Mocks.Tests/PerformanceOptimizationTests.cs @@ -35,7 +35,7 @@ public async Task Invocations_Track_Per_Member_Counts_Correctly() calc.Log("msg2"); // Assert — total invocations correct - await Assert.That(mock.Invocations).Count().IsEqualTo(6); + await Assert.That(Mock.Invocations(mock)).Count().IsEqualTo(6); // Verify per-member counts via WasCalled mock.Add(Any(), Any()).WasCalled(Times.Exactly(3)); @@ -56,14 +56,14 @@ public async Task Invocations_Per_Member_Independent_After_Reset() calc.Add(3, 4); mock.Add(Any(), Any()).WasCalled(Times.Exactly(2)); - mock.Reset(); + Mock.Reset(mock); mock.Add(Any(), Any()).Returns(99); calc.Add(5, 6); // Assert — only one call after reset mock.Add(Any(), Any()).WasCalled(Times.Once); - await Assert.That(mock.Invocations).Count().IsEqualTo(1); + await Assert.That(Mock.Invocations(mock)).Count().IsEqualTo(1); } [Test] @@ -85,7 +85,7 @@ public async Task GetCallsFor_Returns_Only_Matching_Member_Calls() // Assert — verify correct counts per member mock.Add(Any(), Any()).WasCalled(Times.Exactly(2)); mock.GetName().WasCalled(Times.Exactly(3)); - await Assert.That(mock.Invocations).Count().IsEqualTo(5); + await Assert.That(Mock.Invocations(mock)).Count().IsEqualTo(5); } // ======================================================================== @@ -262,7 +262,7 @@ public async Task Concurrent_Calls_To_Multiple_Members_All_Recorded() await Task.WhenAll(addTasks.Concat(nameTasks)); // Assert — all 100 calls recorded - await Assert.That(mock.Invocations).Count().IsEqualTo(100); + await Assert.That(Mock.Invocations(mock)).Count().IsEqualTo(100); mock.Add(Any(), Any()).WasCalled(Times.Exactly(50)); mock.GetName().WasCalled(Times.Exactly(50)); } @@ -325,7 +325,7 @@ public async Task VerifyAll_Works_With_Flat_Array_Setup_Storage() calc.GetName(); // Assert — VerifyAll should iterate all setups in flat array - mock.VerifyAll(); + Mock.VerifyAll(mock); await Assert.That(true).IsTrue(); } @@ -341,7 +341,7 @@ public async Task VerifyAll_Fails_When_Setup_Not_Invoked_With_Flat_Array() calc.Add(1, 2); // Only call Add, not GetName // Assert — should fail because GetName setup was not invoked - var ex = Assert.Throws(() => mock.VerifyAll()); + var ex = Assert.Throws(() => Mock.VerifyAll(mock)); await Assert.That(ex).IsNotNull(); } @@ -360,7 +360,7 @@ public async Task VerifyNoOtherCalls_Works_With_Per_Member_Index() mock.Add(Any(), Any()).WasCalled(Times.Exactly(2)); // Assert — no unverified calls - mock.VerifyNoOtherCalls(); + Mock.VerifyNoOtherCalls(mock); await Assert.That(true).IsTrue(); } @@ -380,7 +380,7 @@ public async Task VerifyNoOtherCalls_Fails_With_Unverified_Member() mock.Add(Any(), Any()).WasCalled(Times.Once); // Assert — GetName call is unverified - var ex = Assert.Throws(() => mock.VerifyNoOtherCalls()); + var ex = Assert.Throws(() => Mock.VerifyNoOtherCalls(mock)); await Assert.That(ex).IsNotNull(); } @@ -402,13 +402,13 @@ public async Task Reset_Clears_Per_Member_Call_Index_And_Counters() mock.Add(Any(), Any()).WasCalled(Times.Exactly(3)); // Act - mock.Reset(); + Mock.Reset(mock); // Assert — all counters reset mock.Add(Any(), Any()).WasNeverCalled(); mock.GetName().WasNeverCalled(); mock.Log(Any()).WasNeverCalled(); - await Assert.That(mock.Invocations).Count().IsEqualTo(0); + await Assert.That(Mock.Invocations(mock)).Count().IsEqualTo(0); } [Test] @@ -424,7 +424,7 @@ public async Task Reset_Clears_Flat_Array_Setups_And_Allows_Reconfiguration() await Assert.That(calc.GetName()).IsEqualTo("first"); // Act - mock.Reset(); + Mock.Reset(mock); mock.Add(1, 2).Returns(200); mock.GetName().Returns("second"); @@ -445,12 +445,12 @@ public async Task Multiple_Reset_Cycles_Work_Correctly() calc.Add(1, 2); await Assert.That(calc.Add(1, 2)).IsEqualTo(cycle); mock.Add(Any(), Any()).WasCalled(Times.Exactly(2)); - mock.Reset(); + Mock.Reset(mock); } // Final state: clean mock.Add(Any(), Any()).WasNeverCalled(); - await Assert.That(mock.Invocations).Count().IsEqualTo(0); + await Assert.That(Mock.Invocations(mock)).Count().IsEqualTo(0); } // ======================================================================== @@ -467,7 +467,7 @@ public async Task Verification_Before_Any_Setup_Or_Call() mock.Add(Any(), Any()).WasNeverCalled(); mock.GetName().WasNeverCalled(); mock.Log(Any()).WasNeverCalled(); - await Assert.That(mock.Invocations).Count().IsEqualTo(0); + await Assert.That(Mock.Invocations(mock)).Count().IsEqualTo(0); } [Test] @@ -483,7 +483,7 @@ public async Task Call_Without_Setup_Still_Recorded_In_Per_Member_Index() calc.GetName(); // Assert — all calls recorded even without setups - await Assert.That(mock.Invocations).Count().IsEqualTo(3); + await Assert.That(Mock.Invocations(mock)).Count().IsEqualTo(3); mock.Add(Any(), Any()).WasCalled(Times.Once); mock.Log(Any()).WasCalled(Times.Once); mock.GetName().WasCalled(Times.Once); diff --git a/TUnit.Mocks.Tests/ProtectedMemberTests.cs b/TUnit.Mocks.Tests/ProtectedMemberTests.cs index d75f24430e..11a9a766ae 100644 --- a/TUnit.Mocks.Tests/ProtectedMemberTests.cs +++ b/TUnit.Mocks.Tests/ProtectedMemberTests.cs @@ -88,7 +88,7 @@ public async Task Protected_Method_Calls_Are_Recorded_In_Invocations() mock.Object.ProcessAndFormat(7); // Assert — both ComputeValue (base call) and FormatResult are recorded - await Assert.That(mock.Invocations).Count().IsGreaterThanOrEqualTo(2); + await Assert.That(Mock.Invocations(mock)).Count().IsGreaterThanOrEqualTo(2); } [Test] diff --git a/TUnit.Mocks.Tests/ResetTests.cs b/TUnit.Mocks.Tests/ResetTests.cs index ee246e757f..ac9d5b5a20 100644 --- a/TUnit.Mocks.Tests/ResetTests.cs +++ b/TUnit.Mocks.Tests/ResetTests.cs @@ -23,7 +23,7 @@ public async Task Reset_Clears_All_Setups() await Assert.That(calc.Add(3, 4)).IsEqualTo(99); // Act - mock.Reset(); + Mock.Reset(mock); // Assert — after reset, all setups are gone, returns default await Assert.That(calc.Add(1, 2)).IsEqualTo(0); @@ -44,7 +44,7 @@ public async Task Reset_Clears_Call_History() mock.Add(Any(), Any()).WasCalled(Times.Exactly(3)); // Act - mock.Reset(); + Mock.Reset(mock); // Assert — after reset, call history is cleared mock.Add(Any(), Any()).WasNeverCalled(); @@ -62,7 +62,7 @@ public async Task Reset_Allows_Fresh_Setup() await Assert.That(calc.Add(1, 2)).IsEqualTo(42); // Act — reset and reconfigure with different return value - mock.Reset(); + Mock.Reset(mock); mock.Add(1, 2).Returns(100); // Assert — new setup is in effect @@ -81,7 +81,7 @@ public async Task Reset_Allows_Fresh_Verification() mock.Add(1, 2).WasCalled(Times.Exactly(2)); // Act - mock.Reset(); + Mock.Reset(mock); // Make one new call calc.Add(1, 2); @@ -102,7 +102,7 @@ public async Task Reset_On_Strict_Mock_Restores_Strict_Behavior() await Assert.That(calc.Add(1, 2)).IsEqualTo(3); // Act — reset clears all setups - mock.Reset(); + Mock.Reset(mock); // Assert — strict mock throws again for unconfigured calls var exception = Assert.Throws(() => @@ -125,7 +125,7 @@ public async Task Reset_Clears_String_Method_Setup() await Assert.That(greeter.Greet("Alice")).IsEqualTo("Hello, Alice!"); // Act - mock.Reset(); + Mock.Reset(mock); // Assert — after reset, returns default (empty string for non-nullable string) var result = greeter.Greet("Alice"); @@ -144,7 +144,7 @@ public async Task Reset_Clears_Void_Method_Call_History() mock.Log(Any()).WasCalled(Times.Exactly(2)); // Act - mock.Reset(); + Mock.Reset(mock); // Assert — void method call history is cleared mock.Log(Any()).WasNeverCalled(); @@ -163,7 +163,7 @@ public async Task Reset_Followed_By_New_Setup_And_Verification() mock.Add(1, 1).WasCalled(Times.Once); // Act — reset - mock.Reset(); + Mock.Reset(mock); // Re-setup with new values mock.Add(1, 1).Returns(20); @@ -188,17 +188,17 @@ public async Task Multiple_Resets() // First cycle mock.Add(1, 1).Returns(10); await Assert.That(calc.Add(1, 1)).IsEqualTo(10); - mock.Reset(); + Mock.Reset(mock); // Second cycle mock.Add(1, 1).Returns(20); await Assert.That(calc.Add(1, 1)).IsEqualTo(20); - mock.Reset(); + Mock.Reset(mock); // Third cycle mock.Add(1, 1).Returns(30); await Assert.That(calc.Add(1, 1)).IsEqualTo(30); - mock.Reset(); + Mock.Reset(mock); // After final reset — returns default await Assert.That(calc.Add(1, 1)).IsEqualTo(0); diff --git a/TUnit.Mocks.Tests/StateMachineTests.cs b/TUnit.Mocks.Tests/StateMachineTests.cs index de0f87051c..29b6c0a461 100644 --- a/TUnit.Mocks.Tests/StateMachineTests.cs +++ b/TUnit.Mocks.Tests/StateMachineTests.cs @@ -15,14 +15,14 @@ public class StateMachineTests public async Task State_Machine_Returns_Different_Values_Per_State() { var mock = IConnection.Mock(); - mock.SetState("disconnected"); + Mock.SetState(mock, "disconnected"); - mock.InState("disconnected", m => + Mock.InState(mock, "disconnected", m => { m.GetStatus().Returns("OFFLINE"); }); - mock.InState("connected", m => + Mock.InState(mock, "connected", m => { m.GetStatus().Returns("ONLINE"); }); @@ -31,10 +31,10 @@ public async Task State_Machine_Returns_Different_Values_Per_State() await Assert.That(conn.GetStatus()).IsEqualTo("OFFLINE"); - mock.SetState("connected"); + Mock.SetState(mock, "connected"); await Assert.That(conn.GetStatus()).IsEqualTo("ONLINE"); - mock.SetState("disconnected"); + Mock.SetState(mock, "disconnected"); await Assert.That(conn.GetStatus()).IsEqualTo("OFFLINE"); } @@ -42,15 +42,15 @@ public async Task State_Machine_Returns_Different_Values_Per_State() public async Task TransitionsTo_Changes_State_After_Call() { var mock = IConnection.Mock(); - mock.SetState("disconnected"); + Mock.SetState(mock, "disconnected"); - mock.InState("disconnected", m => + Mock.InState(mock, "disconnected", m => { m.Connect().TransitionsTo("connected"); m.GetStatus().Returns("OFFLINE"); }); - mock.InState("connected", m => + Mock.InState(mock, "connected", m => { m.Disconnect().TransitionsTo("disconnected"); m.GetStatus().Returns("ONLINE"); @@ -71,14 +71,14 @@ public async Task TransitionsTo_Changes_State_After_Call() public async Task State_Scoped_Throws() { var mock = IConnection.Mock(); - mock.SetState("connected"); + Mock.SetState(mock, "connected"); - mock.InState("connected", m => + Mock.InState(mock, "connected", m => { m.Connect().Throws(); }); - mock.InState("disconnected", m => + Mock.InState(mock, "disconnected", m => { m.Disconnect().Throws(); }); @@ -97,7 +97,7 @@ public async Task State_Scoped_Throws() public async Task No_State_Setups_Match_In_Any_State() { var mock = IConnection.Mock(); - mock.SetState("disconnected"); + Mock.SetState(mock, "disconnected"); // Setup without state guard — matches in any state mock.GetStatus().Returns("ALWAYS"); @@ -105,10 +105,10 @@ public async Task No_State_Setups_Match_In_Any_State() IConnection conn = mock.Object; await Assert.That(conn.GetStatus()).IsEqualTo("ALWAYS"); - mock.SetState("connected"); + Mock.SetState(mock, "connected"); await Assert.That(conn.GetStatus()).IsEqualTo("ALWAYS"); - mock.SetState(null); + Mock.SetState(mock, null); await Assert.That(conn.GetStatus()).IsEqualTo("ALWAYS"); } @@ -121,7 +121,7 @@ public async Task State_Scoped_Setup_Overrides_Global_When_In_State() mock.GetStatus().Returns("DEFAULT"); // State-scoped setup - mock.InState("special", m => + Mock.InState(mock, "special", m => { m.GetStatus().Returns("SPECIAL"); }); @@ -132,11 +132,11 @@ public async Task State_Scoped_Setup_Overrides_Global_When_In_State() await Assert.That(conn.GetStatus()).IsEqualTo("DEFAULT"); // State set — scoped setup wins (last-wins semantics, state-scoped was added later) - mock.SetState("special"); + Mock.SetState(mock, "special"); await Assert.That(conn.GetStatus()).IsEqualTo("SPECIAL"); // Different state — scoped doesn't match, global wins - mock.SetState("other"); + Mock.SetState(mock, "other"); await Assert.That(conn.GetStatus()).IsEqualTo("DEFAULT"); } @@ -144,9 +144,9 @@ public async Task State_Scoped_Setup_Overrides_Global_When_In_State() public async Task Strict_Mode_Throws_For_Unconfigured_Call_In_State() { var mock = IConnection.Mock(MockBehavior.Strict); - mock.SetState("disconnected"); + Mock.SetState(mock, "disconnected"); - mock.InState("disconnected", m => + Mock.InState(mock, "disconnected", m => { m.GetStatus().Returns("OFFLINE"); }); @@ -163,14 +163,14 @@ public async Task Nested_InState_Restores_Previous_State_Scope() { // Regression test: nested InState calls must save/restore PendingRequiredState var mock = IConnection.Mock(); - mock.SetState("outer"); + Mock.SetState(mock, "outer"); - mock.InState("outer", m => + Mock.InState(mock, "outer", m => { m.GetStatus().Returns("OUTER"); // Nested InState should temporarily switch to "inner" scope - mock.InState("inner", m => + Mock.InState(mock, "inner", m => { m.Connect(); }); @@ -186,7 +186,7 @@ public async Task Nested_InState_Restores_Previous_State_Scope() conn.Disconnect(); // should not throw (setup registered in outer scope) // In "inner" state, Connect should work (it was set up in inner scope) - mock.SetState("inner"); + Mock.SetState(mock, "inner"); conn.Connect(); // should not throw } @@ -199,18 +199,18 @@ public async Task SetState_Null_Clears_State() mock.GetStatus().Returns("NO_STATE"); // State-scoped setup — added second, wins when in "connected" state - mock.InState("connected", m => + Mock.InState(mock, "connected", m => { m.GetStatus().Returns("ONLINE"); }); - mock.SetState("connected"); + Mock.SetState(mock, "connected"); IConnection conn = mock.Object; await Assert.That(conn.GetStatus()).IsEqualTo("ONLINE"); // Clear state — scoped setup no longer matches, global setup wins - mock.SetState(null); + Mock.SetState(mock, null); await Assert.That(conn.GetStatus()).IsEqualTo("NO_STATE"); } @@ -218,9 +218,9 @@ public async Task SetState_Null_Clears_State() public async Task Reset_Clears_State() { var mock = IConnection.Mock(); - mock.SetState("connected"); + Mock.SetState(mock, "connected"); - mock.Reset(); + Mock.Reset(mock); // After reset, current state should be null await Assert.That(MockRegistry.GetEngine(mock).CurrentState).IsNull(); @@ -230,9 +230,9 @@ public async Task Reset_Clears_State() public async Task Verify_Works_With_State_Scoped_Setups() { var mock = IConnection.Mock(); - mock.SetState("disconnected"); + Mock.SetState(mock, "disconnected"); - mock.InState("disconnected", m => + Mock.InState(mock, "disconnected", m => { m.Connect().TransitionsTo("connected"); }); diff --git a/TUnit.Mocks.Tests/StrictModeTests.cs b/TUnit.Mocks.Tests/StrictModeTests.cs index 8e0d968c35..6e77d8fe44 100644 --- a/TUnit.Mocks.Tests/StrictModeTests.cs +++ b/TUnit.Mocks.Tests/StrictModeTests.cs @@ -65,7 +65,7 @@ public async Task Strict_Configured_Void_Method_Does_Not_Throw() // Act & Assert — configured void method should not throw ICalculator calc = mock.Object; calc.Log("expected message"); - await Assert.That(mock.Behavior).IsEqualTo(MockBehavior.Strict); + await Assert.That(Mock.Behavior(mock)).IsEqualTo(MockBehavior.Strict); } [Test] @@ -197,6 +197,6 @@ public async Task Loose_Is_Default_Behavior() // Assert await Assert.That(result).IsEqualTo(0); - await Assert.That(mock.Behavior).IsEqualTo(MockBehavior.Loose); + await Assert.That(Mock.Behavior(mock)).IsEqualTo(MockBehavior.Loose); } } diff --git a/TUnit.Mocks.Tests/VerifyAllTests.cs b/TUnit.Mocks.Tests/VerifyAllTests.cs index 61b234ffca..b24e089b59 100644 --- a/TUnit.Mocks.Tests/VerifyAllTests.cs +++ b/TUnit.Mocks.Tests/VerifyAllTests.cs @@ -21,7 +21,7 @@ public async Task VerifyAll_Passes_When_All_Setups_Invoked() svc.GetValue("key"); svc.Process(1); - mock.VerifyAll(); + Mock.VerifyAll(mock); await Assert.That(true).IsTrue(); } @@ -35,7 +35,7 @@ public async Task VerifyAll_Fails_When_Setup_Not_Invoked() var svc = mock.Object; svc.GetValue("key"); // Only call GetValue, not Process - var ex = Assert.Throws(() => mock.VerifyAll()); + var ex = Assert.Throws(() => Mock.VerifyAll(mock)); await Assert.That(ex.Message).Contains("Process"); } @@ -45,7 +45,7 @@ public async Task VerifyAll_Fails_When_No_Setups_Called() var mock = IService.Mock(); mock.GetValue(Any()).Returns("value"); - var ex = Assert.Throws(() => mock.VerifyAll()); + var ex = Assert.Throws(() => Mock.VerifyAll(mock)); await Assert.That(ex.Message).Contains("GetValue"); } @@ -53,7 +53,7 @@ public async Task VerifyAll_Fails_When_No_Setups_Called() public async Task VerifyAll_Passes_When_No_Setups_Registered() { var mock = IService.Mock(); - mock.VerifyAll(); // No setups = nothing to verify + Mock.VerifyAll(mock); // No setups = nothing to verify await Assert.That(true).IsTrue(); } @@ -65,7 +65,7 @@ public async Task VerifyAll_Multiple_Uninvoked_Shows_All() mock.Process(42); // Don't call anything - var ex = Assert.Throws(() => mock.VerifyAll()); + var ex = Assert.Throws(() => Mock.VerifyAll(mock)); await Assert.That(ex.Message).Contains("GetValue"); await Assert.That(ex.Message).Contains("Process"); } diff --git a/TUnit.Mocks.Tests/VerifyNoOtherCallsTests.cs b/TUnit.Mocks.Tests/VerifyNoOtherCallsTests.cs index 03dd840a78..b82dba0a71 100644 --- a/TUnit.Mocks.Tests/VerifyNoOtherCallsTests.cs +++ b/TUnit.Mocks.Tests/VerifyNoOtherCallsTests.cs @@ -21,7 +21,7 @@ public async Task VerifyNoOtherCalls_Passes_When_All_Calls_Verified() svc.GetValue("key1"); mock.GetValue("key1").WasCalled(Times.Once); - mock.VerifyNoOtherCalls(); + Mock.VerifyNoOtherCalls(mock); await Assert.That(true).IsTrue(); } @@ -39,7 +39,7 @@ public async Task VerifyNoOtherCalls_Fails_When_Unverified_Calls_Exist() // Only verify GetValue, not Process mock.GetValue("key1").WasCalled(Times.Once); - var ex = Assert.Throws(() => mock.VerifyNoOtherCalls()); + var ex = Assert.Throws(() => Mock.VerifyNoOtherCalls(mock)); await Assert.That(ex.Message).Contains("Process(42)"); } @@ -47,7 +47,7 @@ public async Task VerifyNoOtherCalls_Fails_When_Unverified_Calls_Exist() public async Task VerifyNoOtherCalls_Passes_When_No_Calls_Made() { var mock = IService.Mock(); - mock.VerifyNoOtherCalls(); + Mock.VerifyNoOtherCalls(mock); await Assert.That(true).IsTrue(); } @@ -60,8 +60,8 @@ public async Task VerifyNoOtherCalls_Works_After_Reset() var svc = mock.Object; svc.GetValue("key1"); - mock.Reset(); - mock.VerifyNoOtherCalls(); // should pass — history cleared + Mock.Reset(mock); + Mock.VerifyNoOtherCalls(mock); // should pass — history cleared await Assert.That(true).IsTrue(); } @@ -78,7 +78,7 @@ public async Task VerifyNoOtherCalls_Multiple_Unverified_Shows_All() svc.Reset(); // Verify none - var ex = Assert.Throws(() => mock.VerifyNoOtherCalls()); + var ex = Assert.Throws(() => Mock.VerifyNoOtherCalls(mock)); await Assert.That(ex.Message).Contains("GetValue(a)"); await Assert.That(ex.Message).Contains("Process(1)"); } diff --git a/TUnit.Mocks/IMockControl.cs b/TUnit.Mocks/IMockControl.cs new file mode 100644 index 0000000000..6596f0b1cb --- /dev/null +++ b/TUnit.Mocks/IMockControl.cs @@ -0,0 +1,53 @@ +using TUnit.Mocks.Diagnostics; +using TUnit.Mocks.Verification; + +namespace TUnit.Mocks; + +/// +/// Strongly-typed framework operations for a . +/// Implemented explicitly on so the members never appear as instance candidates +/// during overload resolution — preventing them from shadowing source-generated extension methods +/// whose names happen to match. Reached via the static helpers on . +/// +/// +/// carries the non-generic subset (, +/// , , ObjectInstance) +/// because needs to iterate mocks as a heterogeneous +/// [] for batch operations. The typed members that depend on T +/// (, , the typed , +/// state-machine helpers) only make sense in the generic shape and live here. +/// +internal interface IMockControl : IMock where T : class +{ + /// The mock object that implements T. + T Object { get; } + + /// All calls made to this mock, in order. + IReadOnlyList Invocations { get; } + + /// The mock behavior (Loose or Strict). + MockBehavior Behavior { get; } + + /// + /// Custom default-value provider consulted before auto-mocking and built-in defaults in loose mode. + /// + IDefaultValueProvider? DefaultValueProvider { get; set; } + + /// + /// Enables auto-tracking for all properties. Setters store, getters return. + /// Explicit setups take precedence. + /// + void SetupAllProperties(); + + /// Returns a diagnostic report of setup coverage and call matching. + MockDiagnostics GetDiagnostics(); + + /// Sets the current state for state-machine mocking. Null clears. + void SetState(string? stateName); + + /// + /// Registers setups scoped to a specific state. Setups created inside + /// only match when the engine is in . + /// + void InState(string stateName, Action> configure); +} diff --git a/TUnit.Mocks/Mock.cs b/TUnit.Mocks/Mock.cs index f75ccaa314..26cab1f695 100644 --- a/TUnit.Mocks/Mock.cs +++ b/TUnit.Mocks/Mock.cs @@ -1,3 +1,4 @@ +using TUnit.Mocks.Diagnostics; using TUnit.Mocks.Verification; namespace TUnit.Mocks; @@ -44,7 +45,7 @@ public static Mock Get(T mockedObject) where T : class public static Mock Of(MockBehavior behavior, IDefaultValueProvider defaultValueProvider) where T : class { var mock = Of(behavior); - mock.DefaultValueProvider = defaultValueProvider; + ((IMockControl)mock).DefaultValueProvider = defaultValueProvider; return mock; } @@ -185,4 +186,55 @@ public static void VerifyInOrder(Action verificationActions) { OrderedVerification.Verify(verificationActions); } + + /// All calls made to , in order. + public static IReadOnlyList Invocations(Mock mock) where T : class + => ((IMockControl)mock).Invocations; + + /// The mock behavior (Loose or Strict). + public static MockBehavior Behavior(Mock mock) where T : class + => ((IMockControl)mock).Behavior; + + /// Gets the custom default-value provider, or null if none is configured. + public static IDefaultValueProvider? GetDefaultValueProvider(Mock mock) where T : class + => ((IMockControl)mock).DefaultValueProvider; + + /// Sets the custom default-value provider. + public static void SetDefaultValueProvider(Mock mock, IDefaultValueProvider? provider) where T : class + => ((IMockControl)mock).DefaultValueProvider = provider; + + /// Enables auto-tracking for all properties on . + public static void SetupAllProperties(Mock mock) where T : class + => ((IMockControl)mock).SetupAllProperties(); + + /// Clears all setups and call history on . + public static void Reset(Mock mock) where T : class + => ((IMock)mock).Reset(); + + /// + /// Verifies that every setup registered on was invoked at least once. + /// + public static void VerifyAll(Mock mock) where T : class + => ((IMock)mock).VerifyAll(); + + /// + /// Fails if any recorded call on was not matched by a prior verification. + /// + public static void VerifyNoOtherCalls(Mock mock) where T : class + => ((IMock)mock).VerifyNoOtherCalls(); + + /// Returns a diagnostic report of setup coverage and call matching for . + public static MockDiagnostics GetDiagnostics(Mock mock) where T : class + => ((IMockControl)mock).GetDiagnostics(); + + /// Sets the current state for state-machine mocking on . Null clears. + public static void SetState(Mock mock, string? stateName) where T : class + => ((IMockControl)mock).SetState(stateName); + + /// + /// Registers setups scoped to . Setups created inside + /// only match when the engine is in that state. + /// + public static void InState(Mock mock, string stateName, Action> configure) where T : class + => ((IMockControl)mock).InState(stateName, configure); } diff --git a/TUnit.Mocks/MockOfT.cs b/TUnit.Mocks/MockOfT.cs index bcf7dfbff9..19f786acff 100644 --- a/TUnit.Mocks/MockOfT.cs +++ b/TUnit.Mocks/MockOfT.cs @@ -9,7 +9,13 @@ namespace TUnit.Mocks; /// Wraps a generated mock implementation. Source-generated extension methods on Mock<T> /// provide strongly-typed setup and verification members directly. /// -public class Mock : IMock, IMockEngineAccess where T : class +/// +/// Framework operations (Reset, VerifyAll, Invocations, …) live on +/// as explicit interface implementations so they never shadow generated extensions whose names +/// happen to coincide with the mocked interface's members. Access them via +/// static helpers — e.g. Mock.Reset(mock), Mock.VerifyAll(mock). +/// +public class Mock : IMock, IMockControl, IMockEngineAccess where T : class { private readonly MockEngine _engine; @@ -34,36 +40,23 @@ public Mock(T mockObject, MockEngine engine) } } - /// All calls made to this mock, in order. - public IReadOnlyList Invocations => _engine.GetAllCalls(); + T IMockControl.Object => Object; - /// Returns the mock behavior (Loose or Strict). - public MockBehavior Behavior => _engine.Behavior; + IReadOnlyList IMockControl.Invocations => _engine.GetAllCalls(); - /// - /// Gets or sets the custom default value provider for unconfigured methods in loose mode. - /// When set, this provider is consulted before auto-mocking and built-in defaults. - /// - public IDefaultValueProvider? DefaultValueProvider + MockBehavior IMockControl.Behavior => _engine.Behavior; + + IDefaultValueProvider? IMockControl.DefaultValueProvider { get => _engine.DefaultValueProvider; set => _engine.DefaultValueProvider = value; } - /// - /// Enables auto-tracking for all properties. Property setters store values and getters return them, - /// acting like real auto-properties. Explicit setups take precedence over auto-tracked values. - /// - public void SetupAllProperties() => _engine.AutoTrackProperties = true; + void IMockControl.SetupAllProperties() => _engine.AutoTrackProperties = true; - /// Clears all setups and call history. - public void Reset() => _engine.Reset(); + void IMock.Reset() => _engine.Reset(); - /// - /// Verifies all registered setups were invoked at least once. - /// Throws listing uninvoked setups. - /// - public void VerifyAll() + void IMock.VerifyAll() { var setups = _engine.GetSetups(); var uninvoked = new List(); @@ -87,11 +80,7 @@ public void VerifyAll() } } - /// - /// Fails if any recorded call was not matched by a prior verification statement. - /// Throws listing unverified calls. - /// - public void VerifyNoOtherCalls() + void IMock.VerifyNoOtherCalls() { var unverified = _engine.GetUnverifiedCalls(); if (unverified.Count > 0) @@ -102,21 +91,11 @@ public void VerifyNoOtherCalls() } } - /// - /// Returns a diagnostic report of this mock's setup coverage and call matching. - /// - public MockDiagnostics GetDiagnostics() => _engine.GetDiagnostics(); - - /// - /// Sets the current state for state machine mocking. Null clears the state. - /// - public void SetState(string? stateName) => _engine.TransitionTo(stateName); - - /// - /// Configures setups scoped to a specific state. All setups registered inside - /// the action will only match when the engine is in the specified state. - /// - public void InState(string stateName, Action> configure) + MockDiagnostics IMockControl.GetDiagnostics() => _engine.GetDiagnostics(); + + void IMockControl.SetState(string? stateName) => _engine.TransitionTo(stateName); + + void IMockControl.InState(string stateName, Action> configure) { var previous = _engine.PendingRequiredState; _engine.PendingRequiredState = stateName; @@ -130,15 +109,6 @@ public void InState(string stateName, Action> configure) } } - /// - void IMock.VerifyAll() => VerifyAll(); - - /// - void IMock.VerifyNoOtherCalls() => VerifyNoOtherCalls(); - - /// - void IMock.Reset() => Reset(); - - /// Implicit conversion to T -- no .Object needed. + /// Implicit conversion to T — no .Object needed. public static implicit operator T(Mock mock) => mock.Object; }