public void IntegrationTest()
        {
            var reportingStore = new ReportingStore();
            var manager = new QueuedHandleOrders(new Manger(reportingStore), "manager");
            var cashier = new Cashier(manager, new FakeOrdersStore());
            var queuedCashier = new QueuedHandleOrders(cashier, "cashier");
            var cook = new QueuedHandleOrders(new Cook(queuedCashier, new FakeIngredientsStore()), "cook");
            var waiter = new Waiter(cook);

            waiter.CreateOrder();
            Thread.Sleep(3000);
            cashier.PayFor(123);
            Thread.Sleep(10000);

            Assert.That(reportingStore.StoredOrders.Count, Is.EqualTo(1));
        }
        public void PerformanceTestReportWithMultipleCooks()
        {
            var reportingStore = new ReportingStore();
            var manager = new QueuedHandleOrders(new Manger(reportingStore), "manager");
            var cashier = new Cashier(manager, new FakeOrdersStore());
            var queuedCashier = new QueuedHandleOrders(cashier, "cashier");
            var cook = new QueuedHandleOrders(new RoundRobinHandleOrder(new List<IHandleOrders>()
                                                                            {
                                                                                new Cook(queuedCashier, new FakeIngredientsStore()),
                                                                                new Cook(queuedCashier, new FakeIngredientsStore()),
                                                                                new Cook(queuedCashier, new FakeIngredientsStore())
                                                                            }, "multiple cooks"), "cook");
            var waiter = new Waiter(cook);
            var monitor = new StatsMonitor(new List<IStatisticTrigger>()
                                               {
                                                   cook, queuedCashier, manager
                                               });

            for (int i = 0; i < 10000; ++i)
            {
                waiter.CreateOrderWithTable(i);

            }
            Thread.Sleep(10000);

            int paidClients = 0;
            while (paidClients != 10000)
            {
                for (int i = 0; i < 10000; ++i)
                {
                    bool result = cashier.PayFor(i);
                    if (result)
                    {
                        paidClients++;
                    }
                }
            }
            Thread.Sleep(100000);
        }