diff --git a/tests/annotation.os b/tests/annotation.os index 3f1de91..65f5f18 100644 --- a/tests/annotation.os +++ b/tests/annotation.os @@ -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].Аннотации)).Равно(Ложь); + +КонецПроцедуры + +// ТестДолжен_ПроверитьАннотациюПараметра() ; \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\236\320\261\321\212\320\265\320\272\321\202.os" "b/tests/fixtures/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\236\320\261\321\212\320\265\320\272\321\202.os" index e44839b..4e9baaf 100644 --- "a/tests/fixtures/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\236\320\261\321\212\320\265\320\272\321\202.os" +++ "b/tests/fixtures/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\236\320\261\321\212\320\265\320\272\321\202.os" @@ -39,3 +39,22 @@ Функция ПабликФункцияСАннотацией() Экспорт КонецФункции + +&АннотацияПабликФункции +Функция ПабликФункцияСАннотациейИПараметром(Параметр1) Экспорт + +КонецФункции + +&АннотацияПабликФункции +Функция ПабликФункцияСАннотациейПараметров( + &Аннотация1ДляПараметра1 + &Аннотация2ДляПараметра1 + Параметр1, + + &Аннотация1ДляПараметра2 + &Аннотация2ДляПараметра2 + Параметр2, + Параметр3 + ) Экспорт + +КонецФункции \ No newline at end of file diff --git "a/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\276\320\272.os" "b/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\276\320\272.os" index fee4ecc..62a7235 100644 --- "a/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\276\320\272.os" +++ "b/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\276\320\272.os" @@ -55,21 +55,37 @@ КонецЕсли; ШаблонАннотации = "&%1"; - ШаблонОписанияПараметра = "Парам%1 = Неопределено"; + ШаблонОписанияПараметра = "%1 Парам%2 = Неопределено"; ШаблонСтруктураПараметрыПроцедуры = Символы.Таб + "Мок_СтруктураПараметрыПроцедуры.Вставить(""Парам%1"", Парам%1);"; Для Каждого Метод Из Методы Цикл МассивСтрокаПараметров = Новый Массив; МассивСтрока_Мок_СтруктураПараметрыПроцедуры = Новый Массив; - Для сч = 1 По Метод.КоличествоПараметров Цикл - МассивСтрокаПараметров.Добавить(СтрШаблон(ШаблонОписанияПараметра, сч)); + сч = 1; + Для Каждого ПараметрМетода Из Метод.Параметры Цикл + сч = сч + 1; + + МассивАннотацийПараметраМетода = Новый Массив; + Если АннотацииПоддерживаются + И НЕ ПараметрМетода.Аннотации = Неопределено Тогда + МассивАннотацийПараметраМетода = ПараметрМетода.Аннотации.ВыгрузитьКолонку("Имя"); + КонецЕсли; + + ПараметрыМетодаСАмперсандом = Новый Массив; + Для Каждого АннотацияПараметра Из МассивАннотацийПараметраМетода Цикл + ПараметрыМетодаСАмперсандом.Добавить(СтрШаблон(ШаблонАннотации, АннотацияПараметра)); + КонецЦикла; + СтрокаАннотацийПараметров = СтрСоединить(ПараметрыМетодаСАмперсандом, Символы.ПС); + + МассивСтрокаПараметров.Добавить(СтрШаблон(ШаблонОписанияПараметра, СтрокаАннотацийПараметров, сч)); СтрокаПараметрыПроцедуры = СтрШаблон(ШаблонСтруктураПараметрыПроцедуры, сч); МассивСтрока_Мок_СтруктураПараметрыПроцедуры.Добавить(СтрокаПараметрыПроцедуры); КонецЦикла; + СтрокаПараметров = СтрСоединить(МассивСтрокаПараметров, ","); Строка_Мок_СтруктураПараметрыПроцедуры = СтрСоединить(МассивСтрока_Мок_СтруктураПараметрыПроцедуры, Символы.ПС); - + МассивАннотаций = Новый Массив; Если АннотацииПоддерживаются И НЕ Метод.Аннотации = Неопределено Тогда