public void AddListener_Interface_ListenerIsAdded()
        {
            var e        = new Event(0);
            var listener = new InterfaceListener(null);

            e.AddListener(listener);

            Assert.IsTrue(e.HasListener(listener));
        }
        public void RemoveListener_Interface_ListenerIsRemoved()
        {
            var e        = new Event(0);
            var listener = new InterfaceListener(null);

            e.AddListener(listener);
            e.RemoveListener(listener);

            Assert.IsFalse(e.HasListener(listener));
        }
        public void RemoveListener_Empty_NoChange()
        {
            var    e = new Event(0);
            var    interfaceListener = new InterfaceListener(null);
            Action delegateListener  = () => { };

            e.RemoveListener(interfaceListener);
            e.RemoveListener(delegateListener);

            Assert.IsEmpty(e.Listeners);
        }
        protected override void OnSetUp()
        {
            base.OnSetUp();

            eventAggregator = new EventAggregator(new EventAggregator.Config {
                SupportMessageInheritance = true
            });
            level1Listener    = new Level1Listener();
            level2Listener    = new Level2Listener();
            interfaceListener = new InterfaceListener();

            eventAggregator.AddListener(level1Listener);
            eventAggregator.AddListener(level2Listener);
            eventAggregator.AddListener(interfaceListener);
        }
        public void Invoke_AddListener_ListenerIsAddedNextCall()
        {
            var wasCalled      = false;
            var e              = new Event(0);
            var secondListener = new InterfaceListener(() => wasCalled = true);
            var firstListener  = new InterfaceListener(() => e.AddListener(secondListener));

            e.AddListener(firstListener);
            e.Invoke();

            Assert.IsFalse(wasCalled);
            e.Invoke();

            Assert.IsTrue(wasCalled);
        }