From 660f807d0c8418391acba2178262959716d40115 Mon Sep 17 00:00:00 2001 From: Lyubanevich Dmitri Date: Thu, 8 Jun 2023 16:45:19 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B8=D0=BA=D0=B0=D1=82=D0=B0=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BC=D0=B0=D1=81=D1=81=D0=B8=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ЮТПредикатыКлиентСервер/Module.bsl | 80 +++++++++++++------ 1 file changed, 55 insertions(+), 25 deletions(-) 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]); + +КонецФункции + +Функция ЭтоПредикатСтруктура(ТипПредикатов, Предикаты) + + Возврат ТипПредикатов = Тип("Структура") + И ЮТОбщий.ТипСтруктуры(Предикаты) = "Предикат"; КонецФункции From 96f10f7ea978f677a12187acb6a55c515a65591d Mon Sep 17 00:00:00 2001 From: Lyubanevich Dmitri Date: Thu, 8 Jun 2023 16:45:48 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=82=D0=B5=D1=81=D1=82=20=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD?= =?UTF-8?q?=D0=BA=D1=86=D0=B8=D1=8E=20"=D0=AE=D0=A2=D0=9F=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B8=D0=BA=D0=B0=D1=82=D1=8B=D0=9A=D0=BB=D0=B8=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=A1=D0=B5=D1=80=D0=B2=D0=B5=D1=80.=D0=AD=D1=82?= =?UTF-8?q?=D0=BE=D0=9F=D1=80=D0=B5=D0=B4=D0=B8=D0=BA=D0=B0=D1=82"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ОМ_ЮТПредикатыКлиентСервер/Module.bsl | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) 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");