diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/.gitkeep | 0 | ||||
| -rw-r--r-- | tests/chunk_string/CMakeLists.txt | 25 | ||||
| -rw-r--r-- | tests/chunk_string/chunk_test.cc | 31 | ||||
| -rw-r--r-- | tests/fix_basic/CMakeLists.txt | 23 | ||||
| -rw-r--r-- | tests/fix_basic/fix_test.cc | 19 | ||||
| -rw-r--r-- | tests/network_basic/CMakeLists.txt | 23 | ||||
| -rw-r--r-- | tests/network_basic/net_test.cc | 22 | ||||
| -rw-r--r-- | tests/tracked_ptr_basic/CMakeLists.txt | 23 | ||||
| -rw-r--r-- | tests/tracked_ptr_basic/tracked_ptr_test.cc | 25 | ||||
| -rw-r--r-- | tests/tracked_ptr_leak/CMakeLists.txt | 23 | ||||
| -rw-r--r-- | tests/tracked_ptr_leak/tracked_ptr_test.cc | 19 |
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 |
