Skip to content

Commit

Permalink
Добавлены тесты на ДобавитьЗавязь
Browse files Browse the repository at this point in the history
  • Loading branch information
sfaqer committed Mar 27, 2024
1 parent ab4092d commit 65a5d0f
Show file tree
Hide file tree
Showing 3 changed files with 156 additions and 3 deletions.
1 change: 1 addition & 0 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
.РазработкаЗависитОт("asserts")
.РазработкаЗависитОт("coverage")
.РазработкаЗависитОт("fs")
.РазработкаЗависитОт("decorator", "1.7.1")

.ОпределяетКласс("Поделка", "src/Классы/Поделка.os")
.ОпределяетКласс("Завязь", "src/Классы/Завязь.os")
Expand Down
8 changes: 5 additions & 3 deletions src/internal/Классы/ФабрикаЖелудей.os
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@
// Лог - Логгер ФабрикиЖелудей.
Перем Лог;

// Рефлектор - кеш инстанса рефлектора
Перем Рефлектор;

#КонецОбласти

#Область СлужебныйПрограммныйИнтерфейс
Expand Down Expand Up @@ -152,8 +155,6 @@

Объект = Выражение.ВОбъект();

Рефлектор = Новый Рефлектор();

Методы = Рефлектор.ПолучитьТаблицуМетодов(Объект);
Завязи = РаботаСАннотациями.НайтиМетодыСАннотацией(Методы, "Завязь");

Expand Down Expand Up @@ -256,7 +257,6 @@
Если Завязь.ЭтоКонструктор() Тогда
Желудь = Действие.Выполнить(ОпределениеЖелудя.ТипЖелудя(), ПередаваемыеПрилепляемыеЧастицы);
ИначеЕсли Не ЗначениеЗаполнено(Завязь.Родитель()) Тогда
Рефлектор = Новый Рефлектор();
Желудь = Рефлектор.ВызватьМетод(Действие, "Выполнить", ПередаваемыеПрилепляемыеЧастицы);
Иначе
Желудь = Действие.Выполнить(Поделка, Завязь.Родитель(), Завязь.ИмяМетода(), ПередаваемыеПрилепляемыеЧастицы);
Expand Down Expand Up @@ -741,6 +741,8 @@

Процедура ПриСозданииОбъекта(пПоделка, пРазворачивательАннотаций, пПрилепляторЧастиц)

Рефлектор = Новый Рефлектор();

Поделка = пПоделка;
РазворачивательАннотаций = пРазворачивательАннотаций;
ПрилепляторЧастиц = пПрилепляторЧастиц;
Expand Down
150 changes: 150 additions & 0 deletions tests/Поделка.os
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

#Использовать ".."
#Использовать asserts
#Использовать decorator
#Использовать "./ТестКлассы"
#Использовать "./ОдноименныеЖелуди"

Expand Down Expand Up @@ -938,3 +939,152 @@
.Равно(Неопределено);

КонецПроцедуры

&Тест
Процедура ДобавитьЗавязьБезТипа() Экспорт

// Дано
Поделка = Новый Поделка();

// Когда
ПараметрыМетода = Новый Массив();
ПараметрыМетода.Добавить("&Завязь ()-> Возврат 1;");

// Тогда
Ожидаем.Что(Поделка)
.Метод("ДобавитьЗавязь", ПараметрыМетода)
.ВыбрасываетИсключение("Тип желудя в Завязи Вызвать не известен");

КонецПроцедуры

&Тест
Процедура ДобавитьЗавязьБезЗавязи() Экспорт

// Дано
Поделка = Новый Поделка();

// Когда
ПараметрыМетода = Новый Массив();
ПараметрыМетода.Добавить("&НеЗавязь ()-> Возврат 1;");

// Тогда
Ожидаем.Что(Поделка)
.Метод("ДобавитьЗавязь", ПараметрыМетода)
.ВыбрасываетИсключение("Лямбда выражения не содержит завязи");

КонецПроцедуры

&Тест
Процедура ДобавитьЗавязьПримитивногоТипа() Экспорт

// Дано
Поделка = Новый Поделка();

// Когда
Поделка.ДобавитьЗавязь(
"&Завязь(""МоёЧисло"", Тип = ""Число"") () -> Возврат 42;"
);

Поделка.ЗапуститьПриложение();

// Тогда
Ожидаем.Что(Поделка.НайтиЖелудь("МоёЧисло"))
.Равно(42);

КонецПроцедуры

&Тест
Процедура ДобавитьЗавязьСложногоТипа() Экспорт

// Дано
Поделка = Новый Поделка();

// Когда
Поделка.ДобавитьЗавязь(
"&Завязь(""Множество"", Тип = ""МножествоСоответствие"") () -> {
| Результат = Новый МножествоСоответствие();
| Результат.Добавить(42);
| Возврат Результат;
|}"
);

Поделка.ЗапуститьПриложение();

// Тогда
Ожидаем.Что(Поделка.НайтиЖелудь("Множество"))
.ИмеетТип("МножествоСоответствие")
.ИмеетДлину(1);

КонецПроцедуры

&Тест
Процедура ДобавитьЗавязьСКонтекстом() Экспорт

// Дано

Поделка = Новый Поделка();

// Когда
Поделка.ДобавитьЗавязь(
"&Завязь(""ДобавитьКЧислу"", Тип = ""Число"") (&Блестяшка Число) -> Возврат Число + ЧислоВнутреннее;",
Новый Структура("ЧислоВнутреннее", 21)
);

Поделка.ЗапуститьПриложение();

// Тогда

Ожидаем.Что(Поделка.НайтиЖелудь("ДобавитьКЧислу", Список.ИзЭлементов(21).ВМассив()))
.Равно(42);

КонецПроцедуры

&Тест
Процедура ДобавитьЗавязьСЗахватом() Экспорт

// Дано

Поделка = Новый Поделка();

Объект = Новый ПостроительДекоратора
.Поле(Новый Поле("ЧислоВнутреннее").ЗначениеПоУмолчанию(10))
.Метод(Новый Метод("ЧислоВнутреннее").ТелоМетода("Возврат 11;").Публичный())
.Построить();

// Когда
Поделка.ДобавитьЗавязь(
"&Завязь(""ДобавитьКЧислу"", Тип = ""Число"") (&Блестяшка Число) -> Возврат Число + ЧислоВнутреннее + ЧислоВнутреннее();",
Объект
);

Поделка.ЗапуститьПриложение();

// Тогда

Ожидаем.Что(Поделка.НайтиЖелудь("ДобавитьКЧислу", Список.ИзЭлементов(21).ВМассив()))
.Равно(42);

КонецПроцедуры

&Тест
Процедура ЗавязьПластилинитДругуюЗавязь() Экспорт

// Дано
Поделка = Новый Поделка();

// Когда

Поделка.ДобавитьЗавязь("&Завязь(""Запластилиниваемая"", Тип = ""Строка"") () -> Возврат ""Привет""");
Поделка.ДобавитьЗавязь("
| &Завязь(""Припластилинивающая"", Тип = ""Строка"") (&Пластилин Запластилиниваемая) ->
| Возврат Запластилиниваемая + "" мир"""
);

Поделка.ЗапуститьПриложение();

// Тогда

Ожидаем.Что(Поделка.НайтиЖелудь("Припластилинивающая"))
.Равно("Привет мир");

КонецПроцедуры

0 comments on commit 65a5d0f

Please sign in to comment.