mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
t/helper/test-hashmap: use custom data instead of duplicate cmp functions
With the new field that is passed to the compare function, we can pass through flags there instead of having multiple compare functions. Also drop the cast to hashmap_cmp_fn. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
56a14ea7ac
commit
6815d11431
|
@ -13,20 +13,20 @@ static const char *get_value(const struct test_entry *e)
|
|||
return e->key + strlen(e->key) + 1;
|
||||
}
|
||||
|
||||
static int test_entry_cmp(const void *unused_cmp_data,
|
||||
const struct test_entry *e1,
|
||||
const struct test_entry *e2,
|
||||
const char* key)
|
||||
static int test_entry_cmp(const void *cmp_data,
|
||||
const void *entry,
|
||||
const void *entry_or_key,
|
||||
const void *keydata)
|
||||
{
|
||||
return strcmp(e1->key, key ? key : e2->key);
|
||||
}
|
||||
const int ignore_case = cmp_data ? *((int *)cmp_data) : 0;
|
||||
const struct test_entry *e1 = entry;
|
||||
const struct test_entry *e2 = entry_or_key;
|
||||
const char *key = keydata;
|
||||
|
||||
static int test_entry_cmp_icase(const void *unused_cmp_data,
|
||||
const struct test_entry *e1,
|
||||
const struct test_entry *e2,
|
||||
const char* key)
|
||||
{
|
||||
return strcasecmp(e1->key, key ? key : e2->key);
|
||||
if (ignore_case)
|
||||
return strcasecmp(e1->key, key ? key : e2->key);
|
||||
else
|
||||
return strcmp(e1->key, key ? key : e2->key);
|
||||
}
|
||||
|
||||
static struct test_entry *alloc_test_entry(int hash, char *key, int klen,
|
||||
|
@ -96,8 +96,7 @@ static void perf_hashmap(unsigned int method, unsigned int rounds)
|
|||
if (method & TEST_ADD) {
|
||||
/* test adding to the map */
|
||||
for (j = 0; j < rounds; j++) {
|
||||
hashmap_init(&map, (hashmap_cmp_fn) test_entry_cmp,
|
||||
NULL, 0);
|
||||
hashmap_init(&map, test_entry_cmp, NULL, 0);
|
||||
|
||||
/* add entries */
|
||||
for (i = 0; i < TEST_SIZE; i++) {
|
||||
|
@ -109,7 +108,7 @@ static void perf_hashmap(unsigned int method, unsigned int rounds)
|
|||
}
|
||||
} else {
|
||||
/* test map lookups */
|
||||
hashmap_init(&map, (hashmap_cmp_fn) test_entry_cmp, NULL, 0);
|
||||
hashmap_init(&map, test_entry_cmp, NULL, 0);
|
||||
|
||||
/* fill the map (sparsely if specified) */
|
||||
j = (method & TEST_SPARSE) ? TEST_SIZE / 10 : TEST_SIZE;
|
||||
|
@ -151,8 +150,7 @@ int cmd_main(int argc, const char **argv)
|
|||
|
||||
/* init hash map */
|
||||
icase = argc > 1 && !strcmp("ignorecase", argv[1]);
|
||||
hashmap_init(&map, (hashmap_cmp_fn) (icase ? test_entry_cmp_icase
|
||||
: test_entry_cmp), NULL, 0);
|
||||
hashmap_init(&map, test_entry_cmp, &icase, 0);
|
||||
|
||||
/* process commands from stdin */
|
||||
while (fgets(line, sizeof(line), stdin)) {
|
||||
|
|
Loading…
Reference in a new issue