public void TwoWaitersTest() { var dispatcher = new Dispatcher(); var reportingStore = new ReportingStore(); var notifyDispatcher = new NotifyDispatcher(dispatcher); IScheduler theScheduler = new NeverTimesOut(); var cashier = new Cashier(notifyDispatcher, new FakeOrdersStore()); var midgetHouse = new MidgetHouse(dispatcher, theScheduler); var waiter1 = new Waiter(midgetHouse); var waiter2 = new SecondWaiter(midgetHouse); dispatcher.Subscribe("cook", new QueuedHandleOrders(new Cook(notifyDispatcher, new FakeIngredientsStore()), "cook")); dispatcher.Subscribe("cashier", cashier); dispatcher.Subscribe("assistant", new QueuedHandleOrders(new AssistantManager(notifyDispatcher, new FakePriceTable()), "assistant")); dispatcher.Subscribe("manger", new QueuedHandleOrders(new Manger(reportingStore), "manager")); dispatcher.SubscribeMidgetInfo("midgetObserver", new MidgetObserver()); waiter1.CreateOrderWithTable(123); waiter2.CreateOrderWithTable(666); Thread.Sleep(2000); cashier.PayFor(123); Thread.Sleep(2000); 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); }