public void ShouldReturnTheEmptySignal() { var signaller = new Signaller(); var signal = signaller.CreateSignal(null, null); Assert.AreSame(EmptySignal.Instance, signal); }
public void ShouldReturnSignalWithEmptyMessage() { var signaller = new Signaller(); var signal = signaller.CreateSignal(EmptyEventTag.Instance, null); Assert.AreSame(EmptyMessage.Instance, signal.Message); }
public void ShouldProcessOnlyGivenEventTags() { var eventTag_1 = new EventTag("event-one"); var eventTag_2 = new EventTag("event-two"); var eventTag_3 = new EventTag("event-three"); var eventTags = new EventTag[] { eventTag_1, eventTag_2, eventTag_3 }; var channel = new Channel(); var broadcaster = new Broadcaster(channel, eventTags, "the-broadcaster"); var signaller = new Signaller(channel: channel, owner: this); var signal_1 = new Signal(signaller, eventTag_1, null); var signal_2 = new Signal(signaller, eventTag_2, null); var signal_3 = new Signal(signaller, eventTag_3, null); var observedSignals = new List <String> (); var watcher = new Watcher(onSignal: (ISignal signal) => { observedSignals.Add(signal.EventTag.Name); }); watcher.Watch(broadcaster, new IEventTag[] { eventTag_1, eventTag_3 }); channel.Emit(signal_1); // yes channel.Emit(signal_2); // no channel.Emit(signal_1); // yes channel.Emit(signal_3); // yes channel.Emit(signal_2); // no Assert.AreEqual(3, observedSignals.Count); Assert.Contains(signal_1.EventTag.Name, observedSignals); }
public void ShouldReturnASignal() { var signaller = new Signaller(); var signal = signaller.CreateSignal(EmptyEventTag.Instance, EmptyMessage.Instance); Assert.IsInstanceOf <ISignal> (signal); }
public ArkServerService(IConstants constants, IConfig config, ArkContextManager contextManager) { _signaller = new Signaller <Tuple <ArkServerContext, bool, SavegameBackupResult> >(); _constants = constants; _config = config; _contextManager = contextManager; contextManager.BackupCompleted += ContextManager_BackupCompleted; }
public ISignaller CreateSignaller(object owner) { ISignaller signaller = EmptySignaller.Instance; if (owner != null) { signaller = new Signaller(owner: owner, channel: this); } return(signaller); }
public void ShouldReturnSignalWithCorrectProperties() { var evenTag = new EventTag("some-event"); var message = new Message(body: "Hello"); var signaller = new Signaller(); var signal = signaller.CreateSignal(evenTag, message); Assert.AreSame(evenTag, signal.EventTag); Assert.AreSame(message, signal.Message); }
public void ShouldAnwerPositiveToASignalWithARegisteredEventTag() { var tag = new EventTag("some-event"); var signaller = new Signaller(owner: this, channel: channel); channel.AddEvent(tag); var signal = signaller.CreateSignal( eventTag: tag, message: EmptyMessage.Instance ); Assert.IsTrue(channel.IsEmittable(signal)); }
public void ShouldStopObservingAllBroadcasters() { var eventTag_1 = new EventTag("event-one"); var eventTag_2 = new EventTag("event-two"); var eventTag_3 = new EventTag("event-three"); var channel = new Channel("channel-one"); var broadcaster_1 = new Broadcaster(channel, new IEventTag[] { eventTag_1 }, "b-1"); var broadcaster_2 = new Broadcaster(channel, new IEventTag[] { eventTag_2 }, "b-2"); var broadcaster_3 = new Broadcaster(channel, new IEventTag[] { eventTag_3 }, "tb-3"); var signaller_1 = new Signaller(channel: channel, owner: this); var signal_1 = new Signal(signaller_1, eventTag_1, null); var signal_2 = new Signal(signaller_1, eventTag_2, null); var signal_3 = new Signal(signaller_1, eventTag_3, null); var observedSignals = new List <String> (); var watcher = new Watcher(onSignal: (ISignal signal) => { observedSignals.Add(signal.EventTag.Name); }); watcher.WatchAll(broadcaster_1); watcher.WatchAll(broadcaster_2); watcher.WatchAll(broadcaster_3); channel.Emit(signal_1); channel.Emit(signal_2); channel.Emit(signal_3); Assert.AreEqual(3, observedSignals.Count); watcher.Stop(); observedSignals.Clear(); channel.Emit(signal_1); channel.Emit(signal_2); channel.Emit(signal_3); Assert.IsEmpty(observedSignals); watcher.WatchAll(broadcaster_1); channel.Emit(signal_1); channel.Emit(signal_2); Assert.AreEqual(1, observedSignals.Count); }
public void ShouldRelaySignalToAppropriateBroadcaster() { List <object> bucket_1 = new List <object> (); List <object> bucket_2 = new List <object> (); var tag_1 = new EventTag("tag-one"); var signaller = new Signaller(channel: channel, owner: channel); var bcaster_1 = new Broadcaster( channel: channel, eventTags: new IEventTag[] { tag_1 }, name: "b-caster" ); var watcher_1 = new Watcher(onSignal: (ISignal signal) => { bucket_1.Add(signal); }); watcher_1.WatchAll(bcaster_1); var tag_2 = new EventTag("tag-two"); var bcaster_2 = new Broadcaster( channel: channel, eventTags: new IEventTag[] { tag_2 }, name: "b-caster-2" ); var watcher_2 = new Watcher(onSignal: (ISignal signal) => { bucket_2.Add(signal); }); watcher_2.WatchAll(bcaster_2); var aSignal = new Signal(eventTag: tag_1, signaller: signaller, message: null); var aSignal_2 = new Signal(eventTag: tag_2, signaller: signaller, message: null); signaller.Emit(aSignal); signaller.Emit(aSignal_2); Assert.AreEqual(1, bucket_1.Count); Assert.Contains(aSignal, bucket_1); Assert.AreEqual(1, bucket_2.Count); Assert.Contains(aSignal_2, bucket_2); }
public void ShouldProcessAllSignalsFromBroadcaster() { var eventTag_1 = new EventTag("event-one"); var eventTag_2 = new EventTag("event-two"); var eventTags = new EventTag[] { eventTag_1, eventTag_2 }; var channel = new Channel(); var broadcaster = new Broadcaster(channel, eventTags, "the-broadcaster"); var signaller = new Signaller(channel: channel, owner: this); var signal_1 = new Signal(signaller, eventTag_1, null); var signal_2 = new Signal(signaller, eventTag_2, null); var observedSignals = new List <ISignal> (); var watcher = new Watcher(onSignal: (ISignal signal) => { observedSignals.Add(signal); }); watcher.WatchAll(broadcaster); channel.Emit(signal_1); channel.Emit(signal_2); Assert.AreEqual(2, observedSignals.Count); Assert.Contains(signal_1, observedSignals); Assert.Contains(signal_2, observedSignals); }
public void ShouldOwnItself() { var signaller = new Signaller(owner: null, channel: EmptyChannel.Instance); Assert.AreSame(signaller, signaller.Owner); }
public void ShouldHaveTheEmptyChannelAsItsChannel() { var signaller = new Signaller(owner: this, channel: null); Assert.AreEqual(EmptyChannel.Instance, signaller.Channel); }
public void ShouldAnswerPositiveToBeingEmpty() { var signaller = new Signaller(owner: this, channel: EmptyChannel.Instance); Assert.IsTrue(signaller.IsEmpty); }