Skip to content

This starter includes basic arithmetic functions, test generator and s21_decimal values generator for a smooth start of a learning project.

Notifications You must be signed in to change notification settings

ath31st/s21_decimal_starter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

s21_decimal starter

Java SonarLint Apache Maven

Версия Программы

Текущая версия программы: 0.9.1

Предисловие

Наверное, каждому знакома ситуация, когда стартуешь проект s21_decimal, читаешь задание, смотришь лекции на ютубе, пир-ту-пиришься с командой, и вот, обязанности, объем работ распределен между участниками, осталось только "Вошли и вышли, приключение на 20 минут". И, почти сразу, сталкиваешься с проблемой - под рукой нет значений-заготовок для написания первых частей функций. Онлайн конвертеры помогают лишь частино, да еще и отнимают много времени...

Данный стартер предназначен для того, чтобы облегчить тяжелый вход в нелегкий проект s21_decimal. Пользуйтесь!

PS. Но помните, пользуясь данным стартером, вы прославляете:

Нажмите, чтобы открыть спойлер

image info

Оглавление

  1. Версия Программы
  2. Предисловие
  3. Список возможностей (меню)
  4. Пример работы
  5. Как запустить
  6. Пояснения к генератору тестов
  7. Рекомендации по использованию тестов в проекте
  8. В планах
  9. Список зависимостей (технологий и библиотек)
  10. Лицензия

Список возможностей (меню)

1. Сложение  - сложение двух десятичных чисел
2. Вычитание - вычитание двух десятичных чисел
3. Умножение - умножение двух десятичных чисел
4. Деление - деление двух десятичных чисел
5. Из десятичного в s21_decimal - перевод из десятичного вида в s21_decimal тип
6. Из s21_decimal в десятичное число - перевод из строкового s21_decimal в десятичное число
7. Генератор случайных s21_decimal - генерация выбранного количества s21_decimal значений
8. Генератор unit-тестов - генерация выбранного количества unit-тестов для выбранной функции
    1. s21_add
    2. s21_sub
    3. s21_mul
    4. s21_div
    5. Все функции сразу в один файл
9. Удаление папки и файлов с unit-тестами" - удаление сгенерированных файлов и папки, в которой они находились
0. Выход - заверщение работы программы.

Пример работы

Нажмите, чтобы открыть спойлер

image info

Как запустить

Вы можете скачать собранный бинарный файл здесь.
Для запуска необходима Java не ниже 11 версии и команда java -jar s21_decimal_starter*.jar в папке с файлом. В наличии небольшая пасхалка, активируется ключом -hb (полная команда java -jar s21_decimal_starter*.jar -hb)

Так же, вы можете собрать бинарный файл самостоятельно. На linux вам понадобится Java не ниже 11 версии и вот эти команды:

git clone https://github.com/ath31st/s21_decimal_starter
cd s21_decimal_starter
mvn clean package
cp target/*-jar-with-dependencies.jar s21_decimal_starter-$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec).jar
java -jar s21_decimal_starter*.jar

Пояснения к генератору тестов

Важное уточнение - данный генератор рассчитан на работу только с библиотекой check.h. Генерировать тесты можно по каждой функции отдельно, так и по всем сразу, в единый файл. Генерация тестов работает по следующему принципу - первые 16 тестов направлены на проверку корректности входных значений, подаваемых в аргументы основных функций. Затем идут тесты (указанного количества), которые должны успешно проходить. После них, в объеме 33% от указанного количества, создаются тесты, результаты которых превышают допустимые значения s21_decimal (как очень большие, так и очень малые величины). Сгенерированные тесты выводятся в консоль (за исключением общей генерации) и сохраняются в файлы с расширением .c (для вашего удобства). Адрес сохранения файлов указывается в консоли, после завершения генерации. Данные файлы вы можете переносить в собственные проекты, но не забудьте добавить в них #include с вашим заголовочным файлом, а так же, прописать функцию с возвращаемым типом данных Suite в исполняемый файл, который будет запускать тесты (там где у вас функция main).

Рекомендации по использованию тестов в проекте

Во время использования данного стартера в первую очередь опирайтесь на здравый смысл и собственнные ощущения. Этот стартер был протестирован на нескольких, успешно сданных, проектах и нигде тесты не прошли на 100% (результаты были около 90%). Если у вас что-то не проходит, то посмотрите внимательно на значения используемые в тесте, возможно, там получается что-то сложное, где надо сначала поднимать степень одного из значений, а потом еще и снижать степень второго, чтобы уровнять их и при этом не выйти за пределы s21_decimal. Такой тест вы можете проигнорировать и удалить его, нет смысла тратить десятки часов на идеальный результат. Тем более, у вертера нет таких сложных кейсов. Общие рекомендации такие - первые 16 тестов (проверка корректности используемых входных значений) должны проходить 100%, в остальном ориентируйтесь на 80%+.

В планах

  • Глобальный рефакторинг (выполнено 09.05.2024)
  • Улучшение читаемости консольного интерфейса
  • Генерация фейл-тестов (слишком большой/слишком малый результат) (добавлено в 0.8.11 31.01.2024)
  • Вывод сгенерированных тестов в файл (добавлено в 0.8.0 27.01.2024)
  • Покрытие проекта тестами (81%) (добавлено в 0.9.1 25.04.2024)
  • Покрытие проекта JavaDocs (добавлено в 0.8.15 15.02.2024)
  • Оптимизация генерации тестовых кейсов (добавлено в 0.8.13 04.02.2024)
  • Обратная конверсия из s21_decimal в десятичное число (добавлено в 0.9.0 25.02.2024)

Список зависимостей (технологий и библиотек)

  1. Java: 11
  2. Maven: 3.6.0
  3. Apache Commons Lang 3: 3.14.0
  4. Junit: 5.10.2
  5. Mockito: 5.11.0
  6. Log4j2: 2.23.1
  7. Jacoco: 0.8.11

Лицензия

Проект лицензирован по Apache 2.0 - см. LICENSE

About

This starter includes basic arithmetic functions, test generator and s21_decimal values generator for a smooth start of a learning project.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages