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); }
/// <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); }