[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] tests: test-hash: avoid wholesale duplication
From: |
Jim Meyering |
Subject: |
[PATCH] tests: test-hash: avoid wholesale duplication |
Date: |
Fri, 19 Jun 2009 18:19:01 +0200 |
FYI, I've just pushed this no-semantic-change patch:
diff --git a/ChangeLog b/ChangeLog
index 876467c..16cbdbc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2009-06-19 Jim Meyering <address@hidden>
+ tests: test-hash: avoid wholesale duplication
+ * tests/test-hash.c (main): Don't copy/paste a 60-line loop.
+ Instead, use a loop and add a single conditional.
Since this changes so much indentation, here's diff -b output:
diff --git a/tests/test-hash.c b/tests/test-hash.c
index 83ffdf7..b056d0a 100644
--- a/tests/test-hash.c
+++ b/tests/test-hash.c
@@ -93,10 +93,18 @@ int
main (int argc, char **argv)
{
unsigned int i;
+ unsigned int k;
unsigned int table_size[] = {1, 2, 3, 4, 5, 23, 53};
Hash_table *ht;
Hash_tuning tuning;
+ hash_reset_tuning (&tuning);
+ tuning.shrink_threshold = 0.3;
+ tuning.shrink_factor = 0.707;
+ tuning.growth_threshold = 1.5;
+ tuning.growth_factor = 2.0;
+ tuning.is_n_buckets = true;
+
if (1 < argc)
{
unsigned int seed;
@@ -172,70 +180,6 @@ main (int argc, char **argv)
hash_free (ht);
}
- /* Now, each entry is malloc'd. */
- ht = hash_initialize (4651, NULL, hash_pjw, hash_compare_strings,
hash_freer);
- ASSERT (ht);
- for (i = 0; i < 10000; i++)
- {
- unsigned int op = rand () % 10;
- switch (op)
- {
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- {
- char buf[50];
- char const *p = uinttostr (i, buf);
- insert_new (ht, xstrdup (p));
- }
- break;
-
- case 6:
- {
- size_t n = hash_get_n_entries (ht);
- ASSERT (hash_rehash (ht, n + rand () % 20));
- }
- break;
-
- case 7:
- {
- size_t n = hash_get_n_entries (ht);
- size_t delta = rand () % 20;
- if (delta < n)
- ASSERT (hash_rehash (ht, n - delta));
- }
- break;
-
- case 8:
- case 9:
- {
- /* Delete a random entry. */
- size_t n = hash_get_n_entries (ht);
- if (n)
- {
- size_t k = rand () % n;
- void const *p;
- void *v;
- for (p = hash_get_first (ht); k; --k, p = hash_get_next (ht, p))
- {
- /* empty */
- }
- ASSERT (p);
- v = hash_delete (ht, p);
- ASSERT (v);
- free (v);
- }
- break;
- }
- }
- ASSERT (hash_table_ok (ht));
- }
-
- hash_free (ht);
-
hash_reset_tuning (&tuning);
tuning.shrink_threshold = 0.3;
tuning.shrink_factor = 0.707;
@@ -249,8 +193,14 @@ main (int argc, char **argv)
/* Alternate tuning. */
tuning.growth_threshold = 0.89;
- ht = hash_initialize (4651, &tuning, hash_pjw, hash_compare_strings,
- hash_freer);
+
+ /* Run with default tuning, then with custom tuning settings. */
+ for (k = 0; k < 2; k++)
+ {
+ Hash_tuning const *tune = (k == 0 ? NULL : &tuning);
+ /* Now, each entry is malloc'd. */
+ ht = hash_initialize (4651, tune, hash_pjw,
+ hash_compare_strings, hash_freer);
ASSERT (ht);
for (i = 0; i < 10000; i++)
{
@@ -296,7 +246,8 @@ main (int argc, char **argv)
size_t k = rand () % n;
void const *p;
void *v;
- for (p = hash_get_first (ht); k; --k, p = hash_get_next (ht, p))
+ for (p = hash_get_first (ht); k;
+ --k, p = hash_get_next (ht, p))
{
/* empty */
}
@@ -312,6 +263,7 @@ main (int argc, char **argv)
}
hash_free (ht);
+ }
return 0;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] tests: test-hash: avoid wholesale duplication,
Jim Meyering <=