public void Test_FailedCallbackHandler()
        {
            var client = new OrderStatusServiceClient();

            client.OrderStatusChanged += client_FailedOrderStatusChanged;
            client.Subscribe();
            Thread.Sleep(5 * 1000);
            client.Unsubscribe();
        }
        public void Test_RepeatedSubscribeUnsubscribe()
        {
            var client = new OrderStatusServiceClient();

            client.Unsubscribe();
            client.Subscribe();
            client.Subscribe();
            client.Unsubscribe();
        }
        public void Test_InactiveSubscriber()
        {
            var client = new OrderStatusServiceClient();

            client.OrderStatusChanged += client_OrderStatusChanged;
            client.Subscribe();
            log.Clear();
            client.Close();
            Thread.Sleep(5 * 1000);
            Assert.IsFalse(log.Any(), "event log should be empty.");
        }
        public void Test_LongWorkCallbackHandler()
        {
            var client1 = new OrderStatusServiceClient();

            client1.OrderStatusChanged += client_LongWorkOrderStatusChanged;
            var client2 = new OrderStatusServiceClient();

            client2.OrderStatusChanged += client_OrderStatusChanged;

            log.Clear();
            client1.Subscribe();
            log2.Clear();
            client2.Subscribe();

            Thread.Sleep(3 * 1000);
            Assert.IsTrue(log.Any() && !log2.Any());

            Thread.Sleep(5 * 1000);
            Assert.IsTrue(log.Any() && log2.Any());

            client1.Unsubscribe();
            client2.Unsubscribe();
        }