mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-01-20 18:48:36 +02:00
parent
65486d65df
commit
132850b512
@ -99,28 +99,17 @@
|
||||
|
||||
Представления = Новый Массив();
|
||||
Предикаты = НаборПредикатов(Предикаты);
|
||||
ИмяРеквизита = Неопределено;
|
||||
Для Каждого Выражение Из Предикаты Цикл
|
||||
Представления.Добавить(ПредставлениеПредиката(Выражение, ШаблонСвойства));
|
||||
НеДобавлятьИмяРеквизита = ИмяРеквизита = Выражение.ИмяРеквизита;
|
||||
ИмяРеквизита = Выражение.ИмяРеквизита;
|
||||
Представления.Добавить(ПредставлениеПредиката(Выражение, ШаблонСвойства, НеДобавлятьИмяРеквизита));
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтрСоединить(Представления, Разделитель);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПредставлениеПредиката(ВыражениеПредиката, ШаблонСвойства) Экспорт
|
||||
|
||||
Если ВыражениеПредиката.ИмяРеквизита = Неопределено Тогда
|
||||
ПроверяемоеЗначение = "";
|
||||
Иначе
|
||||
ПроверяемоеЗначение = СтрШаблон(ШаблонСвойства, ВыражениеПредиката.ИмяРеквизита) + " ";
|
||||
КонецЕсли;
|
||||
|
||||
Выражение = СтрШаблон(ШаблонВыражения(ВыражениеПредиката.ВидСравнения), ВыражениеПредиката.Значение);
|
||||
|
||||
Возврат СтрШаблон("%1%2", ПроверяемоеЗначение, Выражение);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ШаблонВыражения(Знач Выражение) Экспорт
|
||||
|
||||
Отрицание = СтрНачинаетсяС(Выражение, "Не");
|
||||
@ -206,6 +195,20 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ПредставлениеПредиката(ВыражениеПредиката, ШаблонСвойства, НеДобавлятьИмяРеквизита)
|
||||
|
||||
Если НеДобавлятьИмяРеквизита ИЛИ ВыражениеПредиката.ИмяРеквизита = Неопределено Тогда
|
||||
ПроверяемоеЗначение = "";
|
||||
Иначе
|
||||
ПроверяемоеЗначение = СтрШаблон(ШаблонСвойства, ВыражениеПредиката.ИмяРеквизита) + " ";
|
||||
КонецЕсли;
|
||||
|
||||
Выражение = СтрШаблон(ШаблонВыражения(ВыражениеПредиката.ВидСравнения), ВыражениеПредиката.Значение);
|
||||
|
||||
Возврат СтрШаблон("%1%2", ПроверяемоеЗначение, Выражение);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоПредикатОбщийМодуль(ТипПредикатов, Предикаты)
|
||||
|
||||
Возврат ТипПредикатов = Тип("ОбщийМодуль") И Предикаты = ЮТПредикаты;
|
||||
|
@ -578,18 +578,25 @@
|
||||
// - ФиксированныйМассив - по наличию равного значения
|
||||
// - ФиксированнаяСтруктура - по наличию равного значения
|
||||
// - ФиксированноеСоответствие - по наличию равного значения
|
||||
// - Произвольный итерируемый объект для проверки на соответствие предикату
|
||||
//
|
||||
// При сравнении также проверяется совпадение типов
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) содержит указанное значение
|
||||
// - см. ЮТест.Предикат - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция Содержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().Содержит, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
Если ЮТПредикатыКлиентСервер.ЭтоПредикат(ОжидаемоеЗначение) Тогда
|
||||
ПроверитьСодержаниеПредиката(ОжидаемоеЗначение, ОписаниеПроверки, Ложь);
|
||||
Иначе
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().Содержит, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -606,18 +613,25 @@
|
||||
// - ФиксированныйМассив - по отсутствию равного значения
|
||||
// - ФиксированнаяСтруктура - по отсутствию равного значения
|
||||
// - ФиксированноеСоответствие - по отсутствию равного значения
|
||||
// - Произвольный итерируемый объект для проверки на соответствие предикату
|
||||
//
|
||||
// При сравнении также проверяется совпадение типов
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) НЕ содержит указанное
|
||||
// - см. ЮТест.Предикат - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеСодержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().НеСодержит, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
Если ЮТПредикатыКлиентСервер.ЭтоПредикат(ОжидаемоеЗначение) Тогда
|
||||
ПроверитьСодержаниеПредиката(ОжидаемоеЗначение, ОписаниеПроверки, Истина);
|
||||
Иначе
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().НеСодержит, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -1836,15 +1850,51 @@
|
||||
Иначе
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(Сообщение);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
ВызватьИсключение "Провальный результат проверки не содержит сообщения";
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
Процедура ПроверитьСодержаниеПредиката(Предикат, ОписаниеПроверки, Реверс)
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
|
||||
ПараметрыСообщенийОбОшибке = ПараметрыСообщенийОбОшибке(ПроверяемоеЗначение, ОписаниеПроверки);
|
||||
|
||||
Успешно = Ложь;
|
||||
|
||||
Для Каждого Элемент Из ПроверяемоеЗначение Цикл
|
||||
|
||||
РезультатПроверки = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Элемент, Предикат, ПараметрыСообщенийОбОшибке);
|
||||
Если РезультатПроверки.Успешно Тогда
|
||||
Успешно = Истина;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если Реверс Тогда
|
||||
Успешно = НЕ Успешно;
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ Успешно Тогда
|
||||
Сообщение = "содержит элемент, значение которого " + ЮТПредикатыКлиентСервер.ПредставлениеПредикатов(Предикат, " и ");
|
||||
|
||||
Если Реверс Тогда
|
||||
Сообщение = "не " + Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -74,6 +74,8 @@
|
||||
.ДобавитьТест("СоответствуетПредикату")
|
||||
.ДобавитьТест("КаждыйЭлементСоответствуетПредикату")
|
||||
.ДобавитьТест("ЛюбойЭлементСоответствуетПредикату")
|
||||
.ДобавитьТест("СодержитПредикат")
|
||||
.ДобавитьТест("НеСодержитПредикат")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -2299,10 +2301,61 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СодержитПредикат() Экспорт
|
||||
|
||||
Структура = Новый Структура("Свойство, Свойство2", 1, 2);
|
||||
Коллекция = ЮТОбщий.ЗначениеВМассиве("1", 1, Структура);
|
||||
|
||||
ЮТест.ОжидаетЧто(Коллекция)
|
||||
.Содержит(ЮТест.Предикат().Равно(1), "Предикат из общего модуля")
|
||||
.Содержит(ЮТест.Предикат().Равно(1).Получить(), "Сохраненный предикат")
|
||||
.Содержит(ЮТест.Предикат().Реквизит("Свойство").Равно(1), "Проверка свойства")
|
||||
;
|
||||
|
||||
Ошибка = ОшибкаУтверждения(Коллекция, "Содержит", ЮТест.Предикат().Равно(2));
|
||||
ПроверитьОшибкуУтверждения(Ошибка, "проверяемое значение `Массив` содержит элемент, значение которого равно `2`");
|
||||
|
||||
Ошибка = ОшибкаУтверждения(Коллекция, "Содержит", ЮТест.Предикат().Реквизит("Свойство").Равно(2));
|
||||
ПроверитьОшибкуУтверждения(Ошибка, "элемент, значение которого содержит свойство `Свойство`, которое равно `2`");
|
||||
|
||||
Ошибка = ОшибкаУтверждения(Коллекция, "Содержит", ЮТест.Предикат().Реквизит("Свойство").Равно(1).ИмеетТип("Строка"));
|
||||
ПроверитьОшибкуУтверждения(Ошибка, "элемент, значение которого содержит свойство `Свойство`, которое равно `1` и имеет тип `Строка`");
|
||||
|
||||
ЮТест.ОжидаетЧто(Структура)
|
||||
.Содержит(ЮТест.Предикат().Реквизит("Ключ").Равно("Свойство2"), "Проверка структуры");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура НеСодержитПредикат() Экспорт
|
||||
|
||||
Структура = Новый Структура("Свойство, Свойство2", 1, 2);
|
||||
Коллекция = ЮТОбщий.ЗначениеВМассиве("1", 1, Структура);
|
||||
|
||||
ЮТест.ОжидаетЧто(Коллекция)
|
||||
.НеСодержит(ЮТест.Предикат().Равно(2), "Предикат из общего модуля")
|
||||
.НеСодержит(ЮТест.Предикат().Равно(2).Получить(), "Сохраненный предикат")
|
||||
.НеСодержит(ЮТест.Предикат().Реквизит("Свойство").Равно(2), "Проверка свойства")
|
||||
;
|
||||
|
||||
Ошибка = ОшибкаУтверждения(Коллекция, "НеСодержит", ЮТест.Предикат().Равно(1));
|
||||
ПроверитьОшибкуУтверждения(Ошибка, "проверяемое значение `Массив` не содержит элемент, значение которого равно `1`");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ОшибкаУтверждения(ПроверяемоеЗначение, Утверждение, Параметр)
|
||||
|
||||
Параметры = ЮТОбщий.ЗначениеВМассиве(Параметр);
|
||||
|
||||
ЮТест.ОжидаетЧто(ПроверяемоеЗначение);
|
||||
Ошибка = ЮТОбщий.ВыполнитьМетод("ЮТУтверждения." + Утверждение, Параметры);
|
||||
Возврат Ошибка;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПроверитьОшибкуУтверждения(ИнформацияОбОшибке, ОжидаемоеОписание)
|
||||
|
||||
Если ИнформацияОбОшибке = Неопределено Тогда
|
||||
|
Loading…
x
Reference in New Issue
Block a user