diff options
Diffstat (limited to 'test/kernel_test')
| -rw-r--r-- | test/kernel_test/Makefile | 22 | ||||
| -rw-r--r-- | test/kernel_test/error.test.cc | 2 | ||||
| -rw-r--r-- | test/kernel_test/event.test.cc | 103 | ||||
| -rw-r--r-- | test/kernel_test/process.test.cc | 13 | ||||
| -rw-r--r-- | test/kernel_test/scheduler.test.cc | 108 |
5 files changed, 25 insertions, 223 deletions
diff --git a/test/kernel_test/Makefile b/test/kernel_test/Makefile new file mode 100644 index 00000000..823ac0d2 --- /dev/null +++ b/test/kernel_test/Makefile @@ -0,0 +1,22 @@ +################################################## +# (c) Amlal El Mahrouss and NeKernel Authors, licensed under the Apache 2.0 license. +# This file is for libSystem.dll's testing stubs. +################################################## + +GCC=x86_64-w64-mingw32-g++ -Wl,-subsystem=17 +LIB=-L../../src/libSystem -lSystem +STD=-std=c++20 -DKT_TESTING_ENABLED +INCLUDE=-I../../src -I../../public -I../../public/frameworks/ -I../../ + +OBJ_FILES = \ + error.test.exe \ + print.test.exe \ + process.test.exe + +.PHONY: all +all: $(OBJ_FILES) + +%.exe: %.cc + @echo "==> Building test: $@" + $(GCC) $(LIB) $< \ + $(STD) $(INCLUDE) -o $(basename $<).exe
\ No newline at end of file diff --git a/test/kernel_test/error.test.cc b/test/kernel_test/error.test.cc index 084566b2..ece8f71d 100644 --- a/test/kernel_test/error.test.cc +++ b/test/kernel_test/error.test.cc @@ -55,7 +55,7 @@ KT_DECL_TEST(ErrGetLastErrorMultipleCalls, []() -> bool { }); /// \brief Run error tests. -SInt32 KT_TEST_MAIN() { +IMPORT_C SInt32 KT_TEST_MAIN() { KT_RUN_TEST(ErrGetLastErrorInitial); KT_RUN_TEST(ErrGetLastErrorAfterSuccess); KT_RUN_TEST(ErrGetLastErrorAfterFailure); diff --git a/test/kernel_test/event.test.cc b/test/kernel_test/event.test.cc deleted file mode 100644 index 6e342c6b..00000000 --- a/test/kernel_test/event.test.cc +++ /dev/null @@ -1,103 +0,0 @@ -/// \file event.test.cc -/// \brief Event handling API tests. -/// \author Amlal El Mahrouss (amlal at nekernel dot org) - -#include <libSystem/SystemKit/System.h> -#include <public/frameworks/KernelTest.fwrk/headers/TestCase.h> - -/// \note Mock event listener -static Bool event_listener_called = NO; - -static Void mock_event_listener(VoidPtr data) { - event_listener_called = YES; -} - -/// \note EvtAddListener tests -KT_DECL_TEST(EvtAddListenerValid, []() -> bool { - REF_TYPE listener_ref; - listener_ref.__hash = 0x1234; - listener_ref.__self = (VoidPtr) mock_event_listener; - - EvtAddListener("test_event", (Ref) &listener_ref); - return YES; -}); - -KT_DECL_TEST(EvtAddListenerNull, []() -> bool { - EvtAddListener(nullptr, nullptr); - return YES; -}); - -/// \note EvtRemoveListener tests -KT_DECL_TEST(EvtRemoveListenerValid, []() -> bool { - REF_TYPE listener_ref; - listener_ref.__hash = 0x1234; - listener_ref.__self = (VoidPtr) mock_event_listener; - - EvtAddListener("remove_test", (Ref) &listener_ref); - EvtRemoveListener("remove_test", (Ref) &listener_ref); - return YES; -}); - -KT_DECL_TEST(EvtRemoveListenerNull, []() -> bool { - EvtRemoveListener(nullptr, nullptr); - return YES; -}); - -/// \note EvtDispatchEvent tests -KT_DECL_TEST(EvtDispatchEventValid, []() -> bool { - REF_TYPE listener_ref; - listener_ref.__hash = 0x5678; - listener_ref.__self = (VoidPtr) mock_event_listener; - - event_listener_called = NO; - - EvtAddListener("dispatch_test", (Ref) &listener_ref); - - char data[] = "event_data"; - EvtDispatchEvent("dispatch_test", (VoidPtr) data); - - return YES; -}); - -KT_DECL_TEST(EvtDispatchEventNull, []() -> bool { - VoidPtr result = EvtDispatchEvent(nullptr, nullptr); - return result == nullptr; -}); - -KT_DECL_TEST(EvtDispatchEventNotExist, []() -> bool { - VoidPtr result = EvtDispatchEvent("nonexistent_event", nullptr); - return YES; -}); - -/// \note Event lifecycle test -KT_DECL_TEST(EvtLifecycleTest, []() -> bool { - REF_TYPE listener_ref; - listener_ref.__hash = 0xABCD; - listener_ref.__self = (VoidPtr) mock_event_listener; - - EvtAddListener("lifecycle_event", (Ref) &listener_ref); - - char data[] = "test"; - EvtDispatchEvent("lifecycle_event", (VoidPtr) data); - - EvtRemoveListener("lifecycle_event", (Ref) &listener_ref); - - return YES; -}); - -/// \brief Run event tests. -SInt32 KT_TEST_MAIN() { - KT_RUN_TEST(EvtAddListenerValid); - KT_RUN_TEST(EvtAddListenerNull); - - KT_RUN_TEST(EvtRemoveListenerValid); - KT_RUN_TEST(EvtRemoveListenerNull); - - KT_RUN_TEST(EvtDispatchEventValid); - KT_RUN_TEST(EvtDispatchEventNull); - KT_RUN_TEST(EvtDispatchEventNotExist); - - KT_RUN_TEST(EvtLifecycleTest); - - return KT_TEST_SUCCESS; -} diff --git a/test/kernel_test/process.test.cc b/test/kernel_test/process.test.cc index 451cacfe..b742b5c1 100644 --- a/test/kernel_test/process.test.cc +++ b/test/kernel_test/process.test.cc @@ -3,7 +3,7 @@ /// \author Amlal El Mahrouss (amlal at nekernel dot org) #include <libSystem/SystemKit/System.h> -#include <public/frameworks/KernelTest.fwrk/headers/TestCase.h> +#include <KernelTest.fwrk/headers/TestCase.h> /// \note RtlSpawnProcess tests KT_DECL_TEST(ProcessHasFailed, []() -> bool { @@ -17,14 +17,6 @@ KT_DECL_TEST(ProcessHasSucceeded, []() -> bool { return RtlSpawnProcess("/system/list", 0, nullptr, nullptr, 0) > 0; }); -KT_DECL_TEST(ProcessSpawnWithArgs, []() -> bool { - Char* argv[] = {(Char*) "arg1", (Char*) "arg2"}; - Char* envp[] = {(Char*) "VAR=value"}; - - UIntPtr pid = RtlSpawnProcess("/system/list", 2, argv, envp, 1); - return pid > 0; -}); - KT_DECL_TEST(ProcessSpawnNullPath, []() -> bool { return RtlSpawnProcess(nullptr, 0, nullptr, nullptr, 0) == -1; }); @@ -69,10 +61,9 @@ KT_DECL_TEST(ProcessExitInvalid, []() -> bool { }); /// \brief Run 'process' test. -SInt32 KT_TEST_MAIN() { +IMPORT_C SInt32 KT_TEST_MAIN() { KT_RUN_TEST(ProcessHasFailed); KT_RUN_TEST(ProcessHasSucceeded); - KT_RUN_TEST(ProcessSpawnWithArgs); KT_RUN_TEST(ProcessSpawnNullPath); KT_RUN_TEST(ProcessSpawnInvalidPath); diff --git a/test/kernel_test/scheduler.test.cc b/test/kernel_test/scheduler.test.cc deleted file mode 100644 index 58cf6017..00000000 --- a/test/kernel_test/scheduler.test.cc +++ /dev/null @@ -1,108 +0,0 @@ -/// \file scheduler.test.cc -/// \brief Scheduler and debugging API tests. -/// \author Amlal El Mahrouss (amlal at nekernel dot org) - -#include <libSystem/SystemKit/System.h> -#include <public/frameworks/KernelTest.fwrk/headers/TestCase.h> - -/// \note SchedGetCurrentProcessID tests -KT_DECL_TEST(SchedGetCurrentPIDValid, []() -> bool { - UIntPtr pid = SchedGetCurrentProcessID(); - return pid > 0; -}); - -/// \note SchedSetAffinity/SchedGetAffinity tests -KT_DECL_TEST(SchedSetAffinityValid, []() -> bool { - UIntPtr pid = SchedGetCurrentProcessID(); - AffinityRef affinity; - - SInt32 result = SchedSetAffinity(pid, 1, &affinity); - return result >= 0; -}); - -KT_DECL_TEST(SchedGetAffinityValid, []() -> bool { - UIntPtr pid = SchedGetCurrentProcessID(); - AffinityRef affinity; - - SInt32 result = SchedGetAffinity(pid, &affinity); - return result >= 0; -}); - -KT_DECL_TEST(SchedSetAffinityInvalid, []() -> bool { - AffinityRef affinity; - SInt32 result = SchedSetAffinity(0, 1, &affinity); - return result < 0; -}); - -KT_DECL_TEST(SchedGetAffinityInvalid, []() -> bool { - AffinityRef affinity; - SInt32 result = SchedGetAffinity(0, &affinity); - return result < 0; -}); - -KT_DECL_TEST(SchedAffinityRoundTrip, []() -> bool { - UIntPtr pid = SchedGetCurrentProcessID(); - AffinityRef affinity_set; - AffinityRef affinity_get; - - SchedSetAffinity(pid, 2, &affinity_set); - SInt32 result = SchedGetAffinity(pid, &affinity_get); - - return result >= 0; -}); - -/// \note SchedFireSignal tests -KT_DECL_TEST(SchedFireSignalValid, []() -> bool { - UIntPtr pid = SchedGetCurrentProcessID(); - SInt32 result = SchedFireSignal(pid, 1); - return result >= 0; -}); - -KT_DECL_TEST(SchedFireSignalInvalid, []() -> bool { - SInt32 result = SchedFireSignal(0, 1); - return result < 0; -}); - -/// \note SchedReadMemory/SchedWriteMemory tests -KT_DECL_TEST(SchedReadMemoryValid, []() -> bool { - UIntPtr pid = SchedGetCurrentProcessID(); - SInt32 result = SchedReadMemory(pid, 0x1000, 64); - return result >= 0; -}); - -KT_DECL_TEST(SchedWriteMemoryValid, []() -> bool { - UIntPtr pid = SchedGetCurrentProcessID(); - SInt32 result = SchedWriteMemory(pid, 0x1000, 0x42); - return result >= 0; -}); - -KT_DECL_TEST(SchedReadMemoryInvalid, []() -> bool { - SInt32 result = SchedReadMemory(0, 0x1000, 64); - return result < 0; -}); - -KT_DECL_TEST(SchedWriteMemoryInvalid, []() -> bool { - SInt32 result = SchedWriteMemory(0, 0x1000, 0x42); - return result < 0; -}); - -/// \brief Run scheduler tests. -SInt32 KT_TEST_MAIN() { - KT_RUN_TEST(SchedGetCurrentPIDValid); - - KT_RUN_TEST(SchedSetAffinityValid); - KT_RUN_TEST(SchedGetAffinityValid); - KT_RUN_TEST(SchedSetAffinityInvalid); - KT_RUN_TEST(SchedGetAffinityInvalid); - KT_RUN_TEST(SchedAffinityRoundTrip); - - KT_RUN_TEST(SchedFireSignalValid); - KT_RUN_TEST(SchedFireSignalInvalid); - - KT_RUN_TEST(SchedReadMemoryValid); - KT_RUN_TEST(SchedWriteMemoryValid); - KT_RUN_TEST(SchedReadMemoryInvalid); - KT_RUN_TEST(SchedWriteMemoryInvalid); - - return KT_TEST_SUCCESS; -} |
