diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100755 index 0000000..7e9f305 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,17 @@ +name: GHA-frac-Release + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Install gtest manually + run: sudo apt-get install libgtest-dev && cd /usr/src/gtest && sudo cmake CMakeLists.txt && sudo make && ls -l lib && sudo cp lib/*.a /usr/lib && sudo ln -s /usr/lib/libgtest.a /usr/local/lib/libgtest.a && sudo ln -s /usr/lib/libgtest_main.a /usr/local/lib/libgtest_main.a + - uses: actions/checkout@v1 + - name: configure + run: mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-Werror" .. + - name: make + run: cd build && make + - name: Run Test + run: /home/runner/work/ST-1/ST-1/build/test/ST-1.test diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..6c9764f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required (VERSION 3.10.2) +project (ST-1) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -g") + + +set(tool_dest "bin") +set(lib_dest "lib") +set(include_dest "include/") + +add_subdirectory(src) +add_subdirectory(test) diff --git a/README.md b/README.md new file mode 100644 index 0000000..c24ec98 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +# ST-1 UNIT-тестирование с использованием Googletest (C++) (1) + + +![GitHub pull requests](https://img.shields.io/github/issues-pr/UNN-CS/ST-1) +![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/UNN-CS/ST-1) + +Срок выполнения задания: + + + + +## Задание + +> Написать прототип библиотеки для работы с простыми (prime) числами. + +**Состав проекта** + +```C++ + - bool checkPrime(uint64_t value) - проверка числа на простоту. + - uint64_t nPrime(uint64_t n) - нахождение n-ого простого числа (в ряду). + - uint64_t nextPrime(uint64_t value) - нахождение ближайшего следующего простого числа к value. + - uint64_t sumPrime(uint64_t hbound) - сумма всех чисел до hbound (не включая его) + ``` + + + +## Пояснение + +Требуется написать несколько функций на языках С/С++, выполняющих поставленные задачи и протестировать работу этих функций с помощью модульных тестов + +Функции должны иметь заданную сигнатуру и располагаться в файле **alg.cpp**: + + +```C++ +bool checkPrime(uint64_t value) { + +} +``` + +- **value** - проверяемое значение + +Функция возвращает **true**, если число **value** простое и **false** в противном случае. + + +```C++ +uint64_t nPrime(uint64_t n) { + +} +``` + +- **n** - n-ое число в ряду. Например, 2 - первое простое число, 3 - второе, 5 - третье... + +Функция возвращает найденное простое число. + +```C++ +uint64_t nextPrime(uint64_t value) { + +} +``` + +- **value** - исходное число, начиная с которого мы ищем ближайшее простое. Само **value** при поиске не учитывается. Например, для числа 4 следующим простым будет 5, а для 11 следующим простым будет 13. + +Функция возвращает найденное простое число. + +```C++ +uint64_t sumPrime(uint64_t hbound) { + +} +``` + +Функция находит сумму простых чисел до **hbound** (сама граница в сумму не включается) + +Функция возвращает сумму простых чисел. + +Функции должны располагаться в файле **src/alg.cpp**. diff --git a/include/README.md b/include/README.md new file mode 100644 index 0000000..88b139c --- /dev/null +++ b/include/README.md @@ -0,0 +1,4 @@ +# Здесь размещаются заголовочные файлы всех задач + + + diff --git a/include/alg.h b/include/alg.h new file mode 100644 index 0000000..82606e3 --- /dev/null +++ b/include/alg.h @@ -0,0 +1,11 @@ +// Copyright 2022 NNTU-CS +#ifndef INCLUDE_ALG_H_ +#define INCLUDE_ALG_H_ +#include + +bool checkPrime(uint64_t value); +uint64_t nPrime(uint64_t n); +uint64_t nextPrime(uint64_t value); +uint64_t sumPrime(uint64_t hbound); + +#endif // INCLUDE_ALG_H_ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100755 index 0000000..b912707 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,30 @@ +set(header_path "${${PROJECT_NAME}_SOURCE_DIR}/include") +set(header ${header_path}/alg.h) +set(src alg.cpp) + +add_library(${PROJECT_NAME} SHARED + ${header} + ${src}) + +target_include_directories(${PROJECT_NAME} + PUBLIC ${CMAKE_CURRENT_BINARY_DIR} + ${${PROJECT_NAME}_SOURCE_DIR}/include) +target_link_libraries(${PROJECT_NAME} + pthread) + +add_executable(${PROJECT_NAME}.info main.cpp) +target_include_directories(${PROJECT_NAME}.info + PUBLIC ${CMAKE_CURRENT_BINARY_DIR} + ${${PROJECT_NAME}_SOURCE_DIR}/include) +target_link_libraries(${PROJECT_NAME}.info + ${PROJECT_NAME}) + + +install(TARGETS ${PROJECT_NAME} + LIBRARY DESTINATION "${lib_dest}" + ARCHIVE DESTINATION "${lib_dest}" + COMPONENT library) +install(TARGETS ${PROJECT_NAME}.info + RUNTIME DESTINATION "${tool_dest}" + COMPONENT library) +install(FILES ${header} DESTINATION "${include_dest}") diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..05763f2 --- /dev/null +++ b/src/README.md @@ -0,0 +1,4 @@ +# Здесь размещаются исходные файлы всех задач + + + diff --git a/src/alg.cpp b/src/alg.cpp new file mode 100644 index 0000000..2c51c8d --- /dev/null +++ b/src/alg.cpp @@ -0,0 +1,20 @@ +// Copyright 2022 NNTU-CS +#include +#include "alg.h" + + +bool checkPrime(uint64_t value) { +// вставьте код функции +} + +uint64_t nPrime(uint64_t n) { +// вставьте код функции +} + +uint64_t nextPrime(uint64_t value) { +// вставьте код функции +} + +uint64_t sumPrime(uint64_t hbound) { +// вставьте код функции +} diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..824c7f0 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,6 @@ +// Copyright 2022 NNTU-CS +#include "alg.h" + +int main() { + return 0; +} diff --git a/test/AllTests.cpp b/test/AllTests.cpp new file mode 100755 index 0000000..ebdcb73 --- /dev/null +++ b/test/AllTests.cpp @@ -0,0 +1,8 @@ +// Copyright 2020 GHA Test Team + +#include + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100755 index 0000000..1bbc853 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,10 @@ +add_executable(${PROJECT_NAME}.test + AllTests.cpp + tests.cpp) +target_link_libraries(${PROJECT_NAME}.test + ${PROJECT_NAME} gtest pthread) +target_compile_definitions(${PROJECT_NAME}.test + PRIVATE TEST_DIR="${CMAKE_CURRENT_LIST_DIR}/test") + +install(TARGETS ${PROJECT_NAME}.test + DESTINATION "${tool_dest}") diff --git a/test/README.md b/test/README.md new file mode 100644 index 0000000..3e33dc8 --- /dev/null +++ b/test/README.md @@ -0,0 +1,4 @@ +# Здесь размещаются тесты для всех задач + + + diff --git a/test/tests.cpp b/test/tests.cpp new file mode 100644 index 0000000..2d5ff05 --- /dev/null +++ b/test/tests.cpp @@ -0,0 +1,6 @@ + +#include +#include +#include "alg.h" + +