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 31308fc2a9..7a2df6ebc9 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 @@ -3,7 +3,7 @@ namespace TUnit.Mocks.Generated { - internal static class MyService_PartialMockFactory + internal static class MyServicePartialMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -14,7 +14,7 @@ namespace TUnit.Mocks.Generated private static global::TUnit.Mocks.Mock Create(global::TUnit.Mocks.MockBehavior behavior, object[] constructorArgs) { var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new MyService_MockImpl(engine); + var impl = new MyServiceMockImpl(engine); engine.Raisable = impl; var mock = new global::TUnit.Mocks.Mock(impl, engine); return mock; @@ -30,14 +30,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class MyService_MockImpl : global::MyService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class MyServiceMockImpl : global::MyService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal MyService_MockImpl(global::TUnit.Mocks.MockEngine engine) : base() + internal MyServiceMockImpl(global::TUnit.Mocks.MockEngine engine) : base() { _engine = engine; } 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 02fe6523a2..e32e1439a4 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IRepository_string__Mock : global::TUnit.Mocks.Mock>, global::IRepository + public sealed class IRepository_string_Mock : global::TUnit.Mocks.Mock>, global::IRepository { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IRepository_string__Mock(global::IRepository mockObject, global::TUnit.Mocks.MockEngine> engine) + internal IRepository_string_Mock(global::IRepository mockObject, global::TUnit.Mocks.MockEngine> engine) : base(mockObject, engine) { } string global::IRepository.GetById(int id) => Object.GetById(id); @@ -26,7 +26,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IRepository_string__MockFactory + internal static class IRepository_string_MockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -38,9 +38,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IRepository' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine>(behavior); - var impl = new IRepository_string__MockImpl(engine); + var impl = new IRepository_string_MockImpl(engine); engine.Raisable = impl; - var mock = new IRepository_string__Mock(impl, engine); + var mock = new IRepository_string_Mock(impl, engine); return mock; } } @@ -54,14 +54,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IRepository_string__MockImpl : global::IRepository, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IRepository_string_MockImpl : global::IRepository, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine> _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IRepository_string__MockImpl(global::TUnit.Mocks.MockEngine> engine) + internal IRepository_string_MockImpl(global::TUnit.Mocks.MockEngine> engine) { _engine = engine; } @@ -284,9 +284,9 @@ namespace TUnit.Mocks { extension(global::IRepository) { - public static global::TUnit.Mocks.Generated.IRepository_string__Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IRepository_string_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IRepository_string__Mock)global::TUnit.Mocks.Generated.IRepository_string__MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IRepository_string_Mock)global::TUnit.Mocks.Generated.IRepository_string_MockFactory.Create(behavior, []); } } } 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 75f0ea42a4..d4cfc8013b 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IReadWriter_Mock : global::TUnit.Mocks.Mock, global::IReadWriter + public sealed class IReadWriterMock : global::TUnit.Mocks.Mock, global::IReadWriter { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IReadWriter_Mock(global::IReadWriter mockObject, global::TUnit.Mocks.MockEngine engine) + internal IReadWriterMock(global::IReadWriter mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } void global::IReadWriter.Flush() @@ -31,7 +31,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IReadWriter_MockFactory + internal static class IReadWriterMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -43,9 +43,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IReadWriter' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IReadWriter_MockImpl(engine); + var impl = new IReadWriterMockImpl(engine); engine.Raisable = impl; - var mock = new IReadWriter_Mock(impl, engine); + var mock = new IReadWriterMock(impl, engine); return mock; } } @@ -59,14 +59,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IReadWriter_MockImpl : global::IReadWriter, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IReadWriterMockImpl : global::IReadWriter, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IReadWriter_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IReadWriterMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -213,9 +213,9 @@ namespace TUnit.Mocks { extension(global::IReadWriter) { - public static global::TUnit.Mocks.Generated.IReadWriter_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IReadWriterMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IReadWriter_Mock)global::TUnit.Mocks.Generated.IReadWriter_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IReadWriterMock)global::TUnit.Mocks.Generated.IReadWriterMockFactory.Create(behavior, []); } } } 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 d5969d2970..4ee5db0849 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IAsyncService_Mock : global::TUnit.Mocks.Mock, global::IAsyncService + public sealed class IAsyncServiceMock : global::TUnit.Mocks.Mock, global::IAsyncService { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IAsyncService_Mock(global::IAsyncService mockObject, global::TUnit.Mocks.MockEngine engine) + internal IAsyncServiceMock(global::IAsyncService mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } global::System.Threading.Tasks.Task global::IAsyncService.GetValueAsync(string key) => Object.GetValueAsync(key); @@ -27,7 +27,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IAsyncService_MockFactory + internal static class IAsyncServiceMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -39,9 +39,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IAsyncService' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IAsyncService_MockImpl(engine); + var impl = new IAsyncServiceMockImpl(engine); engine.Raisable = impl; - var mock = new IAsyncService_Mock(impl, engine); + var mock = new IAsyncServiceMock(impl, engine); return mock; } } @@ -55,14 +55,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IAsyncService_MockImpl : global::IAsyncService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IAsyncServiceMockImpl : global::IAsyncService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IAsyncService_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IAsyncServiceMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -526,9 +526,9 @@ namespace TUnit.Mocks { extension(global::IAsyncService) { - public static global::TUnit.Mocks.Generated.IAsyncService_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IAsyncServiceMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IAsyncService_Mock)global::TUnit.Mocks.Generated.IAsyncService_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IAsyncServiceMock)global::TUnit.Mocks.Generated.IAsyncServiceMockFactory.Create(behavior, []); } } } 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 b018cec77c..5217f29ae1 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Events.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Events.verified.txt @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class INotifier_Mock : global::TUnit.Mocks.Mock, global::INotifier + public sealed class INotifierMock : global::TUnit.Mocks.Mock, global::INotifier { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal INotifier_Mock(global::INotifier mockObject, global::TUnit.Mocks.MockEngine engine) + internal INotifierMock(global::INotifier mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } void global::INotifier.Notify(string message) @@ -57,7 +57,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class INotifier_MockFactory + internal static class INotifierMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -69,9 +69,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::INotifier' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new INotifier_MockImpl(engine); + var impl = new INotifierMockImpl(engine); engine.Raisable = impl; - var mock = new INotifier_Mock(impl, engine); + var mock = new INotifierMock(impl, engine); return mock; } } @@ -85,14 +85,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class INotifier_MockImpl : global::INotifier, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class INotifierMockImpl : global::INotifier, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal INotifier_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal INotifierMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -246,9 +246,9 @@ namespace TUnit.Mocks { extension(global::INotifier) { - public static global::TUnit.Mocks.Generated.INotifier_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.INotifierMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.INotifier_Mock)global::TUnit.Mocks.Generated.INotifier_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.INotifierMock)global::TUnit.Mocks.Generated.INotifierMockFactory.Create(behavior, []); } } } 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 729c29d423..8c306bcfa9 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IRepository_Mock : global::TUnit.Mocks.Mock, global::IRepository + public sealed class IRepositoryMock : global::TUnit.Mocks.Mock, global::IRepository { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IRepository_Mock(global::IRepository mockObject, global::TUnit.Mocks.MockEngine engine) + internal IRepositoryMock(global::IRepository mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } T global::IRepository.GetById(int id) where T : class => Object.GetById(id); @@ -28,7 +28,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IRepository_MockFactory + internal static class IRepositoryMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -40,9 +40,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IRepository' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IRepository_MockImpl(engine); + var impl = new IRepositoryMockImpl(engine); engine.Raisable = impl; - var mock = new IRepository_Mock(impl, engine); + var mock = new IRepositoryMock(impl, engine); return mock; } } @@ -56,14 +56,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IRepository_MockImpl : global::IRepository, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IRepositoryMockImpl : global::IRepository, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IRepository_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IRepositoryMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -154,9 +154,9 @@ namespace TUnit.Mocks { extension(global::IRepository) { - public static global::TUnit.Mocks.Generated.IRepository_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IRepositoryMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IRepository_Mock)global::TUnit.Mocks.Generated.IRepository_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IRepositoryMock)global::TUnit.Mocks.Generated.IRepositoryMockFactory.Create(behavior, []); } } } 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 fadab70749..bc8a8024fe 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 @@ -4,11 +4,11 @@ namespace TUnit.Mocks.Generated { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - public interface IMyService_Mockable : global::IMyService + public interface IMyServiceMockable : global::IMyService { static global::ClientConfig global::IServiceBase.CreateDefaultConfig() { - var __engine = IMyService_StaticEngine.Engine; + var __engine = IMyServiceStaticEngine.Engine; if (__engine is null) return default!; var __result = __engine.HandleCallWithReturn(1, "CreateDefaultConfig", global::System.Array.Empty(), default!); return __result; @@ -16,7 +16,7 @@ namespace TUnit.Mocks.Generated } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal static class IMyService_StaticEngine + internal static class IMyServiceStaticEngine { private static readonly global::System.Threading.AsyncLocal _engine = new(); @@ -36,21 +36,21 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IMyService_MockFactory + internal static class IMyServiceMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() { - global::TUnit.Mocks.MockRegistry.RegisterFactory(Create); + global::TUnit.Mocks.MockRegistry.RegisterFactory(Create); } - internal static global::TUnit.Mocks.Mock Create(global::TUnit.Mocks.MockBehavior behavior, object[] constructorArgs) + internal static global::TUnit.Mocks.Mock Create(global::TUnit.Mocks.MockBehavior behavior, object[] constructorArgs) { - if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::TUnit.Mocks.Generated.IMyService_Mockable' does not support constructor arguments, but {constructorArgs.Length} were provided."); - var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IMyService_MockImpl(engine); + if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::TUnit.Mocks.Generated.IMyServiceMockable' does not support constructor arguments, but {constructorArgs.Length} were provided."); + var engine = new global::TUnit.Mocks.MockEngine(behavior); + var impl = new IMyServiceMockImpl(engine); engine.Raisable = impl; - var mock = new global::TUnit.Mocks.Mock(impl, engine); + var mock = new global::TUnit.Mocks.Mock(impl, engine); return mock; } } @@ -64,23 +64,23 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IMyService_MockImpl : global::TUnit.Mocks.Generated.IMyService_Mockable, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IMyServiceMockImpl : global::TUnit.Mocks.Generated.IMyServiceMockable, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { - private readonly global::TUnit.Mocks.MockEngine _engine; + private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IMyService_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IMyServiceMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; - if (IMyService_StaticEngine.Engine is not null) + if (IMyServiceStaticEngine.Engine is not null) { throw new global::System.InvalidOperationException( "Multiple mocks of an interface with static abstract members cannot be created in the same test context. " + "Static member calls are routed via a shared AsyncLocal engine, so only one mock instance per type is supported per test."); } - IMyService_StaticEngine.Engine = engine; + IMyServiceStaticEngine.Engine = engine; } public string GetName() @@ -106,13 +106,13 @@ namespace TUnit.Mocks.Generated { public static class IMyService_MockMemberExtensions { - public static global::TUnit.Mocks.MockMethodCall GetName(this global::TUnit.Mocks.Mock mock) + public static global::TUnit.Mocks.MockMethodCall GetName(this global::TUnit.Mocks.Mock mock) { var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "GetName", matchers); } - public static global::TUnit.Mocks.MockMethodCall CreateDefaultConfig(this global::TUnit.Mocks.Mock mock) + public static global::TUnit.Mocks.MockMethodCall CreateDefaultConfig(this global::TUnit.Mocks.Mock mock) { var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, "CreateDefaultConfig", matchers); 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 840d8b6e2d..0943343984 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class ITest_Mock : global::TUnit.Mocks.Mock, global::ITest + public sealed class ITestMock : global::TUnit.Mocks.Mock, global::ITest { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal ITest_Mock(global::ITest mockObject, global::TUnit.Mocks.MockEngine engine) + internal ITestMock(global::ITest mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } void global::ITest.Test(string @event) @@ -26,7 +26,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class ITest_MockFactory + internal static class ITestMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -38,9 +38,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::ITest' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new ITest_MockImpl(engine); + var impl = new ITestMockImpl(engine); engine.Raisable = impl; - var mock = new ITest_Mock(impl, engine); + var mock = new ITestMock(impl, engine); return mock; } } @@ -54,14 +54,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class ITest_MockImpl : global::ITest, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class ITestMockImpl : global::ITest, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal ITest_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal ITestMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -299,9 +299,9 @@ namespace TUnit.Mocks { extension(global::ITest) { - public static global::TUnit.Mocks.Generated.ITest_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.ITestMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.ITest_Mock)global::TUnit.Mocks.Generated.ITest_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.ITestMock)global::TUnit.Mocks.Generated.ITestMockFactory.Create(behavior, []); } } } 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 386057eb63..f9c4a6d77b 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IService_Mock : global::TUnit.Mocks.Mock, global::IService + public sealed class IServiceMock : global::TUnit.Mocks.Mock, global::IService { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IService_Mock(global::IService mockObject, global::TUnit.Mocks.MockEngine engine) + internal IServiceMock(global::IService mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } global::System.Threading.Tasks.Task global::IService.GetAsync(int id) => Object.GetAsync(id); @@ -63,7 +63,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IService_MockFactory + internal static class IServiceMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -75,9 +75,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IService' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IService_MockImpl(engine); + var impl = new IServiceMockImpl(engine); engine.Raisable = impl; - var mock = new IService_Mock(impl, engine); + var mock = new IServiceMock(impl, engine); return mock; } } @@ -91,14 +91,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IService_MockImpl : global::IService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IServiceMockImpl : global::IService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IService_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IServiceMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -391,9 +391,9 @@ namespace TUnit.Mocks { extension(global::IService) { - public static global::TUnit.Mocks.Generated.IService_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IServiceMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IService_Mock)global::TUnit.Mocks.Generated.IService_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IServiceMock)global::TUnit.Mocks.Generated.IServiceMockFactory.Create(behavior, []); } } } 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 defaa6f555..f04cb2902c 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IFoo_Mock : global::TUnit.Mocks.Mock, global::IFoo + public sealed class IFooMock : global::TUnit.Mocks.Mock, global::IFoo { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IFoo_Mock(global::IFoo mockObject, global::TUnit.Mocks.MockEngine engine) + internal IFooMock(global::IFoo mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } void global::IFoo.Bar(object? baz) @@ -35,7 +35,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IFoo_MockFactory + internal static class IFooMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -47,9 +47,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IFoo' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IFoo_MockImpl(engine); + var impl = new IFooMockImpl(engine); engine.Raisable = impl; - var mock = new IFoo_Mock(impl, engine); + var mock = new IFooMock(impl, engine); return mock; } } @@ -63,14 +63,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IFoo_MockImpl : global::IFoo, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IFooMockImpl : global::IFoo, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IFoo_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IFooMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -571,9 +571,9 @@ namespace TUnit.Mocks { extension(global::IFoo) { - public static global::TUnit.Mocks.Generated.IFoo_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IFooMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IFoo_Mock)global::TUnit.Mocks.Generated.IFoo_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IFooMock)global::TUnit.Mocks.Generated.IFooMockFactory.Create(behavior, []); } } } 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 99fea2457c..f4d291c793 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IDictionary_Mock : global::TUnit.Mocks.Mock, global::IDictionary + public sealed class IDictionaryMock : global::TUnit.Mocks.Mock, global::IDictionary { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IDictionary_Mock(global::IDictionary mockObject, global::TUnit.Mocks.MockEngine engine) + internal IDictionaryMock(global::IDictionary mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } bool global::IDictionary.TryGetValue(string key, out string value) => Object.TryGetValue(key, out value); @@ -26,7 +26,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IDictionary_MockFactory + internal static class IDictionaryMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -38,9 +38,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IDictionary' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IDictionary_MockImpl(engine); + var impl = new IDictionaryMockImpl(engine); engine.Raisable = impl; - var mock = new IDictionary_Mock(impl, engine); + var mock = new IDictionaryMock(impl, engine); return mock; } } @@ -54,14 +54,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IDictionary_MockImpl : global::IDictionary, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IDictionaryMockImpl : global::IDictionary, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IDictionary_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IDictionaryMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -298,9 +298,9 @@ namespace TUnit.Mocks { extension(global::IDictionary) { - public static global::TUnit.Mocks.Generated.IDictionary_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IDictionaryMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IDictionary_Mock)global::TUnit.Mocks.Generated.IDictionary_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IDictionaryMock)global::TUnit.Mocks.Generated.IDictionaryMockFactory.Create(behavior, []); } } } 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 41b56490b0..936a7b3246 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IFormatter_Mock : global::TUnit.Mocks.Mock, global::IFormatter + public sealed class IFormatterMock : global::TUnit.Mocks.Mock, global::IFormatter { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IFormatter_Mock(global::IFormatter mockObject, global::TUnit.Mocks.MockEngine engine) + internal IFormatterMock(global::IFormatter mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } string global::IFormatter.Format(string value) => Object.Format(value); @@ -27,7 +27,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IFormatter_MockFactory + internal static class IFormatterMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -39,9 +39,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IFormatter' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IFormatter_MockImpl(engine); + var impl = new IFormatterMockImpl(engine); engine.Raisable = impl; - var mock = new IFormatter_Mock(impl, engine); + var mock = new IFormatterMock(impl, engine); return mock; } } @@ -55,14 +55,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IFormatter_MockImpl : global::IFormatter, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IFormatterMockImpl : global::IFormatter, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IFormatter_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IFormatterMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -553,9 +553,9 @@ namespace TUnit.Mocks { extension(global::IFormatter) { - public static global::TUnit.Mocks.Generated.IFormatter_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IFormatterMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IFormatter_Mock)global::TUnit.Mocks.Generated.IFormatter_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IFormatterMock)global::TUnit.Mocks.Generated.IFormatterMockFactory.Create(behavior, []); } } } 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 9ad40b3286..2bc986ff3b 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Properties.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Properties.verified.txt @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IRepository_Mock : global::TUnit.Mocks.Mock, global::IRepository + public sealed class IRepositoryMock : global::TUnit.Mocks.Mock, global::IRepository { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IRepository_Mock(global::IRepository mockObject, global::TUnit.Mocks.MockEngine engine) + internal IRepositoryMock(global::IRepository mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } string global::IRepository.Name { get => Object.Name; set => Object.Name = value; } @@ -25,7 +25,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IRepository_MockFactory + internal static class IRepositoryMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -37,9 +37,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IRepository' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IRepository_MockImpl(engine); + var impl = new IRepositoryMockImpl(engine); engine.Raisable = impl; - var mock = new IRepository_Mock(impl, engine); + var mock = new IRepositoryMock(impl, engine); return mock; } } @@ -53,14 +53,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IRepository_MockImpl : global::IRepository, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IRepositoryMockImpl : global::IRepository, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IRepository_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IRepositoryMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -125,9 +125,9 @@ namespace TUnit.Mocks { extension(global::IRepository) { - public static global::TUnit.Mocks.Generated.IRepository_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IRepositoryMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IRepository_Mock)global::TUnit.Mocks.Generated.IRepository_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IRepositoryMock)global::TUnit.Mocks.Generated.IRepositoryMockFactory.Create(behavior, []); } } } 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 19391108b0..fd6af71d4a 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IBufferProcessor_Mock : global::TUnit.Mocks.Mock, global::IBufferProcessor + public sealed class IBufferProcessorMock : global::TUnit.Mocks.Mock, global::IBufferProcessor { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IBufferProcessor_Mock(global::IBufferProcessor mockObject, global::TUnit.Mocks.MockEngine engine) + internal IBufferProcessorMock(global::IBufferProcessor mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } void global::IBufferProcessor.Process(global::System.ReadOnlySpan data) @@ -28,7 +28,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IBufferProcessor_MockFactory + internal static class IBufferProcessorMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -40,9 +40,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IBufferProcessor' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IBufferProcessor_MockImpl(engine); + var impl = new IBufferProcessorMockImpl(engine); engine.Raisable = impl; - var mock = new IBufferProcessor_Mock(impl, engine); + var mock = new IBufferProcessorMock(impl, engine); return mock; } } @@ -56,14 +56,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IBufferProcessor_MockImpl : global::IBufferProcessor, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IBufferProcessorMockImpl : global::IBufferProcessor, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IBufferProcessor_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IBufferProcessorMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -159,9 +159,9 @@ namespace TUnit.Mocks { extension(global::IBufferProcessor) { - public static global::TUnit.Mocks.Generated.IBufferProcessor_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IBufferProcessorMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IBufferProcessor_Mock)global::TUnit.Mocks.Generated.IBufferProcessor_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IBufferProcessorMock)global::TUnit.Mocks.Generated.IBufferProcessorMockFactory.Create(behavior, []); } } } 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 7912bf6afb..7b6c815fb9 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 @@ -4,11 +4,11 @@ namespace TUnit.Mocks.Generated { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - public interface IServiceFactory_Mockable : global::IServiceFactory + public interface IServiceFactoryMockable : global::IServiceFactory { static global::ClientConfig global::IServiceFactory.CreateDefaultConfig() { - var __engine = IServiceFactory_StaticEngine.Engine; + var __engine = IServiceFactoryStaticEngine.Engine; if (__engine is null) return default!; var __result = __engine.HandleCallWithReturn(1, "CreateDefaultConfig", global::System.Array.Empty(), default!); return __result; @@ -18,13 +18,13 @@ namespace TUnit.Mocks.Generated { get { - var __engine = IServiceFactory_StaticEngine.Engine; + var __engine = IServiceFactoryStaticEngine.Engine; if (__engine is null) return default!; return __engine.HandleCallWithReturn(2, "get_ServiceId", global::System.Array.Empty(), ""); } set { - var __engine = IServiceFactory_StaticEngine.Engine; + var __engine = IServiceFactoryStaticEngine.Engine; if (__engine is null) return; __engine.HandleCall(3, "set_ServiceId", new object?[] { value }); } @@ -32,7 +32,7 @@ namespace TUnit.Mocks.Generated } [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal static class IServiceFactory_StaticEngine + internal static class IServiceFactoryStaticEngine { private static readonly global::System.Threading.AsyncLocal _engine = new(); @@ -52,21 +52,21 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IServiceFactory_MockFactory + internal static class IServiceFactoryMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() { - global::TUnit.Mocks.MockRegistry.RegisterFactory(Create); + global::TUnit.Mocks.MockRegistry.RegisterFactory(Create); } - internal static global::TUnit.Mocks.Mock Create(global::TUnit.Mocks.MockBehavior behavior, object[] constructorArgs) + internal static global::TUnit.Mocks.Mock Create(global::TUnit.Mocks.MockBehavior behavior, object[] constructorArgs) { - if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::TUnit.Mocks.Generated.IServiceFactory_Mockable' does not support constructor arguments, but {constructorArgs.Length} were provided."); - var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IServiceFactory_MockImpl(engine); + if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::TUnit.Mocks.Generated.IServiceFactoryMockable' does not support constructor arguments, but {constructorArgs.Length} were provided."); + var engine = new global::TUnit.Mocks.MockEngine(behavior); + var impl = new IServiceFactoryMockImpl(engine); engine.Raisable = impl; - var mock = new global::TUnit.Mocks.Mock(impl, engine); + var mock = new global::TUnit.Mocks.Mock(impl, engine); return mock; } } @@ -80,23 +80,23 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IServiceFactory_MockImpl : global::TUnit.Mocks.Generated.IServiceFactory_Mockable, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IServiceFactoryMockImpl : global::TUnit.Mocks.Generated.IServiceFactoryMockable, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { - private readonly global::TUnit.Mocks.MockEngine _engine; + private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IServiceFactory_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IServiceFactoryMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; - if (IServiceFactory_StaticEngine.Engine is not null) + if (IServiceFactoryStaticEngine.Engine is not null) { throw new global::System.InvalidOperationException( "Multiple mocks of an interface with static abstract members cannot be created in the same test context. " + "Static member calls are routed via a shared AsyncLocal engine, so only one mock instance per type is supported per test."); } - IServiceFactory_StaticEngine.Engine = engine; + IServiceFactoryStaticEngine.Engine = engine; } public string GetName() @@ -122,19 +122,19 @@ namespace TUnit.Mocks.Generated { public static class IServiceFactory_MockMemberExtensions { - public static global::TUnit.Mocks.MockMethodCall GetName(this global::TUnit.Mocks.Mock mock) + public static global::TUnit.Mocks.MockMethodCall GetName(this global::TUnit.Mocks.Mock mock) { var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 0, "GetName", matchers); } - public static global::TUnit.Mocks.MockMethodCall CreateDefaultConfig(this global::TUnit.Mocks.Mock mock) + public static global::TUnit.Mocks.MockMethodCall CreateDefaultConfig(this global::TUnit.Mocks.Mock mock) { var matchers = global::System.Array.Empty(); return new global::TUnit.Mocks.MockMethodCall(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 1, "CreateDefaultConfig", matchers); } - extension(global::TUnit.Mocks.Mock mock) + extension(global::TUnit.Mocks.Mock mock) { public global::TUnit.Mocks.PropertyMockCall ServiceId => new(global::TUnit.Mocks.MockRegistry.GetEngine(mock), 2, 3, "ServiceId", true, true); 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 45c74e1959..fc66f06353 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IMyService_Mock : global::TUnit.Mocks.Mock, global::IMyService + public sealed class IMyServiceMock : global::TUnit.Mocks.Mock, global::IMyService { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IMyService_Mock(global::IMyService mockObject, global::TUnit.Mocks.MockEngine engine) + internal IMyServiceMock(global::IMyService mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } string global::IMyService.GetValue(string key) => Object.GetValue(key); @@ -23,7 +23,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IMyService_MockFactory + internal static class IMyServiceMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -35,9 +35,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IMyService' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IMyService_MockImpl(engine); + var impl = new IMyServiceMockImpl(engine); engine.Raisable = impl; - var mock = new IMyService_Mock(impl, engine); + var mock = new IMyServiceMock(impl, engine); return mock; } } @@ -51,14 +51,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IMyService_MockImpl : global::IMyService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IMyServiceMockImpl : global::IMyService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IMyService_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IMyServiceMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -210,9 +210,9 @@ namespace TUnit.Mocks { extension(global::IMyService) { - public static global::TUnit.Mocks.Generated.IMyService_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IMyServiceMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IMyService_Mock)global::TUnit.Mocks.Generated.IMyService_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IMyServiceMock)global::TUnit.Mocks.Generated.IMyServiceMockFactory.Create(behavior, []); } } } 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 e3b373e1f2..0b8f728f36 100644 --- a/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Multi_Method_Interface.verified.txt +++ b/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Multi_Method_Interface.verified.txt @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class ICalculator_Mock : global::TUnit.Mocks.Mock, global::ICalculator + public sealed class ICalculatorMock : global::TUnit.Mocks.Mock, global::ICalculator { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal ICalculator_Mock(global::ICalculator mockObject, global::TUnit.Mocks.MockEngine engine) + internal ICalculatorMock(global::ICalculator mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } int global::ICalculator.Add(int a, int b) => Object.Add(a, b); @@ -28,7 +28,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class ICalculator_MockFactory + internal static class ICalculatorMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -40,9 +40,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::ICalculator' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new ICalculator_MockImpl(engine); + var impl = new ICalculatorMockImpl(engine); engine.Raisable = impl; - var mock = new ICalculator_Mock(impl, engine); + var mock = new ICalculatorMock(impl, engine); return mock; } } @@ -56,14 +56,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class ICalculator_MockImpl : global::ICalculator, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class ICalculatorMockImpl : global::ICalculator, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal ICalculator_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal ICalculatorMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -337,9 +337,9 @@ namespace TUnit.Mocks { extension(global::ICalculator) { - public static global::TUnit.Mocks.Generated.ICalculator_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.ICalculatorMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.ICalculator_Mock)global::TUnit.Mocks.Generated.ICalculator_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.ICalculatorMock)global::TUnit.Mocks.Generated.ICalculatorMockFactory.Create(behavior, []); } } } 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 67cdeb3a4b..51ebef6461 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 @@ -1,9 +1,9 @@ // #nullable enable -namespace TUnit.Mocks.Generated +namespace TUnit.Mocks.Generated.ExternalLib { - internal static class ExternalLib_ExternalClient_PartialMockFactory + internal static class ExternalClientPartialMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -14,7 +14,7 @@ namespace TUnit.Mocks.Generated private static global::TUnit.Mocks.Mock Create(global::TUnit.Mocks.MockBehavior behavior, object[] constructorArgs) { var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new ExternalLib_ExternalClient_MockImpl(engine); + var impl = new ExternalClientMockImpl(engine); engine.Raisable = impl; var mock = new global::TUnit.Mocks.Mock(impl, engine); return mock; @@ -28,16 +28,16 @@ namespace TUnit.Mocks.Generated // #nullable enable -namespace TUnit.Mocks.Generated +namespace TUnit.Mocks.Generated.ExternalLib { - internal sealed class ExternalLib_ExternalClient_MockImpl : global::ExternalLib.ExternalClient, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class ExternalClientMockImpl : global::ExternalLib.ExternalClient, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal ExternalLib_ExternalClient_MockImpl(global::TUnit.Mocks.MockEngine engine) : base() + internal ExternalClientMockImpl(global::TUnit.Mocks.MockEngine engine) : base() { _engine = engine; } 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 97dabbe229..a4dea2f03c 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 @@ -1,9 +1,9 @@ // #nullable enable -namespace TUnit.Mocks.Generated +namespace TUnit.Mocks.Generated.ExternalLib { - internal static class ExternalLib_ServiceClient_PartialMockFactory + internal static class ServiceClientPartialMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -14,7 +14,7 @@ namespace TUnit.Mocks.Generated private static global::TUnit.Mocks.Mock Create(global::TUnit.Mocks.MockBehavior behavior, object[] constructorArgs) { var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new ExternalLib_ServiceClient_MockImpl(engine); + var impl = new ServiceClientMockImpl(engine); engine.Raisable = impl; var mock = new global::TUnit.Mocks.Mock(impl, engine); return mock; @@ -28,16 +28,16 @@ namespace TUnit.Mocks.Generated // #nullable enable -namespace TUnit.Mocks.Generated +namespace TUnit.Mocks.Generated.ExternalLib { - internal sealed class ExternalLib_ServiceClient_MockImpl : global::ExternalLib.ServiceClient, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class ServiceClientMockImpl : global::ExternalLib.ServiceClient, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal ExternalLib_ServiceClient_MockImpl(global::TUnit.Mocks.MockEngine engine) : base() + internal ServiceClientMockImpl(global::TUnit.Mocks.MockEngine engine) : base() { _engine = engine; } 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 647d52fd6a..04f0df874b 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 @@ -3,7 +3,7 @@ namespace TUnit.Mocks.Generated { - internal static class BaseService_PartialMockFactory + internal static class BaseServicePartialMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -14,7 +14,7 @@ namespace TUnit.Mocks.Generated private static global::TUnit.Mocks.Mock Create(global::TUnit.Mocks.MockBehavior behavior, object[] constructorArgs) { var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new BaseService_MockImpl(engine); + var impl = new BaseServiceMockImpl(engine); engine.Raisable = impl; var mock = new global::TUnit.Mocks.Mock(impl, engine); return mock; @@ -30,14 +30,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class BaseService_MockImpl : global::BaseService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class BaseServiceMockImpl : global::BaseService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal BaseService_MockImpl(global::TUnit.Mocks.MockEngine engine) : base() + internal BaseServiceMockImpl(global::TUnit.Mocks.MockEngine engine) : base() { _engine = engine; } 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 3ba9ec6e2b..2e4d7d1f58 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class IGreeter_Mock : global::TUnit.Mocks.Mock, global::IGreeter + public sealed class IGreeterMock : global::TUnit.Mocks.Mock, global::IGreeter { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal IGreeter_Mock(global::IGreeter mockObject, global::TUnit.Mocks.MockEngine engine) + internal IGreeterMock(global::IGreeter mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } string global::IGreeter.Greet(string name) => Object.Greet(name); @@ -21,7 +21,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class IGreeter_MockFactory + internal static class IGreeterMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -33,9 +33,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::IGreeter' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new IGreeter_MockImpl(engine); + var impl = new IGreeterMockImpl(engine); engine.Raisable = impl; - var mock = new IGreeter_Mock(impl, engine); + var mock = new IGreeterMock(impl, engine); return mock; } } @@ -49,14 +49,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class IGreeter_MockImpl : global::IGreeter, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class IGreeterMockImpl : global::IGreeter, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal IGreeter_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal IGreeterMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -191,9 +191,9 @@ namespace TUnit.Mocks { extension(global::IGreeter) { - public static global::TUnit.Mocks.Generated.IGreeter_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.IGreeterMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.IGreeter_Mock)global::TUnit.Mocks.Generated.IGreeter_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.IGreeterMock)global::TUnit.Mocks.Generated.IGreeterMockFactory.Create(behavior, []); } } } 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 3cffc61fa1..1d16875c4a 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 @@ -3,10 +3,10 @@ namespace TUnit.Mocks.Generated { - public sealed class INotifier_Mock : global::TUnit.Mocks.Mock, global::INotifier + public sealed class INotifierMock : global::TUnit.Mocks.Mock, global::INotifier { [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - internal INotifier_Mock(global::INotifier mockObject, global::TUnit.Mocks.MockEngine engine) + internal INotifierMock(global::INotifier mockObject, global::TUnit.Mocks.MockEngine engine) : base(mockObject, engine) { } void global::INotifier.Notify(string message) @@ -26,7 +26,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class INotifier_MockFactory + internal static class INotifierMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -38,9 +38,9 @@ namespace TUnit.Mocks.Generated { if (constructorArgs.Length > 0) throw new global::System.ArgumentException($"Interface mock 'global::INotifier' does not support constructor arguments, but {constructorArgs.Length} were provided."); var engine = new global::TUnit.Mocks.MockEngine(behavior); - var impl = new INotifier_MockImpl(engine); + var impl = new INotifierMockImpl(engine); engine.Raisable = impl; - var mock = new INotifier_Mock(impl, engine); + var mock = new INotifierMock(impl, engine); return mock; } } @@ -54,14 +54,14 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class INotifier_MockImpl : global::INotifier, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class INotifierMockImpl : global::INotifier, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal INotifier_MockImpl(global::TUnit.Mocks.MockEngine engine) + internal INotifierMockImpl(global::TUnit.Mocks.MockEngine engine) { _engine = engine; } @@ -197,9 +197,9 @@ namespace TUnit.Mocks { extension(global::INotifier) { - public static global::TUnit.Mocks.Generated.INotifier_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) + public static global::TUnit.Mocks.Generated.INotifierMock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose) { - return (global::TUnit.Mocks.Generated.INotifier_Mock)global::TUnit.Mocks.Generated.INotifier_MockFactory.Create(behavior, []); + return (global::TUnit.Mocks.Generated.INotifierMock)global::TUnit.Mocks.Generated.INotifierMockFactory.Create(behavior, []); } } } 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 e860740c8a..3ad6412a78 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 @@ -25,9 +25,9 @@ namespace TUnit.Mocks.Generated // #nullable enable -namespace TUnit.Mocks.Generated +namespace TUnit.Mocks.Generated.ExternalLib { - internal static class ExternalLib_ExternalService_WrapMockFactory + internal static class ExternalServiceWrapMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -39,7 +39,7 @@ namespace TUnit.Mocks.Generated { var engine = new global::TUnit.Mocks.MockEngine(behavior); engine.IsWrapMock = true; - var impl = new ExternalLib_ExternalService_WrapMockImpl(engine, instance); + var impl = new ExternalServiceWrapMockImpl(engine, instance); engine.Raisable = impl; var mock = new global::TUnit.Mocks.Mock(impl, engine); return mock; @@ -53,9 +53,9 @@ namespace TUnit.Mocks.Generated // #nullable enable -namespace TUnit.Mocks.Generated +namespace TUnit.Mocks.Generated.ExternalLib { - internal sealed class ExternalLib_ExternalService_WrapMockImpl : global::ExternalLib.ExternalService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class ExternalServiceWrapMockImpl : global::ExternalLib.ExternalService, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; private readonly global::ExternalLib.ExternalService _wrappedInstance; @@ -63,7 +63,7 @@ namespace TUnit.Mocks.Generated [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal ExternalLib_ExternalService_WrapMockImpl(global::TUnit.Mocks.MockEngine engine, global::ExternalLib.ExternalService wrappedInstance) : base() + internal ExternalServiceWrapMockImpl(global::TUnit.Mocks.MockEngine engine, global::ExternalLib.ExternalService wrappedInstance) : base() { _engine = engine; _wrappedInstance = wrappedInstance; 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 4f0383d629..917447e26c 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 @@ -41,7 +41,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal static class Repository_WrapMockFactory + internal static class RepositoryWrapMockFactory { [global::System.Runtime.CompilerServices.ModuleInitializer] internal static void Register() @@ -53,7 +53,7 @@ namespace TUnit.Mocks.Generated { var engine = new global::TUnit.Mocks.MockEngine(behavior); engine.IsWrapMock = true; - var impl = new Repository_WrapMockImpl(engine, instance); + var impl = new RepositoryWrapMockImpl(engine, instance); engine.Raisable = impl; var mock = new global::TUnit.Mocks.Mock(impl, engine); return mock; @@ -69,7 +69,7 @@ namespace TUnit.Mocks.Generated namespace TUnit.Mocks.Generated { - internal sealed class Repository_WrapMockImpl : global::Repository, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject + internal sealed class RepositoryWrapMockImpl : global::Repository, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject { private readonly global::TUnit.Mocks.MockEngine _engine; private readonly global::Repository _wrappedInstance; @@ -77,7 +77,7 @@ namespace TUnit.Mocks.Generated [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] global::TUnit.Mocks.IMock? global::TUnit.Mocks.IMockObject.MockWrapper { get; set; } - internal Repository_WrapMockImpl(global::TUnit.Mocks.MockEngine engine, global::Repository wrappedInstance) : base() + internal RepositoryWrapMockImpl(global::TUnit.Mocks.MockEngine engine, global::Repository wrappedInstance) : base() { _engine = engine; _wrappedInstance = wrappedInstance; diff --git a/TUnit.Mocks.SourceGenerator/Builders/MockBridgeBuilder.cs b/TUnit.Mocks.SourceGenerator/Builders/MockBridgeBuilder.cs index 58a44fedd4..fb3cf4c934 100644 --- a/TUnit.Mocks.SourceGenerator/Builders/MockBridgeBuilder.cs +++ b/TUnit.Mocks.SourceGenerator/Builders/MockBridgeBuilder.cs @@ -16,13 +16,14 @@ internal static class MockBridgeBuilder public static string Build(MockTypeModel model) { var writer = new CodeWriter(); - var safeName = MockImplBuilder.GetCompositeSafeName(model); + var safeName = MockImplBuilder.GetCompositeShortSafeName(model); + var mockNamespace = MockImplBuilder.GetMockNamespace(model); writer.AppendLine("// "); writer.AppendLine("#nullable enable"); writer.AppendLine(); - using (writer.Block("namespace TUnit.Mocks.Generated")) + using (writer.Block($"namespace {mockNamespace}")) { BuildBridgeInterface(writer, model, safeName); writer.AppendLine(); @@ -35,7 +36,7 @@ public static string Build(MockTypeModel model) private static void BuildBridgeInterface(CodeWriter writer, MockTypeModel model, string safeName) { writer.AppendLine("[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]"); - using (writer.Block($"public interface {safeName}_Mockable : {model.FullyQualifiedName}")) + using (writer.Block($"public interface {safeName}Mockable : {model.FullyQualifiedName}")) { bool first = true; @@ -72,7 +73,7 @@ private static void BuildBridgeInterface(CodeWriter writer, MockTypeModel model, private static void BuildStaticEngineClass(CodeWriter writer, string safeName) { writer.AppendLine("[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]"); - using (writer.Block($"internal static class {safeName}_StaticEngine")) + using (writer.Block($"internal static class {safeName}StaticEngine")) { writer.AppendLine("private static readonly global::System.Threading.AsyncLocal _engine = new();"); writer.AppendLine(); @@ -106,7 +107,7 @@ private static void GenerateStaticPropertyDim(CodeWriter writer, MockMemberModel { writer.AppendLine("get"); writer.OpenBrace(); - writer.AppendLine($"var __engine = {safeName}_StaticEngine.Engine;"); + writer.AppendLine($"var __engine = {safeName}StaticEngine.Engine;"); writer.AppendLine("if (__engine is null) return default!;"); if (prop.IsReturnTypeStaticAbstractInterface) { @@ -123,7 +124,7 @@ private static void GenerateStaticPropertyDim(CodeWriter writer, MockMemberModel { writer.AppendLine("set"); writer.OpenBrace(); - writer.AppendLine($"var __engine = {safeName}_StaticEngine.Engine;"); + writer.AppendLine($"var __engine = {safeName}StaticEngine.Engine;"); writer.AppendLine("if (__engine is null) return;"); writer.AppendLine($"__engine.HandleCall({prop.SetterMemberId}, \"set_{prop.Name}\", new object?[] {{ value }});"); writer.CloseBrace(); @@ -143,7 +144,7 @@ private static void GenerateStaticEventDim(CodeWriter writer, MockEventModel evt private static void GenerateStaticEngineDispatchBody(CodeWriter writer, MockMemberModel method, string safeName) { - writer.AppendLine($"var __engine = {safeName}_StaticEngine.Engine;"); + writer.AppendLine($"var __engine = {safeName}StaticEngine.Engine;"); // Initialize out parameters foreach (var p in method.Parameters) diff --git a/TUnit.Mocks.SourceGenerator/Builders/MockDelegateFactoryBuilder.cs b/TUnit.Mocks.SourceGenerator/Builders/MockDelegateFactoryBuilder.cs index 78225cc71f..19b8052dc7 100644 --- a/TUnit.Mocks.SourceGenerator/Builders/MockDelegateFactoryBuilder.cs +++ b/TUnit.Mocks.SourceGenerator/Builders/MockDelegateFactoryBuilder.cs @@ -7,7 +7,8 @@ internal static class MockDelegateFactoryBuilder public static string Build(MockTypeModel model) { var writer = new CodeWriter(); - var safeName = MockImplBuilder.GetCompositeSafeName(model); + var safeName = MockImplBuilder.GetCompositeShortSafeName(model); + var mockNamespace = MockImplBuilder.GetMockNamespace(model); // The delegate has exactly one method: Invoke var invokeMethod = model.Methods[0]; @@ -16,9 +17,9 @@ public static string Build(MockTypeModel model) writer.AppendLine("#nullable enable"); writer.AppendLine(); - using (writer.Block("namespace TUnit.Mocks.Generated")) + using (writer.Block($"namespace {mockNamespace}")) { - using (writer.Block($"internal static class {safeName}_MockDelegateFactory")) + using (writer.Block($"internal static class {safeName}MockDelegateFactory")) { writer.AppendLine("[global::System.Runtime.CompilerServices.ModuleInitializer]"); using (writer.Block("internal static void Register()")) diff --git a/TUnit.Mocks.SourceGenerator/Builders/MockFactoryBuilder.cs b/TUnit.Mocks.SourceGenerator/Builders/MockFactoryBuilder.cs index 1577b5534a..453937127e 100644 --- a/TUnit.Mocks.SourceGenerator/Builders/MockFactoryBuilder.cs +++ b/TUnit.Mocks.SourceGenerator/Builders/MockFactoryBuilder.cs @@ -7,13 +7,14 @@ internal static class MockFactoryBuilder public static string Build(MockTypeModel model) { var writer = new CodeWriter(); - var safeName = MockImplBuilder.GetCompositeSafeName(model); + var safeName = MockImplBuilder.GetCompositeShortSafeName(model); + var mockNamespace = MockImplBuilder.GetMockNamespace(model); writer.AppendLine("// "); writer.AppendLine("#nullable enable"); writer.AppendLine(); - using (writer.Block("namespace TUnit.Mocks.Generated")) + using (writer.Block($"namespace {mockNamespace}")) { if (model.IsWrapMock) { @@ -36,8 +37,8 @@ private static void BuildInterfaceFactory(CodeWriter writer, MockTypeModel model { var mockableType = MockImplBuilder.GetMockableTypeName(model); var factoryClassName = model.AdditionalInterfaceNames.Length > 0 - ? $"{safeName}_Multi_MockFactory" - : $"{safeName}_MockFactory"; + ? $"{safeName}MultiMockFactory" + : $"{safeName}MockFactory"; using (writer.Block($"internal static class {factoryClassName}")) { @@ -64,11 +65,11 @@ private static void BuildInterfaceFactory(CodeWriter writer, MockTypeModel model { writer.AppendLine($"if (constructorArgs.Length > 0) throw new global::System.ArgumentException($\"Interface mock '{mockableType}' does not support constructor arguments, but {{constructorArgs.Length}} were provided.\");"); writer.AppendLine($"var engine = new global::TUnit.Mocks.MockEngine<{mockableType}>(behavior);"); - writer.AppendLine($"var impl = new {safeName}_MockImpl(engine);"); + writer.AppendLine($"var impl = new {safeName}MockImpl(engine);"); writer.AppendLine("engine.Raisable = impl;"); if (MockWrapperTypeBuilder.CanGenerateWrapper(model)) { - writer.AppendLine($"var mock = new {safeName}_Mock(impl, engine);"); + writer.AppendLine($"var mock = new {safeName}Mock(impl, engine);"); } else { @@ -81,7 +82,7 @@ private static void BuildInterfaceFactory(CodeWriter writer, MockTypeModel model private static void BuildWrapFactory(CodeWriter writer, MockTypeModel model, string safeName) { - using (writer.Block($"internal static class {safeName}_WrapMockFactory")) + using (writer.Block($"internal static class {safeName}WrapMockFactory")) { writer.AppendLine("[global::System.Runtime.CompilerServices.ModuleInitializer]"); using (writer.Block("internal static void Register()")) @@ -94,7 +95,7 @@ private static void BuildWrapFactory(CodeWriter writer, MockTypeModel model, str { writer.AppendLine($"var engine = new global::TUnit.Mocks.MockEngine<{model.FullyQualifiedName}>(behavior);"); writer.AppendLine("engine.IsWrapMock = true;"); - writer.AppendLine($"var impl = new {safeName}_WrapMockImpl(engine, instance);"); + writer.AppendLine($"var impl = new {safeName}WrapMockImpl(engine, instance);"); writer.AppendLine("engine.Raisable = impl;"); writer.AppendLine($"var mock = new global::TUnit.Mocks.Mock<{model.FullyQualifiedName}>(impl, engine);"); writer.AppendLine("return mock;"); @@ -104,7 +105,7 @@ private static void BuildWrapFactory(CodeWriter writer, MockTypeModel model, str private static void BuildPartialFactory(CodeWriter writer, MockTypeModel model, string safeName) { - using (writer.Block($"internal static class {safeName}_PartialMockFactory")) + using (writer.Block($"internal static class {safeName}PartialMockFactory")) { writer.AppendLine("[global::System.Runtime.CompilerServices.ModuleInitializer]"); using (writer.Block("internal static void Register()")) @@ -132,7 +133,7 @@ private static void GenerateConstructorDispatch(CodeWriter writer, MockTypeModel if (model.Constructors.Length == 0) { // No explicit constructors - just use parameterless - writer.AppendLine($"var impl = new {safeName}_MockImpl(engine);"); + writer.AppendLine($"var impl = new {safeName}MockImpl(engine);"); return; } @@ -147,12 +148,12 @@ private static void GenerateConstructorDispatch(CodeWriter writer, MockTypeModel // If there's only a parameterless constructor, simple case if (orderedCtors.Count == 1 && hasParameterless) { - writer.AppendLine($"var impl = new {safeName}_MockImpl(engine);"); + writer.AppendLine($"var impl = new {safeName}MockImpl(engine);"); return; } // Generate dispatch logic based on constructorArgs length and types - writer.AppendLine($"{safeName}_MockImpl impl;"); + writer.AppendLine($"{safeName}MockImpl impl;"); // Group constructors by arity to handle same-arity overloads var arityGroups = orderedCtors.GroupBy(c => c.Parameters.Length).OrderBy(g => g.Key).ToList(); @@ -169,7 +170,7 @@ private static void GenerateConstructorDispatch(CodeWriter writer, MockTypeModel { using (writer.Block($"{keyword} (constructorArgs.Length == 0)")) { - writer.AppendLine($"impl = new {safeName}_MockImpl(engine);"); + writer.AppendLine($"impl = new {safeName}MockImpl(engine);"); } } else if (ctorsInGroup.Count == 1) @@ -185,7 +186,7 @@ private static void GenerateConstructorDispatch(CodeWriter writer, MockTypeModel castArgs.Add($"({p.FullyQualifiedType})constructorArgs[{i}]"); } var argList = string.Join(", ", castArgs); - writer.AppendLine($"impl = new {safeName}_MockImpl(engine, {argList});"); + writer.AppendLine($"impl = new {safeName}MockImpl(engine, {argList});"); } } else @@ -216,7 +217,7 @@ private static void GenerateConstructorDispatch(CodeWriter writer, MockTypeModel using (writer.Block($"{innerKeyword} ({condition})")) { - writer.AppendLine($"impl = new {safeName}_MockImpl(engine, {argList});"); + writer.AppendLine($"impl = new {safeName}MockImpl(engine, {argList});"); } } diff --git a/TUnit.Mocks.SourceGenerator/Builders/MockImplBuilder.cs b/TUnit.Mocks.SourceGenerator/Builders/MockImplBuilder.cs index 009825f5ba..9300335c3b 100644 --- a/TUnit.Mocks.SourceGenerator/Builders/MockImplBuilder.cs +++ b/TUnit.Mocks.SourceGenerator/Builders/MockImplBuilder.cs @@ -8,13 +8,14 @@ internal static class MockImplBuilder public static string Build(MockTypeModel model) { var writer = new CodeWriter(); - var safeName = GetCompositeSafeName(model); + var safeName = GetCompositeShortSafeName(model); + var mockNamespace = GetMockNamespace(model); writer.AppendLine("// "); writer.AppendLine("#nullable enable"); writer.AppendLine(); - using (writer.Block("namespace TUnit.Mocks.Generated")) + using (writer.Block($"namespace {mockNamespace}")) { if (model.IsWrapMock) { @@ -45,7 +46,7 @@ private static void BuildInterfaceMockImpl(CodeWriter writer, MockTypeModel mode baseTypes += ", " + string.Join(", ", model.AdditionalInterfaceNames); } - using (writer.Block($"internal sealed class {safeName}_MockImpl : {baseTypes}, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject")) + using (writer.Block($"internal sealed class {safeName}MockImpl : {baseTypes}, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject")) { writer.AppendLine($"private readonly global::TUnit.Mocks.MockEngine<{mockableType}> _engine;"); writer.AppendLine(); @@ -53,7 +54,7 @@ private static void BuildInterfaceMockImpl(CodeWriter writer, MockTypeModel mode EmitIMockObjectProperty(writer); // Constructor - using (writer.Block($"internal {safeName}_MockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine)")) + using (writer.Block($"internal {safeName}MockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine)")) { writer.AppendLine("_engine = engine;"); if (model.HasStaticAbstractMembers) @@ -97,7 +98,7 @@ private static void BuildWrapMockImpl(CodeWriter writer, MockTypeModel model, st { var mockableType = GetMockableTypeName(model); - using (writer.Block($"internal sealed class {safeName}_WrapMockImpl : {model.FullyQualifiedName}, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject")) + using (writer.Block($"internal sealed class {safeName}WrapMockImpl : {model.FullyQualifiedName}, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject")) { writer.AppendLine($"private readonly global::TUnit.Mocks.MockEngine<{mockableType}> _engine;"); writer.AppendLine($"private readonly {model.FullyQualifiedName} _wrappedInstance;"); @@ -145,7 +146,7 @@ private static void GenerateWrapConstructors(CodeWriter writer, MockTypeModel mo if (model.Constructors.Length == 0) { - using (writer.Block($"internal {safeName}_WrapMockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine, {model.FullyQualifiedName} wrappedInstance)")) + using (writer.Block($"internal {safeName}WrapMockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine, {model.FullyQualifiedName} wrappedInstance)")) { writer.AppendLine("_engine = engine;"); writer.AppendLine("_wrappedInstance = wrappedInstance;"); @@ -161,7 +162,7 @@ private static void GenerateWrapConstructors(CodeWriter writer, MockTypeModel mo { if (ctor.Parameters.Length == 0) { - using (writer.Block($"internal {safeName}_WrapMockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine, {model.FullyQualifiedName} wrappedInstance) : base()")) + using (writer.Block($"internal {safeName}WrapMockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine, {model.FullyQualifiedName} wrappedInstance) : base()")) { writer.AppendLine("_engine = engine;"); writer.AppendLine("_wrappedInstance = wrappedInstance;"); @@ -175,7 +176,7 @@ private static void GenerateWrapConstructors(CodeWriter writer, MockTypeModel mo { var paramList = string.Join(", ", ctor.Parameters.Select(p => $"{p.FullyQualifiedType} {p.Name}")); var argList = string.Join(", ", ctor.Parameters.Select(p => p.Name)); - using (writer.Block($"internal {safeName}_WrapMockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine, {model.FullyQualifiedName} wrappedInstance, {paramList}) : base({argList})")) + using (writer.Block($"internal {safeName}WrapMockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine, {model.FullyQualifiedName} wrappedInstance, {paramList}) : base({argList})")) { writer.AppendLine("_engine = engine;"); writer.AppendLine("_wrappedInstance = wrappedInstance;"); @@ -425,7 +426,7 @@ private static void BuildPartialMockImpl(CodeWriter writer, MockTypeModel model, { var mockableType = GetMockableTypeName(model); - using (writer.Block($"internal sealed class {safeName}_MockImpl : {model.FullyQualifiedName}, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject")) + using (writer.Block($"internal sealed class {safeName}MockImpl : {model.FullyQualifiedName}, global::TUnit.Mocks.IRaisable, global::TUnit.Mocks.IMockObject")) { writer.AppendLine($"private readonly global::TUnit.Mocks.MockEngine<{mockableType}> _engine;"); writer.AppendLine(); @@ -473,7 +474,7 @@ private static void GeneratePartialConstructors(CodeWriter writer, MockTypeModel if (model.Constructors.Length == 0) { // No explicit constructors found, generate a default one - using (writer.Block($"internal {safeName}_MockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine)")) + using (writer.Block($"internal {safeName}MockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine)")) { writer.AppendLine("_engine = engine;"); if (model.HasStaticAbstractMembers) @@ -489,7 +490,7 @@ private static void GeneratePartialConstructors(CodeWriter writer, MockTypeModel if (ctor.Parameters.Length == 0) { // Parameterless constructor - using (writer.Block($"internal {safeName}_MockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine) : base()")) + using (writer.Block($"internal {safeName}MockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine) : base()")) { writer.AppendLine("_engine = engine;"); if (model.HasStaticAbstractMembers) @@ -503,7 +504,7 @@ private static void GeneratePartialConstructors(CodeWriter writer, MockTypeModel // Constructor with parameters - pass them through to base var paramList = string.Join(", ", ctor.Parameters.Select(p => $"{p.FullyQualifiedType} {p.Name}")); var argList = string.Join(", ", ctor.Parameters.Select(p => p.Name)); - using (writer.Block($"internal {safeName}_MockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine, {paramList}) : base({argList})")) + using (writer.Block($"internal {safeName}MockImpl(global::TUnit.Mocks.MockEngine<{mockableType}> engine, {paramList}) : base({argList})")) { writer.AppendLine("_engine = engine;"); if (model.HasStaticAbstractMembers) @@ -1279,6 +1280,94 @@ public static string GetCompositeSafeName(MockTypeModel model) return GetSafeName(name); } + /// + /// Gets a short safe name derived from just the type name (without namespace), + /// sanitized for generic type arguments. Produces readable names like + /// "IGreeter" instead of "MyApp_IGreeter". + /// + public static string GetShortSafeName(MockTypeModel model) + { + var name = StripGlobalPrefix(model.FullyQualifiedName); + + if (!IsGlobalNamespace(model.Namespace) && name.StartsWith(model.Namespace + ".")) + name = name.Substring(model.Namespace.Length + 1); + + return SanitizeIdentifier(name); + } + + /// + /// Gets a composite short safe name that includes additional interfaces for multi-interface mocks. + /// For single-type mocks, identical to GetShortSafeName. + /// + public static string GetCompositeShortSafeName(MockTypeModel model) + { + var name = GetShortSafeName(model); + if (model.AdditionalInterfaceNames.Length > 0) + { + name += "_" + string.Join("_", model.AdditionalInterfaceNames.Select(StripNamespaceFromFqn)); + } + return name; + } + + /// + /// Strips the global:: prefix and namespace from a fully qualified name, + /// returning just the type name (sanitized for use in identifiers). + /// + private static string StripNamespaceFromFqn(string fqn) + { + var name = StripGlobalPrefix(fqn); + + // Find last dot not inside angle brackets to handle generic type arguments + var lastDotIndex = -1; + var depth = 0; + for (int i = 0; i < name.Length; i++) + { + var c = name[i]; + if (c == '<') depth++; + else if (c == '>') depth--; + else if (c == '.' && depth == 0) lastDotIndex = i; + } + if (lastDotIndex >= 0) + name = name.Substring(lastDotIndex + 1); + + return SanitizeIdentifier(name); + } + + private static string StripGlobalPrefix(string name) + => name.StartsWith("global::") ? name.Substring("global::".Length) : name; + + private static string SanitizeIdentifier(string name) + { + var result = name + .Replace(".", "_") + .Replace("<", "_") + .Replace(">", "_") + .Replace(",", "_") + .Replace("[", "_") + .Replace("]", "_") + .Replace(" ", ""); + + while (result.Contains("__")) + result = result.Replace("__", "_"); + + return result; + } + + private static bool IsGlobalNamespace(string ns) + => string.IsNullOrEmpty(ns) || ns == ""; + + /// + /// Gets the generated namespace for mock types. + /// Types in the global namespace go to TUnit.Mocks.Generated; + /// namespaced types go to TUnit.Mocks.Generated.{OriginalNamespace}. + /// + public static string GetMockNamespace(MockTypeModel model) + { + return IsGlobalNamespace(model.Namespace) + ? "TUnit.Mocks.Generated" + : $"TUnit.Mocks.Generated.{model.Namespace}"; + } + /// /// Gets the fully qualified type name to use as a generic type argument. /// For types with static abstract members, returns the bridge interface FQN @@ -1288,8 +1377,9 @@ public static string GetCompositeSafeName(MockTypeModel model) public static string GetMockableTypeName(MockTypeModel model) { if (!model.HasStaticAbstractMembers) return model.FullyQualifiedName; - var safeName = GetCompositeSafeName(model); - return $"global::TUnit.Mocks.Generated.{safeName}_Mockable"; + var shortName = GetCompositeShortSafeName(model); + var ns = GetMockNamespace(model); + return $"global::{ns}.{shortName}Mockable"; } /// @@ -1305,13 +1395,13 @@ private static void EmitIMockObjectProperty(CodeWriter writer) internal static void EmitStaticEngineAssignment(CodeWriter writer, string safeName) { - writer.AppendLine($"if ({safeName}_StaticEngine.Engine is not null)"); + writer.AppendLine($"if ({safeName}StaticEngine.Engine is not null)"); writer.OpenBrace(); writer.AppendLine($"throw new global::System.InvalidOperationException("); writer.AppendLine($" \"Multiple mocks of an interface with static abstract members cannot be created in the same test context. \" +"); writer.AppendLine($" \"Static member calls are routed via a shared AsyncLocal engine, so only one mock instance per type is supported per test.\");"); writer.CloseBrace(); - writer.AppendLine($"{safeName}_StaticEngine.Engine = engine;"); + writer.AppendLine($"{safeName}StaticEngine.Engine = engine;"); } } diff --git a/TUnit.Mocks.SourceGenerator/Builders/MockStaticExtensionBuilder.cs b/TUnit.Mocks.SourceGenerator/Builders/MockStaticExtensionBuilder.cs index 04751fe5e5..073fb51a1c 100644 --- a/TUnit.Mocks.SourceGenerator/Builders/MockStaticExtensionBuilder.cs +++ b/TUnit.Mocks.SourceGenerator/Builders/MockStaticExtensionBuilder.cs @@ -10,7 +10,11 @@ public static string Build(MockTypeModel model) return string.Empty; var writer = new CodeWriter(); - var safeName = MockImplBuilder.GetCompositeSafeName(model); + // Use full FQN-based safe name for the extension class (in shared TUnit.Mocks namespace, must be globally unique) + var extensionClassName = MockImplBuilder.GetCompositeSafeName(model); + // Use short names for the wrapper and factory types (in namespace-specific namespace) + var shortName = MockImplBuilder.GetCompositeShortSafeName(model); + var mockNamespace = MockImplBuilder.GetMockNamespace(model); writer.AppendLine("// "); writer.AppendLine("#nullable enable"); @@ -18,13 +22,13 @@ public static string Build(MockTypeModel model) using (writer.Block("namespace TUnit.Mocks")) { - using (writer.Block($"public static class {safeName}_MockStaticExtension")) + using (writer.Block($"public static class {extensionClassName}_MockStaticExtension")) { using (writer.Block($"extension({model.FullyQualifiedName})")) { - using (writer.Block($"public static global::TUnit.Mocks.Generated.{safeName}_Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose)")) + using (writer.Block($"public static global::{mockNamespace}.{shortName}Mock Mock(global::TUnit.Mocks.MockBehavior behavior = global::TUnit.Mocks.MockBehavior.Loose)")) { - writer.AppendLine($"return (global::TUnit.Mocks.Generated.{safeName}_Mock)global::TUnit.Mocks.Generated.{safeName}_MockFactory.Create(behavior, []);"); + writer.AppendLine($"return (global::{mockNamespace}.{shortName}Mock)global::{mockNamespace}.{shortName}MockFactory.Create(behavior, []);"); } } } diff --git a/TUnit.Mocks.SourceGenerator/Builders/MockWrapperTypeBuilder.cs b/TUnit.Mocks.SourceGenerator/Builders/MockWrapperTypeBuilder.cs index 209bbc078e..5ea4290aa4 100644 --- a/TUnit.Mocks.SourceGenerator/Builders/MockWrapperTypeBuilder.cs +++ b/TUnit.Mocks.SourceGenerator/Builders/MockWrapperTypeBuilder.cs @@ -27,19 +27,20 @@ public static string Build(MockTypeModel model) return string.Empty; var writer = new CodeWriter(); - var safeName = MockImplBuilder.GetCompositeSafeName(model); + var safeName = MockImplBuilder.GetCompositeShortSafeName(model); + var mockNamespace = MockImplBuilder.GetMockNamespace(model); var mockableType = MockImplBuilder.GetMockableTypeName(model); writer.AppendLine("// "); writer.AppendLine("#nullable enable"); writer.AppendLine(); - using (writer.Block("namespace TUnit.Mocks.Generated")) + using (writer.Block($"namespace {mockNamespace}")) { - using (writer.Block($"public sealed class {safeName}_Mock : global::TUnit.Mocks.Mock<{mockableType}>, {model.FullyQualifiedName}")) + using (writer.Block($"public sealed class {safeName}Mock : global::TUnit.Mocks.Mock<{mockableType}>, {model.FullyQualifiedName}")) { writer.AppendLine("[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]"); - writer.AppendLine($"internal {safeName}_Mock({mockableType} mockObject, global::TUnit.Mocks.MockEngine<{mockableType}> engine)"); + writer.AppendLine($"internal {safeName}Mock({mockableType} mockObject, global::TUnit.Mocks.MockEngine<{mockableType}> engine)"); writer.AppendLine(" : base(mockObject, engine) { }"); foreach (var method in model.Methods) diff --git a/TUnit.Mocks.Tests/StaticAbstractMemberTests.cs b/TUnit.Mocks.Tests/StaticAbstractMemberTests.cs index fc87d2ac4a..f2eaf381fb 100644 --- a/TUnit.Mocks.Tests/StaticAbstractMemberTests.cs +++ b/TUnit.Mocks.Tests/StaticAbstractMemberTests.cs @@ -2,10 +2,11 @@ using System.Diagnostics.CodeAnalysis; using TUnit.Mocks; using TUnit.Mocks.Generated; +using TUnit.Mocks.Generated.TUnit.Mocks.Tests; // Discovery: typeof() does not trigger CS8920, so this is safe for interfaces // with static abstract members. The generator produces a bridge interface -// (TUnit_Mocks_Tests_IAmazonService_Mockable) that resolves the static abstracts. +// (IAmazonServiceMockable) that resolves the static abstracts. [assembly: TUnit.Mocks.GenerateMock(typeof(TUnit.Mocks.Tests.IAmazonService))] namespace TUnit.Mocks.Tests; @@ -65,12 +66,12 @@ public class StaticAbstractMemberTests public async Task Static_Abstract_Method_Returns_Configured_Value() { // Arrange — use the bridge type which resolves static abstract members - var mock = Mock.Of(); + var mock = Mock.Of(); var expectedConfig = new ClientConfig { Region = "eu-west-1" }; mock.CreateDefaultConfig().Returns(expectedConfig); // Act — call through constrained generic using the bridge type - var result = CallStaticAbstract(); + var result = CallStaticAbstract(); // Assert await Assert.That(result).IsSameReferenceAs(expectedConfig); @@ -80,10 +81,10 @@ public async Task Static_Abstract_Method_Returns_Configured_Value() public async Task Static_Abstract_Method_Returns_Default_When_No_Setup() { // Arrange - var mock = Mock.Of(); + var mock = Mock.Of(); // Act — no setup, should return default - var result = CallStaticAbstract(); + var result = CallStaticAbstract(); // Assert await Assert.That(result).IsNull(); @@ -93,11 +94,11 @@ public async Task Static_Abstract_Method_Returns_Default_When_No_Setup() public async Task Static_Abstract_Method_Throws_Configured_Exception() { // Arrange - var mock = Mock.Of(); + var mock = Mock.Of(); mock.CreateDefaultConfig().Throws(new InvalidOperationException("not available")); // Act & Assert - await Assert.That(() => CallStaticAbstract()) + await Assert.That(() => CallStaticAbstract()) .ThrowsExactly() .WithMessage("not available"); } @@ -106,12 +107,12 @@ await Assert.That(() => CallStaticAbstract(); + var mock = Mock.Of(); mock.CreateDefaultConfig().Returns(new ClientConfig()); // Act - CallStaticAbstract(); - CallStaticAbstract(); + CallStaticAbstract(); + CallStaticAbstract(); // Assert mock.CreateDefaultConfig().WasCalled(Times.Exactly(2)); @@ -121,11 +122,11 @@ public async Task Static_Abstract_Method_Verification() public async Task Static_Abstract_Property_Getter_Returns_Configured_Value() { // Arrange - var mock = Mock.Of(); + var mock = Mock.Of(); mock.ServiceId.Getter.Returns("s3"); // Act - var result = GetStaticAbstractProperty(); + var result = GetStaticAbstractProperty(); // Assert await Assert.That(result).IsEqualTo("s3"); @@ -135,10 +136,10 @@ public async Task Static_Abstract_Property_Getter_Returns_Configured_Value() public async Task Static_Abstract_Property_Setter_Can_Be_Verified() { // Arrange - var mock = Mock.Of(); + var mock = Mock.Of(); // Act - SetStaticAbstractProperty("dynamodb"); + SetStaticAbstractProperty("dynamodb"); // Assert mock.ServiceId.Setter.WasCalled(); @@ -148,13 +149,13 @@ public async Task Static_Abstract_Property_Setter_Can_Be_Verified() public async Task Instance_And_Static_Members_Coexist() { // Arrange - var mock = Mock.Of(); + var mock = Mock.Of(); mock.GetEndpoint().Returns("https://s3.amazonaws.com"); mock.CreateDefaultConfig().Returns(new ClientConfig { Region = "ap-southeast-1" }); // Act var endpoint = mock.Object.GetEndpoint(); - var config = CallStaticAbstract(); + var config = CallStaticAbstract(); // Assert await Assert.That(endpoint).IsEqualTo("https://s3.amazonaws.com"); @@ -166,11 +167,11 @@ public async Task Instance_And_Static_Members_Coexist() [Test] public async Task Static_Abstract_CreateDefaultClientConfig_Returns_Configured_Value() { - var mock = Mock.Of(); + var mock = Mock.Of(); var expected = new ClientConfig { Region = "sa-east-1" }; mock.CreateDefaultClientConfig().Returns(expected); - var result = CallCreateDefaultClientConfig(); + var result = CallCreateDefaultClientConfig(); await Assert.That(result).IsSameReferenceAs(expected); } @@ -178,11 +179,11 @@ public async Task Static_Abstract_CreateDefaultClientConfig_Returns_Configured_V [Test] public async Task Static_Abstract_CreateDefaultClientConfig_Verification() { - var mock = Mock.Of(); + var mock = Mock.Of(); mock.CreateDefaultClientConfig().Returns(new ClientConfig()); - CallCreateDefaultClientConfig(); - CallCreateDefaultClientConfig(); + CallCreateDefaultClientConfig(); + CallCreateDefaultClientConfig(); mock.CreateDefaultClientConfig().WasCalled(Times.Exactly(2)); } @@ -194,9 +195,9 @@ public async Task Static_Abstract_CreateDefaultServiceClient_Returns_Null_By_Def { // No setup — the generator uses HandleCallWithReturn + cast, // so the default null value is cast to IAmazonService and returned. - var mock = Mock.Of(); + var mock = Mock.Of(); - var result = CallCreateDefaultServiceClient( + var result = CallCreateDefaultServiceClient( new AWSCredentials(), new ClientConfig()); // Cast to object? — using IAmazonService directly as a type argument triggers CS8920. @@ -208,13 +209,13 @@ public async Task Static_Abstract_CreateDefaultServiceClient_Returns_Configured_ { // Arrange — .Returns() works via MockMethodCall (not VoidMockMethodCall) // because the return type (IAmazonService) has static abstract members (CS8920). - var mock = Mock.Of(); + var mock = Mock.Of(); var expectedService = mock.Object; mock.CreateDefaultServiceClient(Arg.Any(), Arg.Any()) .Returns(expectedService); // Act - var result = CallCreateDefaultServiceClient( + var result = CallCreateDefaultServiceClient( new AWSCredentials(), new ClientConfig()); // Assert — the configured value is returned through the object? → IAmazonService cast @@ -224,11 +225,11 @@ public async Task Static_Abstract_CreateDefaultServiceClient_Returns_Configured_ [Test] public async Task Static_Abstract_CreateDefaultServiceClient_Verification() { - var mock = Mock.Of(); + var mock = Mock.Of(); var creds = new AWSCredentials { AccessKey = "AKID", AuthSignature = "test-sig" }; var config = new ClientConfig { Region = "us-west-2" }; - CallCreateDefaultServiceClient(creds, config); + CallCreateDefaultServiceClient(creds, config); // MockMethodCall supports verification even though the return type // (IAmazonService) cannot be used as a generic type argument (CS8920). @@ -238,11 +239,11 @@ public async Task Static_Abstract_CreateDefaultServiceClient_Verification() [Test] public async Task Static_Abstract_CreateDefaultServiceClient_Throws_Configured_Exception() { - var mock = Mock.Of(); + var mock = Mock.Of(); mock.CreateDefaultServiceClient(Arg.Any(), Arg.Any()) .Throws(new InvalidOperationException("service unavailable")); - await Assert.That(() => CallCreateDefaultServiceClient( + await Assert.That(() => CallCreateDefaultServiceClient( new AWSCredentials(), new ClientConfig())) .ThrowsExactly() .WithMessage("service unavailable");