public void MathSubscriberTest()
        {
            //arrange
            IPublisher <double> mathPublisher = new MathPublisher(new Calculator());
            MathSubscriber      mathSub       = new MathSubscriber(mathPublisher);

            double expected = 155.23;
            double actual   = 0;

            //act
            mathPublisher.PublishData(55.23);
            actual = mathSub.Value;

            //assert
            Assert.AreEqual(expected, actual);
        }
        public void OnDataPublishTest()
        {
            //arrange
            double        actual    = 0;
            double        expect    = 115.56;
            MathPublisher publisher = new MathPublisher(new Calculator());

            //act
            publisher.DataPublish += delegate(object sender, DataPublisherEventArgs <double> e)
            {
                actual = e.Message;
            };
            publisher.PublishData(15.56);

            //assert
            Assert.AreEqual(expect, actual);
        }
        static void Main(string[] args)
        {
            ConfigAutofac();

            IPublisher <double> mathPublisher = new MathPublisher(container.Resolve <ICalculator>());
            MathSubscriber      mathSub       = new MathSubscriber(mathPublisher);

            Console.Write("Please enter a decimal value here: ");
            var    userInput = Console.ReadLine();
            double value;

            if (Double.TryParse(userInput, out value))
            {
                mathPublisher.PublishData(value);
                Console.WriteLine("Subscriber received: " + mathSub.Value.ToString());
            }
            else
            {
                Console.WriteLine("Invalid input number.");
            }
            Console.ReadKey();
        }
        public void MultipleMathSubscriberTest()
        {
            //arrange
            IPublisher <double> mathPublisher = new MathPublisher(new Calculator());
            MathSubscriber      mathSub1      = new MathSubscriber(mathPublisher);
            MathSubscriber      mathSub2      = new MathSubscriber(mathPublisher);
            MathSubscriber      mathSub3      = new MathSubscriber(mathPublisher);

            double expected = 155.23;
            double actual1  = 0;
            double actual2  = 0;
            double actual3  = 0;

            //act
            mathPublisher.PublishData(55.23);
            actual1 = mathSub1.Value;
            actual2 = mathSub2.Value;
            actual3 = mathSub3.Value;

            //assert
            Assert.IsTrue((expected == actual1) &&
                          (expected == actual2) &&
                          (expected == actual3), "Multiple MathSubscription failed");
        }