summaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-07-23 09:48:45 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-07-23 09:48:45 +0100
commit01565adb9cf5ef991196f56c7f5f7b6161daa005 (patch)
treeee368e2a33fbd53d54af5413401e91c49c85a505 /tests
parent9c692ebc9cf9fda989be3abd6a3b286262559f4f (diff)
feat: add tracked_ptr test using 'gtest'
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/tracked_ptr/CMakeLists.txt23
-rw-r--r--tests/tracked_ptr/tracked_ptr_test.cc26
2 files changed, 49 insertions, 0 deletions
diff --git a/tests/tracked_ptr/CMakeLists.txt b/tests/tracked_ptr/CMakeLists.txt
new file mode 100644
index 0000000..d7e119f
--- /dev/null
+++ b/tests/tracked_ptr/CMakeLists.txt
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 3.10)
+project(TrackedPtrTests)
+
+include(FetchContent)
+FetchContent_Declare(
+ googletest
+ URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
+)
+
+# For Windows: Prevent overriding the parent project's compiler/linker settings
+set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+FetchContent_MakeAvailable(googletest)
+
+enable_testing()
+
+add_executable(TrackedPtrTest tracked_ptr_test.cc)
+target_link_libraries(TrackedPtrTest gtest_main)
+
+set_property(TARGET TrackedPtrTest PROPERTY CXX_STANDARD 20)
+target_include_directories(TrackedPtrTest PUBLIC ../../)
+
+include(GoogleTest)
+gtest_discover_tests(TrackedPtrTest)
diff --git a/tests/tracked_ptr/tracked_ptr_test.cc b/tests/tracked_ptr/tracked_ptr_test.cc
new file mode 100644
index 0000000..82d77f8
--- /dev/null
+++ b/tests/tracked_ptr/tracked_ptr_test.cc
@@ -0,0 +1,26 @@
+/*
+ * File: tests/tracked_ptr_test.cc
+ * Purpose: Custom smart pointer unit tests in C++
+ * Author: Amlal El Mahrouss (founder@snu.systems)
+ * Copyright 2025, Amlal El Mahrouss and SNU Systems Corp all rights reserved.
+ */
+
+#include <lib/memory/tracked_ptr.hpp>
+#include <gtest/gtest.h>
+
+TEST(TrackedPtrTest, BasicTrackedPtrUsage) {
+ snu::memory::tracked_ptr<int> ptr = snu::memory::make_tracked<int>(42);
+
+ ASSERT_TRUE(ptr);
+ EXPECT_EQ(*ptr, 42);
+
+ snu::memory::tracked_ptr<int> ptr2 = std::move(ptr);
+
+ ASSERT_FALSE(ptr);
+ ASSERT_TRUE(ptr2);
+
+ EXPECT_EQ(*ptr2, 42);
+
+ ptr2.reset();
+ ASSERT_FALSE(ptr2);
+} \ No newline at end of file