mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-07 08:44:29 +08:00
- 拆分 GameContextTests、ArchitectureServicesTests、RegistryInitializationHookBaseTests 与 Cqrs 测试辅助类型,消除批次内 MA0048 热点 - 修复 Core.Tests 零散可空性、集合抽象和测试辅助 warning,使受影响 Release 构建清零 - 更新 analyzer-warning-reduction 跟踪与 trace,记录 236 条仓库根 warning 基线和 45/50 停止点
150 lines
4.8 KiB
C#
150 lines
4.8 KiB
C#
using GFramework.Core.Abstractions.Architectures;
|
|
using GFramework.Core.Architectures;
|
|
|
|
namespace GFramework.Core.Tests.Architectures;
|
|
|
|
/// <summary>
|
|
/// ContextProvider 相关类的单元测试
|
|
/// 测试内容包括:
|
|
/// - GameContextProvider 获取第一个架构上下文
|
|
/// - GameContextProvider 尝试获取指定类型的上下文
|
|
/// - ScopedContextProvider 获取绑定的上下文
|
|
/// - ScopedContextProvider 尝试获取指定类型的上下文
|
|
/// - ScopedContextProvider 类型不匹配时返回 false
|
|
/// </summary>
|
|
[TestFixture]
|
|
public class ContextProviderTests
|
|
{
|
|
/// <summary>
|
|
/// 测试初始化方法,在每个测试方法执行前清空 GameContext
|
|
/// </summary>
|
|
[SetUp]
|
|
public void SetUp()
|
|
{
|
|
GameContext.Clear();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试清理方法,在每个测试方法执行后清空 GameContext
|
|
/// </summary>
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
GameContext.Clear();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试 GameContextProvider 是否能正确获取第一个架构上下文
|
|
/// </summary>
|
|
[Test]
|
|
public void GameContextProvider_GetContext_Should_Return_First_Context()
|
|
{
|
|
var context = new TestArchitectureContext();
|
|
GameContext.Bind(typeof(TestArchitecture), context);
|
|
|
|
var provider = new GameContextProvider();
|
|
var result = provider.GetContext();
|
|
|
|
Assert.That(result, Is.SameAs(context));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试 GameContextProvider 在没有上下文时是否抛出异常
|
|
/// </summary>
|
|
[Test]
|
|
public void GameContextProvider_GetContext_Should_Throw_When_Empty()
|
|
{
|
|
var provider = new GameContextProvider();
|
|
|
|
Assert.Throws<InvalidOperationException>(() => provider.GetContext());
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试 GameContextProvider 的 TryGetContext 方法在找到上下文时返回 true
|
|
/// </summary>
|
|
[Test]
|
|
public void GameContextProvider_TryGetContext_Should_Return_True_When_Found()
|
|
{
|
|
var context = new TestArchitectureContext();
|
|
GameContext.Bind(typeof(TestArchitectureContext), context);
|
|
|
|
var provider = new GameContextProvider();
|
|
var result = provider.TryGetContext<TestArchitectureContext>(out var foundContext);
|
|
|
|
Assert.That(result, Is.True);
|
|
Assert.That(foundContext, Is.SameAs(context));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试 GameContextProvider 的 TryGetContext 方法在未找到上下文时返回 false
|
|
/// </summary>
|
|
[Test]
|
|
public void GameContextProvider_TryGetContext_Should_Return_False_When_Not_Found()
|
|
{
|
|
var provider = new GameContextProvider();
|
|
var result = provider.TryGetContext<TestArchitectureContext>(out var foundContext);
|
|
|
|
Assert.That(result, Is.False);
|
|
Assert.That(foundContext, Is.Null);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试 ScopedContextProvider 是否能正确返回绑定的上下文
|
|
/// </summary>
|
|
[Test]
|
|
public void ScopedContextProvider_GetContext_Should_Return_Bound_Context()
|
|
{
|
|
var context = new TestArchitectureContext();
|
|
var provider = new ScopedContextProvider(context);
|
|
|
|
var result = provider.GetContext();
|
|
|
|
Assert.That(result, Is.SameAs(context));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试 ScopedContextProvider 的 TryGetContext 方法在类型匹配时返回 true
|
|
/// </summary>
|
|
[Test]
|
|
public void ScopedContextProvider_TryGetContext_Should_Return_True_When_Type_Matches()
|
|
{
|
|
var context = new TestArchitectureContext();
|
|
var provider = new ScopedContextProvider(context);
|
|
|
|
var result = provider.TryGetContext<TestArchitectureContext>(out var foundContext);
|
|
|
|
Assert.That(result, Is.True);
|
|
Assert.That(foundContext, Is.SameAs(context));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试 ScopedContextProvider 的 TryGetContext 方法在类型不匹配时返回 false
|
|
/// </summary>
|
|
[Test]
|
|
public void ScopedContextProvider_TryGetContext_Should_Return_False_When_Type_Does_Not_Match()
|
|
{
|
|
var context = new TestArchitectureContext();
|
|
var provider = new ScopedContextProvider(context);
|
|
|
|
var result = provider.TryGetContext<AnotherTestArchitectureContext>(out var foundContext);
|
|
|
|
Assert.That(result, Is.False);
|
|
Assert.That(foundContext, Is.Null);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试 ScopedContextProvider 的 TryGetContext 方法支持接口类型查询
|
|
/// </summary>
|
|
[Test]
|
|
public void ScopedContextProvider_TryGetContext_Should_Support_Interface_Type()
|
|
{
|
|
var context = new TestArchitectureContext();
|
|
var provider = new ScopedContextProvider(context);
|
|
|
|
var result = provider.TryGetContext<IArchitectureContext>(out var foundContext);
|
|
|
|
Assert.That(result, Is.True);
|
|
Assert.That(foundContext, Is.SameAs(context));
|
|
}
|
|
}
|