Sat, 02 Nov 2024 19:27:45 +0100
add support for UCX strings in cxPropertiesFill()
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
1 | /* | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
3 | * | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
4 | * Copyright 2024 Mike Becker, Olaf Wintermann All rights reserved. | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
5 | * | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
6 | * Redistribution and use in source and binary forms, with or without | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
7 | * modification, are permitted provided that the following conditions are met: | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
8 | * | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
9 | * 1. Redistributions of source code must retain the above copyright | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
10 | * notice, this list of conditions and the following disclaimer. | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
11 | * | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
12 | * 2. Redistributions in binary form must reproduce the above copyright | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
13 | * notice, this list of conditions and the following disclaimer in the | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
14 | * documentation and/or other materials provided with the distribution. | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
15 | * | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
26 | * POSSIBILITY OF SUCH DAMAGE. | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
27 | */ | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
28 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
29 | #include "cx/test.h" | 
| 
928
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
30 | #include "util_allocator.h" | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
31 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
32 | #include "cx/properties.h" | 
| 
928
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
33 | #include "cx/hash_map.h" | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
34 | |
| 
964
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
35 | CX_TEST(test_properties_init) { | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
36 | CxProperties prop; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
37 | CX_TEST_DO { | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
38 | cxPropertiesInitDefault(&prop); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
39 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
40 | CX_TEST_ASSERT(prop.config.delimiter == '='); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
41 | CX_TEST_ASSERT(prop.config.comment1 == '#'); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
42 | CX_TEST_ASSERT(prop.config.comment2 == 0); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
43 | CX_TEST_ASSERT(prop.config.comment3 == 0); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
44 | CX_TEST_ASSERT(prop.flags == 0); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
45 | CX_TEST_ASSERT(prop.text == NULL); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
46 | CX_TEST_ASSERT(prop.buf == NULL); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
47 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
48 | cxPropertiesDestroy(&prop); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
49 | } | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
50 | } | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
51 | |
| 
964
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
52 | CX_TEST(test_properties_next) { | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
53 | const char *tests[] = { | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
54 | "name = value\n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
55 | "name=value\n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
56 | "n=value\n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
57 | "name=v\n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
58 | "n=v\n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
59 | "name = value # comment\n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
60 | "#comment\nn=v\n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
61 | "# comment1\n# comment2\n\n \n\nname = value\n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
62 | " name = value\n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
63 | "name = value\n\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
64 | }; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
65 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
66 | const char *keys[] = { | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
67 | "name", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
68 | "name", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
69 | "n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
70 | "name", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
71 | "n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
72 | "name", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
73 | "n", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
74 | "name", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
75 | "name", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
76 | "name" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
77 | }; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
78 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
79 | const char *values[] = { | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
80 | "value", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
81 | "value", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
82 | "value", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
83 | "v", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
84 | "v", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
85 | "value", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
86 | "v", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
87 | "value", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
88 | "value", | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
89 | "value" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
90 | }; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
91 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
92 | CxProperties prop; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
93 | cxPropertiesInitDefault(&prop); | 
| 
928
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
94 | CxPropertiesStatus result; | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
95 | cxstring key; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
96 | cxstring value; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
97 | CX_TEST_DO { | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
98 | for (int i = 0; i < 10; i++) { | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
99 | cxPropertiesFill(&prop, tests[i]); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
100 | CX_TEST_ASSERT(prop.text == tests[i]); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
101 | CX_TEST_ASSERT(prop.text_size == strlen(tests[i])); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
102 | CX_TEST_ASSERT(prop.text_pos == 0); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
103 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
104 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
105 | cxstring k = cx_str(keys[i]); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
106 | cxstring v = cx_str(values[i]); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
107 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
108 | CX_TEST_ASSERT(0 == cx_strcmp(key, k)); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
109 | CX_TEST_ASSERT(0 == cx_strcmp(value, v)); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
110 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
111 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
112 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
113 | } | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
114 | } | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
115 | cxPropertiesDestroy(&prop); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
116 | } | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
117 | |
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
118 | CX_TEST_SUBROUTINE(test_properties_next_multi_check, CxProperties *prop) { | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
119 | const char *keys[] = { | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
120 | "a", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
121 | "b", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
122 | "c", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
123 | "uap", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
124 | "name", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
125 | "key1", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
126 | "key2", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
127 | "key3" | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
128 | }; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
129 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
130 | const char *values[] = { | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
131 | "a value", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
132 | "b value", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
133 | "core", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
134 | "core", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
135 | "ucx", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
136 | "value1", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
137 | "value2", | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
138 | "value3" | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
139 | }; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
140 | CxPropertiesStatus result; | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
141 | cxstring key; | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
142 | cxstring value; | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
143 | for (int i = 0; i < 8; i++) { | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
144 | result = cxPropertiesNext(prop, &key, &value); | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
145 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
146 | CX_TEST_ASSERT(!cx_strcmp(key, cx_str(keys[i]))); | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
147 | CX_TEST_ASSERT(!cx_strcmp(value, cx_str(values[i]))); | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
148 | } | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
149 | result = cxPropertiesNext(prop, &key, &value); | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
150 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
151 | } | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
152 | |
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
153 | CX_TEST(test_properties_next_multi) { | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
154 | const char *str = "#\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
155 | "# properties\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
156 | "# contains key/value pairs\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
157 | "#\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
158 | "a = a value\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
159 | "b = b value\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
160 | "c = core\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
161 | "\n# test\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
162 | "uap = core\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
163 | "name = ucx\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
164 | "# no = property\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
165 | "key1 = value1\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
166 | "#key1 = wrong value\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
167 | "#key2 = not value 2\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
168 | "key2 = value2\n" | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
169 | "\n\n\n \n key3=value3\n"; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
170 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
171 | CxProperties prop; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
172 | cxPropertiesInitDefault(&prop); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
173 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
174 | CX_TEST_DO { | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
175 | CxPropertiesStatus result; | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
176 | cxstring key; | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
177 | cxstring value; | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
178 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
179 | CX_TEST_ASSERT(result == CX_PROPERTIES_NULL_INPUT); | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
180 | |
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
181 | // check for C string | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
182 | cxPropertiesFill(&prop, str); | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
183 | CX_TEST_CALL_SUBROUTINE(test_properties_next_multi_check, &prop); | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
184 | |
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
185 | // check for cxstring | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
186 | cxPropertiesFill(&prop, cx_str(str)); | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
187 | CX_TEST_CALL_SUBROUTINE(test_properties_next_multi_check, &prop); | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
188 | |
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
189 | // check for mutstr | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
190 | cxPropertiesFill(&prop, cx_mutstr((char*)str)); | 
| 
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
191 | CX_TEST_CALL_SUBROUTINE(test_properties_next_multi_check, &prop); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
192 | } | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
193 | cxPropertiesDestroy(&prop); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
194 | } | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
195 | |
| 
964
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
196 | CX_TEST(test_properties_next_part) { | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
197 | CxProperties prop; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
198 | cxPropertiesInitDefault(&prop); | 
| 
928
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
199 | CxPropertiesStatus result; | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
200 | cxstring key; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
201 | cxstring value; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
202 | const char *str; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
203 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
204 | CX_TEST_DO { | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
205 | str = ""; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
206 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
207 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
208 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
209 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
210 | str = " \n"; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
211 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
212 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
213 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
214 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
215 | str = "name"; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
216 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
217 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
218 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
219 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
220 | str = " "; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
221 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
222 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
223 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
224 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
225 | // call fill twice in a row | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
226 | str = "= "; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
227 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
228 | str = "value"; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
229 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
230 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
231 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
232 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
233 | str = "\n"; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
234 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
235 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
236 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
237 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("name"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
238 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("value"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
239 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
240 | // second round | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
241 | str = "#comment\n"; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
242 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
243 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
244 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
245 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
246 | str = "#comment\nname2 = "; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
247 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
248 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
249 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
250 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
251 | str = "value2\na = b\n"; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
252 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
253 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
254 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
255 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("name2"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
256 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("value2"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
257 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
258 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
259 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
260 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("a"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
261 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("b"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
262 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
263 | str = "# comment\n#\n#\ntests = "; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
264 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
265 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
266 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
267 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
268 | str = "test1 "; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
269 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
270 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
271 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
272 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
273 | str = "test2 test3 test4\n"; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
274 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
275 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
276 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
277 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("tests"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
278 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("test1 test2 test3 test4"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
279 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
280 | // test if cxPropertiesNext finds a name/value after a comment | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
281 | str = "# just a comment"; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
282 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
283 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
284 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
285 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
286 | str = " in 3"; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
287 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
288 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
289 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
290 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
291 | str = " parts\nx = 1\n"; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
292 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
293 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
294 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
295 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("x"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
296 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("1"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
297 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
298 | // finally we are done | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
299 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
300 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
301 | } | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
302 | cxPropertiesDestroy(&prop); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
303 | } | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
304 | |
| 
964
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
305 | CX_TEST(test_properties_next_long_lines) { | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
306 | CxProperties prop; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
307 | cxPropertiesInitDefault(&prop); | 
| 
928
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
308 | CxPropertiesStatus result; | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
309 | cxstring key; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
310 | cxstring value; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
311 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
312 | size_t key_len = 512; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
313 | char *long_key = (char*)malloc(key_len); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
314 | memset(long_key, 'a', 70); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
315 | memset(long_key + 70, 'b', 242); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
316 | memset(long_key + 312, 'c', 200); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
317 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
318 | size_t value_len = 2048; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
319 | char *long_value = (char*)malloc(value_len); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
320 | memset(long_value, 'x', 1024); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
321 | memset(long_value+1024, 'y', 1024); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
322 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
323 | CX_TEST_DO { | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
324 | cxPropertiesFilln(&prop, long_key, 10); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
325 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
326 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
327 | |
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
328 | cxPropertiesFilln(&prop, long_key + 10, 202); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
329 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
330 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
331 | |
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
332 | cxPropertiesFilln(&prop, long_key + 212, 200); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
333 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
334 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
335 | |
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
336 | cxPropertiesFilln(&prop, long_key + 412, 100); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
337 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
338 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
339 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
340 | const char *str = " = "; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
341 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
342 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
343 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
344 | |
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
345 | cxPropertiesFilln(&prop, long_value, 512); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
346 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
347 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
348 | |
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
349 | cxPropertiesFilln(&prop, long_value + 512, 1024); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
350 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
351 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
352 | |
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
353 | cxPropertiesFilln(&prop, long_value + 1536, 512); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
354 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
355 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
356 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
357 | str = "\n#comment\nkey = value\n"; | 
| 
972
 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 
Mike Becker <universe@uap-core.de> 
parents: 
964 
diff
changeset
 | 
358 | cxPropertiesFill(&prop, str); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
359 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
360 | cxstring k = cx_strn(long_key, key_len); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
361 | cxstring v = cx_strn(long_value, value_len); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
362 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
363 | CX_TEST_ASSERT(0 == cx_strcmp(key, k)); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
364 | CX_TEST_ASSERT(0 == cx_strcmp(value, v)); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
365 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
366 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
367 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
368 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("key"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
369 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("value"))); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
370 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
371 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
372 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
373 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
374 | CX_TEST_ASSERT(prop.buf != NULL); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
375 | CX_TEST_ASSERT(prop.buf_capacity > 0); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
376 | CX_TEST_ASSERT(prop.buf_size == 0); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
377 | cxPropertiesDestroy(&prop); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
378 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
379 | CX_TEST_ASSERT(prop.buf == NULL); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
380 | CX_TEST_ASSERT(prop.buf_capacity == 0); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
381 | CX_TEST_ASSERT(prop.buf_size == 0); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
382 | } | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
383 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
384 | free(long_key); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
385 | free(long_value); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
386 | } | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
387 | |
| 
964
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
388 | CX_TEST(test_properties_load_string_to_map) { | 
| 
928
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
389 | CxTestingAllocator talloc; | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
390 | cx_testing_allocator_init(&talloc); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
391 | CxAllocator *alloc = &talloc.base; | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
392 | CX_TEST_DO { | 
| 
929
 
192a440b99df
fix totally bugged assertion in cxPropertiesUseStack()
 
Mike Becker <universe@uap-core.de> 
parents: 
928 
diff
changeset
 | 
393 | char buffer[512]; | 
| 
 
192a440b99df
fix totally bugged assertion in cxPropertiesUseStack()
 
Mike Becker <universe@uap-core.de> 
parents: 
928 
diff
changeset
 | 
394 | CxProperties prop; | 
| 
 
192a440b99df
fix totally bugged assertion in cxPropertiesUseStack()
 
Mike Becker <universe@uap-core.de> 
parents: 
928 
diff
changeset
 | 
395 | cxPropertiesInitDefault(&prop); | 
| 
 
192a440b99df
fix totally bugged assertion in cxPropertiesUseStack()
 
Mike Becker <universe@uap-core.de> 
parents: 
928 
diff
changeset
 | 
396 | cxPropertiesUseStack(&prop, buffer, 512); | 
| 
 
192a440b99df
fix totally bugged assertion in cxPropertiesUseStack()
 
Mike Becker <universe@uap-core.de> 
parents: 
928 
diff
changeset
 | 
397 | |
| 
928
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
398 | const char *str = "key1 = value1\nkey2 = value2\n\n#comment\n\nkey3 = value3\n"; | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
399 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
400 | CxMap *map = cxHashMapCreateSimple(CX_STORE_POINTERS); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
401 | cxDefineAdvancedDestructor(map, cxFree, alloc); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
402 | CxPropertiesSink sink = cxPropertiesMapSink(map); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
403 | sink.data = alloc; // use the testing allocator | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
404 | CxPropertiesSource src = cxPropertiesCstrSource(str); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
405 | CxPropertiesStatus status = cxPropertiesLoad(&prop, sink, src); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
406 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
407 | CX_TEST_ASSERT(status == CX_PROPERTIES_NO_ERROR); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
408 | CX_TEST_ASSERT(cxMapSize(map) == 3); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
409 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
410 | char *v1 = cxMapGet(map, "key1"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
411 | char *v2 = cxMapGet(map, "key2"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
412 | char *v3 = cxMapGet(map, "key3"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
413 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
414 | CX_TEST_ASSERTM(v1, "value for key1 not found"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
415 | CX_TEST_ASSERTM(v2, "value for key2 not found"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
416 | CX_TEST_ASSERTM(v3, "value for key3 not found"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
417 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
418 | CX_TEST_ASSERT(!strcmp(v1, "value1")); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
419 | CX_TEST_ASSERT(!strcmp(v2, "value2")); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
420 | CX_TEST_ASSERT(!strcmp(v3, "value3")); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
421 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
422 | // second test | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
423 | cxMapClear(map); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
424 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
425 | str = "\n#comment\n"; | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
426 | src = cxPropertiesCstrnSource(str, strlen(str)); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
427 | status = cxPropertiesLoad(&prop, sink, src); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
428 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
429 | CX_TEST_ASSERT(status == CX_PROPERTIES_NO_DATA); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
430 | CX_TEST_ASSERT(cxMapSize(map) == 0); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
431 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
432 | str = "key1 = value1\nsyntax error line\n"; | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
433 | src = cxPropertiesStringSource(cx_str(str)); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
434 | status = cxPropertiesLoad(&prop, sink, src); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
435 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
436 | CX_TEST_ASSERT(status == CX_PROPERTIES_INVALID_MISSING_DELIMITER); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
437 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
438 | // the successfully read k/v-pair is in the map, nevertheless | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
439 | CX_TEST_ASSERT(cxMapSize(map) == 1); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
440 | char *v = cxMapGet(map, "key1"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
441 | CX_TEST_ASSERT(!strcmp(v, "value1")); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
442 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
443 | cxMapDestroy(map); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
444 | cxPropertiesDestroy(&prop); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
445 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
446 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
447 | } | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
448 | cx_testing_allocator_destroy(&talloc); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
449 | } | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
450 | |
| 
964
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
451 | CX_TEST(test_properties_load_file_to_map) { | 
| 
928
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
452 | CxTestingAllocator talloc; | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
453 | cx_testing_allocator_init(&talloc); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
454 | CxAllocator *alloc = &talloc.base; | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
455 | CX_TEST_DO { | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
456 | FILE *f = tmpfile(); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
457 | CX_TEST_ASSERTM(f, "test file cannot be opened, test aborted"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
458 | fprintf(f, "# properties file\n\nkey1 = value1\nkey2 = value2\n"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
459 | fprintf(f, "\n\nkey3 = value3\n\n"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
460 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
461 | size_t key_len = 512; | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
462 | char *long_key = (char *) malloc(key_len); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
463 | memset(long_key, 'k', 512); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
464 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
465 | size_t value_len = 2048; | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
466 | char *long_value = (char *) malloc(value_len); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
467 | memset(long_value, 'v', 2048); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
468 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
469 | fwrite(long_key, 1, key_len, f); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
470 | fprintf(f, " = "); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
471 | fwrite(long_value, 1, value_len, f); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
472 | fprintf(f, " \n"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
473 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
474 | fprintf(f, "\n\n\n\nlast_key = property value\n"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
475 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
476 | fflush(f); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
477 | fseek(f, 0, SEEK_SET); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
478 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
479 | // preparation of test file complete | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
480 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
481 | CxMap *map = cxHashMapCreateSimple(CX_STORE_POINTERS); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
482 | cxDefineAdvancedDestructor(map, cxFree, alloc); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
483 | CxProperties prop; | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
484 | cxPropertiesInitDefault(&prop); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
485 | CxPropertiesSink sink = cxPropertiesMapSink(map); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
486 | sink.data = alloc; // use the testing allocator | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
487 | CxPropertiesSource src = cxPropertiesFileSource(f, 512); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
488 | CxPropertiesStatus status = cxPropertiesLoad(&prop, sink, src); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
489 | fclose(f); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
490 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
491 | CX_TEST_ASSERT(status == CX_PROPERTIES_NO_ERROR); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
492 | CX_TEST_ASSERT(cxMapSize(map) == 5); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
493 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
494 | char *v1 = cxMapGet(map, "key1"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
495 | char *v2 = cxMapGet(map, cx_str("key2")); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
496 | char *v3 = cxMapGet(map, "key3"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
497 | char *lv = cxMapGet(map, cx_strn(long_key, key_len)); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
498 | char *lk = cxMapGet(map, "last_key"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
499 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
500 | CX_TEST_ASSERTM(v1, "value for key1 not found"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
501 | CX_TEST_ASSERTM(v2, "value for key2 not found"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
502 | CX_TEST_ASSERTM(v3, "value for key3 not found"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
503 | CX_TEST_ASSERTM(lv, "value for long key not found"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
504 | CX_TEST_ASSERTM(lk, "value for last_key not found"); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
505 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
506 | CX_TEST_ASSERT(!strcmp(v1, "value1")); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
507 | CX_TEST_ASSERT(!strcmp(v2, "value2")); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
508 | CX_TEST_ASSERT(!strcmp(v3, "value3")); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
509 | cxstring expected = cx_strn(long_value, value_len); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
510 | cxstring actual = cx_str(lv); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
511 | CX_TEST_ASSERT(!cx_strcmp(expected, actual)); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
512 | CX_TEST_ASSERT(!strcmp(lk, "property value")); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
513 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
514 | free(long_key); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
515 | free(long_value); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
516 | cxMapDestroy(map); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
517 | cxPropertiesDestroy(&prop); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
518 | |
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
519 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
520 | } | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
521 | cx_testing_allocator_destroy(&talloc); | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
522 | } | 
| 
 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 
Mike Becker <universe@uap-core.de> 
parents: 
924 
diff
changeset
 | 
523 | |
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
524 | CxTestSuite *cx_test_suite_properties(void) { | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
525 | CxTestSuite *suite = cx_test_suite_new("properties"); | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
526 | |
| 
964
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
527 | cx_test_register(suite, test_properties_init); | 
| 
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
528 | cx_test_register(suite, test_properties_next); | 
| 
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
529 | cx_test_register(suite, test_properties_next_multi); | 
| 
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
530 | cx_test_register(suite, test_properties_next_part); | 
| 
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
531 | cx_test_register(suite, test_properties_next_long_lines); | 
| 
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
532 | cx_test_register(suite, test_properties_load_string_to_map); | 
| 
 
3860f509fcbe
fix test function names not in line with naming convention
 
Mike Becker <universe@uap-core.de> 
parents: 
929 
diff
changeset
 | 
533 | cx_test_register(suite, test_properties_load_file_to_map); | 
| 
924
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
534 | |
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
535 | return suite; | 
| 
 
3c90dfc35f06
add implementation for the properties parser
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
536 | } |