1 /* Buffer formatting tests */
5 int print(SilcStack stack, SilcBuffer buf, void *value, void *context)
7 fwrite(silc_buffer_data(buf), 1, silc_buffer_len(buf), stdout);
8 if (!silc_buffer_strchr(buf, '\n', TRUE))
11 return silc_buffer_len(buf);
14 int main(int argc, char **argv)
16 SilcBool success = FALSE;
20 if (argc > 1 && !strcmp(argv[1], "-d")) {
23 silc_log_debug_hexdump(TRUE);
24 silc_log_set_debug_string("*buf*,*regex*,*errno*");
27 silc_snprintf(string, sizeof(string), "This is foobar");
28 silc_buffer_set(&buf, string, strlen(string));
29 SILC_LOG_DEBUG(("sed 's/foo/bar/'"));
30 SILC_LOG_DEBUG(("string: %s", string));
31 if (silc_buffer_format(&buf,
32 SILC_STR_REGEX("foo", 0),
33 SILC_STR_STRING("bar"),
37 SILC_LOG_DEBUG(("string: %s", silc_buffer_data(&buf)));
38 if (strcmp("This is barbar", silc_buffer_data(&buf)))
41 silc_snprintf(string, sizeof(string), "This is foobar\n");
42 silc_buffer_set(&buf, string, strlen(string));
43 SILC_LOG_DEBUG(("sed 's/\\n/\\0/'"));
44 SILC_LOG_DEBUG(("string: %s", string));
45 if (silc_buffer_format(&buf,
46 SILC_STR_REGEX("\n", 0),
51 SILC_LOG_DEBUG(("string: %s", silc_buffer_data(&buf)));
52 if (strcmp("This is foobar", silc_buffer_data(&buf)))
55 silc_snprintf(string, sizeof(string), "foo\nfoobar\nbarfoofoo\nbar\n\nfoo");
56 silc_buffer_set(&buf, string, strlen(string));
57 SILC_LOG_DEBUG(("sed 's/foo/bar/g'"));
58 SILC_LOG_DEBUG(("string: %s", string));
59 if (silc_buffer_format(&buf,
60 SILC_STR_REGEX("foo", SILC_STR_REGEX_NL |
62 SILC_STR_STRING("bar"),
66 SILC_LOG_DEBUG(("string: %s", silc_buffer_data(&buf)));
67 if (strcmp("bar\nbarbar\nbarbarbar\nbar\n\nbar", silc_buffer_data(&buf)))
70 silc_snprintf(string, sizeof(string),
71 "foo\nbazfoobar\nbarfoofoo\nbar\nbaz\nbazfoo");
72 silc_buffer_set(&buf, string, strlen(string));
73 SILC_LOG_DEBUG(("sed '/baz/s/foo/bar/"));
74 SILC_LOG_DEBUG(("string: %s", string));
75 if (silc_buffer_format(&buf,
76 SILC_STR_REGEX("baz", SILC_STR_REGEX_NL),
77 SILC_STR_REGEX("foo", SILC_STR_REGEX_ALL),
78 SILC_STR_STRING("bar"),
80 SILC_STR_END, SILC_STR_END) < 0)
82 SILC_LOG_DEBUG(("string: %s", silc_buffer_data(&buf)));
83 if (strcmp("foo\nbazbarbar\nbarfoofoo\nbar\nbaz\nbazbar",
84 silc_buffer_data(&buf)))
87 silc_snprintf(string, sizeof(string),
88 "foo\nbazfoobar\nbarfoofoo\nbar\nbaz\nbazfoo");
89 silc_buffer_set(&buf, string, strlen(string));
90 SILC_LOG_DEBUG(("sed '/baz/!s/foo/bar/"));
91 SILC_LOG_DEBUG(("string: %s", string));
92 if (silc_buffer_format(&buf,
93 SILC_STR_REGEX("baz", SILC_STR_REGEX_NL |
95 SILC_STR_REGEX("foo", SILC_STR_REGEX_ALL),
96 SILC_STR_STRING("bar"),
98 SILC_STR_END, SILC_STR_END) < 0)
100 SILC_LOG_DEBUG(("string: %s", silc_buffer_data(&buf)));
101 if (strcmp("bar\nbazfoobar\nbarbarbar\nbar\nbaz\nbazfoo",
102 silc_buffer_data(&buf)))
105 SILC_LOG_DEBUG(("Print all lines starting with 'R'"));
106 silc_snprintf(string, sizeof(string),
107 "Rfoo\nbazfoobar\nRbarfoofoo\nRbar\nbaz\nRbazfoo");
108 silc_buffer_set(&buf, string, strlen(string));
109 SILC_LOG_DEBUG(("string: %s", string));
110 if (silc_buffer_unformat(&buf,
111 SILC_STR_REGEX("^R", SILC_STR_REGEX_NL),
112 SILC_STR_FUNC(print, NULL, NULL),
113 SILC_STR_END, SILC_STR_END) < 0)
119 SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
120 fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");