From 64dbd04426be87ef3c8fd2e30bae3f590a0c7df8 Mon Sep 17 00:00:00 2001 From: Khorevaa Date: Wed, 6 Jun 2018 20:49:24 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20?= =?UTF-8?q?=D1=81=20=D0=BF=D1=80=D0=BE=D0=B8=D0=B7=D0=B2=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=BC=D0=B8=20=D0=BF=D0=BE=D0=BB=D1=8F=D0=BC=D0=B8?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\265\321\202\321\200\320\276\320\262.os" | 9 ++++ ...20\265\321\202\321\200\320\276\320\262.os" | 25 +++++++++-- ...0\320\276\320\271\320\272\320\270_test.os" | 41 ++++++++++++++++++- 3 files changed, 70 insertions(+), 5 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\273\320\265\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\273\320\265\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index 7504943..1ef1fbe 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\273\320\265\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\273\320\265\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -249,4 +249,13 @@ КонецФункции +// Устанавливает признак содержания произвольных полей конструктора параметров +// +// Возвращаемое значение: +// Объект.КонструкторПараметров - ссылка на текущий элемент класса <КонструкторПараметров> +// +Функция ПроизвольныеПоля() Экспорт + Возврат РодительКонструктор.ПроизвольныеПоля(); +КонецФункции + #КонецОбласти \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index 883ed86..61440fe 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -4,7 +4,7 @@ Перем Лог; -Перем Настройки; // Структура +Перем Настройки; // Соответствие Перем НаименованиеПараметров; // Строка Перем СинонимыПараметров; // Массив строка Перем ИндексПолей; // Соответствие ключа и типа элемента массива @@ -12,6 +12,7 @@ Перем ИндексПараметров; // Соответствие текущий настроек Перем КонструкторИспользован; // Булево, признак использования объекта при чтении из соответсвтия Перем ИнтерфейсКонструктора; // Класс объект ИнтерфейсОбъекта +Перем МожетСодержатьПроизвольныеПоля; // Булево, признак возможность не указывать поля #Область Работа_с_конструктором_параметров @@ -124,6 +125,16 @@ КонецФункции +// Устанавливает признак содержания произвольных полей конструктора параметров +// +// Возвращаемое значение: +// Объект.КонструкторПараметров - ссылка на текущий элемент класса <КонструкторПараметров> +// +Функция ПроизвольныеПоля() Экспорт + МожетСодержатьПроизвольныеПоля = Истина; + Возврат ЭтотОбъект; +КонецФункции + #КонецОбласти #Область Работа_с_текущем_полем_настройки @@ -334,6 +345,10 @@ ИсходящаяСтруктура = Новый Структура; + Если МожетСодержатьПроизвольныеПоля Тогда + Возврат ВСоответствие(); + КонецЕсли; + Для каждого КлючЗначение Из Настройки Цикл Значение = КлючЗначение.Значение; @@ -577,8 +592,9 @@ ПолеПараметров = НайтиПолеВИндексеПолей(ИмяКлюча); - Если ПолеПараметров = Неопределено Тогда - Лог.Отладка("Не найдено поле <%1> в индексе", ИмяКлюча); + Если ПолеПараметров = Неопределено + И МожетСодержатьПроизвольныеПоля Тогда + ДобавитьВНастройкуЗначение(ИмяКлюча, Значение); Продолжить; КонецЕсли; @@ -724,7 +740,7 @@ Процедура ПриСозданииОбъекта(ВходящийИндексПараметров, Знач НовоеНаименованиеПараметров) НаименованиеПараметров = НовоеНаименованиеПараметров; - Настройки = Новый Структура; + Настройки = Новый Соответствие; ИндексПолей = Новый Соответствие; ИндексСинонимовПолей = Новый Соответствие; ИндексПараметров = ВходящийИндексПараметров; @@ -738,6 +754,7 @@ КонецЕсли; КонструкторИспользован = Ложь; + МожетСодержатьПроизвольныеПоля = Ложь; ИнтерфейсКонструктора = Новый ИнтерфейсОбъекта; ИнтерфейсКонструктора.ПроцедураИнтерфейса("ОписаниеПараметров", 1); diff --git "a/tests/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270_test.os" "b/tests/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270_test.os" index 527fdce..687d291 100644 --- "a/tests/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270_test.os" +++ "b/tests/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270_test.os" @@ -15,7 +15,7 @@ ИменаТестов.Добавить("ТестДолжен_ПроверитьЧтениеПараметровИзКонструктора"); ИменаТестов.Добавить("ТестДолжен_ПроверитьУдалениеПоляИзКонструктора"); - // ИменаТестов.Добавить("ТестДолжен_ПроверитьПоискИЧтениеФайлаПараметров"); + ИменаТестов.Добавить("ТестДолжен_ПроверитьЧтениеПроизвольныхПолейКонструтора"); // ИменаТестов.Добавить("ТестДолжен_ПроверитьПарсингОпций"); // ИменаТестов.Добавить("ТестДолжен_ПроверитьПарсингМассивовОпций"); @@ -121,6 +121,45 @@ КонецПроцедуры +Процедура ТестДолжен_ПроверитьЧтениеПроизвольныхПолейКонструтора() Экспорт + + СтруктураПараметров = Новый Соответствие(); + СтруктураПараметров.Вставить("--custom-feild", "ПроизвольноеПоле"); + СтруктураПараметров.Вставить("Поле", "ЗаданноеПоле"); + + ПарсерJSON = Новый ПарсерJSON; + ТекстФайлаПроверки = ПарсерJSON.ЗаписатьJSON(СтруктураПараметров); + + ТестовыйФайл = ПодготовитьТестовыйФайл(ТекстФайлаПроверки); + + ТестовоеИмя = "config"; + ТестовоеРасширение = ".json"; + + ПарсерJSON = Новый ПарсерJSON; + ТекстФайлаПроверки = ПарсерJSON.ЗаписатьJSON(СтруктураПараметров); + + ТестовыйФайл = ПодготовитьТестовыйФайл(ТекстФайлаПроверки); + + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); + КопироватьФайл(ТестовыйФайл, ОбъединитьПути(ВременныйКаталог, ТестовоеИмя + ТестовоеРасширение)); + + МенеджерПараметров = Новый МенеджерПараметров(); + Конструктор = МенеджерПараметров.КонструкторПараметров(); + Конструктор.ПолеСтрока("Поле") + .ПроизвольныеПоля(); + + МенеджерПараметров.АвтоНастройка(ТестовоеИмя); + НастройкаПоискаФайла = МенеджерПараметров.НастройкаПоискаФайла(); + НастройкаПоискаФайла.ДобавитьКаталогПоиска(ВременныйКаталог); + МенеджерПараметров.Прочитать(); + + ПроверитьРезультат(СтруктураПараметров["--custom-feild"], МенеджерПараметров.Параметр("--custom-feild")); + ПроверитьРезультат(СтруктураПараметров["Поле"], МенеджерПараметров.Параметр("Поле")); + + ВременныеФайлы.УдалитьФайл(ВременныйКаталог); + +КонецПроцедуры + Процедура ПроверитьРезультат(Значение1, Значение2) Утверждения.ПроверитьРавенство(Значение1, Значение2, "Результат должен совпадать с ожиданиями."); КонецПроцедуры From 36738ba4d77ec4db3c0b7a2bfc54f9d2ca72ad51 Mon Sep 17 00:00:00 2001 From: Khorevaa Date: Wed, 6 Jun 2018 20:54:39 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=BD=D0=BE=D0=B5=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=B8=D0=BD=D0=B4=D0=B5=D0=BA?= =?UTF-8?q?=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index 61440fe..a6c5908 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -594,7 +594,7 @@ Если ПолеПараметров = Неопределено И МожетСодержатьПроизвольныеПоля Тогда - ДобавитьВНастройкуЗначение(ИмяКлюча, Значение); + Настройки.Вставить(ИмяКлюча, Значение); Продолжить; КонецЕсли; From 8df87a144837bcbc7f0b375fa88ba2e4ad64c8df Mon Sep 17 00:00:00 2001 From: Khorevaa Date: Wed, 6 Jun 2018 21:02:28 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=BF=D1=80=D0=BE=D0=BF=D1=83=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B5=20=D0=BD=D0=B0=D0=B9=D0=B4=D0=B5=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...320\274\320\265\321\202\321\200\320\276\320\262.os" | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index a6c5908..67a6be8 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -592,10 +592,14 @@ ПолеПараметров = НайтиПолеВИндексеПолей(ИмяКлюча); - Если ПолеПараметров = Неопределено - И МожетСодержатьПроизвольныеПоля Тогда - Настройки.Вставить(ИмяКлюча, Значение); + Если ПолеПараметров = Неопределено Тогда + + Если МожетСодержатьПроизвольныеПоля Тогда + Настройки.Вставить(ИмяКлюча, Значение); + КонецЕсли; + Продолжить; + КонецЕсли; ЗначениеПараметра = ПреобразоватьЗначение(Значение, ПолеПараметров);