Fri, 10 Oct 2025 12:26:43 +0200
assert instead of assume sorted property in debug builds
| 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: 
924diff
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: 
924diff
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: 
929diff
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); | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 44 | CX_TEST_ASSERT(prop.input.space == NULL); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 45 | CX_TEST_ASSERT(prop.buffer.space == NULL); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 46 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 47 | cxPropertiesDestroy(&prop); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 48 | } | 
| 
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 | |
| 964 
3860f509fcbe
fix test function names not in line with naming convention
 Mike Becker <universe@uap-core.de> parents: 
929diff
changeset | 51 | CX_TEST(test_properties_next) { | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 52 | const char *tests[] = { | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 53 | "name = value\n", | 
| 
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 | "n=value\n", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 56 | "name=v\n", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 57 | "n=v\n", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 58 | "name = value # comment\n", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 59 | "#comment\nn=v\n", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 60 | "# 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 | 61 | " name = value\n", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 62 | "name = value\n\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 63 | }; | 
| 
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 | const char *keys[] = { | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 66 | "name", | 
| 
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 | "n", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 69 | "name", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 70 | "n", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 71 | "name", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 72 | "n", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 73 | "name", | 
| 
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 | }; | 
| 
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 | const char *values[] = { | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 79 | "value", | 
| 
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 | "v", | 
| 
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 | "value", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 85 | "v", | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 86 | "value", | 
| 
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 | }; | 
| 
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 | CxProperties prop; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 92 | cxPropertiesInitDefault(&prop); | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 93 | CxPropertiesStatus result; | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 94 | cxstring key; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 95 | cxstring value; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 96 | CX_TEST_DO { | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 97 | for (int i = 0; i < 10; i++) { | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 98 | cxPropertiesFill(&prop, tests[i]); | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 99 | CX_TEST_ASSERT(prop.input.space == tests[i]); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 100 | CX_TEST_ASSERT(prop.input.size == strlen(tests[i])); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 101 | CX_TEST_ASSERT(prop.input.pos == 0); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 102 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 103 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 104 | cxstring k = cx_str(keys[i]); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 105 | cxstring v = cx_str(values[i]); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 106 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 107 | CX_TEST_ASSERT(0 == cx_strcmp(key, k)); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 108 | CX_TEST_ASSERT(0 == cx_strcmp(value, v)); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 109 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 110 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 111 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 112 | } | 
| 
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 | cxPropertiesDestroy(&prop); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 115 | } | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 116 | |
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 117 | 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 | 118 | const char *keys[] = { | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 119 | "a", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 120 | "b", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 121 | "c", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 122 | "uap", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 123 | "name", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 124 | "key1", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 125 | "key2", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 126 | "key3" | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 127 | }; | 
| 
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 | const char *values[] = { | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 130 | "a value", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 131 | "b value", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 132 | "core", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 133 | "core", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 134 | "ucx", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 135 | "value1", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 136 | "value2", | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 137 | "value3" | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 138 | }; | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 139 | CxPropertiesStatus result; | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 140 | cxstring key; | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 141 | cxstring value; | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 142 | for (int i = 0; i < 8; i++) { | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 143 | result = cxPropertiesNext(prop, &key, &value); | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 144 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 145 | 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: 
964diff
changeset | 146 | 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: 
964diff
changeset | 147 | } | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 148 | result = cxPropertiesNext(prop, &key, &value); | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 149 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 150 | } | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 151 | |
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 152 | CX_TEST(test_properties_next_multi) { | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 153 | const char *str = "#\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 154 | "# properties\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 155 | "# contains key/value pairs\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 156 | "#\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 157 | "a = a value\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 158 | "b = b value\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 159 | "c = core\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 160 | "\n# test\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 161 | "uap = core\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 162 | "name = ucx\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 163 | "# no = property\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 164 | "key1 = value1\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 165 | "#key1 = wrong value\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 166 | "#key2 = not value 2\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 167 | "key2 = value2\n" | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 168 | "\n\n\n \n key3=value3\n"; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 169 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 170 | CxProperties prop; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 171 | cxPropertiesInitDefault(&prop); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 172 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 173 | CX_TEST_DO { | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 174 | CxPropertiesStatus result; | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 175 | cxstring key; | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 176 | cxstring value; | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 177 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 178 | CX_TEST_ASSERT(result == CX_PROPERTIES_NULL_INPUT); | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 179 | |
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 180 | // check for C string | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 181 | cxPropertiesFill(&prop, str); | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 182 | 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: 
964diff
changeset | 183 | |
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 184 | // check for cxstring | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 185 | cxPropertiesFill(&prop, cx_str(str)); | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 186 | 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: 
964diff
changeset | 187 | |
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 188 | // check for mutstr | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 189 | cxPropertiesFill(&prop, cx_mutstr((char*)str)); | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 190 | 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 | 191 | } | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 192 | cxPropertiesDestroy(&prop); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 193 | } | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 194 | |
| 964 
3860f509fcbe
fix test function names not in line with naming convention
 Mike Becker <universe@uap-core.de> parents: 
929diff
changeset | 195 | CX_TEST(test_properties_next_part) { | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 196 | CxProperties prop; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 197 | cxPropertiesInitDefault(&prop); | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 198 | CxPropertiesStatus result; | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 199 | cxstring key; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 200 | cxstring value; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 201 | const char *str; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 202 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 203 | CX_TEST_DO { | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 204 | str = ""; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 205 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 206 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 207 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 208 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 209 | str = " \n"; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 210 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 211 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 212 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 213 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 214 | str = "name"; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 215 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 216 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 217 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 218 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 219 | str = " "; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 220 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 221 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 222 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 223 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 224 | // call fill twice in a row | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 225 | str = "= "; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 226 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 227 | str = "value"; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 228 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 229 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 230 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 231 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 232 | str = "\n"; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 233 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 234 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 235 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 236 | 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 | 237 | 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 | 238 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 239 | // second round | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 240 | str = "#comment\n"; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 241 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 242 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 243 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 244 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 245 | str = "#comment\nname2 = "; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 246 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 247 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 248 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 249 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 250 | str = "value2\na = b\n"; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 251 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 252 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 253 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 254 | 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 | 255 | 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 | 256 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 257 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 258 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 259 | 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 | 260 | 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 | 261 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 262 | str = "# comment\n#\n#\ntests = "; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 263 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 264 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 265 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 266 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 267 | str = "test1 "; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 268 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 269 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 270 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 271 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 272 | str = "test2 test3 test4\n"; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 273 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 274 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 275 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 276 | 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 | 277 | 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 | 278 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 279 | // 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 | 280 | str = "# just a comment"; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 281 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 282 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 283 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 284 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 285 | str = " in 3"; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 286 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 287 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 288 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 289 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 290 | str = " parts\nx = 1\n"; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 291 | CX_TEST_ASSERT(0 == cxPropertiesFill(&prop, str)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 292 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 293 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 294 | 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 | 295 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("1"))); | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 296 | |
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 297 | // finally we are done | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 298 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 299 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 300 | } | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 301 | cxPropertiesDestroy(&prop); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 302 | } | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 303 | |
| 964 
3860f509fcbe
fix test function names not in line with naming convention
 Mike Becker <universe@uap-core.de> parents: 
929diff
changeset | 304 | CX_TEST(test_properties_next_long_lines) { | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 305 | CxProperties prop; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 306 | cxPropertiesInitDefault(&prop); | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 307 | CxPropertiesStatus result; | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 308 | cxstring key; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 309 | cxstring value; | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 310 | |
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 311 | size_t key_len = 512; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 312 | char *long_key = (char*)malloc(key_len); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 313 | memset(long_key, 'a', 70); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 314 | memset(long_key + 70, 'b', 242); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 315 | memset(long_key + 312, 'c', 200); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 316 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 317 | size_t value_len = 2048; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 318 | char *long_value = (char*)malloc(value_len); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 319 | memset(long_value, 'x', 1024); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 320 | memset(long_value+1024, 'y', 1024); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 321 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 322 | CX_TEST_DO { | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 323 | cxPropertiesFilln(&prop, long_key, 10); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 324 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 325 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 326 | |
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 327 | cxPropertiesFilln(&prop, long_key + 10, 202); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 328 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 329 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 330 | |
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 331 | cxPropertiesFilln(&prop, long_key + 212, 200); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 332 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 333 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 334 | |
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 335 | cxPropertiesFilln(&prop, long_key + 412, 100); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 336 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 337 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 338 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 339 | const char *str = " = "; | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 340 | cxPropertiesFill(&prop, str); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 341 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 342 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 343 | |
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 344 | cxPropertiesFilln(&prop, long_value, 512); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 345 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 346 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 347 | |
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 348 | cxPropertiesFilln(&prop, long_value + 512, 1024); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 349 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 350 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 351 | |
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 352 | cxPropertiesFilln(&prop, long_value + 1536, 512); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 353 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 354 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 355 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 356 | str = "\n#comment\nkey = value\n"; | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
964diff
changeset | 357 | cxPropertiesFill(&prop, str); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 358 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 359 | cxstring k = cx_strn(long_key, key_len); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 360 | cxstring v = cx_strn(long_value, value_len); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 361 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 362 | CX_TEST_ASSERT(0 == cx_strcmp(key, k)); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 363 | CX_TEST_ASSERT(0 == cx_strcmp(value, v)); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 364 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 365 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 366 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 367 | 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 | 368 | 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 | 369 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 370 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 371 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 372 | |
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 373 | CX_TEST_ASSERT(prop.buffer.capacity > 0); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 374 | CX_TEST_ASSERT(cxBufferEof(&prop.buffer)); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 375 | CX_TEST_ASSERT(cxBufferEof(&prop.input)); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 376 | cxPropertiesDestroy(&prop); | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 377 | CX_TEST_ASSERT(prop.buffer.capacity == 0); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 378 | CX_TEST_ASSERT(prop.buffer.size == 0); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 379 | CX_TEST_ASSERT(prop.buffer.pos == 0); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 380 | } | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 381 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 382 | free(long_key); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 383 | free(long_value); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 384 | } | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 385 | |
| 964 
3860f509fcbe
fix test function names not in line with naming convention
 Mike Becker <universe@uap-core.de> parents: 
929diff
changeset | 386 | 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: 
924diff
changeset | 387 | CxTestingAllocator talloc; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 388 | cx_testing_allocator_init(&talloc); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 389 | CxAllocator *alloc = &talloc.base; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 390 | CX_TEST_DO { | 
| 929 
192a440b99df
fix totally bugged assertion in cxPropertiesUseStack()
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 391 | char buffer[512]; | 
| 
192a440b99df
fix totally bugged assertion in cxPropertiesUseStack()
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 392 | CxProperties prop; | 
| 
192a440b99df
fix totally bugged assertion in cxPropertiesUseStack()
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 393 | cxPropertiesInitDefault(&prop); | 
| 
192a440b99df
fix totally bugged assertion in cxPropertiesUseStack()
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 394 | cxPropertiesUseStack(&prop, buffer, 512); | 
| 
192a440b99df
fix totally bugged assertion in cxPropertiesUseStack()
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 395 | |
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 396 | 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: 
924diff
changeset | 397 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 398 | CxMap *map = cxHashMapCreateSimple(CX_STORE_POINTERS); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 399 | cxDefineAdvancedDestructor(map, cxFree, alloc); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 400 | CxPropertiesSink sink = cxPropertiesMapSink(map); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 401 | sink.data = alloc; // use the testing allocator | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 402 | CxPropertiesSource src = cxPropertiesCstrSource(str); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 403 | CxPropertiesStatus status = cxPropertiesLoad(&prop, sink, src); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 404 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 405 | CX_TEST_ASSERT(status == CX_PROPERTIES_NO_ERROR); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 406 | CX_TEST_ASSERT(cxMapSize(map) == 3); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 407 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 408 | char *v1 = cxMapGet(map, "key1"); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 409 | char *v2 = cxMapGet(map, "key2"); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 410 | char *v3 = cxMapGet(map, "key3"); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 411 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 412 | 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: 
924diff
changeset | 413 | 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: 
924diff
changeset | 414 | 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: 
924diff
changeset | 415 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 416 | CX_TEST_ASSERT(!strcmp(v1, "value1")); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 417 | CX_TEST_ASSERT(!strcmp(v2, "value2")); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 418 | CX_TEST_ASSERT(!strcmp(v3, "value3")); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 419 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 420 | // second test | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 421 | cxMapClear(map); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 422 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 423 | str = "\n#comment\n"; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 424 | src = cxPropertiesCstrnSource(str, strlen(str)); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 425 | status = cxPropertiesLoad(&prop, sink, src); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 426 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 427 | CX_TEST_ASSERT(status == CX_PROPERTIES_NO_DATA); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 428 | CX_TEST_ASSERT(cxMapSize(map) == 0); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 429 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 430 | str = "key1 = value1\nsyntax error line\n"; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 431 | src = cxPropertiesStringSource(cx_str(str)); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 432 | status = cxPropertiesLoad(&prop, sink, src); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 433 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 434 | 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: 
924diff
changeset | 435 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 436 | // 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: 
924diff
changeset | 437 | CX_TEST_ASSERT(cxMapSize(map) == 1); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 438 | char *v = cxMapGet(map, "key1"); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 439 | CX_TEST_ASSERT(!strcmp(v, "value1")); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 440 | |
| 993 
b642eca4b956
make names of destroy and free functions consistent - fixes #484
 Mike Becker <universe@uap-core.de> parents: 
972diff
changeset | 441 | cxMapFree(map); | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 442 | cxPropertiesDestroy(&prop); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 443 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 444 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 445 | } | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 446 | cx_testing_allocator_destroy(&talloc); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 447 | } | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 448 | |
| 964 
3860f509fcbe
fix test function names not in line with naming convention
 Mike Becker <universe@uap-core.de> parents: 
929diff
changeset | 449 | 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: 
924diff
changeset | 450 | CxTestingAllocator talloc; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 451 | cx_testing_allocator_init(&talloc); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 452 | CxAllocator *alloc = &talloc.base; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 453 | CX_TEST_DO { | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 454 | FILE *f = tmpfile(); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 455 | 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: 
924diff
changeset | 456 | 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: 
924diff
changeset | 457 | fprintf(f, "\n\nkey3 = value3\n\n"); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 458 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 459 | size_t key_len = 512; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 460 | char *long_key = (char *) malloc(key_len); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 461 | memset(long_key, 'k', 512); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 462 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 463 | size_t value_len = 2048; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 464 | char *long_value = (char *) malloc(value_len); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 465 | memset(long_value, 'v', 2048); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 466 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 467 | fwrite(long_key, 1, key_len, f); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 468 | fprintf(f, " = "); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 469 | fwrite(long_value, 1, value_len, f); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 470 | fprintf(f, " \n"); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 471 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 472 | 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: 
924diff
changeset | 473 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 474 | fflush(f); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 475 | fseek(f, 0, SEEK_SET); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 476 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 477 | // preparation of test file complete | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 478 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 479 | CxMap *map = cxHashMapCreateSimple(CX_STORE_POINTERS); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 480 | cxDefineAdvancedDestructor(map, cxFree, alloc); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 481 | CxProperties prop; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 482 | cxPropertiesInitDefault(&prop); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 483 | CxPropertiesSink sink = cxPropertiesMapSink(map); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 484 | sink.data = alloc; // use the testing allocator | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 485 | CxPropertiesSource src = cxPropertiesFileSource(f, 512); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 486 | CxPropertiesStatus status = cxPropertiesLoad(&prop, sink, src); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 487 | fclose(f); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 488 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 489 | CX_TEST_ASSERT(status == CX_PROPERTIES_NO_ERROR); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 490 | CX_TEST_ASSERT(cxMapSize(map) == 5); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 491 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 492 | char *v1 = cxMapGet(map, "key1"); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 493 | char *v2 = cxMapGet(map, cx_str("key2")); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 494 | char *v3 = cxMapGet(map, "key3"); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 495 | 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: 
924diff
changeset | 496 | char *lk = cxMapGet(map, "last_key"); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 497 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 498 | 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: 
924diff
changeset | 499 | 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: 
924diff
changeset | 500 | 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: 
924diff
changeset | 501 | 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: 
924diff
changeset | 502 | 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: 
924diff
changeset | 503 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 504 | CX_TEST_ASSERT(!strcmp(v1, "value1")); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 505 | CX_TEST_ASSERT(!strcmp(v2, "value2")); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 506 | CX_TEST_ASSERT(!strcmp(v3, "value3")); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 507 | cxstring expected = cx_strn(long_value, value_len); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 508 | cxstring actual = cx_str(lv); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 509 | CX_TEST_ASSERT(!cx_strcmp(expected, actual)); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 510 | CX_TEST_ASSERT(!strcmp(lk, "property value")); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 511 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 512 | free(long_key); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 513 | free(long_value); | 
| 993 
b642eca4b956
make names of destroy and free functions consistent - fixes #484
 Mike Becker <universe@uap-core.de> parents: 
972diff
changeset | 514 | cxMapFree(map); | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 515 | cxPropertiesDestroy(&prop); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 516 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 517 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 518 | } | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 519 | cx_testing_allocator_destroy(&talloc); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 520 | } | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 521 | |
| 1124 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 522 | CX_TEST(test_properties_load_incomplete) { | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 523 | CxTestingAllocator talloc; | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 524 | cx_testing_allocator_init(&talloc); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 525 | CxAllocator *alloc = &talloc.base; | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 526 | CX_TEST_DO { | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 527 | char buffer[512]; | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 528 | CxProperties prop; | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 529 | cxPropertiesInitDefault(&prop); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 530 | cxPropertiesUseStack(&prop, buffer, 512); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 531 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 532 | CxMap *map = cxHashMapCreateSimple(CX_STORE_POINTERS); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 533 | cxDefineAdvancedDestructor(map, cxFree, alloc); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 534 | CxPropertiesSink sink = cxPropertiesMapSink(map); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 535 | sink.data = alloc; // use the testing allocator | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 536 | CxPropertiesSource src = cxPropertiesCstrSource("key1 = value1\nkey2 = value2\n\n#comment\n\nkey3"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 537 | CxPropertiesStatus status = cxPropertiesLoad(&prop, sink, src); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 538 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 539 | CX_TEST_ASSERT(status == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 540 | CX_TEST_ASSERT(cxMapSize(map) == 2); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 541 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 542 | char *v1 = cxMapGet(map, "key1"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 543 | char *v2 = cxMapGet(map, "key2"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 544 | char *v3 = cxMapGet(map, "key3"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 545 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 546 | CX_TEST_ASSERTM(v1, "value for key1 not found"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 547 | CX_TEST_ASSERTM(v2, "value for key2 not found"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 548 | CX_TEST_ASSERT(v3 == NULL); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 549 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 550 | CX_TEST_ASSERT(!strcmp(v1, "value1")); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 551 | CX_TEST_ASSERT(!strcmp(v2, "value2")); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 552 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 553 | // provide a source with the remaining data | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 554 | src = cxPropertiesCstrSource(" = value3\n"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 555 | status = cxPropertiesLoad(&prop, sink, src); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 556 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 557 | CX_TEST_ASSERT(status == CX_PROPERTIES_NO_ERROR); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 558 | CX_TEST_ASSERT(cxMapSize(map) == 3); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 559 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 560 | v1 = cxMapGet(map, "key1"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 561 | v2 = cxMapGet(map, "key2"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 562 | v3 = cxMapGet(map, "key3"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 563 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 564 | CX_TEST_ASSERTM(v1, "value for key1 not found"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 565 | CX_TEST_ASSERTM(v2, "value for key2 not found"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 566 | CX_TEST_ASSERTM(v3, "value for key3 not found"); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 567 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 568 | CX_TEST_ASSERT(!strcmp(v1, "value1")); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 569 | CX_TEST_ASSERT(!strcmp(v2, "value2")); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 570 | CX_TEST_ASSERT(!strcmp(v3, "value3")); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 571 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 572 | cxMapFree(map); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 573 | cxPropertiesDestroy(&prop); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 574 | |
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 575 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 576 | } | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 577 | cx_testing_allocator_destroy(&talloc); | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 578 | } | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 579 | |
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 580 | CX_TEST(test_properties_multiple_fill) { | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 581 | const char *props1 = "key1 = value1\n"; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 582 | const char *props2 = "key2 = value2\n"; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 583 | const char *props3 = "key3 = value3\n"; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 584 | |
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 585 | CxProperties prop; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 586 | cxPropertiesInitDefault(&prop); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 587 | CxPropertiesStatus result; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 588 | cxstring key; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 589 | cxstring value; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 590 | CX_TEST_DO { | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 591 | cxPropertiesFill(&prop, props1); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 592 | cxPropertiesFill(&prop, props2); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 593 | cxPropertiesFill(&prop, props3); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 594 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 595 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 596 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("key1"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 597 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("value1"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 598 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 599 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 600 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("key2"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 601 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("value2"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 602 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 603 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 604 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("key3"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 605 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("value3"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 606 | |
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 607 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 608 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 609 | } | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 610 | cxPropertiesDestroy(&prop); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 611 | } | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 612 | |
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 613 | CX_TEST(test_properties_use_stack) { | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 614 | const char *props1 = "key1 = val"; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 615 | const char *props2 = "ue1\nkey2 = value2"; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 616 | const char *props3 = "\nkey3 = value3\n"; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 617 | char stackmem[16]; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 618 | |
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 619 | CxProperties prop; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 620 | cxPropertiesInitDefault(&prop); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 621 | cxPropertiesUseStack(&prop, stackmem, 16); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 622 | CxPropertiesStatus result; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 623 | cxstring key; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 624 | cxstring value; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 625 | CX_TEST_DO { | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 626 | cxPropertiesFill(&prop, props1); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 627 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 628 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 629 | cxPropertiesFill(&prop, props2); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 630 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 631 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 632 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("key1"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 633 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("value1"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 634 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 635 | CX_TEST_ASSERT(result == CX_PROPERTIES_INCOMPLETE_DATA); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 636 | cxPropertiesFill(&prop, props3); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 637 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 638 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 639 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("key2"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 640 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("value2"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 641 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 642 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 643 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("key3"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 644 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("value3"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 645 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 646 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_DATA); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 647 | } | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 648 | cxPropertiesDestroy(&prop); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 649 | } | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 650 | |
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 651 | CX_TEST(test_properties_empty_key) { | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 652 | const char *fail1 = "= val\n"; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 653 | const char *fail2 = " = val\n"; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 654 | const char *good = " key = val\n"; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 655 | |
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 656 | CxProperties prop; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 657 | CxPropertiesStatus result; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 658 | cxstring key; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 659 | cxstring value; | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 660 | CX_TEST_DO { | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 661 | cxPropertiesInitDefault(&prop); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 662 | cxPropertiesFill(&prop, fail1); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 663 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 664 | CX_TEST_ASSERT(result == CX_PROPERTIES_INVALID_EMPTY_KEY); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 665 | cxPropertiesReset(&prop); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 666 | cxPropertiesFill(&prop, fail2); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 667 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 668 | CX_TEST_ASSERT(result == CX_PROPERTIES_INVALID_EMPTY_KEY); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 669 | cxPropertiesReset(&prop); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 670 | cxPropertiesFill(&prop, good); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 671 | result = cxPropertiesNext(&prop, &key, &value); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 672 | CX_TEST_ASSERT(result == CX_PROPERTIES_NO_ERROR); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 673 | CX_TEST_ASSERT(0 == cx_strcmp(key, cx_str("key"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 674 | CX_TEST_ASSERT(0 == cx_strcmp(value, cx_str("val"))); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 675 | cxPropertiesDestroy(&prop); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 676 | } | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 677 | } | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 678 | |
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 679 | CxTestSuite *cx_test_suite_properties(void) { | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 680 | CxTestSuite *suite = cx_test_suite_new("properties"); | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 681 | |
| 964 
3860f509fcbe
fix test function names not in line with naming convention
 Mike Becker <universe@uap-core.de> parents: 
929diff
changeset | 682 | 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: 
929diff
changeset | 683 | 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: 
929diff
changeset | 684 | 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: 
929diff
changeset | 685 | 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: 
929diff
changeset | 686 | 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: 
929diff
changeset | 687 | 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: 
929diff
changeset | 688 | cx_test_register(suite, test_properties_load_file_to_map); | 
| 1124 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 689 | cx_test_register(suite, test_properties_load_incomplete); | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 690 | cx_test_register(suite, test_properties_multiple_fill); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 691 | cx_test_register(suite, test_properties_use_stack); | 
| 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 692 | cx_test_register(suite, test_properties_empty_key); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 693 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 694 | return suite; | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 695 | } |