1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-01-08 13:06:32 +02:00
Добавлена поддержка форматированных строк в утверждениях
Исправлена проверка наличия метода у объекта/модуля
This commit is contained in:
alkoleft 2023-12-09 03:14:46 +03:00
parent 6bae58d7e1
commit 55914faa23
4 changed files with 58 additions and 15 deletions

View File

@ -583,7 +583,7 @@
#КонецОбласти
// МетодМодуляСуществует
// Проверяет существование публичного (экспортного) метода у объекта
// Проверяет существование публичного (экспортного) метода у модуля
//
// Параметры:
// ИмяМодуля - Строка - Имя модуля, метод которого нужно поискать
@ -595,16 +595,42 @@
// Булево - Метод найден
Функция МетодМодуляСуществует(ИмяМодуля, ИмяМетода, КоличествоПараметров = 0, Кешировать = Истина) Экспорт
ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМодуля, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМодуля");
ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМетода, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМетода");
Если Кешировать Тогда
Возврат ЮТПовторногоИспользования.МетодМодуляСуществует(ИмяМодуля, ИмяМетода, КоличествоПараметров);
КонецЕсли;
Алгоритм = СтрШаблон("%1.%2(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)", ИмяМодуля, ИмяМетода);
ПолноеИмяМетода = СтрШаблон("%1.%2", ИмяМодуля, ИмяМетода);;
Алгоритм = ПолноеИмяМетода + "(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)";
Ошибка = ВыполнитьМетод(Алгоритм);
МетодСуществует = СтрНайти(НРег(Ошибка.Описание), "(" + НРег(ИмяМетода) + ")") = 0;
Возврат МетодСуществует;
ТипОшибки = ЮТРегистрацияОшибок.ТипОшибки(Ошибка, ПолноеИмяМетода);
Возврат ТипОшибки = ЮТФабрика.ТипыОшибок().МногоПараметров;
КонецФункции
// Проверяет существование публичного (экспортного) метода у объекта
//
// Параметры:
// Объект - Произвольный - Объект, метод которого нужно поискать
// ИмяМетода - Строка - Имя метода, который ищем
//
// Возвращаемое значение:
// Булево - Метод найден
Функция МетодОбъектаСуществует(Объект, ИмяМетода) Экспорт
ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМетода, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМетода");
ПолноеИмяМетода = СтрШаблон("Объект.%1", ИмяМетода);;
Алгоритм = ПолноеИмяМетода + "(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)";
Ошибка = ВыполнитьМетод(Алгоритм);
ТипОшибки = ЮТРегистрацияОшибок.ТипОшибки(Ошибка, ПолноеИмяМетода);
Возврат ТипОшибки = ЮТФабрика.ТипыОшибок().МногоПараметров;
КонецФункции

View File

@ -408,7 +408,7 @@
ТипПроверяемогоЗначения = ТипЗнч(ПроверяемоеЗначение);
Если ТипПроверяемогоЗначения = Тип("Строка") Тогда
Если ТипПроверяемогоЗначения = Тип("Строка") ИЛИ ТипПроверяемогоЗначения = Тип("ФорматированнаяСтрока") Тогда
ФактическаяДлина = СтрДлина(ПроверяемоеЗначение);
@ -428,14 +428,10 @@
Функция СоответствуетШаблону(ПроверяемаяСтрока, РегулярноеВыражение)
Если ТипЗнч(ПроверяемаяСтрока) <> Тип("Строка") Тогда
Возврат Неопределено;
КонецЕсли;
РегулярныеВыражения = ЮТКомпоненты.РегулярныеВыражения();
Попытка
Результат = РегулярныеВыражения.Совпадает(ПроверяемаяСтрока, РегулярноеВыражение);
Результат = РегулярныеВыражения.Совпадает(Строка(ПроверяемаяСтрока), РегулярноеВыражение);
Исключение
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Ошибка проверки строки по шаблону " + РегулярноеВыражение);
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки(РегулярныеВыражения.ОписаниеОшибки);
@ -450,7 +446,7 @@
ТипПроверяемогоЗначения = ТипЗнч(ПроверяемоеЗначение);
Если ТипПроверяемогоЗначения = Тип("Строка") Тогда
Если ТипПроверяемогоЗначения = Тип("Строка") Или ТипПроверяемогоЗначения = Тип("ФорматированнаяСтрока") Тогда
ИскомоеЗначениеНайдено = СтрНайти(ПроверяемоеЗначение, ОжидаемоеЗначение) > 0;
@ -475,7 +471,7 @@
ИскомоеЗначениеНайдено = ПроверяемоеЗначение.НайтиПоЗначению(ОжидаемоеЗначение) <> Неопределено;
ИначеЕсли ПроверяемоеЗначение <> Неопределено И ЮТОбщий.МетодМодуляСуществует(ПроверяемоеЗначение, "Найти", , Ложь) Тогда
ИначеЕсли ПроверяемоеЗначение <> Неопределено И ЮТОбщий.МетодОбъектаСуществует(ПроверяемоеЗначение, "Найти") Тогда
ИскомоеЗначениеНайдено = ПроверяемоеЗначение.Найти(ОжидаемоеЗначение) <> Неопределено;
@ -737,7 +733,10 @@
Функция ПроверитьСоответствуетШаблону(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки)
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, "Строка") Тогда
ТипыПараметровСоответствуют = ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, "Строка")
И ПроверитьТипЗначения(РезультатПроверки, ПроверяемоеЗначение, "Строка, ФорматированнаяСтрока", "проверяемого значения");
Если Не ТипыПараметровСоответствуют Тогда
Возврат Неопределено;
КонецЕсли;

View File

@ -875,7 +875,7 @@
Контекст = Контекст();
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка", "проверяемого значения");
ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка, ФорматированнаяСтрока", "проверяемого значения");
ПроверитьТипЗначения(Контекст, СтрокаПоиска, "Строка", "ожидаемого значения");
ПроверитьЗаполненностьЗначения(Контекст, СтрокаПоиска, "ожидаемое значение");
@ -905,7 +905,7 @@
Контекст = Контекст();
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка", "проверяемого значения");
ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка, ФорматированнаяСтрока", "проверяемого значения");
ПроверитьТипЗначения(Контекст, СтрокаПоиска, "Строка", "ожидаемого значения");
ПроверитьЗаполненностьЗначения(Контекст, СтрокаПоиска, "ожидаемое значение");

View File

@ -76,6 +76,7 @@
.ДобавитьТест("ЛюбойЭлементСоответствуетПредикату")
.ДобавитьТест("СодержитПредикат")
.ДобавитьТест("НеСодержитПредикат")
.ДобавитьТест("ФорматированныеСтроки")
;
КонецПроцедуры
@ -2342,6 +2343,23 @@
КонецПроцедуры
Процедура ФорматированныеСтроки() Экспорт
Строка = Новый ФорматированнаяСтрока("Тестовая строка");
ЮТест.ОжидаетЧто(Строка)
.ИмеетТип("ФорматированнаяСтрока")
.ИмеетДлину(15)
.НачинаетсяС("Те")
.ЗаканчиваетсяНа("ка")
.Содержит("ова")
.НеСодержит("число")
.СодержитСтрокуПоШаблону("[\w\W]+")
.НеСодержитСтрокуПоШаблону("\d+")
;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции