diff --git a/.github/workflows/homework_1_task_01.yml b/.github/workflows/homework_1_task_01.yml new file mode 100644 index 0000000..55864f4 --- /dev/null +++ b/.github/workflows/homework_1_task_01.yml @@ -0,0 +1,32 @@ +name: CMake + +on: + push: {} + pull_request: + branches: [ "main" ] + +env: + BUILD_TYPE: Release + +jobs: + build_and_test: + runs-on: ubuntu-latest + + steps: + - name: Install gtest manually + run: sudo apt-get install libgtest-dev + + - uses: actions/checkout@v3 + + - name: run cmake + working-directory: ${{github.workspace}}/homework_01 + run: cmake -B./build . + + - name: make + working-directory: ${{github.workspace}}/homework_01/build + run: make + + - name: tests + working-directory: ${{github.workspace}}/homework_01/build + run: ./task_01/tests_1_01 + diff --git a/.github/workflows/cmake.yml b/.github/workflows/homework_1_task_02.yml similarity index 73% rename from .github/workflows/cmake.yml rename to .github/workflows/homework_1_task_02.yml index 6ef9680..f2b7dd3 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/homework_1_task_02.yml @@ -13,6 +13,9 @@ jobs: runs-on: ubuntu-latest steps: + - name: Install gtest manually + run: sudo apt-get install libgtest-dev + - uses: actions/checkout@v3 - name: run cmake @@ -23,11 +26,7 @@ jobs: working-directory: ${{github.workspace}}/homework_01/build run: make - - name: test task 01 - working-directory: ${{github.workspace}}/homework_01/build - run: ./task_01/tests_01 - - - name: test task 02 + - name: tests working-directory: ${{github.workspace}}/homework_01/build - run: ./task_02/tests_02 + run: ./task_02/tests_1_02 diff --git a/CMakeLists.txt b/CMakeLists.txt index 0dfb3c6..ca93e1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,4 +2,5 @@ cmake_minimum_required(VERSION 3.10) project(homeworks) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/homework_01) \ No newline at end of file +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/homework_01) +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/homework_02) \ No newline at end of file diff --git a/homework_01/task_01/CMakeLists.txt b/homework_01/task_01/CMakeLists.txt index 7278e6f..16b3988 100644 --- a/homework_01/task_01/CMakeLists.txt +++ b/homework_01/task_01/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.10) -set(PROJECT_NAME task_01) +set(PROJECT_NAME task_1_01) project(${PROJECT_NAME}) set(CMAKE_CXX_STANDARD 20) @@ -18,15 +18,19 @@ include_directories(${PROJECT_NAME} PUBLIC src) add_executable(${PROJECT_NAME} ${source_list}) -Include(FetchContent) +# Locate GTest +enable_testing() +find_package(GTest REQUIRED) +include_directories(${GTEST_INCLUDE_DIRS}) -FetchContent_Declare( - Catch2 - GIT_REPOSITORY https://github.com/catchorg/Catch2.git - GIT_TAG v3.1.0 +# Link runTests with what we want to test and the GTest and pthread library +add_executable(tests_1_01 ${test_source_list}) +target_link_libraries( + tests_1_01 + GTest::gtest_main ) -FetchContent_MakeAvailable(Catch2) +include(GoogleTest) +gtest_discover_tests(tests_1_01) -add_executable(tests_01 ${test_source_list}) -target_link_libraries(tests_01 PRIVATE Catch2::Catch2WithMain) +# target_link_libraries(tests_1_02 ${GTEST_LIBRARIES} pthread) diff --git a/homework_01/task_01/src/split_string_test.cpp b/homework_01/task_01/src/split_string_test.cpp index 82d4994..b407de3 100644 --- a/homework_01/task_01/src/split_string_test.cpp +++ b/homework_01/task_01/src/split_string_test.cpp @@ -1,15 +1,17 @@ -#include +#include #include "utils.hpp" -TEST_CASE("SplitString", "[simple]") { - CHECK(SplitString("") == std::vector{}); - CHECK(SplitString("aaa") == std::vector{"aaa"}); - CHECK(SplitString("aaa aaa") == std::vector{"aaa", "aaa"}); - CHECK(SplitString("aaa aaa ") == std::vector{"aaa", "aaa"}); - CHECK(SplitString(" ") == std::vector{}); - CHECK(SplitString("??? ??") == std::vector{"???", "??"}); - CHECK(SplitString("a\na\ta a") == std::vector{"a\na", "a", "a"}); - CHECK(SplitString("a (a a)") == std::vector{"a", "(a a)"}); - CHECK(SplitString("a (a a) b (asd as) ") == std::vector{"a", "(a a)", "b", "(asd as)"}); +TEST(SplitStringTest, Simple) { + ASSERT_EQ(SplitString(""), std::vector{}); + ASSERT_EQ(SplitString("aaa"), std::vector{"aaa"}); + ASSERT_EQ(SplitString("aaa aaa"), (std::vector{"aaa", "aaa"})); + ASSERT_EQ(SplitString("aaa aaa "), (std::vector{"aaa", "aaa"})); + ASSERT_EQ(SplitString(" "), std::vector{}); + ASSERT_EQ(SplitString("??? ??"), (std::vector{"???", "??"})); + ASSERT_EQ(SplitString("a\na\ta a"), + (std::vector{"a\na", "a", "a"})); + ASSERT_EQ(SplitString("a (a a)"), (std::vector{"a", "(a a)"})); + ASSERT_EQ(SplitString("a (a a) b (asd as) "), + (std::vector{"a", "(a a)", "b", "(asd as)"})); } diff --git a/homework_01/task_01/src/utils.hpp b/homework_01/task_01/src/utils.hpp index 539ba98..bd46e63 100644 --- a/homework_01/task_01/src/utils.hpp +++ b/homework_01/task_01/src/utils.hpp @@ -1,7 +1,6 @@ #pragma once #include -#include #include std::vector SplitString(const std::string& data); diff --git a/homework_01/task_02/CMakeLists.txt b/homework_01/task_02/CMakeLists.txt index 959c69b..2d1d2bc 100644 --- a/homework_01/task_02/CMakeLists.txt +++ b/homework_01/task_02/CMakeLists.txt @@ -1,9 +1,9 @@ cmake_minimum_required(VERSION 3.10) -set(PROJECT_NAME task_02) +set(PROJECT_NAME task_1_02) project(${PROJECT_NAME}) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) file(GLOB_RECURSE source_list "src/*.cpp" "src/*.hpp") @@ -18,15 +18,19 @@ include_directories(${PROJECT_NAME} PUBLIC src) add_executable(${PROJECT_NAME} ${source_list}) -Include(FetchContent) +# Locate GTest +enable_testing() +find_package(GTest REQUIRED) +include_directories(${GTEST_INCLUDE_DIRS}) -FetchContent_Declare( - Catch2 - GIT_REPOSITORY https://github.com/catchorg/Catch2.git - GIT_TAG v3.1.0 +# Link runTests with what we want to test and the GTest and pthread library +add_executable(tests_1_02 ${test_source_list}) +target_link_libraries( + tests_1_02 + GTest::gtest_main ) -FetchContent_MakeAvailable(Catch2) +include(GoogleTest) +gtest_discover_tests(tests_1_02) -add_executable(tests_02 ${test_source_list}) -target_link_libraries(tests_02 PRIVATE Catch2::Catch2WithMain) +# target_link_libraries(tests_1_02 ${GTEST_LIBRARIES} pthread) diff --git a/homework_01/task_02/src/calculate_test.cpp b/homework_01/task_02/src/calculate_test.cpp index 57a8cb9..188fc7c 100644 --- a/homework_01/task_02/src/calculate_test.cpp +++ b/homework_01/task_02/src/calculate_test.cpp @@ -1,24 +1,24 @@ -#include +#include #include "utils.hpp" -TEST_CASE("Calculate", "[simple_sum]") { - CHECK(Calculate("1+2") == 3); - CHECK(Calculate("2+2") == 4); - CHECK(Calculate("1+0") == 1); - CHECK(Calculate("0+0") == 0); +TEST(CalculateTest, simple_sum) { + ASSERT_EQ(Calculate("1+2"), 3); + ASSERT_EQ(Calculate("2+2"), 4); + ASSERT_EQ(Calculate("1+0"), 1); + ASSERT_EQ(Calculate("0+0"), 0); } -TEST_CASE("Calculate", "[simple_difference]") { - CHECK(Calculate("5-2") == 3); - CHECK(Calculate("2-2") == 0); - CHECK(Calculate("1-0") == 1); - CHECK(Calculate("0-0") == 0); +TEST(CalculateTest, simple_difference) { + ASSERT_EQ(Calculate("5-2"), 3); + ASSERT_EQ(Calculate("2-2"), 0); + ASSERT_EQ(Calculate("1-0"), 1); + ASSERT_EQ(Calculate("0-0"), 0); } -TEST_CASE("Calculate", "[simple_multiply]") { - CHECK(Calculate("5*2") == 10); - CHECK(Calculate("2*2") == 4); - CHECK(Calculate("1*0") == 0); - CHECK(Calculate("0*0") == 0); +TEST(CalculateTest, simple_multiply) { + ASSERT_EQ(Calculate("5*2"), 10); + ASSERT_EQ(Calculate("2*2"), 4); + ASSERT_EQ(Calculate("1*0"), 0); + ASSERT_EQ(Calculate("0*0"), 0); } diff --git a/homework_02/CMakeLists.txt b/homework_02/CMakeLists.txt new file mode 100644 index 0000000..4ba5a01 --- /dev/null +++ b/homework_02/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.10) + +project(homework_02) + +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/task_2_01) diff --git a/homework_02/task_2_01/CMakeLists.txt b/homework_02/task_2_01/CMakeLists.txt new file mode 100644 index 0000000..14479c3 --- /dev/null +++ b/homework_02/task_2_01/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 3.10) + +set(PROJECT_NAME task_2_01) +project(${PROJECT_NAME}) + +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +file(GLOB_RECURSE source_list "src/*.cpp" "src/*.hpp") +file(GLOB_RECURSE main_source_list "src/main.cpp") +file(GLOB_RECURSE test_source_list "src/*.cpp") +file(GLOB_RECURSE test_list "src/*test.cpp") + +list(REMOVE_ITEM test_source_list ${main_source_list}) +list(REMOVE_ITEM source_list ${test_list}) + +include_directories(${PROJECT_NAME} PUBLIC src) + +add_executable(${PROJECT_NAME} ${source_list}) + +# Locate GTest +enable_testing() +find_package(GTest REQUIRED) +include_directories(${GTEST_INCLUDE_DIRS}) + +# Link runTests with what we want to test and the GTest and pthread library +add_executable(tests_2_01 ${test_source_list}) +target_link_libraries( + tests_2_01 + GTest::gtest_main +) + +include(GoogleTest) +gtest_discover_tests(tests_2_01) + +# target_link_libraries(tests_2_01 ${GTEST_LIBRARIES} pthread) diff --git a/homework_02/task_2_01/src/main.cpp b/homework_02/task_2_01/src/main.cpp new file mode 100644 index 0000000..7b8f114 --- /dev/null +++ b/homework_02/task_2_01/src/main.cpp @@ -0,0 +1,3 @@ +#include + +int main() { return 0; } diff --git a/homework_02/task_2_01/src/test.cpp b/homework_02/task_2_01/src/test.cpp new file mode 100644 index 0000000..5a72a6e --- /dev/null +++ b/homework_02/task_2_01/src/test.cpp @@ -0,0 +1,6 @@ +#include + +#include "utils.hpp" + +TEST(HelloTest, BasicAssertions) { + ASSERT_EQ(true, true); } diff --git a/homework_02/task_2_01/src/utils.cpp b/homework_02/task_2_01/src/utils.cpp new file mode 100644 index 0000000..ec22d6f --- /dev/null +++ b/homework_02/task_2_01/src/utils.cpp @@ -0,0 +1,3 @@ +#include "utils.hpp" + +double Calculate(const std::string& str) { return 0; } diff --git a/homework_02/task_2_01/src/utils.hpp b/homework_02/task_2_01/src/utils.hpp new file mode 100644 index 0000000..3323b2b --- /dev/null +++ b/homework_02/task_2_01/src/utils.hpp @@ -0,0 +1,5 @@ +#pragma once + +#include + +double Calculate(const std::string& str);