Esempio n. 1
0
        public void ShouldReturnTheEmptySignal()
        {
            var signaller = new Signaller();
            var signal    = signaller.CreateSignal(null, null);

            Assert.AreSame(EmptySignal.Instance, signal);
        }
Esempio n. 2
0
        public void ShouldReturnSignalWithEmptyMessage()
        {
            var signaller = new Signaller();
            var signal    = signaller.CreateSignal(EmptyEventTag.Instance, null);

            Assert.AreSame(EmptyMessage.Instance, signal.Message);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        public void ShouldReturnASignal()
        {
            var signaller = new Signaller();
            var signal    = signaller.CreateSignal(EmptyEventTag.Instance, EmptyMessage.Instance);

            Assert.IsInstanceOf <ISignal> (signal);
        }
Esempio n. 5
0
        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;
        }
Esempio n. 6
0
        public ISignaller CreateSignaller(object owner)
        {
            ISignaller signaller = EmptySignaller.Instance;

            if (owner != null)
            {
                signaller = new Signaller(owner: owner, channel: this);
            }
            return(signaller);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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));
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        public void ShouldOwnItself()
        {
            var signaller = new Signaller(owner: null, channel: EmptyChannel.Instance);

            Assert.AreSame(signaller, signaller.Owner);
        }
Esempio n. 13
0
        public void ShouldHaveTheEmptyChannelAsItsChannel()
        {
            var signaller = new Signaller(owner: this, channel: null);

            Assert.AreEqual(EmptyChannel.Instance, signaller.Channel);
        }
Esempio n. 14
0
        public void ShouldAnswerPositiveToBeingEmpty()
        {
            var signaller = new Signaller(owner: this, channel: EmptyChannel.Instance);

            Assert.IsTrue(signaller.IsEmpty);
        }