using GFramework.Core.events;
using NUnit.Framework;
namespace GFramework.Core.Tests.events;
///
/// EventBus测试类,用于验证事件总线的各种功能
///
[TestFixture]
public class EventBusTests
{
///
/// 测试设置方法,在每个测试方法执行前初始化EventBus实例
///
[SetUp]
public void SetUp()
{
_eventBus = new EventBus();
}
private EventBus _eventBus = null!;
///
/// 测试注册事件处理器的功能
/// 验证注册的处理器能够在发送对应事件时被正确调用
///
[Test]
public void Register_Should_Add_Handler()
{
var called = false;
_eventBus.Register(@event => { called = true; });
_eventBus.Send();
Assert.That(called, Is.True);
}
///
/// 测试注销事件处理器的功能
/// 验证已注册的处理器在注销后不会再被调用
///
[Test]
public void UnRegister_Should_Remove_Handler()
{
var count = 0;
Action handler = @event => { count++; };
_eventBus.Register(handler);
_eventBus.Send();
// 验证处理器被调用一次
Assert.That(count, Is.EqualTo(1));
_eventBus.UnRegister(handler);
_eventBus.Send();
// 验证处理器在注销后不再被调用
Assert.That(count, Is.EqualTo(1));
}
///
/// 测试发送事件时调用所有处理器的功能
/// 验证同一事件类型的多个处理器都能被正确调用
///
[Test]
public void SendEvent_Should_Invoke_All_Handlers()
{
var count1 = 0;
var count2 = 0;
_eventBus.Register(@event => { count1++; });
_eventBus.Register(@event => { count2++; });
_eventBus.Send();
// 验证所有处理器都被调用一次
Assert.That(count1, Is.EqualTo(1));
Assert.That(count2, Is.EqualTo(1));
}
}
///
/// EventBus测试专用事件类
///
public class EventBusTestsEvent
{
}