@@ -5,6 +5,11 @@ uint64_t hashTestCallback(const void *key) {
5
5
return hashtableGenHashFunction ((char * )key , strlen ((char * )key ));
6
6
}
7
7
8
+ uint64_t hashConflictTestCallback (const void * key ) {
9
+ UNUSED (key );
10
+ return 0 ;
11
+ }
12
+
8
13
int cmpTestCallback (const void * k1 , const void * k2 ) {
9
14
return strcmp (k1 , k2 );
10
15
}
@@ -23,6 +28,16 @@ hashtableType KvstoreHashtableTestType = {
23
28
.getMetadataSize = kvstoreHashtableMetadataSize ,
24
29
};
25
30
31
+ hashtableType KvstoreConflictHashtableTestType = {
32
+ .hashFunction = hashConflictTestCallback ,
33
+ .keyCompare = cmpTestCallback ,
34
+ .entryDestructor = freeTestCallback ,
35
+ .rehashingStarted = kvstoreHashtableRehashingStarted ,
36
+ .rehashingCompleted = kvstoreHashtableRehashingCompleted ,
37
+ .trackMemUsage = kvstoreHashtableTrackMemUsage ,
38
+ .getMetadataSize = kvstoreHashtableMetadataSize ,
39
+ };
40
+
26
41
char * stringFromInt (int value ) {
27
42
char buf [32 ];
28
43
int len ;
@@ -70,31 +85,43 @@ int test_kvstoreIteratorRemoveAllKeysNoDeleteEmptyHashtable(int argc, char **arg
70
85
UNUSED (argv );
71
86
UNUSED (flags );
72
87
73
- int i ;
74
- void * key ;
75
- kvstoreIterator * kvs_it ;
76
-
77
- int didx = 0 ;
78
- int curr_slot = 0 ;
79
- kvstore * kvs1 = kvstoreCreate (& KvstoreHashtableTestType , 0 , KVSTORE_ALLOCATE_HASHTABLES_ON_DEMAND );
80
-
81
- for (i = 0 ; i < 16 ; i ++ ) {
82
- TEST_ASSERT (kvstoreHashtableAdd (kvs1 , didx , stringFromInt (i )));
83
- }
84
-
85
- kvs_it = kvstoreIteratorInit (kvs1 , HASHTABLE_ITER_SAFE );
86
- while (kvstoreIteratorNext (kvs_it , & key )) {
87
- curr_slot = kvstoreIteratorGetCurrentHashtableIndex (kvs_it );
88
- TEST_ASSERT (kvstoreHashtableDelete (kvs1 , curr_slot , key ));
88
+ hashtableType * type [] = {
89
+ & KvstoreHashtableTestType ,
90
+ & KvstoreConflictHashtableTestType ,
91
+ NULL ,
92
+ };
93
+
94
+ for (int t = 0 ; type [t ] != NULL ; t ++ ) {
95
+ hashtableType * testType = type [t ];
96
+ TEST_PRINT_INFO ("Testing %d hashtableType\n" , t );
97
+
98
+ int i ;
99
+ void * key ;
100
+ kvstoreIterator * kvs_it ;
101
+
102
+ int didx = 0 ;
103
+ int curr_slot = 0 ;
104
+ kvstore * kvs1 = kvstoreCreate (testType , 0 , KVSTORE_ALLOCATE_HASHTABLES_ON_DEMAND );
105
+
106
+ for (i = 0 ; i < 16 ; i ++ ) {
107
+ TEST_ASSERT (kvstoreHashtableAdd (kvs1 , didx , stringFromInt (i )));
108
+ }
109
+
110
+ kvs_it = kvstoreIteratorInit (kvs1 , HASHTABLE_ITER_SAFE );
111
+ while (kvstoreIteratorNext (kvs_it , & key )) {
112
+ curr_slot = kvstoreIteratorGetCurrentHashtableIndex (kvs_it );
113
+ TEST_ASSERT (kvstoreHashtableDelete (kvs1 , curr_slot , key ));
114
+ }
115
+ kvstoreIteratorRelease (kvs_it );
116
+
117
+ hashtable * ht = kvstoreGetHashtable (kvs1 , didx );
118
+ TEST_ASSERT (ht != NULL );
119
+ TEST_ASSERT (kvstoreHashtableSize (kvs1 , didx ) == 0 );
120
+ TEST_ASSERT (kvstoreSize (kvs1 ) == 0 );
121
+
122
+ kvstoreRelease (kvs1 );
89
123
}
90
- kvstoreIteratorRelease (kvs_it );
91
-
92
- hashtable * ht = kvstoreGetHashtable (kvs1 , didx );
93
- TEST_ASSERT (ht != NULL );
94
- TEST_ASSERT (kvstoreHashtableSize (kvs1 , didx ) == 0 );
95
- TEST_ASSERT (kvstoreSize (kvs1 ) == 0 );
96
124
97
- kvstoreRelease (kvs1 );
98
125
return 0 ;
99
126
}
100
127
0 commit comments