X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Ftests%2Ftest_silcstrutil.c;h=a728dfd5f16c5f2606cf61357417c81e09835835;hb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;hp=f7b4faf81078facbe9bf9244cad13d352080ffe5;hpb=c257b555225193e54d85daf541d29578b3c93882;p=silc.git diff --git a/lib/silcutil/tests/test_silcstrutil.c b/lib/silcutil/tests/test_silcstrutil.c index f7b4faf8..a728dfd5 100644 --- a/lib/silcutil/tests/test_silcstrutil.c +++ b/lib/silcutil/tests/test_silcstrutil.c @@ -1,6 +1,7 @@ /* UTF-8 decoding tests */ +/* Other string util tests too */ -#include "silcincludes.h" +#include "silc.h" #define utf8fail(n, data, len) \ const unsigned char u##n[] = (data); \ @@ -48,16 +49,44 @@ utf8fail(28, "\xfc\x20\xfd\x20", 4); utf8fail(29, "\xf8\xf9\xfa\xfb", 4); utf8fail(30, "\xf0\x20\xf9\x20\xfa\x20\xfb\x20", 8); +char *render(void *data) +{ + char *buf = data; + return strdup(buf); +} + int main(int argc, char **argv) { - bool success = FALSE; + SilcBool success = FALSE; unsigned char *s1, *s2, *s3, *s4; - int l; - - if (argc > 1 && !strcmp(argv[1], "-d")) { - silc_debug = 1; - silc_debug_hexdump = 1; - silc_log_set_debug_string("*strutil*"); + unsigned char t[16]; + char h[32 + 1], str[40]; + int l, opt, i; + SilcUInt32 len; + + while ((opt = getopt(argc, argv, "hVd:")) != EOF) { + switch(opt) { + case 'h': + printf("usage: test_silcstrutil\n"); + exit(0); + break; + case 'V': + printf("Secure Internet Live Conferencing\n"); + exit(0); + break; + case 'd': + silc_log_debug(TRUE); + silc_log_debug_hexdump(TRUE); + silc_log_quick(TRUE); + if (optarg) + silc_log_set_debug_string(optarg); + else + silc_log_set_debug_string("*strutil*,*errno*"); + break; + default: + exit(1); + break; + } } /* Failure tests */ @@ -130,6 +159,33 @@ int main(int argc, char **argv) silc_free(s3); silc_free(s4); + /* Regex test */ + SILC_LOG_DEBUG(("Simple regex test")); + s1 = "foo,bar,silc,com"; + SILC_LOG_DEBUG(("Find 'silc' from %s", s1)); + if (!silc_string_match(s1, "silc")) + goto err; + SILC_LOG_DEBUG(("Regex match")); + SILC_LOG_DEBUG(("Find 'foobar' from %s", s1)); + if (silc_string_match(s1, "foobar")) + goto err; + SILC_LOG_DEBUG(("Regex not found (Ok)")); + + /* HEX to data, data to HEX tests */ + for (i = 0; i < sizeof(t); i++) + t[i] = i; + silc_data2hex(t, sizeof(t), h, sizeof(h)); + silc_hex2data(h, t, sizeof(t), &len); + silc_snprintf(h, sizeof(h), "010203ffabdef9ab"); + silc_hex2data(h, t, sizeof(t), &len); + silc_data2hex(t, sizeof(t), h, sizeof(h)); + + /* snprintf test */ + silc_snprintf(str, sizeof(str), "This is %@ rendered\n", + render, "automatically"); + SILC_LOG_DEBUG((str)); + SILC_LOG_DEBUG(("This too %@ rendered", render, "is automatically")); + success = TRUE; err: