mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-23 11:14:30 +08:00
- 新增ArchitectureEventsTests.cs文件,包含9个测试用例 - 覆盖架构生命周期事件、事件订阅、事件顺序等核心功能 - 测试用例包括ArchitectureLifecycleReadyEvent、ArchitectureDestroyingEvent、 ArchitectureDestroyedEvent、ArchitectureFailedInitializationEvent等事件 - 更新TEST_COVERAGE_PLAN.md中的测试统计数据 - 测试覆盖率从44%提升至45% - 现有测试数从277个增加到286个 - 缺失测试数相应调整为122-178个 - 已完成文件数更新为4/26个
138 lines
4.6 KiB
C#
138 lines
4.6 KiB
C#
using System;
|
|
using GFramework.Core.events;
|
|
using NUnit.Framework;
|
|
|
|
namespace GFramework.Core.Tests.events;
|
|
|
|
[TestFixture]
|
|
public class ArchitectureEventsTests
|
|
{
|
|
private EventBus? _eventBus;
|
|
|
|
[SetUp]
|
|
public void SetUp()
|
|
{
|
|
_eventBus = new EventBus();
|
|
}
|
|
|
|
[Test]
|
|
public void ArchitectureLifecycleReadyEvent_Should_Be_Created_And_Sent()
|
|
{
|
|
bool eventReceived = false;
|
|
|
|
_eventBus!.Register<ArchitectureEvents.ArchitectureLifecycleReadyEvent>(_ => eventReceived = true);
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureLifecycleReadyEvent>();
|
|
|
|
Assert.That(eventReceived, Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void ArchitectureDestroyingEvent_Should_Be_Created_And_Sent()
|
|
{
|
|
bool eventReceived = false;
|
|
|
|
_eventBus!.Register<ArchitectureEvents.ArchitectureDestroyingEvent>(_ => eventReceived = true);
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureDestroyingEvent>();
|
|
|
|
Assert.That(eventReceived, Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void ArchitectureDestroyedEvent_Should_Be_Created_And_Sent()
|
|
{
|
|
bool eventReceived = false;
|
|
|
|
_eventBus!.Register<ArchitectureEvents.ArchitectureDestroyedEvent>(_ => eventReceived = true);
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureDestroyedEvent>();
|
|
|
|
Assert.That(eventReceived, Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void ArchitectureFailedInitializationEvent_Should_Be_Created_And_Sent()
|
|
{
|
|
bool eventReceived = false;
|
|
|
|
_eventBus!.Register<ArchitectureEvents.ArchitectureFailedInitializationEvent>(_ => eventReceived = true);
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureFailedInitializationEvent>();
|
|
|
|
Assert.That(eventReceived, Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void Events_Should_Be_Sent_In_Correct_Order()
|
|
{
|
|
var events = new List<string>();
|
|
|
|
_eventBus!.Register<ArchitectureEvents.ArchitectureLifecycleReadyEvent>(_ => events.Add("Ready"));
|
|
_eventBus!.Register<ArchitectureEvents.ArchitectureDestroyingEvent>(_ => events.Add("Destroying"));
|
|
_eventBus!.Register<ArchitectureEvents.ArchitectureDestroyedEvent>(_ => events.Add("Destroyed"));
|
|
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureLifecycleReadyEvent>();
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureDestroyingEvent>();
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureDestroyedEvent>();
|
|
|
|
Assert.That(events.Count, Is.EqualTo(3));
|
|
Assert.That(events[0], Is.EqualTo("Ready"));
|
|
Assert.That(events[1], Is.EqualTo("Destroying"));
|
|
Assert.That(events[2], Is.EqualTo("Destroyed"));
|
|
}
|
|
|
|
[Test]
|
|
public void Multiple_Subscribers_Should_All_Receive_Events()
|
|
{
|
|
var count1 = 0;
|
|
var count2 = 0;
|
|
|
|
_eventBus!.Register<ArchitectureEvents.ArchitectureLifecycleReadyEvent>(_ => count1++);
|
|
_eventBus!.Register<ArchitectureEvents.ArchitectureLifecycleReadyEvent>(_ => count2++);
|
|
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureLifecycleReadyEvent>();
|
|
|
|
Assert.That(count1, Is.EqualTo(1));
|
|
Assert.That(count2, Is.EqualTo(1));
|
|
}
|
|
|
|
[Test]
|
|
public void Event_UnRegister_Should_Prevent_Future_Events()
|
|
{
|
|
var count = 0;
|
|
var unregister = _eventBus!.Register<ArchitectureEvents.ArchitectureLifecycleReadyEvent>(_ => count++);
|
|
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureLifecycleReadyEvent>();
|
|
Assert.That(count, Is.EqualTo(1));
|
|
|
|
unregister.UnRegister();
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureLifecycleReadyEvent>();
|
|
|
|
Assert.That(count, Is.EqualTo(1));
|
|
}
|
|
|
|
[Test]
|
|
public void Different_Events_Should_Not_Interfere()
|
|
{
|
|
bool readyReceived = false;
|
|
bool destroyingReceived = false;
|
|
|
|
_eventBus!.Register<ArchitectureEvents.ArchitectureLifecycleReadyEvent>(_ => readyReceived = true);
|
|
_eventBus!.Register<ArchitectureEvents.ArchitectureDestroyingEvent>(_ => destroyingReceived = true);
|
|
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureLifecycleReadyEvent>();
|
|
|
|
Assert.That(readyReceived, Is.True);
|
|
Assert.That(destroyingReceived, Is.False);
|
|
|
|
_eventBus.Send<ArchitectureEvents.ArchitectureDestroyingEvent>();
|
|
|
|
Assert.That(destroyingReceived, Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void Event_Can_Be_Sent_Without_Subscribers()
|
|
{
|
|
Assert.That(() => _eventBus!.Send<ArchitectureEvents.ArchitectureLifecycleReadyEvent>(),
|
|
Throws.Nothing);
|
|
}
|
|
}
|
|
|