Sun, 23 Nov 2025 13:15:19 +0100
optimize sorted insertion by using the infimum instead of the supremum
The reason is that the supremum returns the equal element with the smallest index, and we want the largest.
Therefore, we use the infimum, which already gives us the largest index when there are equal elements, and increase the index by one. The infimum is also guaranteed to exist in that case.
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1 | /* |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
3 | * |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
4 | * Copyright 2023 Mike Becker, Olaf Wintermann All rights reserved. |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
5 | * |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
8 | * |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
11 | * |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
15 | * |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
bb18daa62d5f
migrate map tests - relates to #342
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 |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
27 | */ |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
28 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
29 | #include "cx/test.h" |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
30 | #include "util_allocator.h" |
|
1448
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
31 | #include "cx/array_list.h" |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
32 | #include "cx/list.h" |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
33 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
34 | #include "cx/hash_map.h" |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
35 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
36 | CX_TEST(test_hash_map_create) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
37 | CxTestingAllocator talloc; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
38 | cx_testing_allocator_init(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
39 | CxAllocator *allocator = &talloc.base; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
40 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
41 | CxMap *map = cxHashMapCreate(allocator, 1, 0); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
42 | struct cx_hash_map_s *hmap = (struct cx_hash_map_s *) map; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
43 | CX_TEST_ASSERT(hmap->bucket_count > 0); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
44 | for(size_t i = 0 ; i < hmap->bucket_count ; i++) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
45 | CX_TEST_ASSERT(hmap->buckets[i] == NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
46 | } |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
47 | CX_TEST_ASSERT(map->collection.elem_size == 1); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
48 | CX_TEST_ASSERT(map->collection.size == 0); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
49 | CX_TEST_ASSERT(map->collection.allocator == allocator); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
50 | CX_TEST_ASSERT(!map->collection.store_pointer); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
51 | CX_TEST_ASSERT(map->collection.cmpfunc == NULL); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
52 | CX_TEST_ASSERT(map->collection.simple_destructor == NULL); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
53 | CX_TEST_ASSERT(map->collection.advanced_destructor == NULL); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
54 | CX_TEST_ASSERT(map->collection.destructor_data == NULL); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
55 | |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
56 | cxMapFree(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
57 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
58 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
59 | cx_testing_allocator_destroy(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
60 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
61 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
62 | CX_TEST(test_hash_map_create_store_pointers) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
63 | CxTestingAllocator talloc; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
64 | cx_testing_allocator_init(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
65 | CxAllocator *allocator = &talloc.base; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
66 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
67 | CxMap *map = cxHashMapCreate(allocator, CX_STORE_POINTERS, 0); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
68 | struct cx_hash_map_s *hmap = (struct cx_hash_map_s *) map; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
69 | CX_TEST_ASSERT(hmap->bucket_count > 0); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
70 | for (size_t i = 0; i < hmap->bucket_count; i++) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
71 | CX_TEST_ASSERT(hmap->buckets[i] == NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
72 | } |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
73 | CX_TEST_ASSERT(map->collection.size == 0); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
74 | CX_TEST_ASSERT(map->collection.allocator == allocator); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
75 | CX_TEST_ASSERT(map->collection.store_pointer); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
76 | CX_TEST_ASSERT(map->collection.elem_size == sizeof(void *)); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
77 | |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
78 | cxMapFree(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
79 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
80 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
81 | cx_testing_allocator_destroy(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
82 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
83 | |
| 1341 | 84 | CX_TEST(test_hash_map_emplace) { |
| 85 | CxTestingAllocator talloc; | |
| 86 | cx_testing_allocator_init(&talloc); | |
| 87 | CxAllocator *allocator = &talloc.base; | |
| 88 | CX_TEST_DO { | |
| 89 | CxMap *map = cxHashMapCreate(allocator, 20, 4); | |
| 90 | ||
| 91 | char *v = cxMapEmplace(map, "key 1"); | |
| 92 | CX_TEST_ASSERT(v != NULL); | |
| 93 | strcpy(v, "val 1"); | |
| 94 | ||
| 95 | char *tv = cxMapGet(map, "key 1"); | |
| 96 | CX_TEST_ASSERT(tv != NULL); | |
| 97 | CX_TEST_ASSERT(0 == strcmp(tv, "val 1")); | |
| 98 | ||
| 99 | v = cxMapEmplace(map, "key 1"); | |
| 100 | CX_TEST_ASSERT(v != NULL); | |
| 101 | CX_TEST_ASSERT(0 != strcmp(v, "val 1")); | |
| 102 | ||
| 103 | tv = cxMapGet(map, "key 1"); | |
| 104 | CX_TEST_ASSERT(tv != NULL); | |
| 105 | CX_TEST_ASSERT(0 != strcmp(tv, "val 1")); | |
| 106 | ||
| 107 | cxMapFree(map); | |
| 108 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); | |
| 109 | } | |
| 110 | cx_testing_allocator_destroy(&talloc); | |
| 111 | } | |
| 112 | ||
| 113 | CX_TEST(test_hash_map_emplace_pointers) { | |
| 114 | CxTestingAllocator talloc; | |
| 115 | cx_testing_allocator_init(&talloc); | |
| 116 | CxAllocator *allocator = &talloc.base; | |
| 117 | CX_TEST_DO { | |
| 118 | CxMap *map = cxHashMapCreate(allocator, CX_STORE_POINTERS, 4); | |
| 119 | cxDefineAdvancedDestructor(map, cxFree, allocator); | |
| 120 | ||
| 121 | char *val1 = cxMalloc(allocator, 8); | |
| 122 | strcpy(val1, "val 1"); | |
| 123 | char *val2 = cxMalloc(allocator, 8); | |
| 124 | strcpy(val2, "val 2"); | |
| 125 | ||
| 126 | char **v1 = cxMapEmplace(map, "key 1"); | |
| 127 | CX_TEST_ASSERT(v1 != NULL); | |
| 128 | *v1 = val1; | |
| 129 | ||
| 130 | char *tv = cxMapGet(map, "key 1"); | |
| 131 | CX_TEST_ASSERT(tv != NULL); | |
| 132 | CX_TEST_ASSERT(0 == strcmp(tv, "val 1")); | |
| 133 | ||
| 134 | // this will call the destructor of former v1 | |
| 135 | char **v2 = cxMapEmplace(map, "key 1"); | |
| 136 | CX_TEST_ASSERT(v2 != NULL); | |
| 137 | *v2 = val2; | |
| 138 | tv = cxMapGet(map, "key 1"); | |
| 139 | CX_TEST_ASSERT(tv != NULL); | |
| 140 | CX_TEST_ASSERT(0 == strcmp(tv, "val 2")); | |
| 141 | ||
| 142 | cxMapFree(map); | |
| 143 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); | |
| 144 | } | |
| 145 | cx_testing_allocator_destroy(&talloc); | |
| 146 | } | |
| 147 | ||
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
148 | CX_TEST(test_hash_map_rehash) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
149 | CxTestingAllocator talloc; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
150 | cx_testing_allocator_init(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
151 | CxAllocator *allocator = &talloc.base; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
152 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
153 | CxMap *map = cxHashMapCreate(allocator, CX_STORE_POINTERS, 7); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
154 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
155 | cxMapPut(map, "key 1", (void *) "val 1"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
156 | cxMapPut(map, "key 2", (void *) "val 2"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
157 | cxMapPut(map, "key 3", (void *) "val 3"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
158 | cxMapPut(map, "foo 4", (void *) "val 4"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
159 | cxMapPut(map, "key 5", (void *) "val 5"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
160 | cxMapPut(map, "key 6", (void *) "val 6"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
161 | cxMapPut(map, "bar 7", (void *) "val 7"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
162 | cxMapPut(map, "key 8", (void *) "val 8"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
163 | cxMapPut(map, "key 9", (void *) "val 9"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
164 | cxMapPut(map, "key 10", (void *) "val 10"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
165 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
166 | CX_TEST_ASSERT(((struct cx_hash_map_s *)map)->bucket_count == 7); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
167 | int result = cxMapRehash(map); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
168 | CX_TEST_ASSERT(result == 0); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
169 | CX_TEST_ASSERT(((struct cx_hash_map_s *)map)->bucket_count == 25); |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
170 | CX_TEST_ASSERT(map->collection.size == 10); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
171 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
172 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "key 1"), "val 1")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
173 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "key 2"), "val 2")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
174 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "key 3"), "val 3")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
175 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "foo 4"), "val 4")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
176 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "key 5"), "val 5")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
177 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "key 6"), "val 6")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
178 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "bar 7"), "val 7")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
179 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "key 8"), "val 8")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
180 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "key 9"), "val 9")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
181 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "key 10"), "val 10")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
182 | |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
183 | cxMapFree(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
184 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
185 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
186 | cx_testing_allocator_destroy(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
187 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
188 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
189 | CX_TEST(test_hash_map_rehash_not_required) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
190 | CxTestingAllocator talloc; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
191 | cx_testing_allocator_init(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
192 | CxAllocator *allocator = &talloc.base; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
193 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
194 | CxMap *map = cxHashMapCreate(allocator, CX_STORE_POINTERS, 8); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
195 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
196 | cxMapPut(map, "key 1", (void *) "val 1"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
197 | cxMapPut(map, "key 2", (void *) "val 2"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
198 | cxMapPut(map, "key 3", (void *) "val 3"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
199 | cxMapPut(map, "key 4", (void *) "val 4"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
200 | cxMapPut(map, "key 5", (void *) "val 5"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
201 | cxMapPut(map, "key 6", (void *) "val 6"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
202 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
203 | // 6/8 does not exceed 0.75, therefore the function should not rehash |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
204 | int result = cxMapRehash(map); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
205 | CX_TEST_ASSERT(result == 0); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
206 | CX_TEST_ASSERT(((struct cx_hash_map_s *)map)->bucket_count == 8); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
207 | |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
208 | cxMapFree(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
209 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
210 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
211 | cx_testing_allocator_destroy(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
212 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
213 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
214 | CX_TEST(test_hash_map_clear) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
215 | CxTestingAllocator talloc; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
216 | cx_testing_allocator_init(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
217 | CxAllocator *allocator = &talloc.base; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
218 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
219 | CxMap *map = cxHashMapCreate(allocator, CX_STORE_POINTERS, 0); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
220 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
221 | cxMapPut(map, "key 1", (void *) "val 1"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
222 | cxMapPut(map, "key 2", (void *) "val 2"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
223 | cxMapPut(map, "key 3", (void *) "val 3"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
224 | |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
225 | CX_TEST_ASSERT(map->collection.size == 3); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
226 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
227 | cxMapClear(map); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
228 | |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
229 | CX_TEST_ASSERT(map->collection.size == 0); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
230 | CX_TEST_ASSERT(cxMapGet(map, "key 1") == NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
231 | CX_TEST_ASSERT(cxMapGet(map, "key 2") == NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
232 | CX_TEST_ASSERT(cxMapGet(map, "key 3") == NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
233 | |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
234 | cxMapFree(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
235 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
236 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
237 | cx_testing_allocator_destroy(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
238 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
239 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
240 | CX_TEST(test_hash_map_store_ucx_strings) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
241 | CxTestingAllocator talloc; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
242 | cx_testing_allocator_init(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
243 | CxAllocator *allocator = &talloc.base; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
244 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
245 | // create the map |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
246 | CxMap *map = cxHashMapCreate(allocator, sizeof(cxstring), 8); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
247 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
248 | // define some strings |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
249 | cxstring s1 = CX_STR("this"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
250 | cxstring s2 = CX_STR("is"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
251 | cxstring s3 = CX_STR("a"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
252 | cxstring s4 = CX_STR("test"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
253 | cxstring s5 = CX_STR("setup"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
254 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
255 | // put them into the map |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
256 | cxMapPut(map, "s1", &s1); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
257 | cxMapPut(map, "s2", &s2); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
258 | cxMapPut(map, "s3", &s3); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
259 | cxMapPut(map, "s4", &s4); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
260 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
261 | // overwrite a value |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
262 | cxMapPut(map, "s1", &s5); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
263 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
264 | // look up a string |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
265 | cxstring * s3p = cxMapGet(map, "s3"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
266 | CX_TEST_ASSERT(s3p->length == s3.length); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
267 | CX_TEST_ASSERT(s3p->ptr == s3.ptr); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
268 | CX_TEST_ASSERT(s3p != &s3); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
269 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
270 | // remove a string |
|
994
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
271 | cxstring ret = {0}; |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
272 | CX_TEST_ASSERT(0 == cxMapRemoveAndGet(map, "s2", &ret)); |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
273 | CX_TEST_ASSERT(map->collection.size == 3); |
|
994
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
274 | CX_TEST_ASSERT(0 == cx_strcmp(ret, cx_str("is"))); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
275 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
276 | // iterate |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
277 | bool s3found = false, s4found = false, s5found = false; |
|
1115
6db21dee4929
create specialized map iterators - fixes #550
Mike Becker <universe@uap-core.de>
parents:
1114
diff
changeset
|
278 | CxMapIterator iter = cxMapIteratorValues(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
279 | cx_foreach(cxstring*, s, iter) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
280 | s3found |= s3.ptr == s->ptr; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
281 | s4found |= s4.ptr == s->ptr; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
282 | s5found |= s5.ptr == s->ptr; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
283 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
284 | CX_TEST_ASSERT(s3found && s4found && s5found); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
285 | |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
286 | cxMapFree(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
287 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
288 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
289 | cx_testing_allocator_destroy(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
290 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
291 | |
|
1442
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
292 | CX_TEST(test_hash_map_integer_keys) { |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
293 | CxMap *map = cxHashMapCreateSimple(sizeof(cxstring)); |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
294 | CX_TEST_DO { |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
295 | cxstring s1 = CX_STR("hello"); |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
296 | cxstring s2 = CX_STR("world"); |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
297 | |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
298 | cxMapPut(map, UINT32_C(70875), &s1); |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
299 | cxMapPut(map, UINT64_C(5785133750), &s2); |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
300 | |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
301 | CX_TEST_ASSERT(cx_strcmp_p(&s1, cxMapGet(map, UINT32_C(70875))) == 0); |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
302 | CX_TEST_ASSERT(cx_strcmp_p(&s2, cxMapGet(map, UINT64_C(5785133750))) == 0); |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
303 | } |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
304 | cxMapFree(map); |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
305 | } |
|
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
306 | |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
307 | CX_TEST(test_hash_map_remove_via_iterator) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
308 | CxTestingAllocator talloc; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
309 | cx_testing_allocator_init(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
310 | CxAllocator *allocator = &talloc.base; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
311 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
312 | CxMap *map = cxHashMapCreate(allocator, CX_STORE_POINTERS, 4); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
313 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
314 | cxMapPut(map, "key 1", (void *) "val 1"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
315 | cxMapPut(map, "key 2", (void *) "val 2"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
316 | cxMapPut(map, "key 3", (void *) "val 3"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
317 | cxMapPut(map, "key 4", (void *) "val 4"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
318 | cxMapPut(map, "key 5", (void *) "val 5"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
319 | cxMapPut(map, "key 6", (void *) "val 6"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
320 | |
|
1429
6e0c3a8a914a
remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents:
1388
diff
changeset
|
321 | CxMapIterator iter = cxMapIterator(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
322 | cx_foreach(CxMapEntry*, entry, iter) { |
|
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
323 | if (((const char *)entry->key->data)[4] % 2 == 1) cxIteratorFlagRemoval(iter); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
324 | } |
|
1387
9bdd053820b7
the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents:
1341
diff
changeset
|
325 | CX_TEST_ASSERT(cxMapSize(map) == 3); |
|
9bdd053820b7
the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents:
1341
diff
changeset
|
326 | CX_TEST_ASSERT(iter.elem_count == 3); |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
327 | CX_TEST_ASSERT(iter.index == map->collection.size); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
328 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
329 | CX_TEST_ASSERT(cxMapGet(map, "key 1") == NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
330 | CX_TEST_ASSERT(cxMapGet(map, "key 2") != NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
331 | CX_TEST_ASSERT(cxMapGet(map, "key 3") == NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
332 | CX_TEST_ASSERT(cxMapGet(map, "key 4") != NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
333 | CX_TEST_ASSERT(cxMapGet(map, "key 5") == NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
334 | CX_TEST_ASSERT(cxMapGet(map, "key 6") != NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
335 | |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
336 | cxMapFree(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
337 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
338 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
339 | cx_testing_allocator_destroy(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
340 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
341 | |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
342 | struct test_destr_struct { |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
343 | char *str; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
344 | }; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
345 | |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
346 | static void test_simple_destructor(void *d) { |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
347 | struct test_destr_struct *data = d; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
348 | strcpy(data->str, "OK"); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
349 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
350 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
351 | static void test_advanced_destructor( |
|
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
352 | cx_attr_unused void *unused, |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
353 | void *d |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
354 | ) { |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
355 | test_simple_destructor(d); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
356 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
357 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
358 | static CX_TEST_SUBROUTINE(verify_any_destructor, CxMap *map) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
359 | CxHashKey k1 = cx_hash_key_str("key 1"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
360 | CxHashKey k2 = cx_hash_key_str("key 2"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
361 | CxHashKey k3 = cx_hash_key_str("key 3"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
362 | CxHashKey k4 = cx_hash_key_str("key 4"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
363 | CxHashKey k5 = cx_hash_key_str("key 5"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
364 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
365 | char v1[] = "val 1"; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
366 | char v2[] = "val 2"; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
367 | char v3[] = "val 3"; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
368 | char v4[] = "val 4"; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
369 | char v5[] = "val 5"; |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
370 | char v6[] = "val 6"; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
371 | char v7[] = "val 7"; |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
372 | |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
373 | struct test_destr_struct d1 = {v1}; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
374 | struct test_destr_struct d2 = {v2}; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
375 | struct test_destr_struct d3 = {v3}; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
376 | struct test_destr_struct d4 = {v4}; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
377 | struct test_destr_struct d5 = {v5}; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
378 | struct test_destr_struct d6 = {v6}; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
379 | struct test_destr_struct d7 = {v7}; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
380 | |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
381 | void *v1data = &d1; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
382 | void *v2data = &d2; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
383 | void *v3data = &d3; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
384 | void *v4data = &d4; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
385 | void *v5data = &d5; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
386 | void *v6data = &d6; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
387 | void *v7data = &d7; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
388 | |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
389 | cxMapPut(map, k1, v1data); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
390 | cxMapPut(map, k2, v2data); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
391 | cxMapPut(map, k3, v3data); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
392 | cxMapPut(map, k4, v4data); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
393 | |
|
994
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
394 | CX_TEST_ASSERT(0 == cxMapRemove(map, k2)); |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
395 | if (map->collection.store_pointer) { |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
396 | struct test_destr_struct *r; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
397 | CX_TEST_ASSERT(0 == cxMapRemoveAndGet(map, k3, &r)); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
398 | CX_TEST_ASSERT(r == &d3); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
399 | } else { |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
400 | struct test_destr_struct r; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
401 | CX_TEST_ASSERT(0 == cxMapRemoveAndGet(map, k3, &r)); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
402 | CX_TEST_ASSERT(r.str == v3); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
403 | } |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
404 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
405 | CX_TEST_ASSERT(0 == strcmp(v1, "val 1")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
406 | CX_TEST_ASSERT(0 == strcmp(v2, "OK")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
407 | CX_TEST_ASSERT(0 == strcmp(v3, "val 3")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
408 | CX_TEST_ASSERT(0 == strcmp(v4, "val 4")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
409 | CX_TEST_ASSERT(0 == strcmp(v5, "val 5")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
410 | |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
411 | // put k5, overwrite k1, put new k3 |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
412 | cxMapPut(map, k5, v5data); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
413 | cxMapPut(map, k1, v6data); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
414 | cxMapPut(map, k3, v7data); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
415 | |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
416 | // destructor the value behind k1 was called, but for k3 not |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
417 | CX_TEST_ASSERT(0 == strcmp(v1, "OK")); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
418 | CX_TEST_ASSERT(0 == strcmp(v3, "val 3")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
419 | |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
420 | // now remove k1 via key iterator and k5 (val 5) via value iterator |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
421 | v1[0] = 'y'; // mark v1 and check that destr is not called for previous val |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
422 | { |
|
1429
6e0c3a8a914a
remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents:
1388
diff
changeset
|
423 | CxMapIterator iter = cxMapIteratorKeys(map); |
|
1387
9bdd053820b7
the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents:
1341
diff
changeset
|
424 | CX_TEST_ASSERT(iter.elem_count == 4); |
|
9bdd053820b7
the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents:
1341
diff
changeset
|
425 | CX_TEST_ASSERT(cxMapSize(map) == 4); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
426 | cx_foreach(CxHashKey*, key, iter) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
427 | if (((char*)key->data)[4] == '1') cxIteratorFlagRemoval(iter); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
428 | } |
|
1387
9bdd053820b7
the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents:
1341
diff
changeset
|
429 | CX_TEST_ASSERT(iter.elem_count == 3); |
|
9bdd053820b7
the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents:
1341
diff
changeset
|
430 | CX_TEST_ASSERT(cxMapSize(map) == 3); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
431 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
432 | { |
|
1429
6e0c3a8a914a
remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents:
1388
diff
changeset
|
433 | CxMapIterator iter = cxMapIteratorValues(map); |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
434 | cx_foreach(struct test_destr_struct*, v, iter) { |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
435 | if (v->str[4] == '5') cxIteratorFlagRemoval(iter); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
436 | } |
|
1387
9bdd053820b7
the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents:
1341
diff
changeset
|
437 | CX_TEST_ASSERT(iter.elem_count == 2); |
|
9bdd053820b7
the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents:
1341
diff
changeset
|
438 | CX_TEST_ASSERT(cxMapSize(map) == 2); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
439 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
440 | |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
441 | CX_TEST_ASSERT(0 == strcmp(v1, "yK")); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
442 | CX_TEST_ASSERT(0 == strcmp(v2, "OK")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
443 | CX_TEST_ASSERT(0 == strcmp(v3, "val 3")); |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
444 | CX_TEST_ASSERT(0 == strcmp(v4, "val 4")); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
445 | CX_TEST_ASSERT(0 == strcmp(v5, "OK")); |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
446 | CX_TEST_ASSERT(0 == strcmp(v6, "OK")); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
447 | CX_TEST_ASSERT(0 == strcmp(v7, "val 7")); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
448 | |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
449 | // mark the already destroyed items |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
450 | // and check that they are not destroyed again |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
451 | v1[0] = v2[0] = v4[0] = v5[0] = 'c'; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
452 | |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
453 | cxMapFree(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
454 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
455 | CX_TEST_ASSERT(0 == strcmp(v1, "cK")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
456 | CX_TEST_ASSERT(0 == strcmp(v2, "cK")); |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
457 | CX_TEST_ASSERT(0 == strcmp(v3, "val 3")); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
458 | CX_TEST_ASSERT(0 == strcmp(v4, "OK")); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
459 | CX_TEST_ASSERT(0 == strcmp(v5, "cK")); |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
460 | CX_TEST_ASSERT(0 == strcmp(v6, "OK")); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
461 | CX_TEST_ASSERT(0 == strcmp(v7, "OK")); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
462 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
463 | |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
464 | CX_TEST(test_hash_map_simple_destructor_objects) { |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
465 | CxTestingAllocator talloc; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
466 | cx_testing_allocator_init(&talloc); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
467 | CxAllocator *allocator = &talloc.base; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
468 | CX_TEST_DO { |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
469 | CxMap *map = cxHashMapCreate(allocator, |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
470 | sizeof(struct test_destr_struct), 0); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
471 | map->collection.simple_destructor = test_simple_destructor; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
472 | CX_TEST_CALL_SUBROUTINE(verify_any_destructor, map); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
473 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
474 | } |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
475 | cx_testing_allocator_destroy(&talloc); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
476 | } |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
477 | |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
478 | CX_TEST(test_hash_map_advanced_destructor_objects) { |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
479 | CxTestingAllocator talloc; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
480 | cx_testing_allocator_init(&talloc); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
481 | CxAllocator *allocator = &talloc.base; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
482 | CX_TEST_DO { |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
483 | CxMap *map = cxHashMapCreate(allocator, |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
484 | sizeof(struct test_destr_struct), 0); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
485 | map->collection.advanced_destructor = test_advanced_destructor; |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
486 | CX_TEST_CALL_SUBROUTINE(verify_any_destructor, map); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
487 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
488 | } |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
489 | cx_testing_allocator_destroy(&talloc); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
490 | } |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
491 | |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
492 | CX_TEST(test_hash_map_simple_destructor_pointers) { |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
493 | CxTestingAllocator talloc; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
494 | cx_testing_allocator_init(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
495 | CxAllocator *allocator = &talloc.base; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
496 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
497 | CxMap *map = cxHashMapCreate(allocator, CX_STORE_POINTERS, 0); |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
498 | map->collection.simple_destructor = test_simple_destructor; |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
499 | CX_TEST_CALL_SUBROUTINE(verify_any_destructor, map); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
500 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
501 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
502 | cx_testing_allocator_destroy(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
503 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
504 | |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
505 | CX_TEST(test_hash_map_advanced_destructor_pointers) { |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
506 | CxTestingAllocator talloc; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
507 | cx_testing_allocator_init(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
508 | CxAllocator *allocator = &talloc.base; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
509 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
510 | CxMap *map = cxHashMapCreate(allocator, CX_STORE_POINTERS, 0); |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
511 | map->collection.advanced_destructor = test_advanced_destructor; |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
512 | CX_TEST_CALL_SUBROUTINE(verify_any_destructor, map); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
513 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
514 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
515 | cx_testing_allocator_destroy(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
516 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
517 | |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
518 | static bool test_hash_map_clone_func_max_enabled = false; |
|
1443
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
519 | static unsigned test_hash_map_clone_func_max_clones; |
|
1439
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
520 | static void *test_hash_map_clone_func(void *dst, const void *src, |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
521 | const CxAllocator *al, void *data) { |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
522 | if (test_hash_map_clone_func_max_enabled) { |
|
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
523 | if (test_hash_map_clone_func_max_clones == 0) return NULL; |
|
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
524 | test_hash_map_clone_func_max_clones--; |
|
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
525 | } |
|
1439
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
526 | if (dst == NULL) { |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
527 | dst = cxMalloc(al, sizeof(int)); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
528 | } |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
529 | *((int*)dst) = *((int*)src) + *((int*)data); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
530 | return dst; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
531 | } |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
532 | |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
533 | CX_TEST(test_hash_map_clone) { |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
534 | CxMap *dst = cxHashMapCreateSimple(sizeof(int)); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
535 | CxMap *src = cxHashMapCreateSimple(sizeof(int)); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
536 | const char *exist_keys[] = {"k1", "k2", "k3"}; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
537 | int exists[] = {1, 3, 4}; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
538 | const char *source_keys[] = {"k4", "k2", "k5"}; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
539 | int source[] = {7, 9, 15}; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
540 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
541 | cxMapPut(dst, exist_keys[i], &exists[i]); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
542 | cxMapPut(src, source_keys[i], &source[i]); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
543 | } |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
544 | CX_TEST_DO { |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
545 | int c = 4; |
|
1444
dd9dcbb39c2f
make clone functions return int instead of size_t
Mike Becker <universe@uap-core.de>
parents:
1443
diff
changeset
|
546 | CX_TEST_ASSERT(0 == cxMapClone(dst, src, test_hash_map_clone_func, NULL, &c)); |
|
1439
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
547 | CX_TEST_ASSERT(cxMapSize(dst) == 5); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
548 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k1")) == 1); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
549 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k2")) == 13); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
550 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k3")) == 4); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
551 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k4")) == 11); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
552 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k5")) == 19); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
553 | CX_TEST_ASSERT(cxMapSize(src) == 3); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
554 | CX_TEST_ASSERT(*((int*)cxMapGet(src, "k4")) == 7); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
555 | CX_TEST_ASSERT(*((int*)cxMapGet(src, "k2")) == 9); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
556 | CX_TEST_ASSERT(*((int*)cxMapGet(src, "k5")) == 15); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
557 | } |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
558 | cxMapFree(dst); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
559 | cxMapFree(src); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
560 | } |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
561 | |
|
1443
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
562 | CX_TEST(test_hash_map_clone_alloc_fail) { |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
563 | CxMap *dst = cxHashMapCreateSimple(sizeof(int)); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
564 | CxMap *src = cxHashMapCreateSimple(sizeof(int)); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
565 | const char *exist_keys[] = {"k1", "k2", "k3"}; |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
566 | int exists[] = {1, 3, 4}; |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
567 | const char *source_keys[] = {"k4", "k2", "k5"}; |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
568 | int source[] = {7, 9, 15}; |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
569 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
570 | cxMapPut(dst, exist_keys[i], &exists[i]); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
571 | cxMapPut(src, source_keys[i], &source[i]); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
572 | } |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
573 | CX_TEST_DO { |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
574 | int c = 4; |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
575 | test_hash_map_clone_func_max_enabled = true; |
|
1443
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
576 | test_hash_map_clone_func_max_clones = 2; |
|
1444
dd9dcbb39c2f
make clone functions return int instead of size_t
Mike Becker <universe@uap-core.de>
parents:
1443
diff
changeset
|
577 | CX_TEST_ASSERT(0 != cxMapClone(dst, src, test_hash_map_clone_func, NULL, &c)); |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
578 | test_hash_map_clone_func_max_enabled = false; |
|
1443
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
579 | CX_TEST_ASSERT(cxMapSize(dst) == 4); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
580 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k1")) == 1); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
581 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k2")) == 13); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
582 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k3")) == 4); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
583 | // the concrete element which is affected might change when the hash function changes |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
584 | CX_TEST_ASSERT(cxMapGet(dst, "k4") == NULL); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
585 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k5")) == 19); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
586 | CX_TEST_ASSERT(cxMapSize(src) == 3); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
587 | CX_TEST_ASSERT(*((int*)cxMapGet(src, "k4")) == 7); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
588 | CX_TEST_ASSERT(*((int*)cxMapGet(src, "k2")) == 9); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
589 | CX_TEST_ASSERT(*((int*)cxMapGet(src, "k5")) == 15); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
590 | } |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
591 | cxMapFree(dst); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
592 | cxMapFree(src); |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
593 | } |
|
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
594 | |
|
1439
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
595 | CX_TEST(test_hash_map_clone_ptr) { |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
596 | CxTestingAllocator talloc; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
597 | cx_testing_allocator_init(&talloc); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
598 | CxAllocator *allocator = &talloc.base; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
599 | CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
600 | cxDefineAdvancedDestructor(dst, cxFree, allocator); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
601 | CxMap *src = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
602 | const char *exist_keys[] = {"k1", "k2", "k3"}; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
603 | int exists[] = {1, 3, 4}; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
604 | const char *source_keys[] = {"k4", "k2", "k5"}; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
605 | int source[] = {7, 9, 15}; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
606 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
607 | int *y = cxMalloc(allocator, sizeof(int)); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
608 | *y = exists[i]; |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
609 | cxMapPut(dst, exist_keys[i], y); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
610 | cxMapPut(src, source_keys[i], &source[i]); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
611 | } |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
612 | CX_TEST_DO { |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
613 | int c = 4; |
|
1444
dd9dcbb39c2f
make clone functions return int instead of size_t
Mike Becker <universe@uap-core.de>
parents:
1443
diff
changeset
|
614 | CX_TEST_ASSERT(0 == cxMapClone(dst, src, test_hash_map_clone_func, allocator, &c)); |
|
1439
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
615 | CX_TEST_ASSERT(cxMapSize(dst) == 5); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
616 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k1")) == 1); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
617 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k2")) == 13); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
618 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k3")) == 4); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
619 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k4")) == 11); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
620 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k5")) == 19); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
621 | CX_TEST_ASSERT(cxMapSize(src) == 3); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
622 | CX_TEST_ASSERT(*((int*)cxMapGet(src, "k4")) == 7); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
623 | CX_TEST_ASSERT(*((int*)cxMapGet(src, "k2")) == 9); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
624 | CX_TEST_ASSERT(*((int*)cxMapGet(src, "k5")) == 15); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
625 | |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
626 | cxMapClear(dst); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
627 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
628 | } |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
629 | cxMapFree(dst); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
630 | cxMapFree(src); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
631 | cx_testing_allocator_destroy(&talloc); |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
632 | } |
|
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
633 | |
|
1448
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
634 | CX_TEST(test_hash_map_difference) { |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
635 | CxMap *dst = cxHashMapCreateSimple(sizeof(int)); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
636 | |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
637 | CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
638 | CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
639 | const char *s1_keys[] = {"k1", "k2", "k3"}; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
640 | int s1_values[] = {1, 3, 4}; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
641 | const char *s2_keys[] = {"k4", "k2", "k5"}; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
642 | int s2_values[] = {7, 9, 15}; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
643 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
644 | cxMapPut(s1, s1_keys[i], &s1_values[i]); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
645 | cxMapPut(s2, s2_keys[i], &s2_values[i]); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
646 | } |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
647 | CX_TEST_DO { |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
648 | int c = 4; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
649 | CX_TEST_ASSERT(0 == cxMapDifference(dst, s1, s2, test_hash_map_clone_func, NULL, &c)); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
650 | CX_TEST_ASSERT(cxMapSize(dst) == 2); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
651 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k1")) == 5); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
652 | CX_TEST_ASSERT(cxMapGet(dst, "k2") == NULL); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
653 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k3")) == 8); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
654 | } |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
655 | cxMapFree(dst); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
656 | cxMapFree(s1); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
657 | cxMapFree(s2); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
658 | } |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
659 | |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
660 | CX_TEST(test_hash_map_difference_alloc_fail) { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
661 | CxMap *dst = cxHashMapCreateSimple(sizeof(int)); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
662 | |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
663 | CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
664 | CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
665 | const char *s1_keys[] = {"k1", "k2", "k3"}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
666 | int s1_values[] = {1, 3, 4}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
667 | const char *s2_keys[] = {"k4", "k2", "k5"}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
668 | int s2_values[] = {7, 9, 15}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
669 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
670 | cxMapPut(s1, s1_keys[i], &s1_values[i]); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
671 | cxMapPut(s2, s2_keys[i], &s2_values[i]); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
672 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
673 | CX_TEST_DO { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
674 | int c = 4; |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
675 | test_hash_map_clone_func_max_enabled = true; |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
676 | test_hash_map_clone_func_max_clones = 1; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
677 | CX_TEST_ASSERT(1 == cxMapDifference(dst, s1, s2, test_hash_map_clone_func, NULL, &c)); |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
678 | test_hash_map_clone_func_max_enabled = false; |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
679 | CX_TEST_ASSERT(cxMapSize(dst) == 1); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
680 | // the concrete element which is affected might change when the hash function changes |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
681 | CX_TEST_ASSERT(cxMapGet(dst, "k1") == NULL); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
682 | CX_TEST_ASSERT(cxMapGet(dst, "k2") == NULL); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
683 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k3")) == 8); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
684 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
685 | cxMapFree(dst); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
686 | cxMapFree(s1); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
687 | cxMapFree(s2); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
688 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
689 | |
|
1448
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
690 | CX_TEST(test_hash_map_list_difference) { |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
691 | CxMap *dst = cxHashMapCreateSimple(sizeof(int)); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
692 | CxMap *src = cxHashMapCreateSimple(sizeof(int)); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
693 | CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
694 | |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
695 | const char *src_keys[] = {"k1", "k2", "k3"}; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
696 | int src_values[] = {1, 3, 4}; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
697 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
698 | cxMapPut(src, src_keys[i], &src_values[i]); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
699 | } |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
700 | const char *k[] = {"k4", "k2", "k5"}; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
701 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
702 | CxHashKey key = CX_HASH_KEY(k[i]); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
703 | cxListAdd(keys, &key); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
704 | } |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
705 | CX_TEST_DO { |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
706 | int c = 4; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
707 | CX_TEST_ASSERT(0 == cxMapListDifference(dst, src, keys, test_hash_map_clone_func, NULL, &c)); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
708 | CX_TEST_ASSERT(cxMapSize(dst) == 2); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
709 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k1")) == 5); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
710 | CX_TEST_ASSERT(cxMapGet(dst, "k2") == NULL); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
711 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k3")) == 8); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
712 | } |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
713 | cxMapFree(dst); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
714 | cxMapFree(src); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
715 | cxListFree(keys); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
716 | } |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
717 | |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
718 | CX_TEST(test_hash_map_list_difference_alloc_fail) { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
719 | CxMap *dst = cxHashMapCreateSimple(sizeof(int)); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
720 | CxMap *src = cxHashMapCreateSimple(sizeof(int)); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
721 | CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
722 | |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
723 | const char *src_keys[] = {"k1", "k2", "k3"}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
724 | int src_values[] = {1, 3, 4}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
725 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
726 | cxMapPut(src, src_keys[i], &src_values[i]); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
727 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
728 | const char *k[] = {"k4", "k2", "k5"}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
729 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
730 | CxHashKey key = CX_HASH_KEY(k[i]); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
731 | cxListAdd(keys, &key); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
732 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
733 | CX_TEST_DO { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
734 | int c = 4; |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
735 | test_hash_map_clone_func_max_enabled = true; |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
736 | test_hash_map_clone_func_max_clones = 1; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
737 | CX_TEST_ASSERT(1 == cxMapListDifference(dst, src, keys, test_hash_map_clone_func, NULL, &c)); |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
738 | test_hash_map_clone_func_max_enabled = false; |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
739 | CX_TEST_ASSERT(cxMapSize(dst) == 1); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
740 | // the concrete element which is affected might change when the hash function changes |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
741 | CX_TEST_ASSERT(cxMapGet(dst, "k1") == NULL); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
742 | CX_TEST_ASSERT(cxMapGet(dst, "k2") == NULL); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
743 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k3")) == 8); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
744 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
745 | cxMapFree(dst); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
746 | cxMapFree(src); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
747 | cxListFree(keys); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
748 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
749 | |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
750 | CX_TEST(test_hash_map_difference_non_empty_target) { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
751 | CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
752 | cxDefineAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
753 | |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
754 | CxMap *s1 = cxHashMapCreateSimple(sizeof(int)); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
755 | CxMap *s2 = cxHashMapCreateSimple(sizeof(int)); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
756 | const char *s1_keys[] = {"k1", "k2", "k3"}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
757 | int s1_values[] = {1, 3, 4}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
758 | const char *s2_keys[] = {"k4", "k2", "k5"}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
759 | int s2_values[] = {7, 9, 15}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
760 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
761 | cxMapPut(s1, s1_keys[i], &s1_values[i]); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
762 | cxMapPut(s2, s2_keys[i], &s2_values[i]); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
763 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
764 | |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
765 | // add k5 to dst which is not in src, and also not in the difference |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
766 | int *k5 = cxMallocDefault(sizeof(int)); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
767 | *k5 = 1337; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
768 | cxMapPut(dst, "k5",k5); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
769 | |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
770 | CX_TEST_DO { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
771 | int c = 4; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
772 | CX_TEST_ASSERT(0 == cxMapDifference(dst, s1, s2, test_hash_map_clone_func, NULL, &c)); |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
773 | CX_TEST_ASSERT(cxMapSize(dst) == 3); |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
774 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k1")) == 5); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
775 | CX_TEST_ASSERT(cxMapGet(dst, "k2") == NULL); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
776 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k3")) == 8); |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
777 | CX_TEST_ASSERT(*(int*)cxMapGet(dst, "k5") == 1337); |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
778 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
779 | cxMapFree(dst); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
780 | cxMapFree(s1); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
781 | cxMapFree(s2); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
782 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
783 | |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
784 | CX_TEST(test_hash_map_list_difference_non_empty_target) { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
785 | CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
786 | cxDefineAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
787 | CxMap *src = cxHashMapCreateSimple(sizeof(int)); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
788 | CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
789 | |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
790 | const char *src_keys[] = {"k1", "k2", "k3"}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
791 | int src_values[] = {1, 3, 4}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
792 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
793 | cxMapPut(src, src_keys[i], &src_values[i]); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
794 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
795 | const char *k[] = {"k4", "k2", "k5"}; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
796 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
797 | CxHashKey key = CX_HASH_KEY(k[i]); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
798 | cxListAdd(keys, &key); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
799 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
800 | |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
801 | // add k5 to dst which is not in src, and also not in the difference |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
802 | int *k5 = cxMallocDefault(sizeof(int)); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
803 | *k5 = 1337; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
804 | cxMapPut(dst, "k5",k5); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
805 | |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
806 | CX_TEST_DO { |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
807 | int c = 4; |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
808 | CX_TEST_ASSERT(0 == cxMapListDifference(dst, src, keys, test_hash_map_clone_func, NULL, &c)); |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
809 | CX_TEST_ASSERT(cxMapSize(dst) == 3); |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
810 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k1")) == 5); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
811 | CX_TEST_ASSERT(cxMapGet(dst, "k2") == NULL); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
812 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k3")) == 8); |
|
1466
a58c65d31342
difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents:
1450
diff
changeset
|
813 | CX_TEST_ASSERT(*(int*)cxMapGet(dst, "k5") == 1337); |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
814 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
815 | cxMapFree(dst); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
816 | cxMapFree(src); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
817 | cxListFree(keys); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
818 | } |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
819 | |
|
1448
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
820 | CX_TEST(test_hash_map_difference_ptr) { |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
821 | CxTestingAllocator talloc; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
822 | cx_testing_allocator_init(&talloc); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
823 | CxAllocator *allocator = &talloc.base; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
824 | CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
825 | cxDefineAdvancedDestructor(dst, cxFree, allocator); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
826 | |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
827 | CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
828 | CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
829 | const char *s1_keys[] = {"k1", "k2", "k3"}; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
830 | int s1_values[] = {1, 3, 4}; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
831 | const char *s2_keys[] = {"k4", "k2", "k5"}; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
832 | int s2_values[] = {7, 9, 15}; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
833 | for (unsigned int i = 0 ; i < 3 ; i++) { |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
834 | cxMapPut(s1, s1_keys[i], &s1_values[i]); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
835 | cxMapPut(s2, s2_keys[i], &s2_values[i]); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
836 | } |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
837 | CX_TEST_DO { |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
838 | int c = 4; |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
839 | CX_TEST_ASSERT(0 == cxMapDifference(dst, s1, s2, test_hash_map_clone_func, allocator, &c)); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
840 | CX_TEST_ASSERT(cxMapSize(dst) == 2); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
841 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k1")) == 5); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
842 | CX_TEST_ASSERT(cxMapGet(dst, "k2") == NULL); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
843 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k3")) == 8); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
844 | |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
845 | cxMapClear(dst); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
846 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
847 | } |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
848 | cxMapFree(dst); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
849 | cxMapFree(s1); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
850 | cxMapFree(s2); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
851 | cx_testing_allocator_destroy(&talloc); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
852 | } |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
853 | |
|
1467
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
854 | CX_TEST(test_hash_map_intersection) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
855 | CxMap *dst = cxHashMapCreateSimple(sizeof(int)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
856 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
857 | CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
858 | CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
859 | const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
860 | int s1_values[] = {1, 3, 4, 6}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
861 | const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
862 | int s2_values[] = {5, 9, 15, 23}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
863 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
864 | cxMapPut(s1, s1_keys[i], &s1_values[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
865 | cxMapPut(s2, s2_keys[i], &s2_values[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
866 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
867 | CX_TEST_DO { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
868 | int c = 4; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
869 | CX_TEST_ASSERT(0 == cxMapIntersection(dst, s1, s2, test_hash_map_clone_func, NULL, &c)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
870 | CX_TEST_ASSERT(cxMapSize(dst) == 2); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
871 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k2")) == 7); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
872 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k4")) == 10); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
873 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
874 | cxMapFree(dst); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
875 | cxMapFree(s1); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
876 | cxMapFree(s2); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
877 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
878 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
879 | CX_TEST(test_hash_map_intersection_alloc_fail) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
880 | CxMap *dst = cxHashMapCreateSimple(sizeof(int)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
881 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
882 | CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
883 | CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
884 | const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
885 | int s1_values[] = {1, 3, 4, 6}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
886 | const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
887 | int s2_values[] = {5, 9, 15, 23}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
888 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
889 | cxMapPut(s1, s1_keys[i], &s1_values[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
890 | cxMapPut(s2, s2_keys[i], &s2_values[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
891 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
892 | CX_TEST_DO { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
893 | int c = 4; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
894 | test_hash_map_clone_func_max_enabled = true; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
895 | test_hash_map_clone_func_max_clones = 1; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
896 | CX_TEST_ASSERT(0 != cxMapIntersection(dst, s1, s2, test_hash_map_clone_func, NULL, &c)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
897 | test_hash_map_clone_func_max_enabled = false; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
898 | CX_TEST_ASSERT(cxMapSize(dst) == 1); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
899 | // the concrete element which is affected might change when the hash function changes |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
900 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k2")) == 7); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
901 | CX_TEST_ASSERT(cxMapGet(dst, "k4") == NULL); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
902 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
903 | cxMapFree(dst); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
904 | cxMapFree(s1); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
905 | cxMapFree(s2); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
906 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
907 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
908 | CX_TEST(test_hash_map_list_intersection) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
909 | CxMap *dst = cxHashMapCreateSimple(sizeof(int)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
910 | CxMap *src = cxHashMapCreateSimple(sizeof(int)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
911 | CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
912 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
913 | const char *src_keys[] = {"k1", "k2", "k3", "k4"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
914 | int src_values[] = {1, 3, 4, 6}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
915 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
916 | cxMapPut(src, src_keys[i], &src_values[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
917 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
918 | const char *k[] = {"k4", "k5", "k2", "k6"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
919 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
920 | CxHashKey key = CX_HASH_KEY(k[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
921 | cxListAdd(keys, &key); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
922 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
923 | CX_TEST_DO { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
924 | int c = 4; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
925 | CX_TEST_ASSERT(0 == cxMapListIntersection(dst, src, keys, test_hash_map_clone_func, NULL, &c)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
926 | CX_TEST_ASSERT(cxMapSize(dst) == 2); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
927 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k2")) == 7); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
928 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k4")) == 10); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
929 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
930 | cxMapFree(dst); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
931 | cxMapFree(src); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
932 | cxListFree(keys); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
933 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
934 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
935 | CX_TEST(test_hash_map_list_intersection_alloc_fail) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
936 | CxMap *dst = cxHashMapCreateSimple(sizeof(int)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
937 | CxMap *src = cxHashMapCreateSimple(sizeof(int)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
938 | CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
939 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
940 | const char *src_keys[] = {"k1", "k2", "k3", "k4"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
941 | int src_values[] = {1, 3, 4, 6}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
942 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
943 | cxMapPut(src, src_keys[i], &src_values[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
944 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
945 | const char *k[] = {"k4", "k5", "k2", "k6"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
946 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
947 | CxHashKey key = CX_HASH_KEY(k[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
948 | cxListAdd(keys, &key); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
949 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
950 | CX_TEST_DO { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
951 | int c = 4; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
952 | test_hash_map_clone_func_max_enabled = true; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
953 | test_hash_map_clone_func_max_clones = 1; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
954 | CX_TEST_ASSERT(0 != cxMapListIntersection(dst, src, keys, test_hash_map_clone_func, NULL, &c)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
955 | test_hash_map_clone_func_max_enabled = false; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
956 | CX_TEST_ASSERT(cxMapSize(dst) == 1); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
957 | // the concrete element which is affected might change when the hash function changes |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
958 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k2")) == 7); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
959 | CX_TEST_ASSERT(cxMapGet(dst, "k4") == NULL); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
960 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
961 | cxMapFree(dst); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
962 | cxMapFree(src); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
963 | cxListFree(keys); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
964 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
965 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
966 | CX_TEST(test_hash_map_intersection_non_empty_target) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
967 | CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
968 | cxDefineAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
969 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
970 | CxMap *s1 = cxHashMapCreateSimple(sizeof(int)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
971 | CxMap *s2 = cxHashMapCreateSimple(sizeof(int)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
972 | const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
973 | int s1_values[] = {1, 3, 4, 6}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
974 | const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
975 | int s2_values[] = {5, 9, 15, 23}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
976 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
977 | cxMapPut(s1, s1_keys[i], &s1_values[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
978 | cxMapPut(s2, s2_keys[i], &s2_values[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
979 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
980 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
981 | // add k7 to dst which is not in src, and also not in the difference |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
982 | int *k7 = cxMallocDefault(sizeof(int)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
983 | *k7 = 1337; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
984 | cxMapPut(dst, "k7", k7); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
985 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
986 | CX_TEST_DO { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
987 | int c = 4; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
988 | CX_TEST_ASSERT(0 == cxMapIntersection(dst, s1, s2, test_hash_map_clone_func, NULL, &c)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
989 | CX_TEST_ASSERT(cxMapSize(dst) == 3); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
990 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k2")) == 7); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
991 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k4")) == 10); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
992 | CX_TEST_ASSERT(*(int*)cxMapGet(dst, "k7") == 1337); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
993 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
994 | cxMapFree(dst); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
995 | cxMapFree(s1); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
996 | cxMapFree(s2); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
997 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
998 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
999 | CX_TEST(test_hash_map_list_intersection_non_empty_target) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1000 | CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1001 | cxDefineAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1002 | CxMap *src = cxHashMapCreateSimple(sizeof(int)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1003 | CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1004 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1005 | const char *src_keys[] = {"k1", "k2", "k3", "k4"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1006 | int src_values[] = {1, 3, 4, 6}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1007 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1008 | cxMapPut(src, src_keys[i], &src_values[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1009 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1010 | const char *k[] = {"k4", "k5", "k2", "k6"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1011 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1012 | CxHashKey key = CX_HASH_KEY(k[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1013 | cxListAdd(keys, &key); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1014 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1015 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1016 | // add k7 to dst which is not in src, and also not in the difference |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1017 | int *k7 = cxMallocDefault(sizeof(int)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1018 | *k7 = 1337; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1019 | cxMapPut(dst, "k7", k7); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1020 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1021 | CX_TEST_DO { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1022 | int c = 4; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1023 | CX_TEST_ASSERT(0 == cxMapListIntersection(dst, src, keys, test_hash_map_clone_func, NULL, &c)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1024 | CX_TEST_ASSERT(cxMapSize(dst) == 3); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1025 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k2")) == 7); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1026 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k4")) == 10); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1027 | CX_TEST_ASSERT(*(int*)cxMapGet(dst, "k7") == 1337); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1028 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1029 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1030 | cxMapFree(dst); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1031 | cxMapFree(src); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1032 | cxListFree(keys); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1033 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1034 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1035 | CX_TEST(test_hash_map_intersection_ptr) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1036 | CxTestingAllocator talloc; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1037 | cx_testing_allocator_init(&talloc); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1038 | CxAllocator *allocator = &talloc.base; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1039 | CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1040 | cxDefineAdvancedDestructor(dst, cxFree, allocator); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1041 | |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1042 | CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1043 | CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1044 | const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1045 | int s1_values[] = {1, 3, 4, 6}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1046 | const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1047 | int s2_values[] = {5, 9, 15, 23}; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1048 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1049 | cxMapPut(s1, s1_keys[i], &s1_values[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1050 | cxMapPut(s2, s2_keys[i], &s2_values[i]); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1051 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1052 | CX_TEST_DO { |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1053 | int c = 4; |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1054 | CX_TEST_ASSERT(0 == cxMapIntersection(dst, s1, s2, test_hash_map_clone_func, allocator, &c)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1055 | CX_TEST_ASSERT(cxMapSize(dst) == 2); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1056 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k2")) == 7); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1057 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k4")) == 10); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1058 | CX_TEST_ASSERT(cx_testing_allocator_used(&talloc)); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1059 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1060 | cxMapFree(dst); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1061 | cxMapFree(s1); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1062 | cxMapFree(s2); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1063 | cx_testing_allocator_destroy(&talloc); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1064 | } |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1065 | |
|
1474
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1066 | CX_TEST(test_hash_map_union) { |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1067 | CxMap *s1 = cxHashMapCreateSimple(sizeof(int)); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1068 | CxMap *s2 = cxHashMapCreateSimple(sizeof(int)); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1069 | const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1070 | int s1_values[] = {1, 3, 4, 6}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1071 | const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1072 | int s2_values[] = {5, 9, 15, 23}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1073 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1074 | cxMapPut(s1, s1_keys[i], &s1_values[i]); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1075 | cxMapPut(s2, s2_keys[i], &s2_values[i]); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1076 | } |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1077 | CX_TEST_DO { |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1078 | int c = 4; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1079 | CX_TEST_ASSERT(0 == cxMapUnion(s1, s2, test_hash_map_clone_func, NULL, &c)); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1080 | CX_TEST_ASSERT(cxMapSize(s1) == 6); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1081 | CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k1")) == 1); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1082 | CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k2")) == 3); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1083 | CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k3")) == 4); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1084 | CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k4")) == 6); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1085 | CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k5")) == 13); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1086 | CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k6")) == 27); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1087 | } |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1088 | cxMapFree(s1); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1089 | cxMapFree(s2); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1090 | } |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1091 | |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1092 | CX_TEST(test_hash_map_union_ptr) { |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1093 | CxTestingAllocator talloc; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1094 | cx_testing_allocator_init(&talloc); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1095 | CxAllocator *allocator = &talloc.base; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1096 | CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1097 | cxDefineAdvancedDestructor(dst, cxFree, allocator); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1098 | |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1099 | CxMap *s1 = cxHashMapCreateSimple(sizeof(int)); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1100 | CxMap *s2 = cxHashMapCreateSimple(sizeof(int)); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1101 | const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1102 | int s1_values[] = {1, 3, 4, 6}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1103 | const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1104 | int s2_values[] = {5, 9, 15, 23}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1105 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1106 | cxMapPut(s1, s1_keys[i], &s1_values[i]); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1107 | cxMapPut(s2, s2_keys[i], &s2_values[i]); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1108 | } |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1109 | CX_TEST_DO { |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1110 | int c = 4; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1111 | CX_TEST_ASSERT(0 == cxMapClone(dst, s1, test_hash_map_clone_func, allocator, &c)); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1112 | CX_TEST_ASSERT(0 == cxMapUnion(dst, s2, test_hash_map_clone_func, allocator, &c)); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1113 | CX_TEST_ASSERT(cxMapSize(dst) == 6); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1114 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k1")) == 5); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1115 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k2")) == 7); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1116 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k3")) == 8); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1117 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k4")) == 10); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1118 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k5")) == 13); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1119 | CX_TEST_ASSERT(*((int*)cxMapGet(dst, "k6")) == 27); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1120 | CX_TEST_ASSERT(cx_testing_allocator_used(&talloc)); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1121 | } |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1122 | cxMapFree(dst); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1123 | cxMapFree(s1); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1124 | cxMapFree(s2); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1125 | cx_testing_allocator_destroy(&talloc); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1126 | } |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1127 | |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1128 | CX_TEST(test_hash_map_union_alloc_fail) { |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1129 | CxMap *s1 = cxHashMapCreateSimple(sizeof(int)); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1130 | CxMap *s2 = cxHashMapCreateSimple(sizeof(int)); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1131 | const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1132 | int s1_values[] = {1, 3, 4, 6}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1133 | const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1134 | int s2_values[] = {5, 9, 15, 23}; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1135 | for (unsigned int i = 0 ; i < 4 ; i++) { |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1136 | cxMapPut(s1, s1_keys[i], &s1_values[i]); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1137 | cxMapPut(s2, s2_keys[i], &s2_values[i]); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1138 | } |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1139 | CX_TEST_DO { |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1140 | int c = 4; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1141 | test_hash_map_clone_func_max_enabled = true; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1142 | test_hash_map_clone_func_max_clones = 1; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1143 | CX_TEST_ASSERT(0 != cxMapUnion(s1, s2, test_hash_map_clone_func, NULL, &c)); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1144 | test_hash_map_clone_func_max_enabled = false; |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1145 | CX_TEST_ASSERT(cxMapSize(s1) == 5); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1146 | CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k1")) == 1); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1147 | CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k2")) == 3); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1148 | CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k3")) == 4); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1149 | CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k4")) == 6); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1150 | // the concrete element which is affected might change when the hash function changes |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1151 | CX_TEST_ASSERT(cxMapGet(s1, "k5") == NULL); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1152 | CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k6")) == 27); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1153 | } |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1154 | cxMapFree(s1); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1155 | cxMapFree(s2); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1156 | } |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1157 | |
|
1480
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1158 | CX_TEST(test_hash_map_simple_clones) { |
|
1483
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1159 | int v = 47; // the value does not matter in this test |
|
1480
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1160 | CxMap *a = cxHashMapCreateSimple(sizeof(int)); |
|
1483
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1161 | cxMapPut(a, "k1", &v); |
|
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1162 | cxMapPut(a, "k2", &v); |
|
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1163 | cxMapPut(a, "k3", &v); |
|
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1164 | cxMapPut(a, "k4", &v); |
|
1480
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1165 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1166 | CxMap *b = cxHashMapCreateSimple(sizeof(int)); |
|
1483
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1167 | cxMapPut(b, "k0", &v); |
|
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1168 | cxMapPut(b, "k2", &v); |
|
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1169 | cxMapPut(b, "k5", &v); |
|
1480
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1170 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1171 | CxMap *c = cxHashMapCreateSimple(sizeof(int)); |
|
1483
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1172 | cxMapPut(c, "k3", &v); |
|
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1173 | cxMapPut(c, "k4", &v); |
|
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1174 | cxMapPut(c, "k5", &v); |
|
1480
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1175 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1176 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1177 | CxHashKey k; |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1178 | CxList *kl1 = cxArrayListCreateSimple(sizeof(CxHashKey), 4); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1179 | cxCollectionCompareFunc(kl1, cx_hash_key_cmp); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1180 | k = CX_HASH_KEY("k0"); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1181 | cxListAdd(kl1, &k); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1182 | k = CX_HASH_KEY("k2"); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1183 | cxListAdd(kl1, &k); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1184 | k = CX_HASH_KEY("k5"); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1185 | cxListAdd(kl1, &k); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1186 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1187 | CxList *kl2 = cxArrayListCreateSimple(sizeof(CxHashKey), 4); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1188 | cxCollectionCompareFunc(kl2, cx_hash_key_cmp); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1189 | k = CX_HASH_KEY("k3"); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1190 | cxListAdd(kl2, &k); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1191 | k = CX_HASH_KEY("k4"); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1192 | cxListAdd(kl2, &k); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1193 | k = CX_HASH_KEY("k5"); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1194 | cxListAdd(kl2, &k); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1195 | |
|
1483
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1196 | CxMap *d1 = cxHashMapCreateSimple(sizeof(int)); |
|
97a6cf1520ba
fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents:
1480
diff
changeset
|
1197 | CxMap *d2 = cxHashMapCreateSimple(sizeof(int)); |
|
1480
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1198 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1199 | CX_TEST_DO { |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1200 | CX_TEST_ASSERT(0 == cxMapCloneSimple(d1, a)); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1201 | CX_TEST_ASSERT(!cxMapContains(d1, "k0")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1202 | CX_TEST_ASSERT(cxMapContains(d1, "k1")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1203 | CX_TEST_ASSERT(cxMapContains(d1, "k2")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1204 | CX_TEST_ASSERT(cxMapContains(d1, "k3")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1205 | CX_TEST_ASSERT(cxMapContains(d1, "k4")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1206 | CX_TEST_ASSERT(!cxMapContains(d1, "k5")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1207 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1208 | CX_TEST_ASSERT(0 == cxMapListDifferenceSimple(d2, d1, kl1)); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1209 | CX_TEST_ASSERT(!cxMapContains(d2, "k0")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1210 | CX_TEST_ASSERT(cxMapContains(d2, "k1")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1211 | CX_TEST_ASSERT(!cxMapContains(d2, "k2")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1212 | CX_TEST_ASSERT(cxMapContains(d2, "k3")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1213 | CX_TEST_ASSERT(cxMapContains(d2, "k4")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1214 | CX_TEST_ASSERT(!cxMapContains(d2, "k5")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1215 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1216 | cxMapClear(d1); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1217 | CX_TEST_ASSERT(0 == cxMapListIntersectionSimple(d1, d2, kl2)); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1218 | CX_TEST_ASSERT(!cxMapContains(d1, "k0")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1219 | CX_TEST_ASSERT(!cxMapContains(d1, "k1")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1220 | CX_TEST_ASSERT(!cxMapContains(d1, "k2")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1221 | CX_TEST_ASSERT(cxMapContains(d1, "k3")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1222 | CX_TEST_ASSERT(cxMapContains(d1, "k4")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1223 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1224 | CX_TEST_ASSERT(0 == cxMapUnionSimple(d1, b)); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1225 | CX_TEST_ASSERT(cxMapContains(d1, "k0")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1226 | CX_TEST_ASSERT(!cxMapContains(d1, "k1")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1227 | CX_TEST_ASSERT(cxMapContains(d1, "k2")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1228 | CX_TEST_ASSERT(cxMapContains(d1, "k3")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1229 | CX_TEST_ASSERT(cxMapContains(d1, "k4")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1230 | CX_TEST_ASSERT(cxMapContains(d1, "k5")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1231 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1232 | cxMapClear(d2); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1233 | CX_TEST_ASSERT(0 == cxMapDifferenceSimple(d2, d1, a)); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1234 | CX_TEST_ASSERT(cxMapContains(d2, "k0")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1235 | CX_TEST_ASSERT(!cxMapContains(d2, "k1")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1236 | CX_TEST_ASSERT(!cxMapContains(d2, "k2")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1237 | CX_TEST_ASSERT(!cxMapContains(d2, "k3")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1238 | CX_TEST_ASSERT(!cxMapContains(d2, "k4")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1239 | CX_TEST_ASSERT(cxMapContains(d2, "k5")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1240 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1241 | cxMapClear(d1); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1242 | CX_TEST_ASSERT(0 == cxMapIntersectionSimple(d1, d2, c)); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1243 | CX_TEST_ASSERT(!cxMapContains(d1, "k0")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1244 | CX_TEST_ASSERT(!cxMapContains(d1, "k1")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1245 | CX_TEST_ASSERT(!cxMapContains(d1, "k2")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1246 | CX_TEST_ASSERT(!cxMapContains(d1, "k3")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1247 | CX_TEST_ASSERT(!cxMapContains(d1, "k4")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1248 | CX_TEST_ASSERT(cxMapContains(d1, "k5")); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1249 | } |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1250 | |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1251 | cxMapFree(a); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1252 | cxMapFree(b); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1253 | cxMapFree(c); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1254 | cxListFree(kl1); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1255 | cxListFree(kl2); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1256 | cxMapFree(d1); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1257 | cxMapFree(d2); |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1258 | } |
|
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1259 | |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1260 | CX_TEST(test_empty_map_size) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1261 | CX_TEST_DO { |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1262 | CX_TEST_ASSERT(cxEmptyMap->collection.size == 0); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1263 | CX_TEST_ASSERT(cxMapSize(cxEmptyMap) == 0); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1264 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1265 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1266 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1267 | CX_TEST(test_empty_map_iterator) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1268 | CxMap *map = cxEmptyMap; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1269 | |
|
1115
6db21dee4929
create specialized map iterators - fixes #550
Mike Becker <universe@uap-core.de>
parents:
1114
diff
changeset
|
1270 | CxMapIterator it1 = cxMapIterator(map); |
|
6db21dee4929
create specialized map iterators - fixes #550
Mike Becker <universe@uap-core.de>
parents:
1114
diff
changeset
|
1271 | CxMapIterator it2 = cxMapIteratorValues(map); |
|
6db21dee4929
create specialized map iterators - fixes #550
Mike Becker <universe@uap-core.de>
parents:
1114
diff
changeset
|
1272 | CxMapIterator it3 = cxMapIteratorKeys(map); |
|
1429
6e0c3a8a914a
remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents:
1388
diff
changeset
|
1273 | CxMapIterator it4 = cxMapIterator(map); |
|
6e0c3a8a914a
remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents:
1388
diff
changeset
|
1274 | CxMapIterator it5 = cxMapIteratorValues(map); |
|
6e0c3a8a914a
remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents:
1388
diff
changeset
|
1275 | CxMapIterator it6 = cxMapIteratorKeys(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1276 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1277 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1278 | CX_TEST_ASSERT(!cxIteratorValid(it1)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1279 | CX_TEST_ASSERT(!cxIteratorValid(it2)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1280 | CX_TEST_ASSERT(!cxIteratorValid(it3)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1281 | CX_TEST_ASSERT(!cxIteratorValid(it4)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1282 | CX_TEST_ASSERT(!cxIteratorValid(it5)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1283 | CX_TEST_ASSERT(!cxIteratorValid(it6)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1284 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1285 | int c = 0; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1286 | cx_foreach(void*, data, it1) c++; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1287 | cx_foreach(void*, data, it2) c++; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1288 | cx_foreach(void*, data, it3) c++; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1289 | cx_foreach(void*, data, it4) c++; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1290 | cx_foreach(void*, data, it5) c++; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1291 | cx_foreach(void*, data, it6) c++; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1292 | CX_TEST_ASSERT(c == 0); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1293 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1294 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1295 | |
|
1388
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1296 | CX_TEST(test_null_map_iterator) { |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1297 | CxMap *map = NULL; |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1298 | |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1299 | CxMapIterator it1 = cxMapIterator(map); |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1300 | CxMapIterator it2 = cxMapIteratorValues(map); |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1301 | CxMapIterator it3 = cxMapIteratorKeys(map); |
|
1429
6e0c3a8a914a
remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents:
1388
diff
changeset
|
1302 | CxMapIterator it4 = cxMapIterator(map); |
|
6e0c3a8a914a
remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents:
1388
diff
changeset
|
1303 | CxMapIterator it5 = cxMapIteratorValues(map); |
|
6e0c3a8a914a
remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents:
1388
diff
changeset
|
1304 | CxMapIterator it6 = cxMapIteratorKeys(map); |
|
1388
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1305 | |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1306 | CX_TEST_DO { |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1307 | CX_TEST_ASSERT(!cxIteratorValid(it1)); |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1308 | CX_TEST_ASSERT(!cxIteratorValid(it2)); |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1309 | CX_TEST_ASSERT(!cxIteratorValid(it3)); |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1310 | CX_TEST_ASSERT(!cxIteratorValid(it4)); |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1311 | CX_TEST_ASSERT(!cxIteratorValid(it5)); |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1312 | CX_TEST_ASSERT(!cxIteratorValid(it6)); |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1313 | |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1314 | int c = 0; |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1315 | cx_foreach(void*, data, it1) c++; |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1316 | cx_foreach(void*, data, it2) c++; |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1317 | cx_foreach(void*, data, it3) c++; |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1318 | cx_foreach(void*, data, it4) c++; |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1319 | cx_foreach(void*, data, it5) c++; |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1320 | cx_foreach(void*, data, it6) c++; |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1321 | CX_TEST_ASSERT(c == 0); |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1322 | } |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1323 | } |
|
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1324 | |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1325 | CX_TEST(test_empty_map_no_ops) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1326 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1327 | // assertion not possible |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1328 | // test that no segfault happens and valgrind is happy |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1329 | cxMapClear(cxEmptyMap); |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
1330 | cxMapFree(cxEmptyMap); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1331 | CX_TEST_ASSERT(true); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1332 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1333 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1334 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1335 | CX_TEST(test_empty_map_get) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1336 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1337 | CxHashKey key = cx_hash_key_str("test"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1338 | CX_TEST_ASSERT(cxMapGet(cxEmptyMap, key) == NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1339 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1340 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1341 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1342 | CX_TEST(test_hash_map_generics) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1343 | CxTestingAllocator talloc; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1344 | cx_testing_allocator_init(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1345 | CxAllocator *allocator = &talloc.base; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1346 | CX_TEST_DO { |
|
994
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1347 | CxMap *map = cxHashMapCreate(allocator, CX_STORE_POINTERS, 0); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1348 | cxMapPut(map, "test", "test"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1349 | cxMapPut(map, cx_mutstr("foo"), "bar"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1350 | cxMapPut(map, cx_str("hallo"), "welt"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1351 | |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1352 | CX_TEST_ASSERT(map->collection.size == 3); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1353 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "test"), "test")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1354 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "foo"), "bar")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1355 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "hallo"), "welt")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1356 | |
|
994
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1357 | CX_TEST_ASSERT(0 == cxMapRemove(map, cx_str("test"))); |
|
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
1358 | const char *hallo = "hallo"; |
|
994
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1359 | CX_TEST_ASSERT(0 == cxMapRemove(map, hallo)); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1360 | cxMapPut(map, cx_hash_key_str("key"), "value"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1361 | |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1362 | CX_TEST_ASSERT(map->collection.size == 2); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1363 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "key"), "value")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1364 | CX_TEST_ASSERT(0 == strcmp(cxMapGet(map, "foo"), "bar")); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1365 | |
|
994
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1366 | const char *r1, *r2; |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1367 | CX_TEST_ASSERT(0 == cxMapRemoveAndGet(map, "key", &r1)); |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1368 | CX_TEST_ASSERT(0 == strcmp(r1, "value")); |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1369 | CX_TEST_ASSERT(0 == cxMapRemoveAndGet(map, cx_str("foo"), &r2)); |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1370 | CX_TEST_ASSERT(0 == strcmp(r2, "bar")); |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1371 | r2 = "nope"; |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1372 | CX_TEST_ASSERT(0 != cxMapRemoveAndGet(map, cx_hash_key("notfound",9), &r2)); |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1373 | CX_TEST_ASSERT(0 == strcmp(r2, "nope")); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1374 | |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1375 | CX_TEST_ASSERT(map->collection.size == 0); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1376 | |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
1377 | cxMapFree(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1378 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1379 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1380 | cx_testing_allocator_destroy(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1381 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1382 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1383 | struct test_map_kv { |
|
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
1384 | const char *key; |
|
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
1385 | const char *value; |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1386 | }; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1387 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1388 | static struct test_map_kv const test_map_operations[] = { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1389 | {"key 1", "test"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1390 | {"key 2", "blub"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1391 | {"key 3", "hallo"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1392 | {"key 2", "foobar"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1393 | {"key 4", "value 4"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1394 | {"key 5", "value 5"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1395 | {"key 6", "value 6"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1396 | {"key 4", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1397 | {"key 7", "value 7"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1398 | {"key 8", "value 8"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1399 | {"does not exist", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1400 | {"key 9", "value 9"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1401 | {"key 6", "other value"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1402 | {"key 7", "something else"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1403 | {"key 8", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1404 | {"key 2", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1405 | {"key 8", "new value"}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1406 | }; |
|
926
8fdd8d78c14b
fix several survivors of east-const and some missing consts
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
1407 | static const size_t test_map_operations_len = |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1408 | sizeof(test_map_operations) / sizeof(struct test_map_kv); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1409 | static struct test_map_kv test_map_reference[] = { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1410 | {"key 1", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1411 | {"key 2", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1412 | {"key 3", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1413 | {"key 4", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1414 | {"key 5", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1415 | {"key 6", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1416 | {"key 7", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1417 | {"key 8", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1418 | {"key 9", NULL}, |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1419 | }; |
|
926
8fdd8d78c14b
fix several survivors of east-const and some missing consts
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
1420 | static const size_t test_map_reference_len = |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1421 | sizeof(test_map_reference) / sizeof(struct test_map_kv); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1422 | |
|
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
1423 | static void test_map_reference_put(const char *key, const char *value) { |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1424 | for (size_t i = 0 ; i < test_map_reference_len ; i++) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1425 | if (0 == strcmp(key, test_map_reference[i].key)) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1426 | test_map_reference[i].value = value; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1427 | return; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1428 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1429 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1430 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1431 | |
|
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
1432 | static const char *test_map_reference_get(const char *key) { |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1433 | for (size_t i = 0 ; i < test_map_reference_len ; i++) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1434 | if (0 == strcmp(key, test_map_reference[i].key)) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1435 | return test_map_reference[i].value; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1436 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1437 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1438 | return NULL; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1439 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1440 | |
|
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
1441 | static const char *test_map_reference_remove(const char *key) { |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1442 | for (size_t i = 0 ; i < test_map_reference_len ; i++) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1443 | if (0 == strcmp(key, test_map_reference[i].key)) { |
|
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
1444 | const char *ret = test_map_reference[i].value; |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1445 | test_map_reference[i].value = NULL; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1446 | return ret; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1447 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1448 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1449 | return NULL; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1450 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1451 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1452 | static size_t test_map_reference_size(void) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1453 | size_t size = 0; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1454 | for (size_t i = 0; i < test_map_reference_len; i++) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1455 | if (test_map_reference[i].value != NULL) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1456 | size++; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1457 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1458 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1459 | return size; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1460 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1461 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1462 | static CX_TEST_SUBROUTINE(verify_map_contents, CxMap *map) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1463 | // verify that the reference map has same size (i.e. no other keys are mapped) |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1464 | CX_TEST_ASSERT(map->collection.size == test_map_reference_size()); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1465 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1466 | // verify key iterator |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1467 | { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1468 | // collect the keys from the map iterator |
|
1115
6db21dee4929
create specialized map iterators - fixes #550
Mike Becker <universe@uap-core.de>
parents:
1114
diff
changeset
|
1469 | CxMapIterator keyiter = cxMapIteratorKeys(map); |
|
850
b2bc48c2b251
add iterator over raw C arrays - closes #389
Mike Becker <universe@uap-core.de>
parents:
785
diff
changeset
|
1470 | CX_TEST_ASSERT(keyiter.elem_size == sizeof(CxHashKey)); |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1471 | CX_TEST_ASSERT(keyiter.elem_count == map->collection.size); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1472 | CxHashKey *keys = calloc(map->collection.size, sizeof(CxHashKey)); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1473 | cx_foreach(CxHashKey*, elem, keyiter) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1474 | keys[keyiter.index] = *elem; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1475 | } |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1476 | CX_TEST_ASSERT(keyiter.index == map->collection.size); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1477 | // verify that all keys are mapped to values in reference map |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1478 | for (size_t i = 0 ; i < map->collection.size ; i++) { |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1479 | cxmutstr ksz = cx_strdup(cx_strn(keys[i].data, keys[i].len)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1480 | CX_TEST_ASSERT(test_map_reference_get(ksz.ptr) != NULL); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1481 | cx_strfree(&ksz); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1482 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1483 | free(keys); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1484 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1485 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1486 | // verify value iterator |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1487 | { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1488 | // by using that the values in our test data are unique strings |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1489 | // we can re-use a similar approach as above |
|
1115
6db21dee4929
create specialized map iterators - fixes #550
Mike Becker <universe@uap-core.de>
parents:
1114
diff
changeset
|
1490 | CxMapIterator valiter = cxMapIteratorValues(map); |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1491 | CX_TEST_ASSERT(valiter.elem_size == map->collection.elem_size); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1492 | CX_TEST_ASSERT(valiter.elem_count == map->collection.size); |
|
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
1493 | const char ** values = calloc(map->collection.size, sizeof(const char *)); |
|
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
1494 | cx_foreach(const char *, elem, valiter) { |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1495 | values[valiter.index] = elem; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1496 | } |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1497 | CX_TEST_ASSERT(valiter.index == map->collection.size); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1498 | // verify that all values are present in the reference map |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1499 | for (size_t i = 0 ; i < map->collection.size ; i++) { |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1500 | bool found = false; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1501 | for (size_t j = 0; j < test_map_reference_len ; j++) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1502 | if (test_map_reference[j].value == values[i]) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1503 | found = true; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1504 | break; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1505 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1506 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1507 | CX_TEST_ASSERTM(found, "A value was not found in the reference map"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1508 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1509 | free(values); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1510 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1511 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1512 | // verify pair iterator |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1513 | { |
|
1115
6db21dee4929
create specialized map iterators - fixes #550
Mike Becker <universe@uap-core.de>
parents:
1114
diff
changeset
|
1514 | CxMapIterator pairiter = cxMapIterator(map); |
|
850
b2bc48c2b251
add iterator over raw C arrays - closes #389
Mike Becker <universe@uap-core.de>
parents:
785
diff
changeset
|
1515 | CX_TEST_ASSERT(pairiter.elem_size == sizeof(CxMapEntry)); |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1516 | CX_TEST_ASSERT(pairiter.elem_count == map->collection.size); |
|
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1517 | struct test_map_kv *pairs = calloc(map->collection.size, sizeof(struct test_map_kv)); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1518 | cx_foreach(CxMapEntry*, entry, pairiter) { |
|
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
1519 | const CxHashKey *key = entry->key; |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1520 | pairs[pairiter.index].key = cx_strdup(cx_strn(key->data, key->len)).ptr; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1521 | pairs[pairiter.index].value = entry->value; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1522 | } |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1523 | CX_TEST_ASSERT(pairiter.index == map->collection.size); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1524 | // verify that all pairs are present in the reference map |
|
856
6bbbf219251d
fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
1525 | for (size_t i = 0 ; i < map->collection.size ; i++) { |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1526 | CX_TEST_ASSERT(test_map_reference_get(pairs[i].key) == pairs[i].value); |
|
1318
12fa1d37fe48
allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents:
1115
diff
changeset
|
1527 | // this was cx_strdup'ed |
|
1319
aa1f580f8f59
add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents:
1318
diff
changeset
|
1528 | cxFreeDefault((void*)pairs[i].key); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1529 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1530 | free(pairs); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1531 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1532 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1533 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1534 | CX_TEST(test_hash_map_basic_operations) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1535 | CxTestingAllocator talloc; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1536 | cx_testing_allocator_init(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1537 | CxAllocator *allocator = &talloc.base; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1538 | CX_TEST_DO { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1539 | // create the map |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1540 | CxMap *map = cxHashMapCreate(allocator, CX_STORE_POINTERS, 8); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1541 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1542 | // clear the reference map |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1543 | for (size_t i = 0 ; i < test_map_reference_len ; i++) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1544 | test_map_reference[i].value = NULL; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1545 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1546 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1547 | // verify iterators for empty map |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1548 | CX_TEST_CALL_SUBROUTINE(verify_map_contents, map); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1549 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1550 | // execute operations and verify results |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1551 | for (size_t i = 0 ; i < test_map_operations_len ; i++) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1552 | struct test_map_kv kv = test_map_operations[i]; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1553 | CxHashKey key = cx_hash_key_str(kv.key); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1554 | key.hash = 0; // force the hash map to compute the hash |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1555 | if (kv.value != NULL) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1556 | // execute a put operation and verify that the exact value can be read back |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1557 | test_map_reference_put(kv.key, kv.value); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1558 | int result = cxMapPut(map, key, (void *) kv.value); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1559 | CX_TEST_ASSERT(result == 0); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1560 | void *added = cxMapGet(map, key); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1561 | CX_TEST_ASSERT(0 == memcmp(kv.value, added, strlen(kv.value))); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1562 | } else { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1563 | // execute a remove and verify that the removed element was returned (or NULL) |
|
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
856
diff
changeset
|
1564 | const char *found = test_map_reference_remove(kv.key); |
|
994
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1565 | void *removed = (void*) 0x1337; |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1566 | int result = cxMapRemoveAndGet(map, key, &removed); |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1567 | if (found == NULL) { |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1568 | CX_TEST_ASSERT(0 != result); |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1569 | CX_TEST_ASSERT(removed == (void*) 0x1337); |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1570 | } else { |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1571 | CX_TEST_ASSERT(0 == result); |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1572 | CX_TEST_ASSERT(removed == found); |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1573 | } |
|
3603bdf4a78b
remove map detach function - fixes #487
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
1574 | |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1575 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1576 | // compare the current map state with the reference map |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1577 | CX_TEST_CALL_SUBROUTINE(verify_map_contents, map); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1578 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1579 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1580 | // destroy the map and verify the memory (de)allocations |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
1581 | cxMapFree(map); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1582 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1583 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1584 | cx_testing_allocator_destroy(&talloc); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1585 | } |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1586 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1587 | CxTestSuite *cx_test_suite_hash_map(void) { |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1588 | CxTestSuite *suite = cx_test_suite_new("map"); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1589 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1590 | cx_test_register(suite, test_hash_map_create); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1591 | cx_test_register(suite, test_hash_map_create_store_pointers); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1592 | cx_test_register(suite, test_hash_map_basic_operations); |
| 1341 | 1593 | cx_test_register(suite, test_hash_map_emplace); |
| 1594 | cx_test_register(suite, test_hash_map_emplace_pointers); | |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1595 | cx_test_register(suite, test_hash_map_rehash); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1596 | cx_test_register(suite, test_hash_map_rehash_not_required); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1597 | cx_test_register(suite, test_hash_map_clear); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1598 | cx_test_register(suite, test_hash_map_store_ucx_strings); |
|
1442
244fb8bc3584
fix hash map not being able to deal with 64-bit hashes
Mike Becker <universe@uap-core.de>
parents:
1439
diff
changeset
|
1599 | cx_test_register(suite, test_hash_map_integer_keys); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1600 | cx_test_register(suite, test_hash_map_remove_via_iterator); |
|
1114
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
1601 | cx_test_register(suite, test_hash_map_simple_destructor_objects); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
1602 | cx_test_register(suite, test_hash_map_advanced_destructor_objects); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
1603 | cx_test_register(suite, test_hash_map_simple_destructor_pointers); |
|
ad5eeb256242
fix that overwriting a map element did not call any destructor function
Mike Becker <universe@uap-core.de>
parents:
1111
diff
changeset
|
1604 | cx_test_register(suite, test_hash_map_advanced_destructor_pointers); |
|
1439
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
1605 | cx_test_register(suite, test_hash_map_clone); |
|
1443
6986e9ed70f3
add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents:
1442
diff
changeset
|
1606 | cx_test_register(suite, test_hash_map_clone_alloc_fail); |
|
1439
8e7fe85febc0
add tests for cxMapClone() - relates to #743
Mike Becker <universe@uap-core.de>
parents:
1429
diff
changeset
|
1607 | cx_test_register(suite, test_hash_map_clone_ptr); |
|
1448
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
1608 | cx_test_register(suite, test_hash_map_difference); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
1609 | cx_test_register(suite, test_hash_map_difference_ptr); |
|
0f0fe7311b76
add tests for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents:
1444
diff
changeset
|
1610 | cx_test_register(suite, test_hash_map_list_difference); |
|
1450
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
1611 | cx_test_register(suite, test_hash_map_difference_alloc_fail); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
1612 | cx_test_register(suite, test_hash_map_list_difference_alloc_fail); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
1613 | cx_test_register(suite, test_hash_map_difference_non_empty_target); |
|
09a73312d5ec
add more test coverage for new map functions and fixes some issues
Mike Becker <universe@uap-core.de>
parents:
1448
diff
changeset
|
1614 | cx_test_register(suite, test_hash_map_list_difference_non_empty_target); |
|
1467
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1615 | cx_test_register(suite, test_hash_map_intersection); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1616 | cx_test_register(suite, test_hash_map_intersection_ptr); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1617 | cx_test_register(suite, test_hash_map_list_intersection); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1618 | cx_test_register(suite, test_hash_map_intersection_alloc_fail); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1619 | cx_test_register(suite, test_hash_map_list_intersection_alloc_fail); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1620 | cx_test_register(suite, test_hash_map_intersection_non_empty_target); |
|
bb6f04c35310
implements cxMapIntersection() and cxMapListIntersection() - resolves #555
Mike Becker <universe@uap-core.de>
parents:
1466
diff
changeset
|
1621 | cx_test_register(suite, test_hash_map_list_intersection_non_empty_target); |
|
1474
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1622 | cx_test_register(suite, test_hash_map_union); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1623 | cx_test_register(suite, test_hash_map_union_ptr); |
|
84de0ba791af
implement cxMapUnion() - resolves #756
Mike Becker <universe@uap-core.de>
parents:
1467
diff
changeset
|
1624 | cx_test_register(suite, test_hash_map_union_alloc_fail); |
|
1480
83146195a1db
add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents:
1474
diff
changeset
|
1625 | cx_test_register(suite, test_hash_map_simple_clones); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1626 | cx_test_register(suite, test_empty_map_no_ops); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1627 | cx_test_register(suite, test_empty_map_size); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1628 | cx_test_register(suite, test_empty_map_get); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1629 | cx_test_register(suite, test_empty_map_iterator); |
|
1388
edc34e904fe3
add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents:
1387
diff
changeset
|
1630 | cx_test_register(suite, test_null_map_iterator); |
|
785
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1631 | cx_test_register(suite, test_hash_map_generics); |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1632 | |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1633 | return suite; |
|
bb18daa62d5f
migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1634 | } |