Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ath31st/s21_decimal_starter
This starter includes basic arithmetic functions, test generator and s21_decimal values generator for a smooth start of a learning project.
https://github.com/ath31st/s21_decimal_starter
java maven s21-decimal
Last synced: 1 day ago
JSON representation
This starter includes basic arithmetic functions, test generator and s21_decimal values generator for a smooth start of a learning project.
- Host: GitHub
- URL: https://github.com/ath31st/s21_decimal_starter
- Owner: ath31st
- Created: 2024-01-23T16:08:24.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2024-05-09T12:34:08.000Z (6 months ago)
- Last Synced: 2024-05-09T14:05:17.424Z (6 months ago)
- Topics: java, maven, s21-decimal
- Language: Java
- Homepage:
- Size: 15.8 MB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# s21_decimal starter
![Java](https://img.shields.io/badge/Java-ED8B00?style=for-the-badge&logo=openjdk&logoColor=white)
![SonarLint](https://img.shields.io/badge/SonarLint-CB2029?style=for-the-badge&logo=sonarlint&logoColor=white)
![Apache Maven](https://img.shields.io/badge/Apache%20Maven-C71A36?style=for-the-badge&logo=Apache%20Maven&logoColor=white)## Версия Программы
Текущая версия программы: 0.9.1
## Предисловие
Наверное, каждому знакома ситуация, когда стартуешь проект s21_decimal, читаешь задание, смотришь
лекции на ютубе, пир-ту-пиришься с командой, и вот, обязанности, объем работ распределен между
участниками, осталось только "Вошли и вышли, приключение на 20 минут". И, почти сразу, сталкиваешься
с проблемой - под рукой нет значений-заготовок для написания первых частей функций. Онлайн
конвертеры помогают лишь частино, да еще и отнимают много времени...Данный стартер предназначен для того, чтобы облегчить тяжелый вход в нелегкий проект s21_decimal.
Пользуйтесь!PS. Но помните, пользуясь данным стартером, вы прославляете:
Нажмите, чтобы открыть спойлер
![image info](images/hb.png)
## Оглавление
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](images/example.gif)
## Как запустить
Вы можете скачать собранный бинарный
файл [здесь](https://github.com/ath31st/s21_decimal_starter/releases).
Для запуска необходима Java не ниже 11 версии и команда ```java -jar s21_decimal_starter*.jar``` в
папке с файлом. В наличии небольшая пасхалка, активируется ключом -hb (полная
команда ```java -jar s21_decimal_starter*.jar -hb```)Так же, вы можете собрать бинарный файл самостоятельно.
На linux вам понадобится Java не ниже 11 версии и вот эти команды:```bash
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](https://github.com/libcheck/check).
Генерировать тесты можно по каждой функции отдельно, так и по всем сразу, в единый файл. Генерация
тестов работает по следующему принципу - первые 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](https://www.apache.org/licenses/LICENSE-2.0)