diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/CMakeLists.txt | 27 | ||||
-rw-r--r-- | tests/main.cpp | 19 | ||||
-rw-r--r-- | tests/test_instanciation.cpp | 51 |
3 files changed, 97 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..3f7107b --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,27 @@ +include(CTest) + +file(GLOB sources_tests test_*.cpp) + +find_package(Catch2 CONFIG) +if(Catch2_FOUND) # Catch 2.x + include(Catch) + add_executable(all_tests main.cpp ${sources_tests}) + target_link_libraries(all_tests + PRIVATE Catch2::Catch2 ${PROJECT_NAME}) + target_include_directories(all_tests PRIVATE "/usr/include/catch2") + catch_discover_tests(all_tests EXTRA_ARGS "${EXTRA_TEST_ARGS}") +else() # Catch 1.x + if(EXISTS "/usr/include/catch.hpp") + message(STATUS "Catch 1.x found.") + foreach(src ${sources_tests}) + get_filename_component(bin ${src} NAME_WE) + add_executable(${bin} main.cpp ${src}) + target_link_libraries(${bin} + PRIVATE ${PROJECT_NAME}) + add_test(${bin} ${bin} "${EXTRA_TEST_ARGS}") + endforeach() + else() + message(FATAL_ERROR + "Neither Catch 2.x nor Catch 1.x could be found.") + endif() +endif() diff --git a/tests/main.cpp b/tests/main.cpp new file mode 100644 index 0000000..162dfdf --- /dev/null +++ b/tests/main.cpp @@ -0,0 +1,19 @@ +/* This file is part of mastodonpp. + * Copyright © 2020 tastytea <tastytea@tastytea.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#define CATCH_CONFIG_MAIN + +#include <catch.hpp> diff --git a/tests/test_instanciation.cpp b/tests/test_instanciation.cpp new file mode 100644 index 0000000..3fbc0f3 --- /dev/null +++ b/tests/test_instanciation.cpp @@ -0,0 +1,51 @@ +/* This file is part of mastodonpp. + * Copyright © 2020 tastytea <tastytea@tastytea.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "mastodonpp.hpp" + +#include <catch.hpp> + +#include <exception> +#include <string> + +namespace mastodonpp +{ + +using std::string; + +SCENARIO ("API can be instantiated.") +{ + bool exception = false; + + GIVEN ("One instanciation.") + { + try + { + API masto("example.com", ""); + } + catch (const std::exception &e) + { + exception = true; + } + + THEN ("No exception is thrown") + { + REQUIRE_FALSE(exception); + } + } +} + +} // namespace mastodonpp |