Annotation of embedaddon/lighttpd/src/test_buffer.c, revision 1.1.1.1
1.1 misho 1: #include "first.h"
2:
3: #include "buffer.h"
4:
5: static void run_buffer_path_simplify(buffer *psrc, buffer *pdest, const char *in, size_t in_len, const char *out, size_t out_len) {
6: buffer_copy_string_len(psrc, in, in_len);
7:
8: buffer_path_simplify(pdest, psrc);
9:
10: if (!buffer_is_equal_string(pdest, out, out_len)) {
11: fprintf(stderr,
12: "%s.%d: buffer_path_simplify('%s') failed: expected '%s', got '%s'\n",
13: __FILE__,
14: __LINE__,
15: in,
16: out,
17: pdest->ptr ? pdest->ptr : "");
18: fflush(stderr);
19: abort();
20: } else {
21: fprintf(stdout,
22: "%s.%d: buffer_path_simplify('%s') succeeded: got '%s'\n",
23: __FILE__,
24: __LINE__,
25: in,
26: out);
27:
28: if (psrc != pdest) buffer_copy_buffer(psrc, pdest);
29: buffer_path_simplify(pdest, psrc);
30:
31: if (!buffer_is_equal_string(pdest, out, out_len)) {
32: fprintf(stderr,
33: "%s.%d: buffer_path_simplify('%s') failed - not idempotent: expected '%s', got '%s'\n",
34: __FILE__,
35: __LINE__,
36: out,
37: out,
38: pdest->ptr ? pdest->ptr : "");
39: fflush(stderr);
40: abort();
41: }
42: }
43: }
44:
45: static void test_buffer_path_simplify_with(buffer *psrc, buffer *pdest) {
46: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN(""), CONST_STR_LEN(""));
47: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN(" "), CONST_STR_LEN("/"));
48: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("/"), CONST_STR_LEN("/"));
49: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("//"), CONST_STR_LEN("/"));
50: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("abc"), CONST_STR_LEN("/abc"));
51: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("abc//"), CONST_STR_LEN("/abc/"));
52: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("abc/./xyz"), CONST_STR_LEN("/abc/xyz"));
53: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("abc/.//xyz"), CONST_STR_LEN("/abc/xyz"));
54: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("abc/../xyz"), CONST_STR_LEN("/xyz"));
55: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("/abc/./xyz"), CONST_STR_LEN("/abc/xyz"));
56: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("/abc//./xyz"), CONST_STR_LEN("/abc/xyz"));
57: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("/abc/../xyz"), CONST_STR_LEN("/xyz"));
58: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("abc/../xyz/."), CONST_STR_LEN("/xyz/"));
59: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("/abc/../xyz/."), CONST_STR_LEN("/xyz/"));
60: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("abc/./xyz/.."), CONST_STR_LEN("/abc/"));
61: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("/abc/./xyz/.."), CONST_STR_LEN("/abc/"));
62: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("./xyz/.."), CONST_STR_LEN("/"));
63: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN(".//xyz/.."), CONST_STR_LEN("/"));
64: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("/./xyz/.."), CONST_STR_LEN("/"));
65: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN(".././xyz/.."), CONST_STR_LEN("/"));
66: run_buffer_path_simplify(psrc, pdest, CONST_STR_LEN("/.././xyz/.."), CONST_STR_LEN("/"));
67: }
68:
69: static void test_buffer_path_simplify() {
70: buffer *psrc = buffer_init();
71: buffer *pdest = buffer_init();
72:
73: /* test with using the same buffer and with using different buffers */
74: test_buffer_path_simplify_with(psrc, psrc);
75: test_buffer_path_simplify_with(pdest, psrc);
76:
77: buffer_free(psrc);
78: buffer_free(pdest);
79: }
80:
81: int main() {
82: test_buffer_path_simplify();
83:
84: return 0;
85: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>