/* dict - a generic dictionary, variation over hash table */
-/* Copyright (c) 2004-2014. The SimGrid Team.
+/* Copyright (c) 2004-2015. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
static void xbt_dict_rehash(xbt_dict_t dict)
{
const int oldsize = dict->table_size + 1;
- register int newsize = oldsize * 2;
- register int i;
- register xbt_dictelm_t *currcell;
- register xbt_dictelm_t *twincell;
- register xbt_dictelm_t bucklet;
- register xbt_dictelm_t *pprev;
+ int newsize = oldsize * 2;
+ int i;
+ xbt_dictelm_t *currcell;
+ xbt_dictelm_t *twincell;
+ xbt_dictelm_t bucklet;
+ xbt_dictelm_t *pprev;
currcell =
(xbt_dictelm_t *) xbt_realloc((char *) dict->table,
#include "xbt/ex.h"
#include "portable.h"
+#define PRINTF_STR(a) (a)?:"(null)"
+
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(xbt_dict);
XBT_TEST_SUITE("dict", "Dict data container");
{
xbt_dict_cursor_t cursor;
char *key;
- _XBT_GNUC_UNUSED char *key2;
+ XBT_ATTRIB_UNUSED char *key2;
void *data;
int effective = 0;
fill(&head, homogeneous);
count_check_get_key(head, 7);
xbt_test_add("Change 123 to 'Changed 123'");
- xbt_dict_set(head, "123", strdup("Changed 123"), free_f);
+ xbt_dict_set(head, "123", xbt_strdup("Changed 123"), free_f);
count_check_get_key(head, 7);
xbt_test_add("Change 123 back to '123'");
- xbt_dict_set(head, "123", strdup("123"), free_f);
+ xbt_dict_set(head, "123", xbt_strdup("123"), free_f);
count_check_get_key(head, 7);
xbt_test_add("Change 12a to 'Dummy 12a'");
- xbt_dict_set(head, "12a", strdup("Dummy 12a"), free_f);
+ xbt_dict_set(head, "12a", xbt_strdup("Dummy 12a"), free_f);
count_check_get_key(head, 7);
xbt_test_add("Change 12a to '12a'");
- xbt_dict_set(head, "12a", strdup("12a"), free_f);
+ xbt_dict_set(head, "12a", xbt_strdup("12a"), free_f);
count_check_get_key(head, 7);
xbt_test_add("Traverse the resulting dictionary");
xbt_dict_free(&head);
}
+XBT_TEST_UNIT("ext", test_dict_int, "Test dictionnary with int keys")
+{
+ xbt_dict_t dict = xbt_dict_new();
+ int count = 500;
+
+ xbt_test_add("Insert elements");
+ int i;
+ for (i = 0; i < count; ++i)
+ xbt_dict_set_ext(dict, (char*) &i, sizeof(i), (void*) (intptr_t) i, NULL);
+ xbt_test_assert(xbt_dict_size(dict) == count,
+ "Bad number of elements in the dictionnary");
+
+ xbt_test_add("Check elements");
+ for (i = 0; i < count; ++i) {
+ int res = (int) (intptr_t) xbt_dict_get_ext(dict, (char*) &i, sizeof(i));
+ xbt_test_assert(xbt_dict_size(dict) == count,
+ "Unexpected value at index %i, expected %i but was %i", i, i, res);
+ }
+
+ xbt_test_add("Free the array");
+ xbt_dict_free(&dict);
+}
+
#endif /* SIMGRID_TEST */