summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2026-01-10 23:55:23 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2026-01-10 23:55:23 +0100
commit8154646d1dcc09c6e6a40f992e3ce03fd3cb0b2b (patch)
tree4ce125e283d74193e2f42d54cb2d0abc008861e5 /test
parent7a95bf4f8e0de0648da156ffaaf647c184869dad (diff)
chore: release prep for NeKernel+Nectar.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'test')
-rw-r--r--test/.keep0
-rw-r--r--test/kernel_test/Makefile22
-rw-r--r--test/kernel_test/error.test.cc2
-rw-r--r--test/kernel_test/event.test.cc103
-rw-r--r--test/kernel_test/process.test.cc13
-rw-r--r--test/kernel_test/scheduler.test.cc108
-rw-r--r--test/libsystem_test/Makefile22
-rw-r--r--test/libsystem_test/memory.test.cc2
-rw-r--r--test/libsystem_test/thread.test.cc2
9 files changed, 49 insertions, 225 deletions
diff --git a/test/.keep b/test/.keep
deleted file mode 100644
index e69de29b..00000000
--- a/test/.keep
+++ /dev/null
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;
-}
diff --git a/test/libsystem_test/Makefile b/test/libsystem_test/Makefile
new file mode 100644
index 00000000..0e38e134
--- /dev/null
+++ b/test/libsystem_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 = \
+ thread.test.exe \
+ memory.test.exe \
+ io.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/libsystem_test/memory.test.cc b/test/libsystem_test/memory.test.cc
index 5083570c..28d758cc 100644
--- a/test/libsystem_test/memory.test.cc
+++ b/test/libsystem_test/memory.test.cc
@@ -110,7 +110,7 @@ KT_DECL_TEST(MmFillCRC32HeapValid, []() -> bool {
});
/// \brief Run memory tests.
-SInt32 KT_TEST_MAIN() {
+IMPORT_C SInt32 KT_TEST_MAIN() {
KT_RUN_TEST(MmCreateHeapSuccess);
KT_RUN_TEST(MmCreateHeapZeroSize);
KT_RUN_TEST(MmDestroyHeapValid);
diff --git a/test/libsystem_test/thread.test.cc b/test/libsystem_test/thread.test.cc
index ec8ccbad..db248e26 100644
--- a/test/libsystem_test/thread.test.cc
+++ b/test/libsystem_test/thread.test.cc
@@ -120,7 +120,7 @@ KT_DECL_TEST(ThrExitMainThreadValid, []() -> bool {
});
/// \brief Run threading tests.
-SInt32 KT_TEST_MAIN() {
+IMPORT_C SInt32 KT_TEST_MAIN() {
KT_RUN_TEST(ThrCreateThreadValid);
KT_RUN_TEST(ThrCreateThreadNull);
KT_RUN_TEST(ThrCreateThreadWithName);