public void Observer_FM_SubscriberNotCalledBeforeRegistered()
        {
            Newspaper_FM  herald      = new Newspaper_FM("Herald");
            Subscriber_FM subscriber1 = new Subscriber_FM();

            // not called before being resistered:
            herald.NewIssue("issue number 1");
            Assert.AreEqual(0, subscriber1.LatestIssueNumber);
        }
        public void Observer_FM_OneSubscriber_SubcriberCalled()
        {
            Newspaper_FM  herald      = new Newspaper_FM("herald");
            Subscriber_FM subscriber1 = new Subscriber_FM();

            IDisposable unSubscriber1 = herald.Subscribe(subscriber1);

            Console.WriteLine("Testing: {0}", 6.ToString());
            herald.NewIssue("issue number 1");

            Assert.AreEqual(1, subscriber1.LatestIssueNumber);
        }
        public void Observer_FM_SubscriberNotCalledAfterBeingRemoved()
        {
            Newspaper_FM  herald      = new Newspaper_FM("Herald");
            Subscriber_FM subscriber1 = new Subscriber_FM();

            IDisposable unSubscriber1 = herald.Subscribe(subscriber1);

            // not called before being resistered:
            herald.NewIssue("issue number 1");
            unSubscriber1.Dispose();
            herald.NewIssue("issue number 2");
            Assert.AreEqual(1, subscriber1.LatestIssueNumber);
        }
        public void Observer_FM_TwoSubscribers_SubcribersCalled()
        {
            Newspaper_FM  herald      = new Newspaper_FM("Herald");
            Subscriber_FM subscriber1 = new Subscriber_FM();
            Subscriber_FM subscriber2 = new Subscriber_FM();

            IDisposable unSubscriber1 = herald.Subscribe(subscriber1);
            IDisposable unSubscriber2 = herald.Subscribe(subscriber2);

            // not called before being resistered:
            herald.NewIssue("issue number 1");
            herald.NewIssue("issue number 2");
            Assert.AreEqual(2, subscriber1.LatestIssueNumber);
            Assert.AreEqual(2, subscriber2.LatestIssueNumber);
        }