Giter VIP home page Giter VIP logo

s21_decimal_starter's Introduction

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

s21_decimal_starter's People

Contributors

ath31st avatar

Stargazers

 avatar Azamat Gaifullin avatar Nikita Kulya avatar  avatar Mikhail avatar  avatar  avatar

Watchers

 avatar Nikita Kulya avatar  avatar

s21_decimal_starter's Issues

hex?

Почему результат в hex, сложно же сказать правильно или нет у тебя глядя на hex или ожидается что мы напишем функцию принтующую в hex?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.