X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilcutil%2Ftests%2Ftest_silcregex.c;h=c1c6b44b8093c297f872242d423ef2bb4d7dd816;hp=41c51ad3fc969a19d036f053b76b48b9946071a3;hb=10c399ae1a586f5c82b96da137bd88f8e015b659;hpb=c100f729a4713e3960a49e6c3ef9c321246b3247 diff --git a/lib/silcutil/tests/test_silcregex.c b/lib/silcutil/tests/test_silcregex.c index 41c51ad3..c1c6b44b 100644 --- a/lib/silcutil/tests/test_silcregex.c +++ b/lib/silcutil/tests/test_silcregex.c @@ -6,8 +6,8 @@ int main(int argc, char **argv) { SilcBool success = FALSE; SilcRegexStruct reg; - SilcRegexMatchStruct match[10]; - int i, num_match = 10; + SilcRegexMatchStruct match[20]; + int i, num_match = 20; char *regex, *string, *sub; SilcBufferStruct bmatch; @@ -15,9 +15,261 @@ int main(int argc, char **argv) silc_log_debug(TRUE); silc_log_quick(TRUE); silc_log_debug_hexdump(TRUE); - silc_log_set_debug_string("*regex*,*errno*"); + silc_log_set_debug_string("*regex*,*errno*,*buffmt*"); } + string = silc_strdup("foobar"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "s/foo/bar/")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, "barbar", 6)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar foobar"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "s/foo/bar/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, "barbar barbar", 13)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar foobar"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "s/foo/bar/")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, "barbar foobar", 13)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar foobar\nfoobar"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "s/foo/BARBAR/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, "BARBARbar\nBARBARbar BARBARbar\nBARBARbar", + 39)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar foobar\nfoobar"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "s/foo/BARBAR/")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, "BARBARbar\nBARBARbar foobar\nBARBARbar", + 36)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar foobar\nfoobar"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "s/foo//")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, "bar\nbar foobar\nbar", + 18)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar foobar\nfoobar"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "s/foo/B/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, "Bbar\nBbar Bbar\nBbar", + 19)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar foobar\nfoobar"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "s/foo/B/")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, "Bbar\nBbar foobar\nBbar", + 21)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nBfoobar foobar\nBfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "/^B/s/foo/B/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, "foobar\nBBbar Bbar\nBBbar\nfoo", + 27)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar baz foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "/baz/s/foo/BARBAR/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "foobar\nBARBARbar baz BARBARbar\nbazBARBARbar\nfoo", + 47)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar baz foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "/baz/s/foo/BARBAR/")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "foobar\nBARBARbar baz foobar\nbazBARBARbar\nfoo", + 44)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar baz foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "/baz/!s/foo/BARBAR/")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "BARBARbar\nfoobar baz foobar\nbazfoobar\nBARBAR", + 44)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar baz foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "2s/foo/BARBAR/")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "foobar\nBARBARbar baz foobar\nbazfoobar\nfoo", + 41)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar baz foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "2s/foo/BARBAR/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "foobar\nBARBARbar baz BARBARbar\nbazfoobar\nfoo", + 44)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar baz foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "200s/foo/BARBAR/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "foobar\nfoobar baz foobar\nbazfoobar\nfoo", + 38)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar baz foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "2!s/foo/BARBAR/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "BARBARbar\nfoobar baz foobar\nbazBARBARbar\nBARBAR", + 47)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar baz foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "/xxx/s/foo/BARBAR/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "foobar\nfoobar baz foobar\nbazfoobar\nfoo", + 38)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar baz foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "!s/foo/BARBAR/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "foobar\nfoobar baz foobar\nbazfoobar\nfoo", + 38)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar baz foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "$s/foo/BARBAR/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "foobar\nfoobar baz foobar\nbazfoobar\nBARBAR", + 41)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar baz foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "$!s/foo/BARBAR/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "BARBARbar\nBARBARbar baz BARBARbar\nbazBARBARbar\nfoo", + 50)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar /baz/ foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "s/\\//BARBAR/g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "foobar\nfoobar BARBARbazBARBAR foobar\nbazfoobar\nfoo", + 50)) + goto err; + silc_buffer_purge(&bmatch); + + string = silc_strdup("foobar\nfoobar /baz/ foobar\nbazfoobar\nfoo"); + SILC_LOG_DEBUG(("Replace %s", string)); + silc_buffer_set(&bmatch, string, strlen(string)); + if (!silc_subst(&bmatch, "s/\\//\\/\\//g")) + goto err; + silc_buffer_printf(&bmatch, TRUE); + if (!silc_buffer_memcmp(&bmatch, + "foobar\nfoobar //baz// foobar\nbazfoobar\nfoo", + 42)) + goto err; + silc_buffer_purge(&bmatch); + regex = ".{5}"; SILC_LOG_DEBUG(("Regex %s", regex)); string = "abcdefghijklmn"; @@ -199,7 +451,6 @@ int main(int argc, char **argv) if (silc_regex(string, regex, &bmatch, NULL)) goto err; - regex = "(H..).(o..)"; SILC_LOG_DEBUG(("Regex %s", regex)); if (!silc_regex_compile(®, regex, 0)) @@ -213,7 +464,7 @@ int main(int argc, char **argv) if (match[i].start != -1) { SILC_LOG_DEBUG(("Match start %d, end %d", match[i].start, match[i].end)); - sub = silc_memdup(string + match[i].start, match[i].end - + sub = silc_memdup(string + match[i].start, match[i].end - match[i].start); SILC_LOG_DEBUG(("Match substring '%s'", sub)); silc_free(sub); @@ -255,7 +506,7 @@ int main(int argc, char **argv) for (i = 0; i < num_match; i++) { if (match[i].start != -1) { SILC_LOG_DEBUG(("Match start %d", match[i].start)); - sub = silc_memdup(string + match[i].start, match[i].end - + sub = silc_memdup(string + match[i].start, match[i].end - match[i].start); SILC_LOG_DEBUG(("Match substring '%s'", sub)); silc_free(sub); @@ -277,7 +528,7 @@ int main(int argc, char **argv) for (i = 0; i < num_match; i++) { if (match[i].start != -1) { SILC_LOG_DEBUG(("Match start %d", match[i].start)); - sub = silc_memdup(string + match[i].start, match[i].end - + sub = silc_memdup(string + match[i].start, match[i].end - match[i].start); SILC_LOG_DEBUG(("Match substring '%s'", sub)); silc_free(sub); @@ -292,7 +543,7 @@ int main(int argc, char **argv) for (i = 0; i < num_match; i++) { if (match[i].start != -1) { SILC_LOG_DEBUG(("Match start %d", match[i].start)); - sub = silc_memdup(string + match[i].start, match[i].end - + sub = silc_memdup(string + match[i].start, match[i].end - match[i].start); SILC_LOG_DEBUG(("Match substring '%s'", sub)); silc_free(sub); @@ -314,7 +565,7 @@ int main(int argc, char **argv) for (i = 0; i < num_match; i++) { if (match[i].start != -1) { SILC_LOG_DEBUG(("Match start %d", match[i].start)); - sub = silc_memdup(string + match[i].start, match[i].end - + sub = silc_memdup(string + match[i].start, match[i].end - match[i].start); SILC_LOG_DEBUG(("Match substring '%s'", sub)); silc_free(sub); @@ -363,4 +614,3 @@ int main(int argc, char **argv) return success; } -