diff --git a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl index 0c8693c6..1b4cb406 100644 --- a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl @@ -359,6 +359,29 @@ КонецФункции +// Формирует массив различных комбиначий параметров +// +// Предназначено для формирования таблицы возможных значений параметров для краш теста метода. +// +// Параметры: +// ЗначенияПоУмолчанию - Структура - Значения параметров по умолчанию. +// ЗначенияПараметров - Структура - Массивы значений для каждого параметра. +// +// Возвращаемое значение: +// Массив из Структура - Варианты параметров. +Функция ВариантыПараметров(ЗначенияПоУмолчанию, ЗначенияПараметров) Экспорт + + Варианты = Новый Массив; + Варианты.Добавить(ЗначенияПоУмолчанию); + + Ключи = ЮТОбщий.ВыгрузитьЗначения(ЗначенияПараметров, "Ключ"); + + ДобавитьВарианты(Варианты, ЗначенияПоУмолчанию, ЗначенияПараметров, Ключи, 0); + + Возврат Варианты; + +КонецФункции + // Возвращает конструктор создания тестовых данных // // Конструктор имеет ряд особенностей: @@ -413,3 +436,26 @@ #КонецЕсли #КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ДобавитьВарианты(Варианты, БазоваяСтруктура, ЗначенияПараметров, Ключи, Инд) + + Если Инд > Ключи.ВГраница() Тогда + Возврат; + КонецЕсли; + + Ключ = Ключи[Инд]; + Для Каждого Значение Из ЗначенияПараметров[Ключ] Цикл + + Вариант = ЮТОбщий.СкопироватьСтруктуру(БазоваяСтруктура); + Вариант[Ключ] = Значение; + Варианты.Добавить(Вариант); + + ДобавитьВарианты(Варианты, Вариант, ЗначенияПараметров, Ключи, Инд + 1); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти diff --git a/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl b/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl index 28611603..c8086ad4 100644 --- a/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl +++ b/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl @@ -23,7 +23,8 @@ ЮТТесты .ВТранзакции() .УдалениеТестовыхДанных() - .ДобавитьТест("Удалить"); + .ДобавитьТест("Удалить") + .ДобавитьТест("СобратьМассивВариантов"); ; КонецПроцедуры @@ -57,5 +58,24 @@ КонецПроцедуры +Процедура СобратьМассивВариантов() Экспорт + + БазоваяСтруктура = Новый Структура("Числа, Строки"); + Значения = Новый Структура("Числа, Строки", ЮТОбщий.ЗначениеВМассиве(1, 2), ЮТОбщий.ЗначениеВМассиве("1", "2")); + + Результат = ЮТест.Данные().СобратьМассивВариантов(БазоваяСтруктура, Значения); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Массив") + .ИмеетДлину(7) + .Элемент(0).Равно(БазоваяСтруктура) + .Элемент(1).Равно(Новый Структура("Числа, Строки", 1)) + .Элемент(2).Равно(Новый Структура("Числа, Строки", 1, "1")) + .Элемент(3).Равно(Новый Структура("Числа, Строки", 1, "2")) + .Элемент(5).Равно(Новый Структура("Числа, Строки", 2, "1")) + .Элемент(6).Равно(Новый Структура("Числа, Строки", 2, "2")) + +КонецПроцедуры + #КонецОбласти