summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt27
-rw-r--r--tests/main.cpp19
-rw-r--r--tests/test_instanciation.cpp51
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