1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2024-12-09 08:55:53 +02:00
Рефакторинг предикатов
This commit is contained in:
alkoleft 2023-09-10 00:02:51 +03:00
parent 41ca425d53
commit a3add5b9f7
2 changed files with 94 additions and 65 deletions

View File

@ -241,29 +241,33 @@
ВидСравненияВыражения = Выражение.ВидСравнения;
КонецЕсли;
Результат = Неопределено;
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
Если ВидСравненияВыражения = ВидыСравнения.Равно Тогда
ЮТСравнениеКлиентСервер.ПроверитьРавенствоЗначений(СтатусПроверки, ПараметрыПроверки, ПараметрыСравнения);
Результат = ЮТСравнениеКлиентСервер.ЗначенияРавны(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, ПараметрыСравнения);
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Заполнено Тогда
ЮТСравнениеКлиентСервер.ПроверитьЗаполненность(СтатусПроверки, ПараметрыПроверки);
Результат = ЗначениеЗаполнено(ПроверяемоеЗначение)
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Больше Тогда
ЮТСравнениеКлиентСервер.ПроверитьНеравенство(СтатусПроверки, ПараметрыПроверки, Истина);
Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, Истина);
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.БольшеРавно Тогда
ЮТСравнениеКлиентСервер.ПроверитьНеравенство(СтатусПроверки, ПараметрыПроверки, Истина, , Истина);
Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, Истина, , Истина);
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Меньше Тогда
ЮТСравнениеКлиентСервер.ПроверитьНеравенство(СтатусПроверки, ПараметрыПроверки, , Истина);
Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, , Истина);
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.МеньшеРавно Тогда
ЮТСравнениеКлиентСервер.ПроверитьНеравенство(СтатусПроверки, ПараметрыПроверки, , Истина, Истина);
Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, , Истина, Истина);
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетТип Тогда
@ -292,6 +296,16 @@
КонецЕсли;
// BSLLS:CognitiveComplexity-on
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если ПараметрыПроверки.Реверс Тогда
Результат = НЕ Результат;
КонецЕсли;
ОбработатьРезультатСравнения(Результат, СтатусПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
КонецПроцедуры
Функция ЭтоПредикатОбщийМодуль(ТипПредикатов, Предикаты)
@ -314,4 +328,42 @@
КонецФункции
Процедура ОбработатьРезультатСравнения(Результат, РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение)
Если Результат Тогда
Возврат;
КонецЕсли;
ШаблонСообщения = ШаблонВыражения(ПараметрыПроверки.ВидСравнения);
Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение);
ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки);
ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки,
ТекстОшибки,
ФактическоеЗначение,
ПараметрыПроверки.ОжидаемоеЗначение);
КонецПроцедуры
// Параметры проверки.
//
// Параметры:
// ПараметрыПроверки - см. ПараметрыПроверки
//
// Возвращаемое значение:
// Произвольный
Функция ПроверяемоеЗначение(ПараметрыПроверки)
Если ПараметрыПроверки.ОбъектПроверки.ИмяСвойства <> Неопределено Тогда
Значение = ЮТСравнениеКлиентСервер.ЗначениеСвойства(ПараметрыПроверки.ОбъектПроверки.Значение, ПараметрыПроверки.ОбъектПроверки.ИмяСвойства);
Иначе
Значение = ПараметрыПроверки.ОбъектПроверки.Значение;
КонецЕсли;
Возврат Значение;
КонецФункции
#КонецОбласти

View File

@ -92,48 +92,25 @@
КонецФункции
// Проверить равенство значений.
//
// Параметры:
// РезультатПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки
// ПараметрыПроверки - см. ПараметрыПроверки
// ПараметрыСравнения - Структура - Параметры проверки:
// * ГлубокийАнализ - Булево - Использовать сериализацию и прочие алгоритмы сравнения
Процедура ПроверитьРавенствоЗначений(РезультатПроверки, ПараметрыПроверки, ПараметрыСравнения) Экспорт
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
Результат = ЗначенияРавны(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, ПараметрыСравнения);
Реверс(Результат, ПараметрыПроверки);
Если НЕ Результат Тогда
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьНеравенство(РезультатПроверки, ПараметрыПроверки, Больше = Ложь, Меньше = Ложь, Равно = Ложь) Экспорт
Функция ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, Больше = Ложь, Меньше = Ложь, Равно = Ложь) Экспорт
Результат = Ложь;
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
Если Больше Тогда
Результат = ПроверяемоеЗначение > ПараметрыПроверки.ОжидаемоеЗначение;
Результат = ПроверяемоеЗначение > ОжидаемоеЗначение;
КонецЕсли;
Если Меньше Тогда
Результат = Результат ИЛИ ПроверяемоеЗначение < ПараметрыПроверки.ОжидаемоеЗначение;
Результат = Результат ИЛИ ПроверяемоеЗначение < ОжидаемоеЗначение;
КонецЕсли;
Если Равно Тогда
Результат = Результат ИЛИ ПроверяемоеЗначение = ПараметрыПроверки.ОжидаемоеЗначение;
Результат = Результат ИЛИ ПроверяемоеЗначение = ОжидаемоеЗначение;
КонецЕсли;
Если НЕ Результат Тогда
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
КонецЕсли;
Возврат Результат;
КонецПроцедуры
КонецФункции
Процедура ПроверитьТипПараметра(РезультатПроверки, ПараметрыПроверки) Экспорт
@ -305,6 +282,29 @@
КонецФункции
Функция ЗначениеСвойства(Объект, ИмяСвойства) Экспорт
Путь = ЧастиПути(ИмяСвойства);
Значение = Объект;
Для Каждого Часть Из Путь Цикл
Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
Значение = Значение.Получить();
КонецЕсли;
Если ТипЗнч(Часть) = Тип("Число") И Часть < 0 И ТипЗнч(Значение) <> Тип("Соответствие") Тогда
Часть = Значение.Количество() + Часть;
КонецЕсли;
Значение = Значение[Часть];
КонецЦикла;
Возврат Значение;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@ -545,29 +545,6 @@
КонецФункции
Функция ЗначениеСвойства(Объект, ИмяСвойства)
Путь = ЧастиПути(ИмяСвойства);
Значение = Объект;
Для Каждого Часть Из Путь Цикл
Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
Значение = Значение.Получить();
КонецЕсли;
Если ТипЗнч(Часть) = Тип("Число") И Часть < 0 И ТипЗнч(Значение) <> Тип("Соответствие") Тогда
Часть = Значение.Количество() + Часть;
КонецЕсли;
Значение = Значение[Часть];
КонецЦикла;
Возврат Значение;
КонецФункции
Процедура Реверс(Значение, ПараметрыПроверки)
Если ПараметрыПроверки.Реверс Тогда