Пример #1
0
        public void CategorysMarginCoefficient_Test()
        {
            // arrange
            double bun_margin_coefficient_expected   = 1.1;
            double bread_margin_coefficient_expected = 1.2;
            double loaf_margin_coefficient_expected  = 1.3;
            double bagel_margin_coefficient_expected = 1.4;
            double pita_margin_coefficient_expected  = 1.5;

            double delta = 0.1;

            // act
            Products bread = new Bread();
            Products bagel = new Bagel();
            Products bun   = new Bun();
            Products pita  = new Pita();
            Products loaf  = new Loaf();

            // assert
            Assert.AreEqual(bun_margin_coefficient_expected, bun.MarginCoefficient, delta);
            Assert.AreEqual(bread_margin_coefficient_expected, bread.MarginCoefficient, delta);
            Assert.AreEqual(loaf_margin_coefficient_expected, loaf.MarginCoefficient, delta);
            Assert.AreEqual(bagel_margin_coefficient_expected, bagel.MarginCoefficient, delta);
            Assert.AreEqual(pita_margin_coefficient_expected, pita.MarginCoefficient, delta);
        }
Пример #2
0
        /// <summary>
        /// Разобрать строку содержащую информацию о категории
        /// </summary>
        /// <param name="input_string">Строка с информацией о категории</param>
        /// <param name="is_ok">Ссылка на переменную, указывающую на успешный разбор строки</param>
        /// <returns>Возвращает Products</returns>
        static Products ParseCategory(string input_string, ref bool is_ok)
        {
            //Формат
            //"category : CategoryName = Bread, ProductName = Волотовской, Quantity = 10;"

            Products product     = new Bread();
            int      positions   = input_string.LastIndexOf(':');//Определяем позицию после двоеточия
            string   edit_string = input_string.Substring(positions + 1);

            //Разбиваем строку на массив строк
            string[] string_array = edit_string.Split(',', StringSplitOptions.RemoveEmptyEntries);

            //Определяем категорию к которой относится продукция
            foreach (var item in string_array)
            {
                //ищем
                if (item.IndexOf("CategoryName") == -1) //не существует, ищем дальше
                {
                    continue;
                }
                //Нашли, получаем параметры
                string[] parameter;

                parameter = item.Split(new char[] { '=' }); //Разбиваем параметр на 2 части
                if (parameter.Length < 2)                   //Проверяем длину
                {
                    is_ok = false;
                    return(product);
                }
                string type     = parameter[0];
                string category = parameter[1];

                //Проверяем, определена ли данная категория
                if (Products.CategoryIsExcist(category) == false)
                {
                    is_ok = false;
                    return(product);
                }
                else
                {
                    switch (category)
                    {
                    case Products.CATEGORY_BREAD:
                        product = new Bread();
                        break;

                    case Products.CATEGORY_LOAF:
                        product = new Loaf();
                        break;

                    case Products.CATEGORY_BAGEL:
                        product = new Bagel();
                        break;

                    case Products.CATEGORY_BUN:
                        product = new Bun();
                        break;

                    case Products.CATEGORY_PITA:
                        product = new Pita();
                        break;
                    }

                    break;//Выходим из цикла foreach
                }
            }


            //Получаем остальные параметры
            foreach (var item in string_array)
            {
                string[] parameter;

                parameter = item.Split(new char[] { '=' }); //Разбиваем параметр на 2 части
                if (parameter.Length < 2)                   //Проверяем длину
                {
                    continue;
                }
                string type      = parameter[0];
                string str_value = parameter[1];
                double value;

                switch (type)
                {
                case "ProductName":     //Наименование продукции
                    try
                    {
                        product.ProductName = str_value;
                    }
                    catch
                    {
                        product.ProductName = "";
                    }
                    break;

                case "Quantity":     //Количество
                    double.TryParse(string.Join("", str_value.Where(c => char.IsDigit(c))), out value);
                    try
                    {
                        str_value = str_value.Replace('.', ',');
                        double.TryParse(str_value, out value);
                        product.Quantity = value;
                    }
                    catch
                    {
                        product.Quantity = 0;
                    }
                    break;


                case "CategoryName":    //Наименование категории
                    try
                    {
                        product.CategoryName = str_value;
                    }
                    catch
                    {
                        product.CategoryName = "";
                    }
                    break;
                }
            }
            is_ok = true;
            return(product);
        }