1
0

refactor: rename testbench to test.

- rename testbench to test.
- add benchmark for future development.
This commit is contained in:
2025-09-29 13:34:02 +08:00
parent 82c3ed5b32
commit e7a05b3488
44 changed files with 55 additions and 19 deletions

View File

@ -10,7 +10,8 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF)
# Provide options # Provide options
option(YYCC_BUILD_TESTBENCH "Build testbench of YYCCommonplace." OFF) option(YYCC_BUILD_TEST "Build test of YYCCommonplace." OFF)
option(YYCC_BUILD_BENCHMARK "Build benchmark of YYCCommonplace." OFF)
option(YYCC_BUILD_DOC "Build document of YYCCommonplace." OFF) option(YYCC_BUILD_DOC "Build document of YYCCommonplace." OFF)
option(YYCC_ENFORCE_ICONV "Enforce iconv support for this library (e.g. in MSYS2 environment)." OFF) option(YYCC_ENFORCE_ICONV "Enforce iconv support for this library (e.g. in MSYS2 environment)." OFF)
@ -26,21 +27,28 @@ set(YYCC_INSTALL_DOC_PATH ${CMAKE_INSTALL_DOCDIR} CACHE PATH
"Non-arch doc install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.") "Non-arch doc install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
# Include dependency. # Include dependency.
# GTest is required if we build testbench # GTest is required if we build test
if (YYCC_BUILD_TESTBENCH) if (YYCC_BUILD_TEST)
# For Windows: Prevent overriding the parent project's compiler/linker settings # For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
find_package(GTest REQUIRED) find_package(GTest REQUIRED)
endif () endif ()
# Google Benchmark is required if we build benchmark
if (YYCC_BUILD_BENCHMARK)
find_package(benchmark REQUIRED)
endif ()
# Iconv is required if we are not in Windows or user request it # Iconv is required if we are not in Windows or user request it
if (YYCC_ENFORCE_ICONV OR (NOT WIN32)) if (YYCC_ENFORCE_ICONV OR (NOT WIN32))
find_package(Iconv REQUIRED) find_package(Iconv REQUIRED)
endif () endif ()
# Import 3 build targets # Import 4 build targets
add_subdirectory(src) add_subdirectory(src)
if (YYCC_BUILD_TESTBENCH) if (YYCC_BUILD_TEST)
add_subdirectory(testbench) add_subdirectory(test)
endif ()
if (YYCC_BUILD_BENCHMARK)
add_subdirectory(benchmark)
endif () endif ()
if (YYCC_BUILD_DOC) if (YYCC_BUILD_DOC)
add_subdirectory(doc) add_subdirectory(doc)

View File

@ -11,7 +11,7 @@ It means that it is not stable and work in progress.
* CMake 3.23 at least. * CMake 3.23 at least.
* The common compiler supporting C++ 23 (GCC / Clang / MSVC). * The common compiler supporting C++ 23 (GCC / Clang / MSVC).
* Iconv (Optional on Windows. Required on other systems). * Iconv (Optional on Windows. Required on other systems).
* [GoogleTest](https://github.com/google/googletest) (Required if you build testbench). * [GoogleTest](https://github.com/google/googletest) (Required if you build test).
* Doxygen (Required if you build documentation). * Doxygen (Required if you build documentation).
* Python and Astral UV (Required if you use "User Build" method) * Python and Astral UV (Required if you use "User Build" method)
@ -24,7 +24,7 @@ It means that it is not stable and work in progress.
### GoogleTest ### GoogleTest
GoogleTest is required if you need to build testbench. GoogleTest is required if you need to build test.
If you don't need this please skip this chapter. If you don't need this please skip this chapter.
We use GoogleTest v1.17.0. We use GoogleTest v1.17.0.
@ -89,7 +89,7 @@ TODO...
There is a list listing all variables you may configure during compiling. There is a list listing all variables you may configure during compiling.
* `YYCC_BUILD_TESTBENCH`: Set it to `ON` to build testbench. `OFF` in default. * `YYCC_BUILD_TEST`: Set it to `ON` to build test. `OFF` in default.
It is useful for the developer of this project. It is useful for the developer of this project.
It also suit for the user who has runtime issues on their platforms to check whether this project works as expected. It also suit for the user who has runtime issues on their platforms to check whether this project works as expected.
* `YYCC_BUILD_DOC`: Set it to `ON` to build documentation. `OFF` in default. * `YYCC_BUILD_DOC`: Set it to `ON` to build documentation. `OFF` in default.

24
benchmark/CMakeLists.txt Normal file
View File

@ -0,0 +1,24 @@
# Create executable benchmark
add_executable(YYCCBenchmark "")
# Setup test sources
target_sources(YYCCBenchmark
PRIVATE
main.cpp
)
# target_sources(YYCCBenchmark
# PRIVATE
# FILE_SET HEADERS
# FILES
# shared/literals.hpp
# )
# Setup headers
target_include_directories(YYCCBenchmark
PUBLIC
"${CMAKE_CURRENT_LIST_DIR}"
)
# Setup libraries
target_link_libraries(YYCCBenchmark
PRIVATE
YYCCommonplace
benchmark::benchmark
)

4
benchmark/main.cpp Normal file
View File

@ -0,0 +1,4 @@
int main(int argc, char* argv[]) {
return 0;
}

View File

@ -1031,7 +1031,7 @@ EXCLUDE_SYMBOLS =
# that contain example code fragments that are included (see the \include # that contain example code fragments that are included (see the \include
# command). # command).
EXAMPLE_PATH = @CMAKE_CURRENT_LIST_DIR@/../testbench EXAMPLE_PATH = @CMAKE_CURRENT_LIST_DIR@/../test
# If the value of the EXAMPLE_PATH tag contains directories, you can use the # If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and

View File

@ -21,7 +21,7 @@ public:
m_StringArgument(YYCC_U8("string"), YYCC::ArgParser::AbstractArgument::NO_SHORT_NAME, nullptr, nullptr, true), m_StringArgument(YYCC_U8("string"), YYCC::ArgParser::AbstractArgument::NO_SHORT_NAME, nullptr, nullptr, true),
m_BoolArgument(nullptr, YYCC_U8_CHAR('b'), nullptr), m_BoolArgument(nullptr, YYCC_U8_CHAR('b'), nullptr),
m_ClampedFloatArgument(YYCC_U8("clamped-float"), YYCC::ArgParser::AbstractArgument::NO_SHORT_NAME, nullptr, nullptr, true, YYCC::Constraints::GetMinMaxRangeConstraint<float>(-1.0f, 1.0f)), m_ClampedFloatArgument(YYCC_U8("clamped-float"), YYCC::ArgParser::AbstractArgument::NO_SHORT_NAME, nullptr, nullptr, true, YYCC::Constraints::GetMinMaxRangeConstraint<float>(-1.0f, 1.0f)),
m_OptionContext(YYCC_U8("TestArgParser"), YYCC_U8("This is the testbench of argument parser."), { m_OptionContext(YYCC_U8("TestArgParser"), YYCC_U8("This is the test of argument parser."), {
&m_IntArgument, &m_FloatArgument, &m_StringArgument, &m_IntArgument, &m_FloatArgument, &m_StringArgument,
&m_BoolArgument, &m_ClampedFloatArgument &m_BoolArgument, &m_ClampedFloatArgument
}) {} }) {}

View File

@ -1,7 +1,7 @@
# Create executable testbench # Create executable test
add_executable(YYCCTestbench "") add_executable(YYCCTest "")
# Setup testbench sources # Setup test sources
target_sources(YYCCTestbench target_sources(YYCCTest
PRIVATE PRIVATE
main.cpp main.cpp
@ -42,19 +42,19 @@ PRIVATE
yycc/carton/tabulate.cpp yycc/carton/tabulate.cpp
yycc/carton/clap.cpp yycc/carton/clap.cpp
) )
target_sources(YYCCTestbench target_sources(YYCCTest
PRIVATE PRIVATE
FILE_SET HEADERS FILE_SET HEADERS
FILES FILES
shared/literals.hpp shared/literals.hpp
) )
# Setup headers # Setup headers
target_include_directories(YYCCTestbench target_include_directories(YYCCTest
PUBLIC PUBLIC
"${CMAKE_CURRENT_LIST_DIR}" "${CMAKE_CURRENT_LIST_DIR}"
) )
# Setup libraries # Setup libraries
target_link_libraries(YYCCTestbench target_link_libraries(YYCCTest
PRIVATE PRIVATE
YYCCommonplace YYCCommonplace
GTest::gtest_main GTest::gtest_main
@ -62,4 +62,4 @@ PRIVATE
# Discover all test # Discover all test
include(GoogleTest) include(GoogleTest)
gtest_discover_tests(YYCCTestbench) gtest_discover_tests(YYCCTest)