summaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/.gitkeep0
-rw-r--r--tests/chunk_string/CMakeLists.txt25
-rw-r--r--tests/chunk_string/chunk_test.cc31
-rw-r--r--tests/fix_basic/CMakeLists.txt23
-rw-r--r--tests/fix_basic/fix_test.cc19
-rw-r--r--tests/network_basic/CMakeLists.txt23
-rw-r--r--tests/network_basic/net_test.cc22
-rw-r--r--tests/tracked_ptr_basic/CMakeLists.txt23
-rw-r--r--tests/tracked_ptr_basic/tracked_ptr_test.cc25
-rw-r--r--tests/tracked_ptr_leak/CMakeLists.txt23
-rw-r--r--tests/tracked_ptr_leak/tracked_ptr_test.cc19
11 files changed, 233 insertions, 0 deletions
diff --git a/tests/.gitkeep b/tests/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/.gitkeep
diff --git a/tests/chunk_string/CMakeLists.txt b/tests/chunk_string/CMakeLists.txt
new file mode 100644
index 0000000..53a9add
--- /dev/null
+++ b/tests/chunk_string/CMakeLists.txt
@@ -0,0 +1,25 @@
+cmake_minimum_required(VERSION 3.27)
+project(BasicChunkUsage LANGUAGES CXX)
+
+# find_package(Boost REQUIRED COMPONENTS container)
+
+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(BasicChunkUsage chunk_test.cc)
+target_link_libraries(BasicChunkUsage PRIVATE gtest_main)
+
+set_property(TARGET BasicChunkUsage PROPERTY CXX_STANDARD 20)
+target_include_directories(BasicChunkUsage PUBLIC ../../include/ocl)
+
+include(GoogleTest)
+gtest_discover_tests(BasicChunkUsage)
diff --git a/tests/chunk_string/chunk_test.cc b/tests/chunk_string/chunk_test.cc
new file mode 100644
index 0000000..6b2d290
--- /dev/null
+++ b/tests/chunk_string/chunk_test.cc
@@ -0,0 +1,31 @@
+/*
+ * File: tests/chunk_test.cc
+ * Purpose: Chunk unit tests in C++
+ * Author: Amlal El Mahrouss (amlal@nekernel.org)
+ * Copyright 2025, Amlal El Mahrouss, licensed under the Boost Software License.
+ */
+
+#include <io/print.hpp>
+#include <tests/gtest.hpp>
+#include <core/chunk_string.hpp>
+
+TEST(ChunkTest, BasicChunkUsage)
+{
+ const char* test_string = "HELLO, WORLD!\r\n";
+ const auto iterations = 1024000;
+ const auto limit = 30;
+
+ auto start = std::chrono::high_resolution_clock::now();
+
+ ocl::basic_chunk_string<char, iterations> optimized;
+
+ for (unsigned i = 0; i < iterations; ++i)
+ {
+ optimized += test_string;
+ }
+
+ auto end = std::chrono::high_resolution_clock::now();
+ auto optimized_time = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
+
+ EXPECT_TRUE(optimized_time.count() < 100U);
+}
diff --git a/tests/fix_basic/CMakeLists.txt b/tests/fix_basic/CMakeLists.txt
new file mode 100644
index 0000000..b94e3b5
--- /dev/null
+++ b/tests/fix_basic/CMakeLists.txt
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 3.10)
+project(FIXTestBasic)
+
+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(FIXTestBasic fix_test.cc)
+target_link_libraries(FIXTestBasic gtest_main)
+
+set_property(TARGET FIXTestBasic PROPERTY CXX_STANDARD 20)
+target_include_directories(FIXTestBasic PUBLIC ../../include/ocl)
+
+include(GoogleTest)
+gtest_discover_tests(FIXTestBasic)
diff --git a/tests/fix_basic/fix_test.cc b/tests/fix_basic/fix_test.cc
new file mode 100644
index 0000000..f58973b
--- /dev/null
+++ b/tests/fix_basic/fix_test.cc
@@ -0,0 +1,19 @@
+/*
+ * File: tests/fix_test.cc
+ * Purpose: Custom FIX protocol tests.
+ * Author: Amlal El Mahrouss (amlal@nekernel.org)
+ * Copyright 2025, Amlal El Mahrouss, licensed under the Boost Software License.
+ */
+
+#include <fix/fix.hpp>
+#include <tests/hpptest.hpp>
+#include <tests/gtest.hpp>
+
+TEST(FIXTest, BasicFIXUsage)
+{
+ ocl::fix::basic_visitor<char> basic_visitor;
+ ocl::fix::basic_range_data<char> fix = basic_visitor.visit("8=FIX.4.2|9=65|35=A|49=SERVER|56=CLIENT|34=177|52=20090107-18:15:16|98=0|108=30|10=062|");
+
+ EXPECT_EQ(fix.magic_, ocl::fix::detail::begin_fix());
+ EXPECT_TRUE(fix.is_valid());
+}
diff --git a/tests/network_basic/CMakeLists.txt b/tests/network_basic/CMakeLists.txt
new file mode 100644
index 0000000..88fa1c8
--- /dev/null
+++ b/tests/network_basic/CMakeLists.txt
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 3.27)
+project(NetworkTestBasic LANGUAGES CXX)
+
+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(NetworkTestBasic net_test.cc)
+target_link_libraries(NetworkTestBasic gtest_main)
+
+set_property(TARGET NetworkTestBasic PROPERTY CXX_STANDARD 20)
+target_include_directories(NetworkTestBasic PUBLIC ../../include/ocl)
+
+include(GoogleTest)
+gtest_discover_tests(NetworkTestBasic)
diff --git a/tests/network_basic/net_test.cc b/tests/network_basic/net_test.cc
new file mode 100644
index 0000000..15090d0
--- /dev/null
+++ b/tests/network_basic/net_test.cc
@@ -0,0 +1,22 @@
+/*
+ * File: tests/net_test.cc
+ * Purpose: Network unit tests in C++
+ * Author: Amlal El Mahrouss (amlal@nekernel.org)
+ * Copyright 2025, Amlal El Mahrouss, licensed under the Boost Software License.
+ */
+
+#include <net/modem.hpp>
+#include <io/print.hpp>
+#include <tests/gtest.hpp>
+#include <cstring>
+
+TEST(NetworkTest, BasicNetworkUsage)
+{
+ ocl::net::modem modem;
+ modem.construct<AF_INET, SOCK_STREAM, 8000>(ocl::net::modem::local_address_ip4, true);
+
+ EXPECT_TRUE(modem.is_valid());
+
+ std::basic_string<char> buf_dst = "HELLO, NET!";
+ EXPECT_TRUE(modem.transmit(buf_dst));
+}
diff --git a/tests/tracked_ptr_basic/CMakeLists.txt b/tests/tracked_ptr_basic/CMakeLists.txt
new file mode 100644
index 0000000..7c3dac6
--- /dev/null
+++ b/tests/tracked_ptr_basic/CMakeLists.txt
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 3.10)
+project(TrackedPtrTestBasic)
+
+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(TrackedPtrTestBasic tracked_ptr_test.cc)
+target_link_libraries(TrackedPtrTestBasic gtest_main)
+
+set_property(TARGET TrackedPtrTestBasic PROPERTY CXX_STANDARD 20)
+target_include_directories(TrackedPtrTestBasic PUBLIC ../../include/ocl)
+
+include(GoogleTest)
+gtest_discover_tests(TrackedPtrTestBasic)
diff --git a/tests/tracked_ptr_basic/tracked_ptr_test.cc b/tests/tracked_ptr_basic/tracked_ptr_test.cc
new file mode 100644
index 0000000..652974a
--- /dev/null
+++ b/tests/tracked_ptr_basic/tracked_ptr_test.cc
@@ -0,0 +1,25 @@
+/*
+ * File: tests/tracked_ptr_test.cc
+ * Purpose: Custom smart pointer unit tests in C++
+ * Author: Amlal El Mahrouss (amlal@nekernel.org)
+ * Copyright 2025, Amlal El Mahrouss, licensed under the Boost Software License.
+ */
+
+#include <memory/tracked_ptr.hpp>
+#include <tests/gtest.hpp>
+
+TEST(TrackedPtrTest, BasicTrackedPtrUsage)
+{
+ ocl::memory::tracked_ptr<int> ptr = ocl::memory::make_tracked<int>(42);
+
+ ASSERT_TRUE(ptr);
+ EXPECT_EQ(*ptr, 42);
+
+ ocl::memory::tracked_ptr<int> ptr2;
+
+ ocl::memory::swap(ptr, ptr2);
+
+ ptr2.reset();
+
+ EXPECT_EQ(ocl::memory::tracked_ptr<int>::manager().allocator().allocated_count_, 1);
+} \ No newline at end of file
diff --git a/tests/tracked_ptr_leak/CMakeLists.txt b/tests/tracked_ptr_leak/CMakeLists.txt
new file mode 100644
index 0000000..314e666
--- /dev/null
+++ b/tests/tracked_ptr_leak/CMakeLists.txt
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 3.10)
+project(TrackedPtrTestLeak)
+
+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(TrackedPtrTestLeak tracked_ptr_test.cc)
+target_link_libraries(TrackedPtrTestLeak gtest_main)
+
+set_property(TARGET TrackedPtrTestLeak PROPERTY CXX_STANDARD 20)
+target_include_directories(TrackedPtrTestLeak PUBLIC ../../include/ocl)
+
+include(GoogleTest)
+gtest_discover_tests(TrackedPtrTestLeak)
diff --git a/tests/tracked_ptr_leak/tracked_ptr_test.cc b/tests/tracked_ptr_leak/tracked_ptr_test.cc
new file mode 100644
index 0000000..14d8f8e
--- /dev/null
+++ b/tests/tracked_ptr_leak/tracked_ptr_test.cc
@@ -0,0 +1,19 @@
+/*
+ * File: tests/tracked_ptr_test.cc
+ * Purpose: Custom smart pointer unit tests in C++
+ * Author: Amlal El Mahrouss (amlal@nekernel.org)
+ * Copyright 2025, Amlal El Mahrouss, licensed under the Boost Software License.
+ */
+
+#include <memory/tracked_ptr.hpp>
+#include <tests/gtest.hpp>
+
+TEST(TrackedPtrTest, LeakTrackedPtrUsage)
+{
+ ocl::memory::tracked_ptr<int>* ptr = new ocl::memory::tracked_ptr<int>(42);
+ ocl::memory::tracked_ptr<int>* ptr2 = new ocl::memory::tracked_ptr<int>(42);
+ ocl::memory::tracked_ptr<int>* ptr3 = new ocl::memory::tracked_ptr<int>(42);
+
+ EXPECT_EQ(ocl::memory::tracked_ptr<int>::manager().allocator().allocated_count_, 3);
+ ASSERT_TRUE(ocl::memory::tracked_ptr<int>::manager().allocator().deallocated_count_ == 0);
+} \ No newline at end of file