1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-03-17 20:48:01 +02:00

Метод для формирования вариантов параметров

This commit is contained in:
alkoleft 2023-05-15 23:08:12 +03:00
parent f296aef9e0
commit 2a269f860d
2 changed files with 67 additions and 1 deletions

View File

@ -359,6 +359,29 @@
КонецФункции
// Формирует массив различных комбиначий параметров
//
// Предназначено для формирования таблицы возможных значений параметров для краш теста метода.
//
// Параметры:
// ЗначенияПоУмолчанию - Структура - Значения параметров по умолчанию.
// ЗначенияПараметров - Структура - Массивы значений для каждого параметра.
//
// Возвращаемое значение:
// Массив из Структура - Варианты параметров.
Функция ВариантыПараметров(ЗначенияПоУмолчанию, ЗначенияПараметров) Экспорт
Варианты = Новый Массив;
Варианты.Добавить(ЗначенияПоУмолчанию);
Ключи = ЮТОбщий.ВыгрузитьЗначения(ЗначенияПараметров, "Ключ");
ДобавитьВарианты(Варианты, ЗначенияПоУмолчанию, ЗначенияПараметров, Ключи, 0);
Возврат Варианты;
КонецФункции
// Возвращает конструктор создания тестовых данных
//
// Конструктор имеет ряд особенностей:
@ -413,3 +436,26 @@
#КонецЕсли
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ДобавитьВарианты(Варианты, БазоваяСтруктура, ЗначенияПараметров, Ключи, Инд)
Если Инд > Ключи.ВГраница() Тогда
Возврат;
КонецЕсли;
Ключ = Ключи[Инд];
Для Каждого Значение Из ЗначенияПараметров[Ключ] Цикл
Вариант = ЮТОбщий.СкопироватьСтруктуру(БазоваяСтруктура);
Вариант[Ключ] = Значение;
Варианты.Добавить(Вариант);
ДобавитьВарианты(Варианты, Вариант, ЗначенияПараметров, Ключи, Инд + 1);
КонецЦикла;
КонецПроцедуры
#КонецОбласти

View File

@ -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"))
КонецПроцедуры
#КонецОбласти