1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-01-05 12:50:36 +02:00
Исправил ошибку определения предикатов при обучении
This commit is contained in:
Koryakin Aleksey 2023-07-11 22:26:58 +03:00 committed by GitHub
commit 437245ce7c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 75 additions and 25 deletions

View File

@ -64,11 +64,11 @@
ТипПараметра = ТипЗнч(Предикаты);
Если ТипПараметра = Тип("ОбщийМодуль") И Предикаты = ЮТПредикаты Тогда
Если ЭтоПредикатОбщийМодуль(ТипПараметра, Предикаты) Тогда
Результат = ЮТПредикаты.Получить();
ИначеЕсли ТипПараметра = Тип("Массив") И (Предикаты.Количество() = 0 ИЛИ ЮТОбщий.ТипСтруктуры(Предикаты[0]) = "Предикат") Тогда
ИначеЕсли ЭтоПредикатМассив(ТипПараметра, Предикаты) Тогда
Результат = Предикаты;
ИначеЕсли ТипПараметра = Тип("Структура") И ЮТОбщий.ТипСтруктуры(Предикаты) = "Предикат" Тогда
ИначеЕсли ЭтоПредикатСтруктура(ТипПараметра, Предикаты) Тогда
Результат = ЮТОбщий.ЗначениеВМассиве(Предикаты);
Иначе
ВызватьИсключение "Некорректный параметр метода `ЮТПредикатыКлиентСервер.НаборПредикатов`";
@ -78,12 +78,20 @@
КонецФункции
// Это предикат
//
// Параметры:
// Предикаты - Произвольный - значение, для которого будет определено является ли оно предикатом или нет
//
// Возвращаемое значение:
// Булево
Функция ЭтоПредикат(Предикаты) Экспорт
ТипПараметра = ТипЗнч(Предикаты);
Возврат (ТипПараметра = Тип("ОбщийМодуль") И Предикаты = ЮТПредикаты)
ИЛИ (ТипПараметра = Тип("Массив") И Предикаты.Количество() И ЮТОбщий.ТипСтруктуры(Предикаты[0]) = "Предикат")
ИЛИ (ТипПараметра = Тип("Структура") И ЮТОбщий.ТипСтруктуры(Предикаты) = "Предикат");
Возврат ЭтоПредикатОбщийМодуль(ТипПараметра, Предикаты)
Или ЭтоПредикатМассив(ТипПараметра, Предикаты)
Или ЭтоПредикатСтруктура(ТипПараметра, Предикаты);
КонецФункции
@ -167,6 +175,29 @@
КонецФункции
// Параметры сообщений об ошибке.
//
// Параметры:
// ОписаниеПроверки - Строка - Описание конкретной проверки
// ТекстПроверяемоеЗначение - Строка - Человекочитаемое описание проверяемого значения
// ПредставлениеПроверяемогоЗначения - Неопределено - Представление проверяемого значения
//
// Возвращаемое значение:
// Структура - Параметры сообщений об ошибке:
// * ОписаниеПроверки - Неопределено, Строка - Описание конкретной проверки
// * ТекстПроверяемоеЗначение - Неопределено, Строка - Человекочитаемое описание проверяемого значения
// * ПредставлениеПроверяемогоЗначения - Неопределено, Строка -
Функция ПараметрыСообщенийОбОшибке(ОписаниеПроверки = Неопределено,
ТекстПроверяемоеЗначение = "проверяемое значение",
ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт
Возврат Новый Структура("ОписаниеПроверки, ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения",
ОписаниеПроверки,
ТекстПроверяемоеЗначение,
ПредставлениеПроверяемогоЗначения);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@ -257,26 +288,25 @@
КонецПроцедуры
// Параметры сообщений об ошибке.
//
// Параметры:
// ОписаниеПроверки - Строка - Описание конкретной проверки
// ТекстПроверяемоеЗначение - Строка - Человекочитаемое описание проверяемого значения
// ПредставлениеПроверяемогоЗначения - Неопределено - Представление проверяемого значения
//
// Возвращаемое значение:
// Структура - Параметры сообщений об ошибке:
// * ОписаниеПроверки - Неопределено, Строка - Описание конкретной проверки
// * ТекстПроверяемоеЗначение - Неопределено, Строка - Человекочитаемое описание проверяемого значения
// * ПредставлениеПроверяемогоЗначения - Неопределено, Строка -
Функция ПараметрыСообщенийОбОшибке(ОписаниеПроверки = Неопределено,
ТекстПроверяемоеЗначение = "проверяемое значение",
ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт
Функция ЭтоПредикатОбщийМодуль(ТипПредикатов, Предикаты)
Возврат Новый Структура("ОписаниеПроверки, ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения",
ОписаниеПроверки,
ТекстПроверяемоеЗначение,
ПредставлениеПроверяемогоЗначения);
Возврат ТипПредикатов = Тип("ОбщийМодуль")
И Предикаты = ЮТПредикаты;
КонецФункции
Функция ЭтоПредикатМассив(ТипПредикатов, Предикаты)
Возврат ТипПредикатов = Тип("Массив")
И Предикаты.Количество()
И ЭтоПредикатСтруктура(ТипЗнч(Предикаты[0]), Предикаты[0]);
КонецФункции
Функция ЭтоПредикатСтруктура(ТипПредикатов, Предикаты)
Возврат ТипПредикатов = Тип("Структура")
И ЮТОбщий.ТипСтруктуры(Предикаты) = "Предикат";
КонецФункции

View File

@ -26,6 +26,7 @@
ЮТТесты
.ДобавитьТест("ПроверитьПредикаты")
.ДобавитьТест("ЭтоПредикат")
.ДобавитьТест("СообщенияОбОшибках")
;
@ -38,6 +39,25 @@
КонецПроцедуры
Процедура ЭтоПредикат() Экспорт
СтруктураПредикат = ЮтФабрика.ВыражениеПредиката(ЮТПредикаты.Выражения().Равно);
ЮТОбщий.УказатьТипСтруктуры(СтруктураПредикат, "Предикат");
Варианты = ЮТест.Варианты("Предикаты, ОжидаемоеЗначение")
.Добавить(ЮТПредикаты, Истина)
.Добавить(Мокито.МассивПараметров(СтруктураПредикат), Истина)
.Добавить(СтруктураПредикат, Истина)
.Добавить(Мокито.МассивПараметров(Новый Структура), Ложь)
.Добавить(Мокито.МассивПараметров(Новый Структура("ЛюбойПараметр", 1)), Ложь)
.Добавить(Мокито.МассивПараметров(1, 2, 3), Ложь);
Для Каждого Вариант Из Варианты.СписокВариантов() Цикл
ЮТест.ОжидаетЧто(ЮТПредикатыКлиентСервер.ЭтоПредикат(Вариант.Предикаты)).Равно(Вариант.ОжидаемоеЗначение);
КонецЦикла;
КонецПроцедуры
Процедура СообщенияОбОшибках() Экспорт
Объект = Новый Структура("Число, Пусто, Строка", 3, Неопределено, "123");