Skip to content

Commit

Permalink
Merge pull request #52 from autumn-library/bug/Repeatable-is-broken
Browse files Browse the repository at this point in the history
Тесты для &Повторяемый
  • Loading branch information
nixel2007 authored Apr 10, 2023
2 parents e6ee0ce + c7b378b commit f963cfc
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 6 deletions.
29 changes: 23 additions & 6 deletions src/Классы/ОпределениеАннотации.os
Original file line number Diff line number Diff line change
Expand Up @@ -114,12 +114,17 @@

ПараметрыКонструктора = Новый Массив;
Для Каждого Параметр Из Параметры() Цикл
ЗначениеПараметра = РаботаСАннотациями.ПолучитьЗначениеПараметраАннотации(
Аннотация,
Параметр.Имя,
Параметр.ЗначениеПоУмолчанию,
Истина
);

Если Параметр.Повторяемый Тогда
ЗначениеПараметра = РаботаСАннотациями.ПолучитьЗначенияПараметраАннотации(Аннотация, Параметр.Имя);
Иначе
ЗначениеПараметра = РаботаСАннотациями.ПолучитьЗначениеПараметраАннотации(
Аннотация,
Параметр.Имя,
Параметр.ЗначениеПоУмолчанию,
Истина
);
КонецЕсли;
ПараметрыКонструктора.Добавить(ЗначениеПараметра);
КонецЦикла;

Expand Down Expand Up @@ -227,6 +232,16 @@

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

Процедура ОпределитьПовторяемостьПараметров()

Параметры.Колонки.Добавить("Повторяемый");

Для Каждого Параметр Из Параметры Цикл
Параметр.Повторяемый = НЕ РаботаСАннотациями.НайтиАннотацию(Параметр.Аннотации, "повторяемый") = Неопределено;
КонецЦикла;

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

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

#Область Инициализация
Expand All @@ -237,6 +252,8 @@
ИмяТипаАннотации = _ИмяТипаАннотации;
Аннотации = _Аннотации;
Параметры = _Параметры;

ОпределитьПовторяемостьПараметров();

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

Expand Down
14 changes: 14 additions & 0 deletions src/Модули/РаботаСАннотациями.os
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,20 @@
Возврат Неопределено;
КонецФункции

Функция ПолучитьЗначенияПараметраАннотации(Аннотация, ИмяПараметра) Экспорт

ПараметрыАннотации = ПолучитьПараметрыАннотации(Аннотация, ИмяПараметра);
МассивПараметров = Новый Массив();

Если ПараметрыАннотации.Количество() > 0 Тогда
Для каждого ТекПараметр Из ПараметрыАннотации Цикл
МассивПараметров.Добавить(ТекПараметр.Значение);
КонецЦикла;
КонецЕсли;

Возврат МассивПараметров;
КонецФункции

Функция ПолучитьЗначениеПараметраАннотации(
Аннотация,
ИмяПараметра = "Значение",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Перем Элементы;

Процедура ПриРазворачиванииАннотации(ОпределениеАннотации, ПодчиненныеАннотации, ТипВладельцаСвойств, Свойство) Экспорт

Аннотация = РаботаСАннотациями.НайтиАннотацию(ПодчиненныеАннотации, "Пластилин");
Аннотация.Параметры[1].Значение = Элементы;

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

&Аннотация("КонструкторМассива")
&Пластилин(Значение = "КонструкторМассива", Блестяшка = "")
Процедура ПриСозданииОбъекта(Значение = "", &Повторяемый Элемент = Неопределено)
Элементы = Элемент;
КонецПроцедуры
10 changes: 10 additions & 0 deletions tests/Классы/ДубКонструктора.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
&Дуб
Процедура ПриСозданииОбъекта()

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

&Завязь(Тип = "Массив")
&Характер("Компанейский")
Функция КонструкторМассива(&Блестяшка Элементы) Экспорт
Возврат Элементы;
КонецФункции
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@

&КонструкторМассива(
Элемент = 1,
Элемент = "2"
)
Перем Массив Экспорт;

&Желудь
Процедура ПриСозданииОбъекта()

КонецПроцедуры
22 changes: 22 additions & 0 deletions tests/Поделка.os
Original file line number Diff line number Diff line change
Expand Up @@ -1014,4 +1014,26 @@
Ожидаем.Что(ТестовыйЖелудь, "Табакерка содержит нужный желудь")
.Равно(ТестовыйЖелудьИзПоделки);

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

&Тест
Процедура ЖелудьСАннотациейСПовторяемымиПараметрами() Экспорт
// Дано
Поделка = Новый Поделка();
Поделка
.ДобавитьАннотацию(Тип("АннотацияКонструкторМассива"))
.ДобавитьДуб(Тип("ДубКонструктора"))
.ДобавитьЖелудь(Тип("ЖелудьСКонструкторомМассива"))
.ЗапуститьПриложение();

// Когда
Желудь = Поделка.НайтиЖелудь("ЖелудьСКонструкторомМассива");


// Тогда
Ожидаем.Что(Желудь.Массив).ИмеетТип("Массив");
Ожидаем.Что(Желудь.Массив.Количество()).Равно(2);
Ожидаем.Что(Желудь.Массив[0]).Равно(1);
Ожидаем.Что(Желудь.Массив[1]).Равно("2");

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

0 comments on commit f963cfc

Please sign in to comment.