diff --git "a/features/core/step_definitions/\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\224\320\260\320\275\320\275\321\213\321\205.os" "b/features/core/step_definitions/\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\224\320\260\320\275\320\275\321\213\321\205.os" index c0b7a6b..079b09c 100644 --- "a/features/core/step_definitions/\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\224\320\260\320\275\320\275\321\213\321\205.os" +++ "b/features/core/step_definitions/\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\224\320\260\320\275\320\275\321\213\321\205.os" @@ -13,6 +13,8 @@ ВсеШаги.Добавить("УПереданнойТаблицыКолонки"); ВсеШаги.Добавить("УПереданнойТаблицыСтроки"); ВсеШаги.Добавить("УСтрокиТаблицыЗаданыЗначенияИ"); + ВсеШаги.Добавить("ВТаблицеВЯчейкеЗначениеИмеетТип"); + ВсеШаги.Добавить("ВТаблицеВЯчейкеУказаноЗначение"); Возврат ВсеШаги; КонецФункции @@ -59,3 +61,22 @@ Ожидаем.Что(СтрокаТаблицы[0], "СтрокаТаблицы[0]").Равно(ОжидаемоеЗначение0); Ожидаем.Что(СтрокаТаблицы[1], "СтрокаТаблицы[1]").Равно(ОжидаемоеЗначение1); КонецПроцедуры + +//в таблице в ячейке "R:C" значение имеет тип "Дата" +Процедура ВТаблицеВЯчейкеЗначениеИмеетТип(Ячейка, ТипСтрокой) Экспорт + Ожидаем.Что(ЗначениеВЯчейкеТаблицы(Ячейка)).ИмеетТип(ТипСтрокой); +КонецПроцедуры + +//в таблице в ячейке "R:C" указано значение 29.11.2020 +Процедура ВТаблицеВЯчейкеУказаноЗначение(Ячейка, Значение) Экспорт + Ожидаем.Что(ЗначениеВЯчейкеТаблицы(Ячейка)).Равно(Значение); +КонецПроцедуры + +// Вспомогательный метод +Функция ЗначениеВЯчейкеТаблицы(КоординатыЯчейки) + ТаблицаДанных = БДД.ПолучитьИзКонтекста("ТаблицаДанных"); + Координаты = СтрРазделить(КоординатыЯчейки, ":"); + НомерСтроки = Число(Координаты[0]); + НомерКолонки = Число(Координаты[1]); + Возврат ТаблицаДанных[НомерСтроки][НомерКолонки]; +КонецФункции diff --git "a/features/core/\320\237\320\265\321\200\320\265\320\264\320\260\321\207\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.feature" "b/features/core/\320\237\320\265\321\200\320\265\320\264\320\260\321\207\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.feature" index 7f90080..9fc0219 100644 --- "a/features/core/\320\237\320\265\321\200\320\265\320\264\320\260\321\207\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.feature" +++ "b/features/core/\320\237\320\265\321\200\320\265\320\264\320\260\321\207\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.feature" @@ -9,6 +9,11 @@ Когда я передаю параметр 5 Тогда я получаю параметр с типом "Число" +Сценарий: Параметр дробное число + + Когда я передаю параметр 5,11 + Тогда я получаю параметр с типом "Число" + Сценарий: Использование параметров Дата с годом из 4-х цифр Когда я передаю параметр 11.02.2010 Тогда я получаю параметр с типом "Дата" @@ -27,7 +32,7 @@ Сценарий: Использование параметров ЧислоВнутриСтроки - Когда я передаю параметр число2 + Когда я передаю параметр "число2" Тогда я получаю параметр с типом "Строка" Сценарий: Использование многострочных строк @@ -65,3 +70,17 @@ И я в втором параметре получаю значение "Строка1" И я в первом параметре получаю значение с типом "Число" И я в втором параметре получаю значение с типом "Строка" + +Сценарий: Использование строки и числа внутри параметра + + Когда я передаю параметр '"Мой командный файл.cmd" "789"' + Тогда я получаю параметр с типом "Строка" + +# баг https://github.com/artbear/1bdd/issues/141 +# Сценарий: Передачи строки с числом внутри и числа для шага + +# Когда я передаю два параметра разных типов '"Мой командный файл.cmd" "789"' и 0 +# Тогда я в первом параметре получаю значение '"Мой командный файл.cmd" "789"' +# И я в втором параметре получаю значение 0 +# И я в первом параметре получаю значение с типом "Строка" +# И я в втором параметре получаю значение с типом "Число" diff --git "a/features/core/\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\224\320\260\320\275\320\275\321\213\321\205.feature" "b/features/core/\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\224\320\260\320\275\320\275\321\213\321\205.feature" index a7d5268..6e90091 100644 --- "a/features/core/\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\224\320\260\320\275\320\275\321\213\321\205.feature" +++ "b/features/core/\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\224\320\260\320\275\320\275\321\213\321\205.feature" @@ -2,7 +2,7 @@ Функционал: Таблицы данных Как Разработчик - Я Хочу чтобы можно было использовать различные форматы данных в фича-файлах + Я Хочу чтобы в ячейках таблицы данных автоматически распознавались различные типы значений Сценарий: Проверяю передачу простой таблицы @@ -13,4 +13,53 @@ И у переданной таблицы 2 колонки И у переданной таблицы 2 строки И у 0 строки таблицы заданы значения "Ячейка11" и "Ячейка12" - И у 1 строки таблицы заданы значения "Ячейка21" и "Ячейка22" \ No newline at end of file + И у 1 строки таблицы заданы значения "Ячейка21" и "Ячейка22" + +Сценарий: Разные типы в ячейках таблицы + + Когда я передаю таблицу + | Ячейка11 | 11 | + | Ячейка11 | 01.01.2020 | + | Ячейка21 | 11,12 | + | Ячейка21 | 01.01.20 | + Тогда переданная таблица является типом "ТаблицаЗначений" + И у переданной таблицы 2 колонки + И у переданной таблицы 4 строки + И у 0 строки таблицы заданы значения "Ячейка11" и 11 + И у 1 строки таблицы заданы значения "Ячейка11" и 01.01.2020 + И у 2 строки таблицы заданы значения "Ячейка21" и 11,12 + И у 3 строки таблицы заданы значения "Ячейка21" и 01.01.20 + +Сценарий: Дата в ячейке таблицы + Когда я передаю таблицу + | 29.11.2020 | + + Тогда в таблице в ячейке "0:0" значение имеет тип "Дата" + И в таблице в ячейке "0:0" указано значение 29.11.2020 + + +Сценарий: Числовое значение в ячейке + Когда я передаю таблицу + | 00000001 | + | 1234567890 | + + Тогда в таблице в ячейке "0:0" значение имеет тип "Число" + И в таблице в ячейке "0:0" указано значение 1 + + Тогда в таблице в ячейке "1:0" значение имеет тип "Число" + И в таблице в ячейке "1:0" указано значение 1234567890 + + +Сценарий: Строка с литералом даты в ячейке таблицы + Когда я передаю таблицу + | Строка с датой внутри: 21.11.2020 | + + Тогда в таблице в ячейке "0:0" значение имеет тип "Строка" + и в таблице в ячейке "0:0" указано значение "Строка с датой внутри: 21.11.2020" + +Сценарий: Строка с числовым литералом в ячейке таблицы + Когда я передаю таблицу + | Строка 1 | + + Тогда в таблице в ячейке "0:0" значение имеет тип "Строка" + И в таблице в ячейке "0:0" указано значение "Строка 1" diff --git "a/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.os" "b/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.os" index d0ba49e..9fe09e7 100644 --- "a/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.os" +++ "b/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.os" @@ -75,14 +75,22 @@ //я включаю отладку лога с именем "bdd" Процедура ЯВключаюОтладкуЛогаСИменем(Знач ИмяЛога) Экспорт - НужныйЛог = Логирование.ПолучитьЛог(ИмяЛога); - НужныйЛог.УстановитьУровень(УровниЛога.Отладка); + УстановитьУровеньЛогаСИменем(ИмяЛога, УровниЛога.Отладка); КонецПроцедуры //я выключаю отладку лога с именем "bdd" Процедура ЯВыключаюОтладкуЛогаСИменем(Знач ИмяЛога) Экспорт + УстановитьУровеньЛогаСИменем(ИмяЛога, УровниЛога.Информация); +КонецПроцедуры + +Процедура УстановитьУровеньЛогаСИменем(Знач ИмяЛога, УровеньЛога) НужныйЛог = Логирование.ПолучитьЛог(ИмяЛога); - НужныйЛог.УстановитьУровень(УровниЛога.Информация); + НужныйЛог.УстановитьУровень(УровеньЛога); + УровеньДляСреды = "INFO"; + Если УровеньЛога = УровниЛога.Отладка Тогда + УровеньДляСреды = "DEBUG"; + КонецЕсли; + УстановитьПеременнуюСреды("LOGOS_CONFIG", СтрШаблон("logger.%1=%2", ИмяЛога, УровеньДляСреды)); КонецПроцедуры //Я выполняю команду "git" diff --git a/packagedef b/packagedef index 3cbe574..1398276 100644 --- a/packagedef +++ b/packagedef @@ -3,13 +3,13 @@ Описание.Имя("1bdd") .Версия(Константы_1bdd.ВерсияПродукта) - .ВерсияСреды("1.0.16") - .ЗависитОт("logos", "1.2.1") + .ВерсияСреды("1.1.0") + .ЗависитОт("logos", "1.3.0") .ЗависитОт("cmdline", "1.0.0") - .ЗависитОт("tempfiles", "0.2.2") + .ЗависитОт("tempfiles", "1.0.0") .ЗависитОт("asserts", "1.3.0") - .ЗависитОт("1commands", "1.3.5") - .ЗависитОт("fs", "1.0.0") + .ЗависитОт("1commands", "1.5.0") + .ЗависитОт("fs", "1.1.0") .ЗависитОт("strings", "0.4.1") .ВключитьФайл("src") .ВключитьФайл("tests") @@ -18,7 +18,5 @@ .ВключитьФайл("readme.md") .ВключитьФайл("LICENSE") .ВключитьФайл("Jenkinsfile") - .ВключитьФайл("appveyor.yml") - .ВключитьФайл("appveyor-runtests.cmd") .ВключитьФайл("lib.config") .ИсполняемыйФайл("src/bdd.os", "1bdd"); \ No newline at end of file diff --git a/src/gherkin-read.os b/src/gherkin-read.os index 86c544d..adb48b6 100644 --- a/src/gherkin-read.os +++ b/src/gherkin-read.os @@ -694,7 +694,7 @@ Начало = Группа.Индекс; ОписаниеПараметра = ВозможныеКлючиПараметров.Строка; - ДобавитьПараметр(Параметры, ВозможныеКлючиПараметров.Строка, ЗначениеПараметра, Начало); + ДобавитьПараметр(Параметры, ВозможныеКлючиПараметров.Строка, ЗначениеПараметра, Начало, Группа.Длина); НовоеТело = СтрШаблон("%1 %2", СтрПолучитьСтроку(Лев(НовоеТело, Начало), 1), ОписаниеПараметра); Возврат НовоеТело; @@ -716,11 +716,11 @@ ЭтоЧисловойПараметр = ЭтоЧисло(ЗначениеПараметра); ОписаниеПараметра = ?(ЭтоЧисловойПараметр, ВозможныеКлючиПараметров.Число, ВозможныеКлючиПараметров.Строка); Если ЭтоЧисловойПараметр Тогда - ЗначениеПараметра = Число(ЗначениеПараметра); + ЗначениеПараметра = Число(СтрЗаменить(ЗначениеПараметра, ",", ".")); КонецЕсли; Начало = Группа.Индекс; - ДобавитьПараметр(Параметры, ОписаниеПараметра, ЗначениеПараметра, Начало); + ДобавитьПараметр(Параметры, ОписаниеПараметра, ЗначениеПараметра, Начало, Группа.Длина); Окончание = Группа.Индекс + Группа.Длина; НовоеТело = Лев(НовоеТело, Начало) + ОписаниеПараметра + Сред(НовоеТело, Окончание + 1); @@ -754,7 +754,7 @@ ЗначениеПараметра = Дата(СтрокаДаты); Начало = Группа.Индекс; - ДобавитьПараметр(Параметры, ОписаниеПараметра, ЗначениеПараметра, Начало); + ДобавитьПараметр(Параметры, ОписаниеПараметра, ЗначениеПараметра, Начало, Группа.Длина); Окончание = Группа.Индекс + Группа.Длина; НовоеТело = Лев(НовоеТело, Начало) + ОписаниеПараметра + Сред(НовоеТело, Окончание + 1); @@ -781,7 +781,7 @@ ОписаниеПараметра = ВозможныеКлючиПараметров.ПараметрДляТаблицы; Начало = Группа.Индекс; - ДобавитьПараметр(Параметры, ОписаниеПараметра, ЗначениеПараметра, Начало); + ДобавитьПараметр(Параметры, ОписаниеПараметра, ЗначениеПараметра, Начало, Группа.Длина); Окончание = Группа.Индекс + Группа.Длина; НовоеТело = Лев(НовоеТело, Начало) + ОписаниеПараметра + Сред(НовоеТело, Окончание + 1); @@ -799,7 +799,7 @@ КонецЕсли; Таблица = ПолучитьТаблицу(ТекстТаблицы); ОписаниеПараметра = ВозможныеКлючиПараметров.Таблица; - Начало = 100000;// чтобы параметр-таблица всегда шел последним в списке параметров + Начало = 100000; // чтобы параметр-таблица всегда шел последним в списке параметров ДобавитьПараметр(Параметры, ОписаниеПараметра, Таблица, Начало); @@ -811,14 +811,16 @@ Рез.Колонки.Добавить("Тип"); Рез.Колонки.Добавить("Значение"); Рез.Колонки.Добавить("Начало"); + Рез.Колонки.Добавить("Длина"); Возврат Рез; КонецФункции // СоздатьТаблицуПараметров() -Функция ДобавитьПараметр(ТабПараметры, Знач Тип, Знач Значение, Знач Начало) +Функция ДобавитьПараметр(ТабПараметры, Знач Тип, Знач Значение, Знач Начало, Знач Длина = 0) НоваяСтрока = ТабПараметры.Добавить(); НоваяСтрока.Тип = Тип; НоваяСтрока.Значение = Значение; НоваяСтрока.Начало = Начало; + НоваяСтрока.Длина = Длина; Возврат НоваяСтрока; КонецФункции @@ -942,16 +944,22 @@ Процедура ЗаполнитьСтрокуТаблицы(Знач МассивЗначений, НоваяСтрока, Знач НомерСтроки) Для к = 0 По МассивЗначений.Количество() - 1 Цикл ЗначениеПараметра = МассивЗначений[к]; + Лог.Отладка("номер строки %3, значение из колонки %1 (до подстановки в таблицу) <%2>", + к, ЗначениеПараметра, НомерСтроки - 1); //пытаемся привести к одному значению, все значения, кроме строки. Например, число, дата НайденныеПараметры = СоздатьТаблицуПараметров(); ВыделитьПростыеЗначенияНеСтроки(ЗначениеПараметра, НайденныеПараметры); - Если НайденныеПараметры.Количество() = 1 Тогда - ЗначениеПараметра = НайденныеПараметры[0].Значение; + Если НайденныеПараметры.Количество() = 1 Тогда + НайденныйПараметр = НайденныеПараметры[0]; + НашлиПараметр = НайденныйПараметр.Начало = 0 + И НайденныйПараметр.Длина = СтрДлина(ЗначениеПараметра); + Если НашлиПараметр Тогда + ЗначениеПараметра = НайденныйПараметр.Значение; + КонецЕсли; КонецЕсли; - Лог.Отладка("номер строки %3, значение из колонки %1 (для подстановки из таблицы) <%2>", - к, ЗначениеПараметра, НомерСтроки - 1); + Лог.Отладка("значение для подстановки из таблицы <%1>", ЗначениеПараметра); НоваяСтрока[к] = ЗначениеПараметра; КонецЦикла; КонецПроцедуры @@ -1308,9 +1316,10 @@ Функция СоздатьРегулярныеВыражения() Рез = Новый Структура; - Рез.Вставить("НеЧисло", Новый РегулярноеВыражение("[^\d]+")); - Рез.Вставить("Дата", Новый РегулярноеВыражение("(\d{2}).(\d{2}).(\d{2,4})")); - Рез.Вставить("ЧислоИлиСловоСЧислом", Новый РегулярноеВыражение("([а-яё\w]*\d+[а-яё\w]*)|(-?\d+(,\d)*)+")); //Когда я использую 5 как 5число5 + Рез.Вставить("НеЧисло", Новый РегулярноеВыражение("[^\d,]+")); + // Даты вида 29.11.2020, 29-11-2020, 29/11/2020, 29.11.20, 29-11-20, 29/11/20, + Рез.Вставить("Дата", Новый РегулярноеВыражение("(\d{2})[\.\-\/](\d{2})[\.\-\/](\d{2,4})")); + Рез.Вставить("ЧислоИлиСловоСЧислом", Новый РегулярноеВыражение("(\d+(,\d+){0,1})|(-?\d+(,\d){0,1})+")); //Когда я использую 5 как 5число5 Рез.Вставить("МногострочныйТекст", Новый РегулярноеВыражение("\s*""""""\n\r*((.*\n\r*)+)\s*""""""")); Рез.Вставить("ПараметрДляТаблицы", Новый РегулярноеВыражение("<([^>]+)>")); Рез.Вставить("ПараметрТаблицы", Новый РегулярноеВыражение("\|\s*([^\|]+)\s*")); diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213_1bdd.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213_1bdd.os" index 6920197..7212ee2 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213_1bdd.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213_1bdd.os" @@ -2,4 +2,4 @@ /////////////////////////////////////////////////////////////// -ВерсияПродукта = "1.10.0"; +ВерсияПродукта = "1.11.0";