diff --git a/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl index 8318b42d..0718cb0d 100644 --- a/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl @@ -40,7 +40,7 @@ Предикаты = НаборПредикатов(Предикаты); Для Каждого Выражение Из Предикаты Цикл - ПроверитьВыражениеПредиката(Значение, Выражение, Результат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения); + ЮТСравнениеКлиентСервер.ПроверитьВыражениеПредиката(Значение, Выражение, Результат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения); Если НЕ Результат.Успешно Тогда Прервать; КонецЕсли; @@ -193,10 +193,12 @@ ТекстПроверяемоеЗначение = "проверяемое значение", ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт - Возврат Новый Структура("ОписаниеПроверки, ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения", - ОписаниеПроверки, - ТекстПроверяемоеЗначение, - ПредставлениеПроверяемогоЗначения); + Параметры = Новый Структура; + Параметры.Вставить("ОписаниеПроверки", ОписаниеПроверки); + Параметры.Вставить("ТекстПроверяемоеЗначение", ТекстПроверяемоеЗначение); + Параметры.Вставить("ПредставлениеПроверяемогоЗначения", ПредставлениеПроверяемогоЗначения); + + Возврат Параметры; КонецФункции @@ -204,110 +206,6 @@ #Область СлужебныеПроцедурыИФункции -Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения) - - Попытка - ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения); - Исключение - ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке()); - КонецПопытки; - -КонецПроцедуры - -// Вычислить выражение предиката. -// -// Параметры: -// Значение - Произвольный - Значение -// Выражение - см. ЮТФабрика.ВыражениеПредиката -// СтатусПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки -// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке -// ПараметрыСравнения - Неопределено -// - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры -Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения) - -// BSLLS:CognitiveComplexity-off - ВидыСравнения = ЮТПредикаты.Выражения(); - - ПараметрыПроверки = ЮТСравнениеКлиентСервер.ПараметрыПроверки(Выражение.ВидСравнения, Значение, Выражение.ИмяРеквизита, Выражение.Значение, Ложь); - - ПараметрыПроверки.ОписаниеПроверки = ПараметрыСообщенийОбОшибке.ОписаниеПроверки; - ПараметрыПроверки.ТекстПроверяемоеЗначение = ПараметрыСообщенийОбОшибке.ТекстПроверяемоеЗначение; - ПараметрыПроверки.ОбъектПроверки.Представление = ПараметрыСообщенийОбОшибке.ПредставлениеПроверяемогоЗначения; - - Если СтрНачинаетсяС(Выражение.ВидСравнения, "Не") И ВидыСравнения.Свойство(Сред(Выражение.ВидСравнения, 3)) Тогда - ПараметрыПроверки.Реверс = Истина; - ВидСравненияВыражения = Сред(Выражение.ВидСравнения, 3); - Иначе - ВидСравненияВыражения = Выражение.ВидСравнения; - КонецЕсли; - - Результат = Неопределено; - - ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки); - - Если ВидСравненияВыражения = ВидыСравнения.Равно Тогда - - Результат = ЮТСравнениеКлиентСервер.ЗначенияРавны(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, ПараметрыСравнения); - - ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Заполнено Тогда - - Результат = ЗначениеЗаполнено(ПроверяемоеЗначение) - - ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Больше Тогда - - Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, Истина); - - ИначеЕсли ВидСравненияВыражения = ВидыСравнения.БольшеРавно Тогда - - Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, Истина, , Истина); - - ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Меньше Тогда - - Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, , Истина); - - ИначеЕсли ВидСравненияВыражения = ВидыСравнения.МеньшеРавно Тогда - - Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, , Истина, Истина); - - ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетТип Тогда - - ЮТСравнениеКлиентСервер.ПроверитьТипПараметра(СтатусПроверки, ПараметрыПроверки); - - ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетСвойство Тогда - - ЮТСравнениеКлиентСервер.ПроверитьНаличиеСвойства(СтатусПроверки, ПараметрыПроверки); - - ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетДлину Тогда - - ЮТСравнениеКлиентСервер.ПроверитьДлину(СтатусПроверки, ПараметрыПроверки); - - ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Содержит Тогда - - ЮТСравнениеКлиентСервер.ПроверитьСодержит(СтатусПроверки, ПараметрыПроверки); - - ИначеЕсли ВидСравненияВыражения = ВидыСравнения.СодержитСтрокуПоШаблону Тогда - - ЮТСравнениеКлиентСервер.ПроверитьСоответствуетШаблону(СтатусПроверки, ПараметрыПроверки); - - Иначе - - ВызватьИсключение СтрШаблон("Неизвестное выражение предиката `%1`", Выражение.ВидСравнения); - - КонецЕсли; -// BSLLS:CognitiveComplexity-on - - Если Результат = Неопределено Тогда - Возврат; - КонецЕсли; - - Если ПараметрыПроверки.Реверс Тогда - Результат = НЕ Результат; - КонецЕсли; - - ОбработатьРезультатСравнения(Результат, СтатусПроверки, ПараметрыПроверки, ПроверяемоеЗначение); - -КонецПроцедуры - Функция ЭтоПредикатОбщийМодуль(ТипПредикатов, Предикаты) Возврат ТипПредикатов = Тип("ОбщийМодуль") И Предикаты = ЮТПредикаты; @@ -328,42 +226,4 @@ КонецФункции -Процедура ОбработатьРезультатСравнения(Результат, РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение) - - Если Результат Тогда - Возврат; - КонецЕсли; - - ШаблонСообщения = ШаблонВыражения(ПараметрыПроверки.ВидСравнения); - Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение); - - ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение); - ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки); - - ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки, - ТекстОшибки, - ФактическоеЗначение, - ПараметрыПроверки.ОжидаемоеЗначение); - -КонецПроцедуры - -// Параметры проверки. -// -// Параметры: -// ПараметрыПроверки - см. ПараметрыПроверки -// -// Возвращаемое значение: -// Произвольный -Функция ПроверяемоеЗначение(ПараметрыПроверки) - - Если ПараметрыПроверки.ОбъектПроверки.ИмяСвойства <> Неопределено Тогда - Значение = ЮТСравнениеКлиентСервер.ЗначениеСвойства(ПараметрыПроверки.ОбъектПроверки.Значение, ПараметрыПроверки.ОбъектПроверки.ИмяСвойства); - Иначе - Значение = ПараметрыПроверки.ОбъектПроверки.Значение; - КонецЕсли; - - Возврат Значение; - -КонецФункции - #КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТПроверкиСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТПроверкиСлужебный/Module.bsl index a2f4bf79..ad10454b 100644 --- a/exts/yaxunit/src/CommonModules/ЮТПроверкиСлужебный/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТПроверкиСлужебный/Module.bsl @@ -66,7 +66,7 @@ КонецФункции -#КонецОбласти + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git a/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl index d4a590ac..10cd7c22 100644 --- a/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl @@ -112,144 +112,6 @@ КонецФункции -Процедура ПроверитьТипПараметра(РезультатПроверки, ПараметрыПроверки) Экспорт - - Если НЕ ПроверитьТипЗначения(РезультатПроверки, ПараметрыПроверки.ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка")) Тогда - Возврат; - КонецЕсли; - - ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки); - - Результат = ЮТПроверкиСлужебный.ТипЗначенияСоответствует(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение); - - Реверс(Результат, ПараметрыПроверки); - - Если НЕ Результат Тогда - ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ТипЗнч(ПроверяемоеЗначение)); - КонецЕсли; - -КонецПроцедуры - -Процедура ПроверитьНаличиеСвойства(РезультатПроверки, ПараметрыПроверки) Экспорт - - ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки); - Значение = ПроверяемоеЗначение; - - ПутьКСвойству = ЧастиПути(ПараметрыПроверки.ОжидаемоеЗначение); - - ПройденныйПуть = Новый Массив(); - - Для Каждого Часть Из ПутьКСвойству Цикл - - ПройденныйПуть.Добавить(Часть); - - Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда - Значение = Значение.Получить(); - КонецЕсли; - - Попытка - ЕстьСвойство = ЗначениеИмеетСвойство(Значение, Часть); - Исключение - ЕстьСвойство = Ложь; - КонецПопытки; - - Если ЕстьСвойство Тогда - Значение = Значение[Часть]; - Иначе - Прервать; - КонецЕсли; - - КонецЦикла; - - Успешно = ЕстьСвойство; - Реверс(Успешно, ПараметрыПроверки); - Если НЕ Успешно Тогда - ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение); - КонецЕсли; - -КонецПроцедуры - -Процедура ПроверитьЗаполненность(РезультатПроверки, ПараметрыПроверки) Экспорт - - ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки); - Результат = ЗначениеЗаполнено(ПроверяемоеЗначение); - - Реверс(Результат, ПараметрыПроверки); - - Если НЕ Результат Тогда - ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение); - КонецЕсли; - -КонецПроцедуры - -Процедура ПроверитьДлину(РезультатПроверки, ПараметрыПроверки) Экспорт - - Если НЕ ПроверитьТипЗначения(РезультатПроверки, ПараметрыПроверки.ОжидаемоеЗначение, "Число") Тогда - Возврат; - КонецЕсли; - - ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки); - ФактическаяДлина = ДлинаЗначения(ПроверяемоеЗначение); - - Если ФактическаяДлина = Неопределено Тогда - ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); - ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); - Возврат; - КонецЕсли; - - Результат = ФактическаяДлина = ПараметрыПроверки.ОжидаемоеЗначение; - Реверс(Результат, ПараметрыПроверки); - - Если НЕ Результат Тогда - ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ФактическаяДлина); - КонецЕсли; - -КонецПроцедуры - -Процедура ПроверитьСодержит(РезультатПроверки, ПараметрыПроверки) Экспорт - - ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки); - - Результат = НайтиЗначение(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение); - - Если Результат = Неопределено Тогда - ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); - ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); - Возврат; - КонецЕсли; - - Реверс(Результат, ПараметрыПроверки); - - Если НЕ Результат Тогда - ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение); - КонецЕсли; - -КонецПроцедуры - -Процедура ПроверитьСоответствуетШаблону(РезультатПроверки, ПараметрыПроверки) Экспорт - - Если НЕ ПроверитьТипЗначения(РезультатПроверки, ПараметрыПроверки.ОжидаемоеЗначение, "Строка") Тогда - Возврат; - КонецЕсли; - - ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки); - СоответствуетШаблону = СоответствуетШаблону(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение); - - Если СоответствуетШаблону = Неопределено Тогда - ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); - ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); - Возврат; - КонецЕсли; - - Результат = СоответствуетШаблону; - Реверс(Результат, ПараметрыПроверки); - - Если НЕ Результат Тогда - ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение); - КонецЕсли; - -КонецПроцедуры - // Параметры проверки. // // Параметры: @@ -511,21 +373,6 @@ КонецФункции -Процедура ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение) - - ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения); - Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение); - - ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение); - ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки); - - ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки, - ТекстОшибки, - ФактическоеЗначение, - ПараметрыПроверки.ОжидаемоеЗначение); - -КонецПроцедуры - // Параметры проверки. // // Параметры: @@ -665,4 +512,229 @@ КонецФункции +#Область РеализацияПредикатор + +Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения) Экспорт + + Попытка + ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения); + Исключение + ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке()); + КонецПопытки; + +КонецПроцедуры + +// Вычислить выражение предиката. +// +// Параметры: +// Значение - Произвольный - Значение +// Выражение - см. ЮТФабрика.ВыражениеПредиката +// СтатусПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки +// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке +// ПараметрыСравнения - Неопределено +// - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры +Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения) + +// BSLLS:CognitiveComplexity-off + ВидыСравнения = ЮТПредикаты.Выражения(); + + ПараметрыПроверки = ПараметрыПроверки(Выражение.ВидСравнения, Значение, Выражение.ИмяРеквизита, Выражение.Значение, Ложь); + + ПараметрыПроверки.ОписаниеПроверки = ПараметрыСообщенийОбОшибке.ОписаниеПроверки; + ПараметрыПроверки.ТекстПроверяемоеЗначение = ПараметрыСообщенийОбОшибке.ТекстПроверяемоеЗначение; + ПараметрыПроверки.ОбъектПроверки.Представление = ПараметрыСообщенийОбОшибке.ПредставлениеПроверяемогоЗначения; + + Если СтрНачинаетсяС(Выражение.ВидСравнения, "Не") И ВидыСравнения.Свойство(Сред(Выражение.ВидСравнения, 3)) Тогда + ПараметрыПроверки.Реверс = Истина; + ВидСравненияВыражения = Сред(Выражение.ВидСравнения, 3); + Иначе + ВидСравненияВыражения = Выражение.ВидСравнения; + КонецЕсли; + + Результат = Неопределено; + + ОжидаемоеЗначение = Выражение.Значение; + ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки); + + Если ВидСравненияВыражения = ВидыСравнения.Равно Тогда + + Результат = ЗначенияРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); + + ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Заполнено Тогда + + Результат = ЗначениеЗаполнено(ПроверяемоеЗначение) + + ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Больше Тогда + + Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, Истина); + + ИначеЕсли ВидСравненияВыражения = ВидыСравнения.БольшеРавно Тогда + + Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, Истина, , Истина); + + ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Меньше Тогда + + Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, , Истина); + + ИначеЕсли ВидСравненияВыражения = ВидыСравнения.МеньшеРавно Тогда + + Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, , Истина, Истина); + + ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетТип Тогда + + ПроверитьТипПараметра(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки); + + ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетСвойство Тогда + + Результат = ПроверитьНаличиеСвойства(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение); + + ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетДлину Тогда + + Результат = ПроверитьДлину(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки); + + ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Содержит Тогда + + Результат = ПроверитьСодержит(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки); + + ИначеЕсли ВидСравненияВыражения = ВидыСравнения.СодержитСтрокуПоШаблону Тогда + + Результат = ПроверитьСоответствуетШаблону(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки); + + Иначе + + ВызватьИсключение СтрШаблон("Неизвестное выражение предиката `%1`", Выражение.ВидСравнения); + + КонецЕсли; +// BSLLS:CognitiveComplexity-on + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ПараметрыПроверки.Реверс Тогда + Результат = НЕ Результат; + КонецЕсли; + + ОбработатьРезультатСравнения(Результат, СтатусПроверки, ПараметрыПроверки, ПроверяемоеЗначение); + +КонецПроцедуры + +Процедура ОбработатьРезультатСравнения(Результат, РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение) + + Если Результат Тогда + Возврат; + КонецЕсли; + + ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения); + Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение); + + ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение); + ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки); + + ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки, + ТекстОшибки, + ФактическоеЗначение, + ПараметрыПроверки.ОжидаемоеЗначение); + +КонецПроцедуры + +Процедура ПроверитьТипПараметра(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки) + + Если НЕ ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка")) Тогда + Возврат; + КонецЕсли; + + Результат = ЮТПроверкиСлужебный.ТипЗначенияСоответствует(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение); + Если ПараметрыПроверки.Реверс Тогда + Результат = НЕ Результат; + КонецЕсли; + + ОбработатьРезультатСравнения(Результат, РезультатПроверки, ПараметрыПроверки, ТипЗнч(ПроверяемоеЗначение)); + +КонецПроцедуры + +Функция ПроверитьНаличиеСвойства(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение) + + Значение = ПроверяемоеЗначение; + + ПутьКСвойству = ЧастиПути(ОжидаемоеЗначение); + + ПройденныйПуть = Новый Массив(); + + Для Каждого Часть Из ПутьКСвойству Цикл + + ПройденныйПуть.Добавить(Часть); + + Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда + Значение = Значение.Получить(); + КонецЕсли; + + Попытка + ЕстьСвойство = ЗначениеИмеетСвойство(Значение, Часть); + Исключение + ЕстьСвойство = Ложь; + КонецПопытки; + + Если ЕстьСвойство Тогда + Значение = Значение[Часть]; + Иначе + Прервать; + КонецЕсли; + + КонецЦикла; + + Возврат ЕстьСвойство; + +КонецФункции + +Функция ПроверитьДлину(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки) + + Если НЕ ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, "Число") Тогда + Возврат Неопределено; + КонецЕсли; + + ФактическаяДлина = ДлинаЗначения(ПроверяемоеЗначение); + + Если ФактическаяДлина = Неопределено Тогда + ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); + ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); + Возврат Неопределено; + КонецЕсли; + + Возврат ФактическаяДлина = ПараметрыПроверки.ОжидаемоеЗначение; + +КонецФункции + +Функция ПроверитьСодержит(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки) + + Результат = НайтиЗначение(ПроверяемоеЗначение, ОжидаемоеЗначение); + + Если Результат = Неопределено Тогда + ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); + ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ПроверитьСоответствуетШаблону(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки) + + Если НЕ ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, "Строка") Тогда + Возврат Неопределено; + КонецЕсли; + + СоответствуетШаблону = СоответствуетШаблону(ПроверяемоеЗначение, ОжидаемоеЗначение); + + Если СоответствуетШаблону = Неопределено Тогда + ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); + ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); + КонецЕсли; + + Возврат СоответствуетШаблону; + +КонецФункции + +#КонецОбласти + #КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl index 5ab987a1..9358f374 100644 --- a/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl @@ -767,9 +767,7 @@ // ОбщийМодуль - Этот модуль для замыкания Функция НеИмеетДлину(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - Контекст = Контекст(); - УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - ПроверитьДлину(Контекст, ОжидаемоеЗначение, Истина); + ПроверитьПредикат(ЮТПредикаты.Выражения().НеИмеетДлину, ОжидаемоеЗначение, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции @@ -1628,18 +1626,6 @@ КонецФункции -Процедура ПроверитьДлину(Контекст, ОжидаемоеЗначение, Реверс) - - ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, "Число"); - - ФактическаяДлина = ДлинаПроверяемогоЗначения(Контекст); - Результат = ФактическаяДлина = ОжидаемоеЗначение; - - Сообщение = СтрШаблон("имеет длину (размер) `%1`", ОжидаемоеЗначение); - ОбработатьРезультатСравнения(Результат, Сообщение, Реверс, ФактическаяДлина, ОжидаемоеЗначение); - -КонецПроцедуры - Процедура ОбработатьРезультатСравнения(Знач Результат, Знач Сообщение, Реверс, ПроверяемоеЗначение, ОжидаемоеЗначение) Если Реверс Тогда @@ -1803,6 +1789,7 @@ ПараметрыСообщенийОбОшибке = ЮТПредикатыКлиентСервер.ПараметрыСообщенийОбОшибке(ПолноеОписаниеПроверки); Результат = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Контекст.ОбъектПроверки.Значение, Предикат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения); + ОбработатьРезультаПроверки(Результат); КонецПроцедуры