using GFramework.Core.events; using NUnit.Framework; namespace GFramework.Core.Tests.events; /// /// 测试OrEvent类的功能,验证其在多个事件中的逻辑或操作行为 /// [TestFixture] public class OrEventTests { /// /// 测试当任意一个事件触发时,OrEvent应该被触发 /// 验证基本的OR逻辑功能 /// [Test] public void OrEvent_Should_Trigger_When_Any_Event_Fires() { var event1 = new Event(); var event2 = new Event(); var orEvent = new OrEvent(); var triggered = false; orEvent.Register(() => { triggered = true; }); // 将两个事件添加到OrEvent中 orEvent.Or(event1).Or(event2); event1.Trigger(0); Assert.That(triggered, Is.True); } /// /// 测试当第二个事件触发时,OrEvent应该被触发 /// 验证OR逻辑对所有注册事件都有效 /// [Test] public void OrEvent_Should_Trigger_When_Second_Event_Fires() { var event1 = new Event(); var event2 = new Event(); var orEvent = new OrEvent(); var triggered = false; orEvent.Register(() => { triggered = true; }); // 将两个事件添加到OrEvent中 orEvent.Or(event1).Or(event2); event2.Trigger(0); Assert.That(triggered, Is.True); } /// /// 测试OrEvent支持多个处理程序 /// 验证单个OrEvent可以注册多个回调函数 /// [Test] public void OrEvent_Should_Support_Multiple_Handlers() { var @event = new Event(); var orEvent = new OrEvent(); var count1 = 0; var count2 = 0; orEvent.Register(() => { count1++; }); orEvent.Register(() => { count2++; }); // 将事件添加到OrEvent中 orEvent.Or(@event); @event.Trigger(0); Assert.That(count1, Is.EqualTo(1)); Assert.That(count2, Is.EqualTo(1)); } /// /// 测试UnRegister方法应该移除处理程序 /// 验证注销功能能够正确移除已注册的回调函数 /// [Test] public void OrEvent_UnRegister_Should_Remove_Handler() { var @event = new Event(); var orEvent = new OrEvent(); var count = 0; var handler = () => { count++; }; orEvent.Register(handler); orEvent.Or(@event); @event.Trigger(0); Assert.That(count, Is.EqualTo(1)); // 注销处理程序 orEvent.UnRegister(handler); @event.Trigger(0); Assert.That(count, Is.EqualTo(1)); } }