public void RemoveHandlerOnSend() { var recorder = new Recorder(); var entity = new TestEntity(); var delegateA = new ESHandler <int>(i => { recorder.Record("A", i); }); var delegateB = new ESHandler <TestEntity, char>((a, b) => { recorder.Record("B", a, b); Storage.On(a).Remove(delegateA); }); Storage.On(entity).Add(delegateA); Storage.On(entity).Add(delegateB); Storage.On(entity).Send(1); Storage.On(entity).Send('t'); recorder.Verify("A", 1); recorder.Verify("B", entity, 't'); Assert.AreEqual(1, Storage.On(entity).Count); }
public void ReceiverMethodReference() { var receiver = new TestReceiver(); var entity = new TestEntity(); var delegateA = new ESHandler <int>(receiver.IntReceive); var delegateB = new ESHandler <TestEntity, char>(receiver.CharReceive); Storage.On(entity).Add(delegateA); Storage.On(entity).Add(delegateB); Assert.AreEqual(2, Storage.On(entity).Count); Storage.On(entity).Send(1); Storage.On(entity).Send('t'); receiver.Verify("IntReceive", 1); receiver.Verify("CharReceive", entity, 't'); Storage.On(entity).Remove(delegateA); Storage.On(entity).Remove(delegateB); Assert.AreEqual(0, Storage.On(entity).Count); }
public void DynamicAddHandlerOnSend() { var recorder = new Recorder(); var entity = new TestEntity(); var delegateA = new ESHandler <int>(i => { recorder.Record("A", i); }); var delegateB = new ESHandler <TestEntity, char>((a, b) => { recorder.Record("B", a, b); Storage.On <TestEntity>().Add(delegateA); }); Storage.On <TestEntity>().Add(delegateB); Storage.On(entity).Send(1); Storage.On(entity).Send('t'); recorder.Never("A"); recorder.Verify("B", entity, 't'); Assert.AreEqual(2, Storage.On <TestEntity>().Count); Storage.On(entity).Send(42); recorder.Verify("A", 42); }
public void Remove <TSignal>(ESHandler <TEntity, TSignal> signalHandler) { RemoveHandlers(signalHandler); }
public void Add <TSignal>(ESHandler <TEntity, TSignal> signalHandler) { AddHandlers(new HandlerDelegate(typeof(TSignal), signalHandler.GetInvoker(), signalHandler)); }