Sat, 22 Nov 2025 16:44:42 +0100
add simple string template function
|
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 | } |