コード例 #1
0
        public void FindTest()
        {
            Customer customer = new Customer();
            Order    order    = new Order {
                OwnerCustomer = customer,
            };
            OrderGoods goods = new OrderGoods {
                OwnerOrder = order,
            };
            OrderReady      ready      = new OrderReady();
            OrderReadyGoods readyGoods = new OrderReadyGoods {
                OwnerGoods = goods,
            };
            OrderWarehouse warehouse = new OrderWarehouse {
                OwnerOrder = order,
            };
            OrderWarehouseGoods warehouseGoods = new OrderWarehouseGoods {
                OwnerGoods     = goods,
                OwnerWarehouse = warehouse,
            };
            NewOrderWarehouseGoods newWarehouseGoods = new NewOrderWarehouseGoods {
                OwnerGoods     = goods,
                OwnerWarehouse = warehouse,
            };
            OrderDelivery delivery = new OrderDelivery {
                OwnerOrder = order,
            };
            OrderDeliveryGoods deliveryGoods = new OrderDeliveryGoods {
                OwnerGoods    = goods,
                OwnerDelivery = delivery,
            };
            OrderPayment payment = new OrderPayment {
                OwnerOrder = order,
            };

            DataSourceFinder finder = DataSourceFinder.Instance;

            Assert.AreSame(customer, finder.Find <Customer>(warehouseGoods));
            Assert.AreSame(customer, finder.Find <Customer>(newWarehouseGoods));
            Assert.AreSame(customer, finder.Find <Customer>(deliveryGoods));
            Assert.AreSame(customer, finder.Find <Customer>(readyGoods));
            Assert.AreSame(customer, finder.Find <Customer>(payment));
            Assert.IsNull(finder.Find <Customer>(ready));
            Assert.IsNull(finder.Find <A>(new C()));
        }
コード例 #2
0
        private void CheckIfSomethingToDo(DateTime clockTime)
        {
            for (int j = 0; j < _beingPrepared.Count; j++)
            {
                if (clockTime >= _beingPrepared[j].TimeReady)
                {
                    _beingPrepared[j].OrderType = OrderType.Ready;
                    OrderReady?.Invoke(this, _beingPrepared[j]);
                    _beingPrepared.RemoveAt(j);
                    j -= 1;
                }
            }
            for (int i = 0; i < _orders.Count; i++)
            {
                if (clockTime >= _orders[i].TimeForAction && _orders[i].OrderType == OrderType.Order)
                {
                    OrderReady?.Invoke(this, _orders[i]);

                    if (!GuestBills.ContainsKey(_orders[i].Name))
                    {
                        GuestBills.Add(_orders[i].Name, _orders[i].Article.Price);
                    }
                    else
                    {
                        GuestBills[_orders[i].Name] += _orders[i].Article.Price;
                    }

                    _beingPrepared.Add(_orders[i]);
                    _orders.RemoveAt(i);
                    i -= 1;
                }
                else if (clockTime >= _orders[i].TimeForAction && _orders[i].OrderType == OrderType.ToPay)
                {
                    OrderReady?.Invoke(this, _orders[i]);
                    _orders.RemoveAt(i);
                }
            }
        }
コード例 #3
0
        public PizzaMaker()
        {
            ordersToMake     = new Queue <Order>();
            TimeToMakeAPizza = TimeSpan.FromMinutes(3.0);
            fakeTime         = FakeTime.Instance;
            Task.Run(async() =>
            {
                for (;;)
                {
                    if (ordersToMake.Count > 0)
                    {
                        //i have to make that order
                        var order = ordersToMake.Dequeue();
                        await fakeTime.Wait((int)TimeToMakeAPizza.TotalMinutes);
                        if (OrderReady != null)
                        {
                            OrderReady.Invoke(this, order);
                        }
                    }

                    await Task.Delay(50);
                }
            });
        }
コード例 #4
0
ファイル: Cooker.cs プロジェクト: pierrethenot/MasterChefInfo
 protected virtual void OnOrderReady(EventArgs e)
 {
     OrderReady?.Invoke(this, e);
 }