/* 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); \
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, opt;
+ unsigned char t[16];
+ char h[32 + 1], str[40];
+ int l, opt, i;
+ SilcUInt32 len;
- while ((opt = getopt(argc, argv, "hVd")) != EOF) {
+ while ((opt = getopt(argc, argv, "hVd:")) != EOF) {
switch(opt) {
case 'h':
printf("usage: test_silcstrutil\n");
exit(0);
break;
case 'd':
- silc_debug = TRUE;
- silc_debug_hexdump = TRUE;
+ 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*");
+ silc_log_set_debug_string("*strutil*,*errno*");
break;
default:
exit(1);
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: