mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-09 09:39:39 +00:00
Meta: Build AK and LibRegex tests in Lagom and for Serenity
These tests were never built for the serenity target. Move their Lagom build steps to the Lagom CMakeLists.txt, and add serenity build steps for them. Also, fix the build errors when building them with the serenity cross-compiler :^)
This commit is contained in:
parent
860a3bbce3
commit
e787738c24
Notes:
sideshowbarker
2024-07-18 21:51:33 +09:00
Author: https://github.com/ADKaster
Commit: e787738c24
Pull-request: https://github.com/SerenityOS/serenity/pull/4921
Reviewed-by: https://github.com/alimpfard
Reviewed-by: https://github.com/awesomekling
Reviewed-by: https://github.com/linusg
10 changed files with 268 additions and 259 deletions
|
@ -1,3 +1,5 @@
|
||||||
include(${CMAKE_SOURCE_DIR}/Meta/CMake/utils.cmake)
|
include(${CMAKE_SOURCE_DIR}/Meta/CMake/utils.cmake)
|
||||||
serenity_install_headers(AK)
|
serenity_install_headers(AK)
|
||||||
serenity_install_sources(AK)
|
serenity_install_sources(AK)
|
||||||
|
|
||||||
|
add_subdirectory(Tests)
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
|
||||||
|
|
||||||
set(AK_TEST_SOURCES
|
set(AK_TEST_SOURCES
|
||||||
TestAllOf.cpp
|
TestAllOf.cpp
|
||||||
TestAnyOf.cpp
|
TestAnyOf.cpp
|
||||||
|
@ -51,17 +53,6 @@ set(AK_TEST_SOURCES
|
||||||
foreach(source ${AK_TEST_SOURCES})
|
foreach(source ${AK_TEST_SOURCES})
|
||||||
get_filename_component(name ${source} NAME_WE)
|
get_filename_component(name ${source} NAME_WE)
|
||||||
add_executable(${name} ${source})
|
add_executable(${name} ${source})
|
||||||
target_link_libraries(${name} LagomCore)
|
target_link_libraries(${name} LibCore)
|
||||||
add_test(
|
install(TARGETS ${name} RUNTIME DESTINATION usr/Tests/AK)
|
||||||
NAME ${name}
|
|
||||||
COMMAND ${name}
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
set_tests_properties(
|
|
||||||
${name}
|
|
||||||
PROPERTIES
|
|
||||||
FAIL_REGULAR_EXPRESSION
|
|
||||||
"FAIL"
|
|
||||||
)
|
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
|
@ -41,7 +41,7 @@ TEST_CASE(works_like_a_queue)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t idx = 0; idx < capacity; ++idx) {
|
for (size_t idx = 0; idx < capacity; ++idx) {
|
||||||
u8 byte;
|
u8 byte = 0;
|
||||||
stream >> byte;
|
stream >> byte;
|
||||||
|
|
||||||
EXPECT_EQ(queue.dequeue(), byte);
|
EXPECT_EQ(queue.dequeue(), byte);
|
||||||
|
@ -70,7 +70,7 @@ TEST_CASE(overwritting_is_well_defined)
|
||||||
stream << static_cast<u8>(idx % 256);
|
stream << static_cast<u8>(idx % 256);
|
||||||
|
|
||||||
for (size_t idx = 0; idx < capacity; ++idx) {
|
for (size_t idx = 0; idx < capacity; ++idx) {
|
||||||
u8 byte;
|
u8 byte = 0;
|
||||||
stream >> byte;
|
stream >> byte;
|
||||||
|
|
||||||
if (idx < half_capacity)
|
if (idx < half_capacity)
|
||||||
|
|
|
@ -101,7 +101,7 @@ TEST_CASE(seeking_slicing_offset)
|
||||||
const Array<u8, 4> expected1 { 4, 5, 6, 7 };
|
const Array<u8, 4> expected1 { 4, 5, 6, 7 };
|
||||||
const Array<u8, 4> expected2 { 1, 2, 3, 4 };
|
const Array<u8, 4> expected2 { 1, 2, 3, 4 };
|
||||||
|
|
||||||
Array<u8, 4> actual0, actual1, actual2;
|
Array<u8, 4> actual0 {}, actual1 {}, actual2 {};
|
||||||
|
|
||||||
InputMemoryStream stream { input };
|
InputMemoryStream stream { input };
|
||||||
|
|
||||||
|
|
|
@ -129,35 +129,22 @@ TEST_CASE(extremes_4byte)
|
||||||
EXPECT_EQ(human_readable_size(0xffffffff), "3.9 GiB");
|
EXPECT_EQ(human_readable_size(0xffffffff), "3.9 GiB");
|
||||||
}
|
}
|
||||||
|
|
||||||
template<int>
|
|
||||||
void actual_extremes_8byte();
|
|
||||||
|
|
||||||
template<>
|
|
||||||
void actual_extremes_8byte<4>()
|
|
||||||
{
|
|
||||||
warnln("(Skipping 8-byte-size_t test)");
|
|
||||||
}
|
|
||||||
|
|
||||||
template<>
|
|
||||||
void actual_extremes_8byte<8>()
|
|
||||||
{
|
|
||||||
warnln("(Running true 8-byte-size_t test)");
|
|
||||||
// Your editor might show "implicit conversion" warnings here.
|
|
||||||
// This is because your editor thinks the world is 32-bit, but it isn't.
|
|
||||||
EXPECT_EQ(human_readable_size(0x100000000ULL), "4.0 GiB");
|
|
||||||
EXPECT_EQ(human_readable_size(0x100000001ULL), "4.0 GiB");
|
|
||||||
EXPECT_EQ(human_readable_size(0x800000000ULL), "32.0 GiB");
|
|
||||||
EXPECT_EQ(human_readable_size(0x10000000000ULL), "1024.0 GiB");
|
|
||||||
|
|
||||||
// Oh yeah! These are *correct*!
|
|
||||||
EXPECT_EQ(human_readable_size(0x7fffffffffffffffULL), "8589934591.9 GiB");
|
|
||||||
EXPECT_EQ(human_readable_size(0x8000000000000000ULL), "8589934592.0 GiB");
|
|
||||||
EXPECT_EQ(human_readable_size(0xffffffffffffffffULL), "17179869183.9 GiB");
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_CASE(extremes_8byte)
|
TEST_CASE(extremes_8byte)
|
||||||
{
|
{
|
||||||
actual_extremes_8byte<sizeof(size_t)>();
|
if constexpr (sizeof(size_t) == 8) {
|
||||||
|
warnln("(Running 8-byte-size_t test)");
|
||||||
|
EXPECT_EQ(human_readable_size(0x100000000ULL), "4.0 GiB");
|
||||||
|
EXPECT_EQ(human_readable_size(0x100000001ULL), "4.0 GiB");
|
||||||
|
EXPECT_EQ(human_readable_size(0x800000000ULL), "32.0 GiB");
|
||||||
|
EXPECT_EQ(human_readable_size(0x10000000000ULL), "1024.0 GiB");
|
||||||
|
|
||||||
|
// Oh yeah! These are *correct*!
|
||||||
|
EXPECT_EQ(human_readable_size(0x7fffffffffffffffULL), "8589934591.9 GiB");
|
||||||
|
EXPECT_EQ(human_readable_size(0x8000000000000000ULL), "8589934592.0 GiB");
|
||||||
|
EXPECT_EQ(human_readable_size(0xffffffffffffffffULL), "17179869183.9 GiB");
|
||||||
|
} else {
|
||||||
|
warnln("(Skipping 8-byte-size_t test on 32-bit platform)");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_MAIN(NumberFormat)
|
TEST_MAIN(NumberFormat)
|
||||||
|
|
|
@ -99,8 +99,6 @@ include_directories(${CMAKE_BINARY_DIR})
|
||||||
add_subdirectory(Meta/Lagom)
|
add_subdirectory(Meta/Lagom)
|
||||||
add_subdirectory(Userland/DevTools/IPCCompiler)
|
add_subdirectory(Userland/DevTools/IPCCompiler)
|
||||||
add_subdirectory(Userland/Libraries/LibWeb/CodeGenerators)
|
add_subdirectory(Userland/Libraries/LibWeb/CodeGenerators)
|
||||||
add_subdirectory(AK/Tests)
|
|
||||||
add_subdirectory(Userland/Libraries/LibRegex/Tests)
|
|
||||||
|
|
||||||
set(write_if_different ${CMAKE_SOURCE_DIR}/Meta/write-only-on-difference.sh)
|
set(write_if_different ${CMAKE_SOURCE_DIR}/Meta/write-only-on-difference.sh)
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 3.0)
|
||||||
project (Lagom)
|
project (Lagom)
|
||||||
|
|
||||||
if (NOT ENABLE_OSS_FUZZ)
|
if (NOT ENABLE_OSS_FUZZ)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option -O2 -Wall -Wextra -Werror -std=c++2a -fPIC -g -Wno-deprecated-copy")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option -Wno-literal-suffix -O2 -Wall -Wextra -Werror -std=c++2a -fPIC -g -Wno-deprecated-copy")
|
||||||
else()
|
else()
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++2a -fPIC -g -Wno-deprecated-copy")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++2a -fPIC -g -Wno-deprecated-copy")
|
||||||
endif()
|
endif()
|
||||||
|
@ -42,8 +42,10 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(GLOB AK_SOURCES CONFIGURE_DEPENDS "../../AK/*.cpp")
|
file(GLOB AK_SOURCES CONFIGURE_DEPENDS "../../AK/*.cpp")
|
||||||
|
file(GLOB AK_TEST_SOURCES CONFIGURE_DEPENDS "../../AK/Tests/*.cpp")
|
||||||
file(GLOB LIBREGEX_LIBC_SOURCES "../../Userland/Libraries/LibRegex/C/Regex.cpp")
|
file(GLOB LIBREGEX_LIBC_SOURCES "../../Userland/Libraries/LibRegex/C/Regex.cpp")
|
||||||
file(GLOB LIBREGEX_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibRegex/*.cpp")
|
file(GLOB LIBREGEX_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibRegex/*.cpp")
|
||||||
|
file(GLOB LIBREGEX_TESTS CONFIGURE_DEPENDS "../../Userland/Libraries/LibRegex/Tests/*.cpp")
|
||||||
file(GLOB LIBCORE_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibCore/*.cpp")
|
file(GLOB LIBCORE_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibCore/*.cpp")
|
||||||
file(GLOB LIBELF_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibELF/*.cpp")
|
file(GLOB LIBELF_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibELF/*.cpp")
|
||||||
# There's no way we can reliably make this cross platform
|
# There's no way we can reliably make this cross platform
|
||||||
|
@ -89,6 +91,7 @@ if (BUILD_LAGOM)
|
||||||
add_library(Lagom $<TARGET_OBJECTS:LagomCore> ${LAGOM_MORE_SOURCES})
|
add_library(Lagom $<TARGET_OBJECTS:LagomCore> ${LAGOM_MORE_SOURCES})
|
||||||
|
|
||||||
if (NOT ENABLE_OSS_FUZZ AND NOT ENABLE_FUZZER_SANITIZER)
|
if (NOT ENABLE_OSS_FUZZ AND NOT ENABLE_FUZZER_SANITIZER)
|
||||||
|
enable_testing()
|
||||||
add_executable(TestApp TestApp.cpp)
|
add_executable(TestApp TestApp.cpp)
|
||||||
target_link_libraries(TestApp Lagom)
|
target_link_libraries(TestApp Lagom)
|
||||||
target_link_libraries(TestApp stdc++)
|
target_link_libraries(TestApp stdc++)
|
||||||
|
@ -161,6 +164,43 @@ if (BUILD_LAGOM)
|
||||||
PASS_REGULAR_EXPRESSION "PASS"
|
PASS_REGULAR_EXPRESSION "PASS"
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
foreach(source ${AK_TEST_SOURCES})
|
||||||
|
get_filename_component(name ${source} NAME_WE)
|
||||||
|
add_executable(${name}_lagom ${source})
|
||||||
|
target_link_libraries(${name}_lagom LagomCore)
|
||||||
|
add_test(
|
||||||
|
NAME ${name}_lagom
|
||||||
|
COMMAND ${name}_lagom
|
||||||
|
# FIXME: Only TestJSON needs this property
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../AK/Tests
|
||||||
|
)
|
||||||
|
|
||||||
|
set_tests_properties(
|
||||||
|
${name}_lagom
|
||||||
|
PROPERTIES
|
||||||
|
FAIL_REGULAR_EXPRESSION
|
||||||
|
"FAIL"
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
foreach(source ${LIBREGEX_TESTS})
|
||||||
|
get_filename_component(name ${source} NAME_WE)
|
||||||
|
add_executable(${name}_lagom ${source} ${LAGOM_REGEX_SOURCES})
|
||||||
|
target_link_libraries(${name}_lagom LagomCore)
|
||||||
|
add_test(
|
||||||
|
NAME ${name}_lagom
|
||||||
|
COMMAND ${name}_lagom
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
set_tests_properties(
|
||||||
|
${name}_lagom
|
||||||
|
PROPERTIES
|
||||||
|
FAIL_REGULAR_EXPRESSION
|
||||||
|
"FAIL"
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -8,3 +8,5 @@ set(SOURCES
|
||||||
|
|
||||||
serenity_lib(LibRegex regex)
|
serenity_lib(LibRegex regex)
|
||||||
target_link_libraries(LibRegex LibC LibCore)
|
target_link_libraries(LibRegex LibC LibCore)
|
||||||
|
|
||||||
|
add_subdirectory(Tests)
|
||||||
|
|
|
@ -4,17 +4,6 @@ file(GLOB REGEX_SOURCES CONFIGURE_DEPENDS "../*.cpp" "../C/*.cpp")
|
||||||
foreach(source ${TEST_SOURCES})
|
foreach(source ${TEST_SOURCES})
|
||||||
get_filename_component(name ${source} NAME_WE)
|
get_filename_component(name ${source} NAME_WE)
|
||||||
add_executable(${name} ${source} ${REGEX_SOURCES})
|
add_executable(${name} ${source} ${REGEX_SOURCES})
|
||||||
target_link_libraries(${name} LagomCore)
|
target_link_libraries(${name} LibCore)
|
||||||
add_test(
|
install(TARGETS ${name} RUNTIME DESTINATION usr/Tests/LibRegex)
|
||||||
NAME ${name}
|
|
||||||
COMMAND ${name}
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
set_tests_properties(
|
|
||||||
${name}
|
|
||||||
PROPERTIES
|
|
||||||
FAIL_REGULAR_EXPRESSION
|
|
||||||
"FAIL"
|
|
||||||
)
|
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
|
@ -163,26 +163,26 @@ TEST_CASE(simple_questionmark_matchall)
|
||||||
|
|
||||||
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
||||||
EXPECT_EQ(regexec(®ex, "a", num_matches, matches, REG_GLOBAL), REG_NOMATCH);
|
EXPECT_EQ(regexec(®ex, "a", num_matches, matches, REG_GLOBAL), REG_NOMATCH);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 0u);
|
EXPECT_EQ(matches[0].rm_cnt, 0);
|
||||||
EXPECT_EQ(regexec(®ex, "daa", num_matches, matches, REG_GLOBAL), REG_NOMATCH);
|
EXPECT_EQ(regexec(®ex, "daa", num_matches, matches, REG_GLOBAL), REG_NOMATCH);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 0u);
|
EXPECT_EQ(matches[0].rm_cnt, 0);
|
||||||
|
|
||||||
EXPECT_EQ(regexec(®ex, "ddddd", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "ddddd", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 2u);
|
EXPECT_EQ(matches[0].rm_cnt, 2);
|
||||||
|
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 2u);
|
EXPECT_EQ(matches[0].rm_eo, 2);
|
||||||
EXPECT_EQ(matches[1].rm_so, 2u);
|
EXPECT_EQ(matches[1].rm_so, 2);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 4u);
|
EXPECT_EQ(matches[1].rm_eo, 4);
|
||||||
|
|
||||||
EXPECT_EQ(regexec(®ex, "dd", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "dd", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(regexec(®ex, "dad", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "dad", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(regexec(®ex, "dada", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "dada", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(regexec(®ex, "adadaa", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "adadaa", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
|
|
||||||
regfree(®ex);
|
regfree(®ex);
|
||||||
}
|
}
|
||||||
|
@ -197,9 +197,9 @@ TEST_CASE(character_class)
|
||||||
String haystack = "[Window]\nOpacity=255\nAudibleBeep=0\n";
|
String haystack = "[Window]\nOpacity=255\nAudibleBeep=0\n";
|
||||||
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
||||||
EXPECT_EQ(regexec(®ex, haystack.characters(), num_matches, matches, 0), REG_NOMATCH);
|
EXPECT_EQ(regexec(®ex, haystack.characters(), num_matches, matches, 0), REG_NOMATCH);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 0u);
|
EXPECT_EQ(matches[0].rm_cnt, 0);
|
||||||
EXPECT_EQ(regexec(®ex, haystack.characters(), num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, haystack.characters(), num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 24u);
|
EXPECT_EQ(matches[0].rm_cnt, 24);
|
||||||
EXPECT_EQ(haystack.substring_view(matches[0].rm_so, matches[0].rm_eo - matches[0].rm_so), "W");
|
EXPECT_EQ(haystack.substring_view(matches[0].rm_so, matches[0].rm_eo - matches[0].rm_so), "W");
|
||||||
EXPECT_EQ(haystack.substring_view(matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so), "i");
|
EXPECT_EQ(haystack.substring_view(matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so), "i");
|
||||||
|
|
||||||
|
@ -217,7 +217,7 @@ TEST_CASE(character_class2)
|
||||||
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED | REG_NEWLINE), REG_NOERR);
|
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED | REG_NEWLINE), REG_NOERR);
|
||||||
EXPECT_EQ(regexec(®ex, haystack.characters(), num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, haystack.characters(), num_matches, matches, 0), REG_NOERR);
|
||||||
|
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 3u);
|
EXPECT_EQ(matches[0].rm_cnt, 3);
|
||||||
#if 0
|
#if 0
|
||||||
for (int i = 0; i < num_matches; ++i) {
|
for (int i = 0; i < num_matches; ++i) {
|
||||||
fprintf(stderr, "Matches[%i].rm_so: %li, .rm_eo: %li .rm_cnt: %li: ", i, matches[i].rm_so, matches[i].rm_eo, matches[i].rm_cnt);
|
fprintf(stderr, "Matches[%i].rm_so: %li, .rm_eo: %li .rm_cnt: %li: ", i, matches[i].rm_so, matches[i].rm_eo, matches[i].rm_cnt);
|
||||||
|
@ -275,7 +275,7 @@ TEST_CASE(char_qualifier_asterisk)
|
||||||
|
|
||||||
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
||||||
EXPECT_EQ(regexec(®ex, "#include <regex.h>", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "#include <regex.h>", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
|
|
||||||
regfree(®ex);
|
regfree(®ex);
|
||||||
}
|
}
|
||||||
|
@ -289,7 +289,7 @@ TEST_CASE(char_utf8)
|
||||||
|
|
||||||
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
||||||
EXPECT_EQ(regexec(®ex, "Привет, мир! 😀 γειά σου κόσμος 😀 こんにちは世界", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "Привет, мир! 😀 γειά σου κόσμος 😀 こんにちは世界", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 2u);
|
EXPECT_EQ(matches[0].rm_cnt, 2);
|
||||||
|
|
||||||
regfree(®ex);
|
regfree(®ex);
|
||||||
}
|
}
|
||||||
|
@ -304,12 +304,12 @@ TEST_CASE(parens)
|
||||||
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
||||||
|
|
||||||
EXPECT_EQ(regexec(®ex, "testhellotest", num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "testhellotest", num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
|
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 13u);
|
EXPECT_EQ(matches[0].rm_eo, 13);
|
||||||
EXPECT_EQ(matches[1].rm_so, 4u);
|
EXPECT_EQ(matches[1].rm_so, 4);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 9u);
|
EXPECT_EQ(matches[1].rm_eo, 9);
|
||||||
|
|
||||||
regfree(®ex);
|
regfree(®ex);
|
||||||
}
|
}
|
||||||
|
@ -427,18 +427,18 @@ TEST_CASE(parens_qualifier_questionmark)
|
||||||
|
|
||||||
match_str = "testtest";
|
match_str = "testtest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 8u);
|
EXPECT_EQ(matches[0].rm_eo, 8);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testtest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testtest");
|
||||||
|
|
||||||
match_str = "testhellotest";
|
match_str = "testhellotest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 13u);
|
EXPECT_EQ(matches[0].rm_eo, 13);
|
||||||
EXPECT_EQ(matches[1].rm_so, 4u);
|
EXPECT_EQ(matches[1].rm_so, 4);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 9u);
|
EXPECT_EQ(matches[1].rm_eo, 9);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testhellotest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testhellotest");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
|
@ -457,32 +457,32 @@ TEST_CASE(parens_qualifier_asterisk)
|
||||||
|
|
||||||
match_str = "testtest";
|
match_str = "testtest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 8u);
|
EXPECT_EQ(matches[0].rm_eo, 8);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testtest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testtest");
|
||||||
|
|
||||||
match_str = "testhellohellotest";
|
match_str = "testhellohellotest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 18u);
|
EXPECT_EQ(matches[0].rm_eo, 18);
|
||||||
EXPECT_EQ(matches[1].rm_so, 9u);
|
EXPECT_EQ(matches[1].rm_so, 9);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 14u);
|
EXPECT_EQ(matches[1].rm_eo, 14);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testhellohellotest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testhellohellotest");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
match_str = "testhellohellotest, testhellotest";
|
match_str = "testhellohellotest, testhellotest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 2u);
|
EXPECT_EQ(matches[0].rm_cnt, 2);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 18u);
|
EXPECT_EQ(matches[0].rm_eo, 18);
|
||||||
EXPECT_EQ(matches[1].rm_so, 9u);
|
EXPECT_EQ(matches[1].rm_so, 9);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 14u);
|
EXPECT_EQ(matches[1].rm_eo, 14);
|
||||||
EXPECT_EQ(matches[2].rm_so, 20u);
|
EXPECT_EQ(matches[2].rm_so, 20);
|
||||||
EXPECT_EQ(matches[2].rm_eo, 33u);
|
EXPECT_EQ(matches[2].rm_eo, 33);
|
||||||
EXPECT_EQ(matches[3].rm_so, 24u);
|
EXPECT_EQ(matches[3].rm_so, 24);
|
||||||
EXPECT_EQ(matches[3].rm_eo, 29u);
|
EXPECT_EQ(matches[3].rm_eo, 29);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testhellohellotest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testhellohellotest");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "testhellotest");
|
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "testhellotest");
|
||||||
|
@ -503,31 +503,31 @@ TEST_CASE(parens_qualifier_asterisk_2)
|
||||||
|
|
||||||
match_str = "testasdftest";
|
match_str = "testasdftest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 12u);
|
EXPECT_EQ(matches[0].rm_eo, 12);
|
||||||
EXPECT_EQ(matches[1].rm_so, 4u);
|
EXPECT_EQ(matches[1].rm_so, 4);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 8u);
|
EXPECT_EQ(matches[1].rm_eo, 8);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testasdftest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testasdftest");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "asdf");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "asdf");
|
||||||
|
|
||||||
match_str = "testasdfasdftest";
|
match_str = "testasdfasdftest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 16u);
|
EXPECT_EQ(matches[0].rm_eo, 16);
|
||||||
EXPECT_EQ(matches[1].rm_so, 4u);
|
EXPECT_EQ(matches[1].rm_so, 4);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 12u);
|
EXPECT_EQ(matches[1].rm_eo, 12);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testasdfasdftest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testasdfasdftest");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "asdfasdf");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "asdfasdf");
|
||||||
|
|
||||||
match_str = "testaaaatest, testbbbtest, testtest";
|
match_str = "testaaaatest, testbbbtest, testtest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 35u);
|
EXPECT_EQ(matches[0].rm_eo, 35);
|
||||||
EXPECT_EQ(matches[1].rm_so, 4u);
|
EXPECT_EQ(matches[1].rm_so, 4);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 31u);
|
EXPECT_EQ(matches[1].rm_eo, 31);
|
||||||
|
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testaaaatest, testbbbtest, testtest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testaaaatest, testbbbtest, testtest");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "aaaatest, testbbbtest, test");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "aaaatest, testbbbtest, test");
|
||||||
|
@ -549,52 +549,52 @@ TEST_CASE(mulit_parens_qualifier_too_less_result_values)
|
||||||
|
|
||||||
match_str = "testabtest";
|
match_str = "testabtest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches - 1, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches - 1, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 10u);
|
EXPECT_EQ(matches[0].rm_eo, 10);
|
||||||
EXPECT_EQ(matches[1].rm_so, 4u);
|
EXPECT_EQ(matches[1].rm_so, 4);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 5u);
|
EXPECT_EQ(matches[1].rm_eo, 5);
|
||||||
EXPECT_EQ(matches[2].rm_so, 5u);
|
EXPECT_EQ(matches[2].rm_so, 5);
|
||||||
EXPECT_EQ(matches[2].rm_eo, 6u);
|
EXPECT_EQ(matches[2].rm_eo, 6);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testabtest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testabtest");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "a");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "a");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "b");
|
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "b");
|
||||||
EXPECT_EQ(matches[3].rm_so, -2);
|
EXPECT_EQ(matches[3].rm_so, -2);
|
||||||
EXPECT_EQ(matches[3].rm_eo, -2);
|
EXPECT_EQ(matches[3].rm_eo, -2);
|
||||||
EXPECT_EQ(matches[3].rm_cnt, 100u);
|
EXPECT_EQ(matches[3].rm_cnt, 100);
|
||||||
|
|
||||||
match_str = "testabctest";
|
match_str = "testabctest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches - 1, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches - 1, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 11u);
|
EXPECT_EQ(matches[0].rm_eo, 11);
|
||||||
EXPECT_EQ(matches[1].rm_so, 4u);
|
EXPECT_EQ(matches[1].rm_so, 4);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 5u);
|
EXPECT_EQ(matches[1].rm_eo, 5);
|
||||||
EXPECT_EQ(matches[2].rm_so, 5u);
|
EXPECT_EQ(matches[2].rm_so, 5);
|
||||||
EXPECT_EQ(matches[2].rm_eo, 6u);
|
EXPECT_EQ(matches[2].rm_eo, 6);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testabctest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testabctest");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "a");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "a");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "b");
|
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "b");
|
||||||
EXPECT_EQ(matches[3].rm_so, -2);
|
EXPECT_EQ(matches[3].rm_so, -2);
|
||||||
EXPECT_EQ(matches[3].rm_eo, -2);
|
EXPECT_EQ(matches[3].rm_eo, -2);
|
||||||
EXPECT_EQ(matches[3].rm_cnt, 100u);
|
EXPECT_EQ(matches[3].rm_cnt, 100);
|
||||||
|
|
||||||
match_str = "testabctest, testabctest";
|
match_str = "testabctest, testabctest";
|
||||||
|
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches - 1, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches - 1, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 2u);
|
EXPECT_EQ(matches[0].rm_cnt, 2);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 11u);
|
EXPECT_EQ(matches[0].rm_eo, 11);
|
||||||
EXPECT_EQ(matches[1].rm_so, 4u);
|
EXPECT_EQ(matches[1].rm_so, 4);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 5u);
|
EXPECT_EQ(matches[1].rm_eo, 5);
|
||||||
EXPECT_EQ(matches[2].rm_so, 5u);
|
EXPECT_EQ(matches[2].rm_so, 5);
|
||||||
EXPECT_EQ(matches[2].rm_eo, 6u);
|
EXPECT_EQ(matches[2].rm_eo, 6);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testabctest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testabctest");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "a");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "a");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "b");
|
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "b");
|
||||||
EXPECT_EQ(matches[3].rm_so, -2);
|
EXPECT_EQ(matches[3].rm_so, -2);
|
||||||
EXPECT_EQ(matches[3].rm_eo, -2);
|
EXPECT_EQ(matches[3].rm_eo, -2);
|
||||||
EXPECT_EQ(matches[3].rm_cnt, 100u);
|
EXPECT_EQ(matches[3].rm_cnt, 100);
|
||||||
|
|
||||||
regfree(®ex);
|
regfree(®ex);
|
||||||
}
|
}
|
||||||
|
@ -611,20 +611,20 @@ TEST_CASE(multi_parens_qualifier_questionmark)
|
||||||
|
|
||||||
match_str = "testtest";
|
match_str = "testtest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 8u);
|
EXPECT_EQ(matches[0].rm_eo, 8);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testtest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testtest");
|
||||||
|
|
||||||
match_str = "testabctest";
|
match_str = "testabctest";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 11u);
|
EXPECT_EQ(matches[0].rm_eo, 11);
|
||||||
EXPECT_EQ(matches[1].rm_so, 4u);
|
EXPECT_EQ(matches[1].rm_so, 4);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 5u);
|
EXPECT_EQ(matches[1].rm_eo, 5);
|
||||||
EXPECT_EQ(matches[2].rm_so, 5u);
|
EXPECT_EQ(matches[2].rm_so, 5);
|
||||||
EXPECT_EQ(matches[2].rm_eo, 6u);
|
EXPECT_EQ(matches[2].rm_eo, 6);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testabctest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testabctest");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "a");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "a");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "b");
|
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "b");
|
||||||
|
@ -632,24 +632,24 @@ TEST_CASE(multi_parens_qualifier_questionmark)
|
||||||
match_str = "testabctest, testactest";
|
match_str = "testabctest, testactest";
|
||||||
|
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 2u);
|
EXPECT_EQ(matches[0].rm_cnt, 2);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 11u);
|
EXPECT_EQ(matches[0].rm_eo, 11);
|
||||||
EXPECT_EQ(matches[1].rm_so, 4u);
|
EXPECT_EQ(matches[1].rm_so, 4);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 5u);
|
EXPECT_EQ(matches[1].rm_eo, 5);
|
||||||
EXPECT_EQ(matches[2].rm_so, 5u);
|
EXPECT_EQ(matches[2].rm_so, 5);
|
||||||
EXPECT_EQ(matches[2].rm_eo, 6u);
|
EXPECT_EQ(matches[2].rm_eo, 6);
|
||||||
EXPECT_EQ(matches[3].rm_so, 6u);
|
EXPECT_EQ(matches[3].rm_so, 6);
|
||||||
EXPECT_EQ(matches[3].rm_eo, 7u);
|
EXPECT_EQ(matches[3].rm_eo, 7);
|
||||||
|
|
||||||
EXPECT_EQ(matches[4].rm_so, 13u);
|
EXPECT_EQ(matches[4].rm_so, 13);
|
||||||
EXPECT_EQ(matches[4].rm_eo, 23u);
|
EXPECT_EQ(matches[4].rm_eo, 23);
|
||||||
EXPECT_EQ(matches[5].rm_so, 17u);
|
EXPECT_EQ(matches[5].rm_so, 17);
|
||||||
EXPECT_EQ(matches[5].rm_eo, 18u);
|
EXPECT_EQ(matches[5].rm_eo, 18);
|
||||||
EXPECT_EQ(matches[6].rm_so, -1);
|
EXPECT_EQ(matches[6].rm_so, -1);
|
||||||
EXPECT_EQ(matches[6].rm_eo, -1);
|
EXPECT_EQ(matches[6].rm_eo, -1);
|
||||||
EXPECT_EQ(matches[7].rm_so, 18u);
|
EXPECT_EQ(matches[7].rm_so, 18);
|
||||||
EXPECT_EQ(matches[7].rm_eo, 19u);
|
EXPECT_EQ(matches[7].rm_eo, 19);
|
||||||
|
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testabctest");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testabctest");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "a");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "a");
|
||||||
|
@ -673,19 +673,19 @@ TEST_CASE(simple_alternative)
|
||||||
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
EXPECT_EQ(regcomp(®ex, pattern.characters(), REG_EXTENDED), REG_NOERR);
|
||||||
|
|
||||||
EXPECT_EQ(regexec(®ex, "test", num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "test", num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 4u);
|
EXPECT_EQ(matches[0].rm_eo, 4);
|
||||||
|
|
||||||
EXPECT_EQ(regexec(®ex, "hello", num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "hello", num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 5u);
|
EXPECT_EQ(matches[0].rm_eo, 5);
|
||||||
|
|
||||||
EXPECT_EQ(regexec(®ex, "friends", num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "friends", num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 7u);
|
EXPECT_EQ(matches[0].rm_eo, 7);
|
||||||
|
|
||||||
regfree(®ex);
|
regfree(®ex);
|
||||||
}
|
}
|
||||||
|
@ -702,7 +702,7 @@ TEST_CASE(alternative_match_groups)
|
||||||
|
|
||||||
match_str = "test";
|
match_str = "test";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 4);
|
EXPECT_EQ(matches[0].rm_eo, 4);
|
||||||
EXPECT_EQ(matches[1].rm_so, -1);
|
EXPECT_EQ(matches[1].rm_so, -1);
|
||||||
|
@ -715,11 +715,11 @@ TEST_CASE(alternative_match_groups)
|
||||||
|
|
||||||
match_str = "testa";
|
match_str = "testa";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 5u);
|
EXPECT_EQ(matches[0].rm_eo, 5);
|
||||||
EXPECT_EQ(matches[1].rm_so, 4u);
|
EXPECT_EQ(matches[1].rm_so, 4);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 5u);
|
EXPECT_EQ(matches[1].rm_eo, 5);
|
||||||
EXPECT_EQ(matches[2].rm_so, -1);
|
EXPECT_EQ(matches[2].rm_so, -1);
|
||||||
EXPECT_EQ(matches[2].rm_eo, -1);
|
EXPECT_EQ(matches[2].rm_eo, -1);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testa");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testa");
|
||||||
|
@ -728,22 +728,22 @@ TEST_CASE(alternative_match_groups)
|
||||||
|
|
||||||
match_str = "testb";
|
match_str = "testb";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 5u);
|
EXPECT_EQ(matches[0].rm_eo, 5);
|
||||||
EXPECT_EQ(matches[1].rm_so, -1);
|
EXPECT_EQ(matches[1].rm_so, -1);
|
||||||
EXPECT_EQ(matches[1].rm_eo, -1);
|
EXPECT_EQ(matches[1].rm_eo, -1);
|
||||||
EXPECT_EQ(matches[2].rm_so, 4u);
|
EXPECT_EQ(matches[2].rm_so, 4);
|
||||||
EXPECT_EQ(matches[2].rm_eo, 5u);
|
EXPECT_EQ(matches[2].rm_eo, 5);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testb");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "testb");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "b");
|
EXPECT_EQ(StringView(&match_str[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so), "b");
|
||||||
|
|
||||||
match_str = "hello friends";
|
match_str = "hello friends";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 13u);
|
EXPECT_EQ(matches[0].rm_eo, 13);
|
||||||
EXPECT_EQ(matches[1].rm_so, -1);
|
EXPECT_EQ(matches[1].rm_so, -1);
|
||||||
EXPECT_EQ(matches[1].rm_eo, -1);
|
EXPECT_EQ(matches[1].rm_eo, -1);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hello friends");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hello friends");
|
||||||
|
@ -751,9 +751,9 @@ TEST_CASE(alternative_match_groups)
|
||||||
|
|
||||||
match_str = "hello dear friends";
|
match_str = "hello dear friends";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 18u);
|
EXPECT_EQ(matches[0].rm_eo, 18);
|
||||||
EXPECT_EQ(matches[1].rm_so, -1);
|
EXPECT_EQ(matches[1].rm_so, -1);
|
||||||
EXPECT_EQ(matches[1].rm_eo, -1);
|
EXPECT_EQ(matches[1].rm_eo, -1);
|
||||||
EXPECT_EQ(matches[2].rm_so, -1);
|
EXPECT_EQ(matches[2].rm_so, -1);
|
||||||
|
@ -767,9 +767,9 @@ TEST_CASE(alternative_match_groups)
|
||||||
|
|
||||||
match_str = "hello my friends";
|
match_str = "hello my friends";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 16u);
|
EXPECT_EQ(matches[0].rm_eo, 16);
|
||||||
EXPECT_EQ(matches[1].rm_so, -1);
|
EXPECT_EQ(matches[1].rm_so, -1);
|
||||||
EXPECT_EQ(matches[1].rm_eo, -1);
|
EXPECT_EQ(matches[1].rm_eo, -1);
|
||||||
EXPECT_EQ(matches[2].rm_so, -1);
|
EXPECT_EQ(matches[2].rm_so, -1);
|
||||||
|
@ -783,13 +783,13 @@ TEST_CASE(alternative_match_groups)
|
||||||
|
|
||||||
match_str = "testabc";
|
match_str = "testabc";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOMATCH);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOMATCH);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 0u);
|
EXPECT_EQ(matches[0].rm_cnt, 0);
|
||||||
EXPECT_EQ(matches[0].rm_so, -1);
|
EXPECT_EQ(matches[0].rm_so, -1);
|
||||||
EXPECT_EQ(matches[0].rm_eo, -1);
|
EXPECT_EQ(matches[0].rm_eo, -1);
|
||||||
|
|
||||||
match_str = "hello test friends";
|
match_str = "hello test friends";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOMATCH);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOMATCH);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 0u);
|
EXPECT_EQ(matches[0].rm_cnt, 0);
|
||||||
EXPECT_EQ(matches[0].rm_so, -1);
|
EXPECT_EQ(matches[0].rm_so, -1);
|
||||||
EXPECT_EQ(matches[0].rm_eo, -1);
|
EXPECT_EQ(matches[0].rm_eo, -1);
|
||||||
|
|
||||||
|
@ -808,35 +808,35 @@ TEST_CASE(parens_qualifier_exact)
|
||||||
|
|
||||||
match_str = "hello";
|
match_str = "hello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOMATCH);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOMATCH);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 0u);
|
EXPECT_EQ(matches[0].rm_cnt, 0);
|
||||||
|
|
||||||
match_str = "hellohellohello";
|
match_str = "hellohellohello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 15u);
|
EXPECT_EQ(matches[0].rm_eo, 15);
|
||||||
EXPECT_EQ(matches[1].rm_so, 10u);
|
EXPECT_EQ(matches[1].rm_so, 10);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 15u);
|
EXPECT_EQ(matches[1].rm_eo, 15);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
match_str = "hellohellohellohello";
|
match_str = "hellohellohellohello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 15u);
|
EXPECT_EQ(matches[0].rm_eo, 15);
|
||||||
EXPECT_EQ(matches[1].rm_so, 10u);
|
EXPECT_EQ(matches[1].rm_so, 10);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 15u);
|
EXPECT_EQ(matches[1].rm_eo, 15);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
match_str = "test hellohellohello";
|
match_str = "test hellohellohello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 5u);
|
EXPECT_EQ(matches[0].rm_so, 5);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 20u);
|
EXPECT_EQ(matches[0].rm_eo, 20);
|
||||||
EXPECT_EQ(matches[1].rm_so, 15u);
|
EXPECT_EQ(matches[1].rm_so, 15);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 20u);
|
EXPECT_EQ(matches[1].rm_eo, 20);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
|
@ -855,46 +855,46 @@ TEST_CASE(parens_qualifier_minimum)
|
||||||
|
|
||||||
match_str = "hello";
|
match_str = "hello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOMATCH);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOMATCH);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 0u);
|
EXPECT_EQ(matches[0].rm_cnt, 0);
|
||||||
|
|
||||||
match_str = "hellohellohello";
|
match_str = "hellohellohello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 15u);
|
EXPECT_EQ(matches[0].rm_eo, 15);
|
||||||
EXPECT_EQ(matches[1].rm_so, 10u);
|
EXPECT_EQ(matches[1].rm_so, 10);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 15u);
|
EXPECT_EQ(matches[1].rm_eo, 15);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
match_str = "hellohellohellohello";
|
match_str = "hellohellohellohello";
|
||||||
|
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_SEARCH), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_SEARCH), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 20u);
|
EXPECT_EQ(matches[0].rm_eo, 20);
|
||||||
EXPECT_EQ(matches[1].rm_so, 15u);
|
EXPECT_EQ(matches[1].rm_so, 15);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 20u);
|
EXPECT_EQ(matches[1].rm_eo, 20);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohellohello");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohellohello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
match_str = "test hellohellohello";
|
match_str = "test hellohellohello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 5u);
|
EXPECT_EQ(matches[0].rm_so, 5);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 20u);
|
EXPECT_EQ(matches[0].rm_eo, 20);
|
||||||
EXPECT_EQ(matches[1].rm_so, 15u);
|
EXPECT_EQ(matches[1].rm_so, 15);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 20u);
|
EXPECT_EQ(matches[1].rm_eo, 20);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
match_str = "test hellohellohellohello";
|
match_str = "test hellohellohellohello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 5u);
|
EXPECT_EQ(matches[0].rm_so, 5);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 25u);
|
EXPECT_EQ(matches[0].rm_eo, 25);
|
||||||
EXPECT_EQ(matches[1].rm_so, 20u);
|
EXPECT_EQ(matches[1].rm_so, 20);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 25u);
|
EXPECT_EQ(matches[1].rm_eo, 25);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohellohello");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohellohello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
|
@ -913,45 +913,45 @@ TEST_CASE(parens_qualifier_maximum)
|
||||||
|
|
||||||
match_str = "hello";
|
match_str = "hello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOMATCH);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOMATCH);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 0u);
|
EXPECT_EQ(matches[0].rm_cnt, 0);
|
||||||
|
|
||||||
match_str = "hellohellohello";
|
match_str = "hellohellohello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 15u);
|
EXPECT_EQ(matches[0].rm_eo, 15);
|
||||||
EXPECT_EQ(matches[1].rm_so, 10u);
|
EXPECT_EQ(matches[1].rm_so, 10);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 15u);
|
EXPECT_EQ(matches[1].rm_eo, 15);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
match_str = "hellohellohellohello";
|
match_str = "hellohellohellohello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 0u);
|
EXPECT_EQ(matches[0].rm_so, 0);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 15u);
|
EXPECT_EQ(matches[0].rm_eo, 15);
|
||||||
EXPECT_EQ(matches[1].rm_so, 10u);
|
EXPECT_EQ(matches[1].rm_so, 10);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 15u);
|
EXPECT_EQ(matches[1].rm_eo, 15);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
match_str = "test hellohellohello";
|
match_str = "test hellohellohello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 5u);
|
EXPECT_EQ(matches[0].rm_so, 5);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 20u);
|
EXPECT_EQ(matches[0].rm_eo, 20);
|
||||||
EXPECT_EQ(matches[1].rm_so, 15u);
|
EXPECT_EQ(matches[1].rm_so, 15);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 20u);
|
EXPECT_EQ(matches[1].rm_eo, 20);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
match_str = "test hellohellohellohello";
|
match_str = "test hellohellohellohello";
|
||||||
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, match_str, num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(matches[0].rm_so, 5u);
|
EXPECT_EQ(matches[0].rm_so, 5);
|
||||||
EXPECT_EQ(matches[0].rm_eo, 20u);
|
EXPECT_EQ(matches[0].rm_eo, 20);
|
||||||
EXPECT_EQ(matches[1].rm_so, 15u);
|
EXPECT_EQ(matches[1].rm_so, 15);
|
||||||
EXPECT_EQ(matches[1].rm_eo, 20u);
|
EXPECT_EQ(matches[1].rm_eo, 20);
|
||||||
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
EXPECT_EQ(StringView(&match_str[matches[0].rm_so], matches[0].rm_eo - matches[0].rm_so), "hellohellohello");
|
||||||
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
EXPECT_EQ(StringView(&match_str[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so), "hello");
|
||||||
|
|
||||||
|
@ -970,7 +970,7 @@ TEST_CASE(char_qualifier_min_max)
|
||||||
EXPECT_EQ(regexec(®ex, "cc", num_matches, matches, 0), REG_NOMATCH);
|
EXPECT_EQ(regexec(®ex, "cc", num_matches, matches, 0), REG_NOMATCH);
|
||||||
EXPECT_EQ(regexec(®ex, "ccc", num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "ccc", num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(regexec(®ex, "cccccccccccccccccccccccccccccc", num_matches, matches, 0), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "cccccccccccccccccccccccccccccc", num_matches, matches, 0), REG_NOERR);
|
||||||
EXPECT_EQ(matches[0].rm_cnt, 1u);
|
EXPECT_EQ(matches[0].rm_cnt, 1);
|
||||||
EXPECT_EQ(regexec(®ex, "ccccccccccccccccccccccccccccccc", num_matches, matches, 0), REG_NOMATCH);
|
EXPECT_EQ(regexec(®ex, "ccccccccccccccccccccccccccccccc", num_matches, matches, 0), REG_NOMATCH);
|
||||||
EXPECT_EQ(regexec(®ex, "ccccccccccccccccccccccccccccccc", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
EXPECT_EQ(regexec(®ex, "ccccccccccccccccccccccccccccccc", num_matches, matches, REG_GLOBAL), REG_NOERR);
|
||||||
EXPECT_EQ(regexec(®ex, "cccccccccccccccccccccccccccccccc", num_matches, matches, 0), REG_NOMATCH);
|
EXPECT_EQ(regexec(®ex, "cccccccccccccccccccccccccccccccc", num_matches, matches, 0), REG_NOMATCH);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue