Спроектировать и реализовать класс для парсинга аргументов командной строки.
В качестве требований Вам дается файл с тестами. Исходя из тестов, Вы должны понять, какой публичный интерфейс предоставляет парсер. Ваша задача добиться, чтобы все тесты "проходили".
Изначально парсер умеет обрабатывать только строки, целочисленные и булевы аргументы. Вам не запрещается добавить произвольные типы и расширить функционал.
Как и в предыдущих лабораторных работах, в качестве тестового фреймворка используется GoogleTest. Каждый тест представляет из себя функцию, в рамках которой проверяются некоторые условия за счет assert'ов. Предложенные Вам тесты используют только два различных assert'a:
- ASSERT_TRUE - проверяет, что выражение является истинным (в противном случае тест неуспешен)
- ASSERT_EQ - проверяет, что аргументы эквивалентны
Например, тест
TEST(ArgParserTestSuite, StringTest) {
ArgParser parser("My Parser");
parser.AddStringArgument("param1");
ASSERT_TRUE(parser.Parse(SplitString("app --param1=value1")));
ASSERT_EQ(parser.GetStringValue("param1"), "value1");
}Проверяет, что
- Вызов
parser.Parse(SplitString("app --param1=value1"))вернетtrue - Вызов
parser.GetStringValue("param1")вернет"value1"
Тесты не покрывают всю функциональность. Рекомендуется дополнить их собственными проверками.
Реализация должна находиться в библиотеке argparser. Изначально в библиотеке есть один класс, при необходимости добавляйте новые файлы, классы, функции и т.п. в библиотеку.
Пример программы с использованием парсера находится в bin. Программа умеет складывать или умножать переданные ей аргументы.
labwork4 --sum 1 2 3 4 5
labwork4 --mult 1 2 3 4 5
-
Выполнение работы подразумевает только базовые знания о классах. Не запрещается использовать шаблоны, виртуальные функции и т.д. Однако для этого надо хорошо понимать, как они работают, и быть готовыми к вопросам.
-
Данная лабораторная работа может быть переиспользована в следующих, в качестве библиотеки для работы с аргументами командной строки.
- 19.11.24 23:59 - 0.8
- 26.11.24 23:59 - 0.65
- 03.12.24 23:59 - 0.5