src/server/test/strreplace.c

Sun, 07 Dec 2025 20:16:02 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 07 Dec 2025 20:16:02 +0100
changeset 656
59dd1fb27639
parent 634
9728d3a2ac97
permissions
-rw-r--r--

update uwproj

634
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2025 Olaf Wintermann. All rights reserved.
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #include "strreplace.h"
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 #include "../util/strreplace.h"
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 #include <cx/mempool.h>
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 CX_TEST(test_string_template_compile) {
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34 CxMempool *mp = cxMempoolCreate(100, CX_MEMPOOL_TYPE_ADVANCED);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 const CxAllocator *a = mp->allocator;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37 StringTemplate *tpl = NULL;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 StringTemplateSegment *s0 = NULL;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 StringTemplateSegment *s1 = NULL;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40 StringTemplateSegment *s2 = NULL;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 StringTemplateSegment *s3 = NULL;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42 CX_TEST_DO {
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 // single segment tests
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 tpl = string_template_compile(a, cx_str(""));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 CX_TEST_ASSERT(tpl); // empty str
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 CX_TEST_ASSERT(!tpl->segments);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50 tpl = string_template_compile(a, cx_str("static"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51 CX_TEST_ASSERT(tpl); // static
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 CX_TEST_ASSERT(tpl->segments);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 CX_TEST_ASSERT(!tpl->segments->next);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 CX_TEST_ASSERT(!cx_strcmp(tpl->segments->str, "static"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55 CX_TEST_ASSERT(tpl->segments->type == STRING_SEGMENT_STR);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 tpl = string_template_compile(a, cx_str("$$"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59 CX_TEST_ASSERT(tpl); // $
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
60 CX_TEST_ASSERT(tpl->segments);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 CX_TEST_ASSERT(!tpl->segments->next);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 CX_TEST_ASSERT(!cx_strcmp(tpl->segments->str, "$"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63 CX_TEST_ASSERT(tpl->segments->type == STRING_SEGMENT_STR);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 tpl = string_template_compile(a, cx_str("$var"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 CX_TEST_ASSERT(tpl); // var
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68 CX_TEST_ASSERT(tpl->segments);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69 CX_TEST_ASSERT(!tpl->segments->next);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 CX_TEST_ASSERT(!cx_strcmp(tpl->segments->str, "var"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 CX_TEST_ASSERT(tpl->segments->type == STRING_SEGMENT_VAR_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 tpl = string_template_compile(a, cx_str("$12"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 CX_TEST_ASSERT(tpl); // 12
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76 CX_TEST_ASSERT(tpl->segments);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
77 CX_TEST_ASSERT(!tpl->segments->next);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
78 CX_TEST_ASSERT(!cx_strcmp(tpl->segments->str, "12"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
79 CX_TEST_ASSERT(tpl->segments->type == STRING_SEGMENT_NUM_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80 CX_TEST_ASSERT(tpl->segments->num == 12);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
82
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
83 // double segment tests
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84 tpl = string_template_compile(a, cx_str("test $var"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
85 CX_TEST_ASSERT(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
86 s0 = tpl->segments;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
87 CX_TEST_ASSERT(s0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
88 s1 = s0->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
89 CX_TEST_ASSERT(s1);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
90 CX_TEST_ASSERT(!cx_strcmp(s0->str, "test "));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 CX_TEST_ASSERT(s0->type == STRING_SEGMENT_STR);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
92 CX_TEST_ASSERT(!cx_strcmp(s1->str, "var"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
93 CX_TEST_ASSERT(s1->type == STRING_SEGMENT_VAR_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
94 CX_TEST_ASSERT(s1->next == NULL);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
95 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
96
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
97 tpl = string_template_compile(a, cx_str("test ${var}"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
98 CX_TEST_ASSERT(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
99 s0 = tpl->segments;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
100 CX_TEST_ASSERT(s0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
101 s1 = s0->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
102 CX_TEST_ASSERT(s1);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
103 CX_TEST_ASSERT(!cx_strcmp(s0->str, "test "));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
104 CX_TEST_ASSERT(s0->type == STRING_SEGMENT_STR);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
105 CX_TEST_ASSERT(!cx_strcmp(s1->str, "var"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
106 CX_TEST_ASSERT(s1->type == STRING_SEGMENT_VAR_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
107 CX_TEST_ASSERT(s1->next == NULL);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
108 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
109
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
110 tpl = string_template_compile(a, cx_str("$var test"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
111 CX_TEST_ASSERT(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
112 s0 = tpl->segments;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
113 CX_TEST_ASSERT(s0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
114 s1 = s0->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
115 CX_TEST_ASSERT(s1);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116 CX_TEST_ASSERT(!cx_strcmp(s0->str, "var"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117 CX_TEST_ASSERT(s0->type == STRING_SEGMENT_VAR_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118 CX_TEST_ASSERT(!cx_strcmp(s1->str, " test"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 CX_TEST_ASSERT(s1->type == STRING_SEGMENT_STR);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120 CX_TEST_ASSERT(s1->next == NULL);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123 tpl = string_template_compile(a, cx_str("$13 test"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124 CX_TEST_ASSERT(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
125 s0 = tpl->segments;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
126 CX_TEST_ASSERT(s0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127 s1 = s0->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
128 CX_TEST_ASSERT(s1);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
129 CX_TEST_ASSERT(!cx_strcmp(s0->str, "13"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130 CX_TEST_ASSERT(s0->type == STRING_SEGMENT_NUM_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131 CX_TEST_ASSERT(!cx_strcmp(s1->str, " test"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
132 CX_TEST_ASSERT(s1->type == STRING_SEGMENT_STR);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133 CX_TEST_ASSERT(s1->next == NULL);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
135
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
136 // multi segment tests
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137 tpl = string_template_compile(a, cx_str("test$var1$var2"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
138 CX_TEST_ASSERT(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
139 s0 = tpl->segments;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
140 CX_TEST_ASSERT(s0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
141 s1 = s0->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
142 CX_TEST_ASSERT(s1);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
143 s2 = s1->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
144 CX_TEST_ASSERT(2);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
145 CX_TEST_ASSERT(!cx_strcmp(s0->str, "test"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
146 CX_TEST_ASSERT(s0->type == STRING_SEGMENT_STR);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
147 CX_TEST_ASSERT(!cx_strcmp(s1->str, "var1"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
148 CX_TEST_ASSERT(s1->type == STRING_SEGMENT_VAR_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
149 CX_TEST_ASSERT(!cx_strcmp(s2->str, "var2"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
150 CX_TEST_ASSERT(s2->type == STRING_SEGMENT_VAR_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
151 CX_TEST_ASSERT(s2->next == NULL);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
152 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
153
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
154 tpl = string_template_compile(a, cx_str("test/$1/$2"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
155 CX_TEST_ASSERT(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
156 s0 = tpl->segments;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
157 CX_TEST_ASSERT(s0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
158 s1 = s0->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
159 CX_TEST_ASSERT(s1);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
160 s2 = s1->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
161 CX_TEST_ASSERT(2);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
162 s3 = s2->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
163 CX_TEST_ASSERT(s3);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
164 CX_TEST_ASSERT(!cx_strcmp(s0->str, "test/"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
165 CX_TEST_ASSERT(s0->type == STRING_SEGMENT_STR);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
166 CX_TEST_ASSERT(!cx_strcmp(s1->str, "1"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
167 CX_TEST_ASSERT(s1->type == STRING_SEGMENT_NUM_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
168 CX_TEST_ASSERT(!cx_strcmp(s2->str, "/"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
169 CX_TEST_ASSERT(s2->type == STRING_SEGMENT_STR);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
170 CX_TEST_ASSERT(!cx_strcmp(s3->str, "2"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
171 CX_TEST_ASSERT(s3->type == STRING_SEGMENT_NUM_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
172 CX_TEST_ASSERT(s3->next == NULL);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
173 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
174
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
175 tpl = string_template_compile(a, cx_str("ab$$cd/${1}/${2}"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
176 CX_TEST_ASSERT(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
177 s0 = tpl->segments;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
178 CX_TEST_ASSERT(s0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
179 s1 = s0->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
180 CX_TEST_ASSERT(s1);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
181 s2 = s1->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
182 CX_TEST_ASSERT(2);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
183 s3 = s2->next;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
184 CX_TEST_ASSERT(s3);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
185 CX_TEST_ASSERT(!cx_strcmp(s0->str, "ab$cd/"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
186 CX_TEST_ASSERT(s0->type == STRING_SEGMENT_STR);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
187 CX_TEST_ASSERT(!cx_strcmp(s1->str, "1"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
188 CX_TEST_ASSERT(s1->type == STRING_SEGMENT_NUM_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
189 CX_TEST_ASSERT(!cx_strcmp(s2->str, "/"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
190 CX_TEST_ASSERT(s2->type == STRING_SEGMENT_STR);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
191 CX_TEST_ASSERT(!cx_strcmp(s3->str, "2"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
192 CX_TEST_ASSERT(s3->type == STRING_SEGMENT_NUM_PLACEHOLDER);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
193 CX_TEST_ASSERT(s3->next == NULL);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
194 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
195 }
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
196
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
197 cxMempoolFree(mp);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
198 }
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
199
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
200 CX_TEST(test_string_template_compile_error) {
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
201 // TODO
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
202 }
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
203
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
204 static cxmutstr get_var(const CxAllocator *a, StringTemplateSegment *seg, void *userdata, WSBool *free_str) {
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
205 cxmutstr var_value = cx_strcat_a(a, 3, cx_str("var("), seg->str, cx_str(")"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
206 *free_str = TRUE;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
207 return var_value;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
208 }
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
209
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
210 CX_TEST(test_string_template_write_to) {
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
211 CxMempool *mp = cxMempoolCreate(100, CX_MEMPOOL_TYPE_ADVANCED);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
212 const CxAllocator *a = mp->allocator;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
213
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
214 CxBuffer buf;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
215 cxBufferInit(&buf, NULL, 1024, a, CX_BUFFER_AUTO_EXTEND|CX_BUFFER_FREE_CONTENTS);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
216 StringTemplate *tpl = NULL;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
217 CX_TEST_DO {
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
218 tpl = string_template_compile(a, cx_str("hello world"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
219 ssize_t r = string_template_write_to(tpl, a, get_var, NULL, &buf, (cx_write_func)cxBufferWrite);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
220 CX_TEST_ASSERT(r > 0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
221 CX_TEST_ASSERT(!cx_strcmp(cx_strn(buf.space, buf.pos), cx_str("hello world")));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
222 buf.pos = 0;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
223 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
224
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
225 tpl = string_template_compile(a, cx_str("insert $var here"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
226 r = string_template_write_to(tpl, a, get_var, NULL, &buf, (cx_write_func)cxBufferWrite);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
227 CX_TEST_ASSERT(r > 0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
228 CX_TEST_ASSERT(!cx_strcmp(cx_strn(buf.space, buf.pos), cx_str("insert var(var) here")));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
229 buf.pos = 0;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
230 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
231
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
232 tpl = string_template_compile(a, cx_str("$1$2$3$4$5"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
233 r = string_template_write_to(tpl, a, get_var, NULL, &buf, (cx_write_func)cxBufferWrite);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
234 CX_TEST_ASSERT(r > 0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
235 CX_TEST_ASSERT(!cx_strcmp(cx_strn(buf.space, buf.pos), cx_str("var(1)var(2)var(3)var(4)var(5)")));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
236 buf.pos = 0;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
237 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
238
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
239 tpl = string_template_compile(a, cx_str("$$escape$$$myvar$$end"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
240 r = string_template_write_to(tpl, a, get_var, NULL, &buf, (cx_write_func)cxBufferWrite);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
241 CX_TEST_ASSERT(r > 0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
242 CX_TEST_ASSERT(!cx_strcmp(cx_strn(buf.space, buf.pos), cx_str("$escape$var(myvar)$end")));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
243 buf.pos = 0;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
244 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
245
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
246 tpl = string_template_compile(a, cx_str("$$$$${test}"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
247 r = string_template_write_to(tpl, a, get_var, NULL, &buf, (cx_write_func)cxBufferWrite);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
248 CX_TEST_ASSERT(r > 0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
249 CX_TEST_ASSERT(!cx_strcmp(cx_strn(buf.space, buf.pos), cx_str("$$var(test)")));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
250 buf.pos = 0;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
251 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
252
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
253 tpl = string_template_compile(a, cx_str("${123}end"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
254 r = string_template_write_to(tpl, a, get_var, NULL, &buf, (cx_write_func)cxBufferWrite);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
255 CX_TEST_ASSERT(r > 0);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
256 CX_TEST_ASSERT(!cx_strcmp(cx_strn(buf.space, buf.pos), cx_str("var(123)end")));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
257 buf.pos = 0;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
258 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
259 }
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
260 cxBufferDestroy(&buf);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
261 cxMempoolFree(mp);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
262 }
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
263
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
264 CX_TEST(test_string_template_build_string) {
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
265 CxMempool *mp = cxMempoolCreate(100, CX_MEMPOOL_TYPE_ADVANCED);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
266 const CxAllocator *a = mp->allocator;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
267
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
268 StringTemplate *tpl = NULL;
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
269 CX_TEST_DO {
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
270 tpl = string_template_compile(a, cx_str("insert $var here"));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
271 cxmutstr str = string_template_build_string(tpl, a, get_var, NULL);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
272 CX_TEST_ASSERT(str.ptr);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
273 CX_TEST_ASSERT(!cx_strcmp(str, cx_str("insert var(var) here")));
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
274 string_template_free(tpl);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
275 }
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
276
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
277 cxMempoolFree(mp);
9728d3a2ac97 add simple string template function
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
278 }

mercurial