aboutsummaryrefslogtreecommitdiff
path: root/kernel/tests
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/tests')
-rw-r--r--kernel/tests/CMakeLists.txt49
-rw-r--r--kernel/tests/include/kernel/tests/cpu.hpp18
-rw-r--r--kernel/tests/kapi/cpu.cpp13
-rw-r--r--kernel/tests/src/main.cpp6
-rw-r--r--kernel/tests/src/test_support.cpp19
5 files changed, 105 insertions, 0 deletions
diff --git a/kernel/tests/CMakeLists.txt b/kernel/tests/CMakeLists.txt
new file mode 100644
index 0000000..96053f1
--- /dev/null
+++ b/kernel/tests/CMakeLists.txt
@@ -0,0 +1,49 @@
+#[============================================================================[
+# Kernel Test Support (Fakes, Stubs, Mocks, etc.)
+#]============================================================================]
+
+add_library("kernel_test_support"
+ "kapi/cpu.cpp"
+)
+
+target_include_directories("kernel_test_support" PUBLIC
+ "include"
+)
+
+target_link_libraries("kernel_test_support" PUBLIC
+ "os::kapi"
+)
+
+add_library("os::kernel_test_support" ALIAS "kernel_test_support")
+
+#[============================================================================[
+# Kernel Tests
+#]============================================================================]
+
+add_executable("kernel_tests"
+ "src/main.cpp"
+ "src/test_support.cpp"
+)
+
+target_include_directories("kernel_tests" PRIVATE
+ "include"
+)
+
+target_link_libraries("kernel_tests" PRIVATE
+ "os::kernel_test_support"
+ "os::kernel"
+ "libs::kstd"
+ "Catch2::Catch2"
+)
+
+set_target_properties("kernel_tests" PROPERTIES
+ C_CLANG_TIDY ""
+ CXX_CLANG_TIDY ""
+ EXCLUDE_FROM_ALL NO
+)
+
+enable_coverage("kernel_tests")
+
+add_executable("os::kernel_tests" ALIAS "kernel_tests")
+
+catch_discover_tests("os::kernel_tests") \ No newline at end of file
diff --git a/kernel/tests/include/kernel/tests/cpu.hpp b/kernel/tests/include/kernel/tests/cpu.hpp
new file mode 100644
index 0000000..81c0c6f
--- /dev/null
+++ b/kernel/tests/include/kernel/tests/cpu.hpp
@@ -0,0 +1,18 @@
+#ifndef TEACHOS_KERNEL_TESTS_CPU_HPP
+#define TEACHOS_KERNEL_TESTS_CPU_HPP
+
+#include <stdexcept>
+
+namespace kernel::tests::cpu
+{
+
+ struct halt : std::runtime_error
+ {
+ halt()
+ : std::runtime_error{"CPU halt requested!"}
+ {}
+ };
+
+} // namespace kernel::tests::cpu
+
+#endif \ No newline at end of file
diff --git a/kernel/tests/kapi/cpu.cpp b/kernel/tests/kapi/cpu.cpp
new file mode 100644
index 0000000..f03fca0
--- /dev/null
+++ b/kernel/tests/kapi/cpu.cpp
@@ -0,0 +1,13 @@
+#include "kernel/tests/cpu.hpp"
+
+#include <kapi/cpu.hpp>
+
+namespace kapi::cpu
+{
+
+ auto halt() -> void
+ {
+ throw kernel::tests::cpu::halt{};
+ }
+
+} // namespace kapi::cpu \ No newline at end of file
diff --git a/kernel/tests/src/main.cpp b/kernel/tests/src/main.cpp
new file mode 100644
index 0000000..89bb1c7
--- /dev/null
+++ b/kernel/tests/src/main.cpp
@@ -0,0 +1,6 @@
+#include <catch2/catch_session.hpp>
+
+auto main(int argc, char ** argv) -> int
+{
+ return Catch::Session().run(argc, argv);
+} \ No newline at end of file
diff --git a/kernel/tests/src/test_support.cpp b/kernel/tests/src/test_support.cpp
new file mode 100644
index 0000000..bbf5dc0
--- /dev/null
+++ b/kernel/tests/src/test_support.cpp
@@ -0,0 +1,19 @@
+#include "kapi/cpu.hpp"
+
+#include "kernel/tests/cpu.hpp"
+
+#include <catch2/catch_test_macros.hpp>
+
+SCENARIO("Kernel test support infrastructure", "[support]")
+{
+ GIVEN("the test support infrastructure is initialized")
+ {
+ WHEN("when a CPU halt is requested")
+ {
+ THEN("the correct exception is thrown")
+ {
+ REQUIRE_THROWS_AS(kapi::cpu::halt(), kernel::tests::cpu::halt);
+ }
+ }
+ }
+} \ No newline at end of file