diff --git a/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl index 68eaa550..50de087d 100644 --- a/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl @@ -64,11 +64,11 @@ ТипПараметра = ТипЗнч(Предикаты); - Если ТипПараметра = Тип("ОбщийМодуль") И Предикаты = ЮТПредикаты Тогда + Если ЭтоПредикатОбщийМодуль(ТипПараметра, Предикаты) Тогда Результат = ЮТПредикаты.Получить(); - ИначеЕсли ТипПараметра = Тип("Массив") И (Предикаты.Количество() = 0 ИЛИ ЮТОбщий.ТипСтруктуры(Предикаты[0]) = "Предикат") Тогда + ИначеЕсли ЭтоПредикатМассив(ТипПараметра, Предикаты) Тогда Результат = Предикаты; - ИначеЕсли ТипПараметра = Тип("Структура") И ЮТОбщий.ТипСтруктуры(Предикаты) = "Предикат" Тогда + ИначеЕсли ЭтоПредикатСтруктура(ТипПараметра, Предикаты) Тогда Результат = ЮТОбщий.ЗначениеВМассиве(Предикаты); Иначе ВызватьИсключение "Некорректный параметр метода `ЮТПредикатыКлиентСервер.НаборПредикатов`"; @@ -78,12 +78,20 @@ КонецФункции +// Это предикат +// +// Параметры: +// Предикаты - Произвольный - значение, для которого будет определено является ли оно предикатом или нет +// +// Возвращаемое значение: +// Булево Функция ЭтоПредикат(Предикаты) Экспорт ТипПараметра = ТипЗнч(Предикаты); - Возврат (ТипПараметра = Тип("ОбщийМодуль") И Предикаты = ЮТПредикаты) - ИЛИ (ТипПараметра = Тип("Массив") И Предикаты.Количество() И ЮТОбщий.ТипСтруктуры(Предикаты[0]) = "Предикат") - ИЛИ (ТипПараметра = Тип("Структура") И ЮТОбщий.ТипСтруктуры(Предикаты) = "Предикат"); + + Возврат ЭтоПредикатОбщийМодуль(ТипПараметра, Предикаты) + Или ЭтоПредикатМассив(ТипПараметра, Предикаты) + Или ЭтоПредикатСтруктура(ТипПараметра, Предикаты); КонецФункции @@ -167,6 +175,29 @@ КонецФункции +// Параметры сообщений об ошибке. +// +// Параметры: +// ОписаниеПроверки - Строка - Описание конкретной проверки +// ТекстПроверяемоеЗначение - Строка - Человекочитаемое описание проверяемого значения +// ПредставлениеПроверяемогоЗначения - Неопределено - Представление проверяемого значения +// +// Возвращаемое значение: +// Структура - Параметры сообщений об ошибке: +// * ОписаниеПроверки - Неопределено, Строка - Описание конкретной проверки +// * ТекстПроверяемоеЗначение - Неопределено, Строка - Человекочитаемое описание проверяемого значения +// * ПредставлениеПроверяемогоЗначения - Неопределено, Строка - +Функция ПараметрыСообщенийОбОшибке(ОписаниеПроверки = Неопределено, + ТекстПроверяемоеЗначение = "проверяемое значение", + ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт + + Возврат Новый Структура("ОписаниеПроверки, ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения", + ОписаниеПроверки, + ТекстПроверяемоеЗначение, + ПредставлениеПроверяемогоЗначения); + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -257,26 +288,25 @@ КонецПроцедуры -// Параметры сообщений об ошибке. -// -// Параметры: -// ОписаниеПроверки - Строка - Описание конкретной проверки -// ТекстПроверяемоеЗначение - Строка - Человекочитаемое описание проверяемого значения -// ПредставлениеПроверяемогоЗначения - Неопределено - Представление проверяемого значения -// -// Возвращаемое значение: -// Структура - Параметры сообщений об ошибке: -// * ОписаниеПроверки - Неопределено, Строка - Описание конкретной проверки -// * ТекстПроверяемоеЗначение - Неопределено, Строка - Человекочитаемое описание проверяемого значения -// * ПредставлениеПроверяемогоЗначения - Неопределено, Строка - -Функция ПараметрыСообщенийОбОшибке(ОписаниеПроверки = Неопределено, - ТекстПроверяемоеЗначение = "проверяемое значение", - ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт +Функция ЭтоПредикатОбщийМодуль(ТипПредикатов, Предикаты) - Возврат Новый Структура("ОписаниеПроверки, ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения", - ОписаниеПроверки, - ТекстПроверяемоеЗначение, - ПредставлениеПроверяемогоЗначения); + Возврат ТипПредикатов = Тип("ОбщийМодуль") + И Предикаты = ЮТПредикаты; + +КонецФункции + +Функция ЭтоПредикатМассив(ТипПредикатов, Предикаты) + + Возврат ТипПредикатов = Тип("Массив") + И Предикаты.Количество() + И ЭтоПредикатСтруктура(ТипЗнч(Предикаты[0]), Предикаты[0]); + +КонецФункции + +Функция ЭтоПредикатСтруктура(ТипПредикатов, Предикаты) + + Возврат ТипПредикатов = Тип("Структура") + И ЮТОбщий.ТипСтруктуры(Предикаты) = "Предикат"; КонецФункции diff --git a/tests/src/CommonModules/ОМ_ЮТПредикатыКлиентСервер/Module.bsl b/tests/src/CommonModules/ОМ_ЮТПредикатыКлиентСервер/Module.bsl index 77e9fa43..8400530e 100644 --- a/tests/src/CommonModules/ОМ_ЮТПредикатыКлиентСервер/Module.bsl +++ b/tests/src/CommonModules/ОМ_ЮТПредикатыКлиентСервер/Module.bsl @@ -26,6 +26,7 @@ ЮТТесты .ДобавитьТест("ПроверитьПредикаты") + .ДобавитьТест("ЭтоПредикат") .ДобавитьТест("СообщенияОбОшибках") ; @@ -38,6 +39,25 @@ КонецПроцедуры +Процедура ЭтоПредикат() Экспорт + + СтруктураПредикат = ЮтФабрика.ВыражениеПредиката(ЮТПредикаты.Выражения().Равно); + ЮТОбщий.УказатьТипСтруктуры(СтруктураПредикат, "Предикат"); + + Варианты = ЮТест.Варианты("Предикаты, ОжидаемоеЗначение") + .Добавить(ЮТПредикаты, Истина) + .Добавить(Мокито.МассивПараметров(СтруктураПредикат), Истина) + .Добавить(СтруктураПредикат, Истина) + .Добавить(Мокито.МассивПараметров(Новый Структура), Ложь) + .Добавить(Мокито.МассивПараметров(Новый Структура("ЛюбойПараметр", 1)), Ложь) + .Добавить(Мокито.МассивПараметров(1, 2, 3), Ложь); + + Для Каждого Вариант Из Варианты.СписокВариантов() Цикл + ЮТест.ОжидаетЧто(ЮТПредикатыКлиентСервер.ЭтоПредикат(Вариант.Предикаты)).Равно(Вариант.ОжидаемоеЗначение); + КонецЦикла; + +КонецПроцедуры + Процедура СообщенияОбОшибках() Экспорт Объект = Новый Структура("Число, Пусто, Строка", 3, Неопределено, "123");