示例#1
0
        public void Meal_Night_Factory_OK()
        {
            Meal obj = MealFactory.CreateMeal(MealType.NIGHT);

            var meal = obj.Display(1);

            Console.WriteLine(meal);
            Assert.IsTrue(obj.Name == "Night");
        }
示例#2
0
        public void Meal_Morning_Factory_OK()
        {
            Meal obj = MealFactory.CreateMeal(MealType.MORNING);

            var meal = obj.Display(1);

            Console.WriteLine(meal);
            Assert.IsTrue(obj.Name == "Morning");
        }
示例#3
0
        public override void Execute()
        {
            Console.WriteLine("Please enter desired meal name (green salad/hamburger): ");
            string mealName = Console.ReadLine();

            MealFactory factory = new MealFactory();
            IMeal       meal    = factory.CreateMeal(mealName);

            meal.ShowDescription();
            meal.ShowAmountOfCalories();
        }
示例#4
0
        public void CreateMeal(string input)
        {
            if (this._meal == null)
            {
                MealType meal      = MealType.NOTAVAILABLE;
                var      validator = new OrderingValidator();
                if (validator.isInputValid(input, out meal))
                {
                    if (meal != MealType.NOTAVAILABLE)
                    {
                        this._meal = MealFactory.CreateMeal(meal);

                        var  listDishes = validator.GetListDishes().OrderBy(x => x).GroupBy(x => x);
                        bool hasError   = false;

                        foreach (var item in listDishes)
                        {
                            DishType?currentDishType = validator.GetToDishType(item.Key);
                            int      dishRepetition  = item.Count();

                            if (currentDishType != null)
                            {
                                var dish = this._meal.Dishes.Where(x => x.DishType == currentDishType).FirstOrDefault();
                                if (dishRepetition > 1)
                                {
                                    if (dish.HasMultipleOrder())
                                    {
                                        dish.HasOrdered = true;
                                        dish.Order(dishRepetition);
                                    }
                                    else
                                    {
                                        dish = new ErrorDish();
                                    }
                                }
                                else
                                {
                                    if (dish != null)
                                    {
                                        dish.HasOrdered = true;
                                        dish.Order(1);
                                    }

                                    if (currentDishType == DishType.DESERT && meal == MealType.MORNING)
                                    {
                                        this._meal.Add(new ErrorDish());
                                    }
                                }
                            }
                            else
                            {
                                if (!hasError)
                                {
                                    this._meal.Add(new ErrorDish());
                                }
                            }
                        }

                        ValidOrder();
                    }
                    else
                    {
                        this._meal = new Meal("Error");
                        this._meal.Add(new ErrorDish());
                    }
                }
            }
        }