Skip to content

Commit

Permalink
Finish 0.9.7
Browse files Browse the repository at this point in the history
  • Loading branch information
khorevaa committed Jan 26, 2018
2 parents 98c75eb + 58c3d2c commit 8c3953b
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 3 deletions.
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
//

Описание.Имя("cli")
.Версия("0.9.6")
.Версия("0.9.7")
.Автор("Khorev Aleksey")
.АдресАвтора("khorevaa@gmail.com")
.Описание("Данный пакет облегчает создание консольных приложений на Oscript")
Expand Down
6 changes: 5 additions & 1 deletion src/core/Классы/cmd/ПараметрКоманды.os
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@

ОпределенныйТип = ВстроенныеТипы[Строка(ТипЗначенияПоУмолчанию)];

ТипЗначенияПараметра = ?(ОпределенныйТип = Неопределено, Новый ТипСтрока, ОпределенныйТип);
ТипЗначенияПараметра = ?(ОпределенныйТип = Неопределено, Новый ТипСтрока, Новый (ОпределенныйТип));

УстановленаПользователем = Ложь;
УстановленаИзПеременнойОкружения = Ложь;
Expand Down Expand Up @@ -564,6 +564,10 @@

ВстроенныеТипы = Новый Соответствие;

ВстроенныеТипы.Вставить("Булево", Тип("ТипБулево"));
ВстроенныеТипы.Вставить("Число", Тип("ТипЧисло"));
ВстроенныеТипы.Вставить("Строка", Тип("ТипСтрока"));

ВстроенныеТипы.Вставить("ТипБулево", Тип("ТипБулево"));
ВстроенныеТипы.Вставить("ТипЧисло", Тип("ТипЧисло"));
ВстроенныеТипы.Вставить("ТипДатаВремя", Тип("ТипДатаВремя"));
Expand Down
64 changes: 63 additions & 1 deletion tests/КомандаПриложения_test.os
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
// ИменаТестов.Добавить("ТестДолжен_ПроверитьПолучениеЗначенияАргументаПоИмени");
// ИменаТестов.Добавить("ТестДолжен_ПроверитьПолучениеЗначенияОпцииПоИмени");

// ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуЗначенийОпций");
ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуЗначенийОпций");
// ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуМножественныхЗначенийОпций");
// ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуЗначенийАргументов");
// ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуМножественныхАргументовОпций");
Expand Down Expand Up @@ -79,6 +79,37 @@



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

Процедура ТестДолжен_ПроверитьУстановкуЗначенийОпций() Экспорт

Спек = "";
ИмяПроцедурыОбъекта = "КомандаПростыеОпции";

ТестовыеСлучаи = Новый Массив;

ТестовыеСлучаи.Добавить(ТестовыйСлучай("--bool", Спек, "Истина;;0"));
ТестовыеСлучаи.Добавить(ТестовыйСлучай("--string Строка", Спек, "Ложь;Строка;0"));
ТестовыеСлучаи.Добавить(ТестовыйСлучай("--int 42", Спек, "Ложь;;42"));
ТестовыеСлучаи.Добавить(ТестовыйСлучай("--string Строка --bool", Спек, "Истина;Строка;0"));
ТестовыеСлучаи.Добавить(ТестовыйСлучай("--int 42 --bool", Спек, "Истина;;42"));

Для каждого Тест Из ТестовыеСлучаи Цикл

Команда = ВыполнитьКомандаПриложения(Тест.Спек, ИмяПроцедурыОбъекта, Тест.Аргументы);

ЗначениеБулева = Команда.ЗначениеОпции("bool");
ЗначениеСтрока = Команда.ЗначениеОпции("string");
ЗначениеЧисло = Команда.ЗначениеОпции("int");

МассивРезультата = СтрРазделить(Тест.Результат, ";", Истина);

Утверждения.ПроверитьРавенство(ЗначениеБулева, Булево(МассивРезультата[0]), "Результаты должны совпадать" + СтрСоединить(Тест.Аргументы));
Утверждения.ПроверитьРавенство(ЗначениеСтрока, Строка(МассивРезультата[1]), "Результаты должны совпадать" + СтрСоединить(Тест.Аргументы));
Утверждения.ПроверитьРавенство(ЗначениеЧисло, Число(МассивРезультата[2]), "Результаты должны совпадать" + СтрСоединить(Тест.Аргументы));

КонецЦикла;

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

Функция АргументыИзСтроки(СтрокаАргументов)
Expand Down Expand Up @@ -123,6 +154,30 @@

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

Функция ВыполнитьКомандаПриложения(Спек, ИмяПроцедурыОбъекта, Аргументы)

Команда = Новый КомандаПриложения("test", "Тестовая команда", ЭтотОбъект);

ПараметрыВыполнения = Новый Массив;
ПараметрыВыполнения.Добавить(Команда);

ОписаниеКоманды = Делегаты.Создать(ЭтотОбъект, ИмяПроцедурыОбъекта);
ОписаниеКоманды.Исполнить(ПараметрыВыполнения);

Команда.Спек = Спек;

Команда.НачалоЗапуска();
Попытка
Команда.Запуск(Аргументы);
Исключение
Сообщить(ОписаниеОшибки());
Возврат Команда;
КонецПопытки;

Возврат Команда;

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

Процедура КомандаСкоростьРаботуКомандыПриложения(Знач ВыполняемаяКоманда) Экспорт

login = ВыполняемаяКоманда.Опция("login", "", "Login for credential, e.g. username or email.").ТСтрока();
Expand Down Expand Up @@ -150,6 +205,13 @@

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

Процедура КомандаПростыеОпции(Знач ВыполняемаяКоманда) Экспорт

ВыполняемаяКоманда.Опция("bool", Ложь, "Login for credential, e.g. username or email.");
ВыполняемаяКоманда.Опция("string", "", "Realm for credential, e.g. website or WiFi AP name.");
ВыполняемаяКоманда.Опция("int", 0, "Note for credential.");

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


Лог = Логирование.ПолучитьЛог("oscript.lib.cli_command");
Expand Down

0 comments on commit 8c3953b

Please sign in to comment.