@ -163,26 +163,26 @@ TEST_CASE(simple_questionmark_matchall)
EXPECT_EQ ( regcomp ( & regex , pattern . characters ( ) , REG_EXTENDED ) , REG_NOERR ) ;
EXPECT_EQ ( regexec ( & regex , " a " , num_matches , matches , REG_GLOBAL ) , REG_NOMATCH ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 ) ;
EXPECT_EQ ( regexec ( & regex , " daa " , num_matches , matches , REG_GLOBAL ) , REG_NOMATCH ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 ) ;
EXPECT_EQ ( regexec ( & regex , " ddddd " , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 2 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 2 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 2 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 2 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 4 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 2 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 2 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 4 ) ;
EXPECT_EQ ( regexec ( & regex , " dd " , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( regexec ( & regex , " dad " , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( regexec ( & regex , " dada " , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( regexec ( & regex , " adadaa " , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
regfree ( & regex ) ;
}
@ -197,9 +197,9 @@ TEST_CASE(character_class)
String haystack = " [Window] \n Opacity=255 \n AudibleBeep=0 \n " ;
EXPECT_EQ ( regcomp ( & regex , pattern . characters ( ) , REG_EXTENDED ) , REG_NOERR ) ;
EXPECT_EQ ( regexec ( & regex , haystack . characters ( ) , num_matches , matches , 0 ) , REG_NOMATCH ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 ) ;
EXPECT_EQ ( regexec ( & regex , haystack . characters ( ) , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 24 u ) ;
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 [ 1 ] . rm_so , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " i " ) ;
@ -217,7 +217,7 @@ TEST_CASE(character_class2)
EXPECT_EQ ( regcomp ( & regex , pattern . characters ( ) , REG_EXTENDED | REG_NEWLINE ) , REG_NOERR ) ;
EXPECT_EQ ( regexec ( & regex , haystack . characters ( ) , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 3 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 3 ) ;
#if 0
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 ) ;
@ -275,7 +275,7 @@ TEST_CASE(char_qualifier_asterisk)
EXPECT_EQ ( regcomp ( & regex , pattern . characters ( ) , REG_EXTENDED ) , REG_NOERR ) ;
EXPECT_EQ ( regexec ( & regex , " #include <regex.h> " , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
regfree ( & regex ) ;
}
@ -289,7 +289,7 @@ TEST_CASE(char_utf8)
EXPECT_EQ ( regcomp ( & regex , pattern . characters ( ) , REG_EXTENDED ) , REG_NOERR ) ;
EXPECT_EQ ( regexec ( & regex , " Привет, мир! 😀 γειά σ ο υ κόσμος 😀 こんにちは世界 " , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 2 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 2 ) ;
regfree ( & regex ) ;
}
@ -304,12 +304,12 @@ TEST_CASE(parens)
EXPECT_EQ ( regcomp ( & regex , pattern . characters ( ) , REG_EXTENDED ) , REG_NOERR ) ;
EXPECT_EQ ( regexec ( & regex , " testhellotest " , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 13 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 9 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 13 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 9 ) ;
regfree ( & regex ) ;
}
@ -427,18 +427,18 @@ TEST_CASE(parens_qualifier_questionmark)
match_str = " testtest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 8 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
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 " ) ;
match_str = " testhellotest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 13 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 9 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 13 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
@ -457,32 +457,32 @@ TEST_CASE(parens_qualifier_asterisk)
match_str = " testtest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 8 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
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 " ) ;
match_str = " testhellohellotest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 18 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 9 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 14 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 18 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 9 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
match_str = " testhellohellotest, testhellotest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 2 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 18 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 9 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 14 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 20 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_eo , 33 u ) ;
EXPECT_EQ ( matches [ 3 ] . rm_so , 24 u ) ;
EXPECT_EQ ( matches [ 3 ] . rm_eo , 29 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 2 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 18 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 9 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 14 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 20 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_eo , 33 ) ;
EXPECT_EQ ( matches [ 3 ] . rm_so , 24 ) ;
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 [ 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 " ) ;
@ -503,31 +503,31 @@ TEST_CASE(parens_qualifier_asterisk_2)
match_str = " testasdftest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 12 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 8 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 12 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " asdf " ) ;
match_str = " testasdfasdftest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 16 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 12 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 16 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " asdfasdf " ) ;
match_str = " testaaaatest, testbbbtest, testtest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 35 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 31 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 35 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 ) ;
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 [ 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 " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches - 1 , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 10 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 5 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_eo , 6 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 10 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 5 ) ;
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 [ 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 ( matches [ 3 ] . rm_so , - 2 ) ;
EXPECT_EQ ( matches [ 3 ] . rm_eo , - 2 ) ;
EXPECT_EQ ( matches [ 3 ] . rm_cnt , 100 u ) ;
EXPECT_EQ ( matches [ 3 ] . rm_cnt , 100 ) ;
match_str = " testabctest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches - 1 , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 11 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 5 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_eo , 6 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 11 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 5 ) ;
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 [ 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 ( matches [ 3 ] . rm_so , - 2 ) ;
EXPECT_EQ ( matches [ 3 ] . rm_eo , - 2 ) ;
EXPECT_EQ ( matches [ 3 ] . rm_cnt , 100 u ) ;
EXPECT_EQ ( matches [ 3 ] . rm_cnt , 100 ) ;
match_str = " testabctest, testabctest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches - 1 , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 2 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 11 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 5 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_eo , 6 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 2 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 11 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 5 ) ;
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 [ 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 ( matches [ 3 ] . rm_so , - 2 ) ;
EXPECT_EQ ( matches [ 3 ] . rm_eo , - 2 ) ;
EXPECT_EQ ( matches [ 3 ] . rm_cnt , 100 u ) ;
EXPECT_EQ ( matches [ 3 ] . rm_cnt , 100 ) ;
regfree ( & regex ) ;
}
@ -611,20 +611,20 @@ TEST_CASE(multi_parens_qualifier_questionmark)
match_str = " testtest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 8 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
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 " ) ;
match_str = " testabctest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 11 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 5 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_eo , 6 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 11 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 5 ) ;
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 [ 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 " ) ;
@ -632,24 +632,24 @@ TEST_CASE(multi_parens_qualifier_questionmark)
match_str = " testabctest, testactest " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 2 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 11 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 5 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_eo , 6 u ) ;
EXPECT_EQ ( matches [ 3 ] . rm_so , 6 u ) ;
EXPECT_EQ ( matches [ 3 ] . rm_eo , 7 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 2 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 11 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 5 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_eo , 6 ) ;
EXPECT_EQ ( matches [ 3 ] . rm_so , 6 ) ;
EXPECT_EQ ( matches [ 3 ] . rm_eo , 7 ) ;
EXPECT_EQ ( matches [ 4 ] . rm_so , 13 u ) ;
EXPECT_EQ ( matches [ 4 ] . rm_eo , 23 u ) ;
EXPECT_EQ ( matches [ 5 ] . rm_so , 17 u ) ;
EXPECT_EQ ( matches [ 5 ] . rm_eo , 18 u ) ;
EXPECT_EQ ( matches [ 4 ] . rm_so , 13 ) ;
EXPECT_EQ ( matches [ 4 ] . rm_eo , 23 ) ;
EXPECT_EQ ( matches [ 5 ] . rm_so , 17 ) ;
EXPECT_EQ ( matches [ 5 ] . rm_eo , 18 ) ;
EXPECT_EQ ( matches [ 6 ] . rm_so , - 1 ) ;
EXPECT_EQ ( matches [ 6 ] . rm_eo , - 1 ) ;
EXPECT_EQ ( matches [ 7 ] . rm_so , 18 u ) ;
EXPECT_EQ ( matches [ 7 ] . rm_eo , 19 u ) ;
EXPECT_EQ ( matches [ 7 ] . rm_so , 18 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " a " ) ;
@ -673,19 +673,19 @@ TEST_CASE(simple_alternative)
EXPECT_EQ ( regcomp ( & regex , pattern . characters ( ) , REG_EXTENDED ) , REG_NOERR ) ;
EXPECT_EQ ( regexec ( & regex , " test " , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 4 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 4 ) ;
EXPECT_EQ ( regexec ( & regex , " hello " , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 5 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 5 ) ;
EXPECT_EQ ( regexec ( & regex , " friends " , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 7 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 7 ) ;
regfree ( & regex ) ;
}
@ -702,7 +702,7 @@ TEST_CASE(alternative_match_groups)
match_str = " test " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 4 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , - 1 ) ;
@ -715,11 +715,11 @@ TEST_CASE(alternative_match_groups)
match_str = " testa " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 5 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 5 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 4 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 5 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , - 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 " ) ;
@ -728,22 +728,22 @@ TEST_CASE(alternative_match_groups)
match_str = " testb " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 5 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 5 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , - 1 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , - 1 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 4 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_eo , 5 u ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , 4 ) ;
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 [ 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 " ) ;
match_str = " hello friends " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 13 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 13 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , - 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 " ) ;
@ -751,9 +751,9 @@ TEST_CASE(alternative_match_groups)
match_str = " hello dear friends " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 18 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 18 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , - 1 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , - 1 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , - 1 ) ;
@ -767,9 +767,9 @@ TEST_CASE(alternative_match_groups)
match_str = " hello my friends " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 16 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 16 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , - 1 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , - 1 ) ;
EXPECT_EQ ( matches [ 2 ] . rm_so , - 1 ) ;
@ -783,13 +783,13 @@ TEST_CASE(alternative_match_groups)
match_str = " testabc " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOMATCH ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , - 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , - 1 ) ;
match_str = " hello test friends " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOMATCH ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , - 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , - 1 ) ;
@ -808,35 +808,35 @@ TEST_CASE(parens_qualifier_exact)
match_str = " hello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOMATCH ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 ) ;
match_str = " hellohellohello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 15 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 10 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 15 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 15 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 10 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
match_str = " hellohellohellohello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 15 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 10 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 15 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 15 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 10 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
match_str = " test hellohellohello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 5 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 20 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 15 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 20 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 5 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 20 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 15 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
@ -855,46 +855,46 @@ TEST_CASE(parens_qualifier_minimum)
match_str = " hello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOMATCH ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 ) ;
match_str = " hellohellohello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 15 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 10 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 15 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 15 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 10 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
match_str = " hellohellohellohello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , REG_SEARCH ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 20 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 15 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 20 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 20 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 15 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
match_str = " test hellohellohello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 5 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 20 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 15 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 20 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 5 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 20 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 15 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
match_str = " test hellohellohellohello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 5 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 25 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 20 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 25 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 5 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 25 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 20 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
@ -913,45 +913,45 @@ TEST_CASE(parens_qualifier_maximum)
match_str = " hello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOMATCH ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 0 ) ;
match_str = " hellohellohello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 15 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 10 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 15 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 15 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 10 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
match_str = " hellohellohellohello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 15 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 10 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 15 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 0 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 15 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 10 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
match_str = " test hellohellohello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 5 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 20 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 15 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 20 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 5 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 20 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 15 ) ;
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 [ 1 ] . rm_so ] , matches [ 1 ] . rm_eo - matches [ 1 ] . rm_so ) , " hello " ) ;
match_str = " test hellohellohellohello " ;
EXPECT_EQ ( regexec ( & regex , match_str , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 5 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 20 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 15 u ) ;
EXPECT_EQ ( matches [ 1 ] . rm_eo , 20 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_so , 5 ) ;
EXPECT_EQ ( matches [ 0 ] . rm_eo , 20 ) ;
EXPECT_EQ ( matches [ 1 ] . rm_so , 15 ) ;
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 [ 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 ( & regex , " cc " , num_matches , matches , 0 ) , REG_NOMATCH ) ;
EXPECT_EQ ( regexec ( & regex , " ccc " , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( regexec ( & regex , " cccccccccccccccccccccccccccccc " , num_matches , matches , 0 ) , REG_NOERR ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 u ) ;
EXPECT_EQ ( matches [ 0 ] . rm_cnt , 1 ) ;
EXPECT_EQ ( regexec ( & regex , " ccccccccccccccccccccccccccccccc " , num_matches , matches , 0 ) , REG_NOMATCH ) ;
EXPECT_EQ ( regexec ( & regex , " ccccccccccccccccccccccccccccccc " , num_matches , matches , REG_GLOBAL ) , REG_NOERR ) ;
EXPECT_EQ ( regexec ( & regex , " cccccccccccccccccccccccccccccccc " , num_matches , matches , 0 ) , REG_NOMATCH ) ;