Skip to content

Commit

Permalink
Аннотации Параметров nixel2007#22
Browse files Browse the repository at this point in the history
  • Loading branch information
asosnoviy committed Jun 28, 2018
1 parent 118d4ce commit ba35d8d
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 4 deletions.
35 changes: 35 additions & 0 deletions tests/annotation.os
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,38 @@
Ожидаем.Что(МокТаблицаМетодов[3].Аннотации[0].Имя).Равно(ИсходнаяТаблицаМетодов[3].Аннотации[0].Имя);

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

&Тест
Процедура ТестДолжен_ПроверитьАннотациюПараметра() Экспорт

ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures/Классы/ТестовыйОбъект.os"), "ТестовыйКласс");
МокируемыйОбъект = Новый ТестовыйКласс;

ИсходныйРефлектор = Новый Рефлектор;
ИсходнаяТаблицаМетодов = ИсходныйРефлектор.ПолучитьТаблицуМетодов(МокируемыйОбъект);

МокОбъекта = Мок.Получить(МокируемыйОбъект);
МокРефлектор = Новый Рефлектор;
МокТаблицаМетодов = ИсходныйРефлектор.ПолучитьТаблицуМетодов(МокОбъекта);


Ожидаем.Что(ЗначениеЗаполнено(ИсходнаяТаблицаМетодов[4].Параметры[0].Аннотации)).Равно(Ложь);

Ожидаем.Что(МокТаблицаМетодов[5].Параметры[0].Аннотации[0].Имя).Равно("Аннотация1ДляПараметра1");
Ожидаем.Что(ИсходнаяТаблицаМетодов[5].Параметры[0].Аннотации[0].Имя).Равно("Аннотация1ДляПараметра1");
Ожидаем.Что(ИсходнаяТаблицаМетодов[5].Параметры[0].Аннотации[0].Имя).Равно(МокТаблицаМетодов[5].Параметры[0].Аннотации[0].Имя);

Ожидаем.Что(ИсходнаяТаблицаМетодов[5].Параметры[0].Аннотации[1].Имя).Равно("Аннотация2ДляПараметра1");
Ожидаем.Что(ИсходнаяТаблицаМетодов[5].Параметры[0].Аннотации[1].Имя).Равно(МокТаблицаМетодов[5].Параметры[0].Аннотации[1].Имя);

Ожидаем.Что(ИсходнаяТаблицаМетодов[5].Параметры[1].Аннотации[0].Имя).Равно("Аннотация1ДляПараметра2");
Ожидаем.Что(ИсходнаяТаблицаМетодов[5].Параметры[1].Аннотации[0].Имя).Равно(МокТаблицаМетодов[5].Параметры[1].Аннотации[0].Имя);

Ожидаем.Что(ИсходнаяТаблицаМетодов[5].Параметры[1].Аннотации[1].Имя).Равно("Аннотация2ДляПараметра2");
Ожидаем.Что(ИсходнаяТаблицаМетодов[5].Параметры[1].Аннотации[1].Имя).Равно(МокТаблицаМетодов[5].Параметры[1].Аннотации[1].Имя);

Ожидаем.Что(ЗначениеЗаполнено(МокТаблицаМетодов[5].Параметры[2].Аннотации)).Равно(Ложь);

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

// ТестДолжен_ПроверитьАннотациюПараметра() ;
19 changes: 19 additions & 0 deletions tests/fixtures/Классы/ТестовыйОбъект.os
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,22 @@
Функция ПабликФункцияСАннотацией() Экспорт

КонецФункции

&АннотацияПабликФункции
Функция ПабликФункцияСАннотациейИПараметром(Параметр1) Экспорт

КонецФункции

&АннотацияПабликФункции
Функция ПабликФункцияСАннотациейПараметров(
&Аннотация1ДляПараметра1
&Аннотация2ДляПараметра1
Параметр1,

&Аннотация1ДляПараметра2
&Аннотация2ДляПараметра2
Параметр2,
Параметр3
) Экспорт

КонецФункции
24 changes: 20 additions & 4 deletions Модули/Мок.os
Original file line number Diff line number Diff line change
Expand Up @@ -55,21 +55,37 @@
КонецЕсли;

ШаблонАннотации = "&%1";
ШаблонОписанияПараметра = "Парам%1 = Неопределено";
ШаблонОписанияПараметра = "%1 Парам%2 = Неопределено";
ШаблонСтруктураПараметрыПроцедуры = Символы.Таб + "Мок_СтруктураПараметрыПроцедуры.Вставить(""Парам%1"", Парам%1);";

Для Каждого Метод Из Методы Цикл

МассивСтрокаПараметров = Новый Массив;
МассивСтрока_Мок_СтруктураПараметрыПроцедуры = Новый Массив;
Для сч = 1 По Метод.КоличествоПараметров Цикл
МассивСтрокаПараметров.Добавить(СтрШаблон(ШаблонОписанияПараметра, сч));
сч = 1;
Для Каждого ПараметрМетода Из Метод.Параметры Цикл
сч = сч + 1;

МассивАннотацийПараметраМетода = Новый Массив;
Если АннотацииПоддерживаются
И НЕ ПараметрМетода.Аннотации = Неопределено Тогда
МассивАннотацийПараметраМетода = ПараметрМетода.Аннотации.ВыгрузитьКолонку("Имя");
КонецЕсли;

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

МассивСтрокаПараметров.Добавить(СтрШаблон(ШаблонОписанияПараметра, СтрокаАннотацийПараметров, сч));
СтрокаПараметрыПроцедуры = СтрШаблон(ШаблонСтруктураПараметрыПроцедуры, сч);
МассивСтрока_Мок_СтруктураПараметрыПроцедуры.Добавить(СтрокаПараметрыПроцедуры);
КонецЦикла;

СтрокаПараметров = СтрСоединить(МассивСтрокаПараметров, ",");
Строка_Мок_СтруктураПараметрыПроцедуры = СтрСоединить(МассивСтрока_Мок_СтруктураПараметрыПроцедуры, Символы.ПС);

МассивАннотаций = Новый Массив;
Если АннотацииПоддерживаются
И НЕ Метод.Аннотации = Неопределено Тогда
Expand Down

0 comments on commit ba35d8d

Please sign in to comment.