diff options
author | Evan Huus <eapache@gmail.com> | 2013-06-18 06:22:47 +0000 |
---|---|---|
committer | Evan Huus <eapache@gmail.com> | 2013-06-18 06:22:47 +0000 |
commit | 701fb00afafd6e835ee92d9fcae374dd21e6403c (patch) | |
tree | 66d817f04167e832f6118bc5369912ffbcb3b44b /epan/wmem/wmem_test.c | |
parent | 54959c293d77efcd9ce04bcf29c79da52b25ed4d (diff) |
Add test block for wmem_tree_lookup32_array_le(), fix other tests where certain
random seeds would cause collisions and false failures.
svn path=/trunk/; revision=50004
Diffstat (limited to 'epan/wmem/wmem_test.c')
-rw-r--r-- | epan/wmem/wmem_test.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/epan/wmem/wmem_test.c b/epan/wmem/wmem_test.c index d553975655..fa91ae44a2 100644 --- a/epan/wmem/wmem_test.c +++ b/epan/wmem/wmem_test.c @@ -655,12 +655,32 @@ wmem_test_tree(void) keys[j].key = (guint32*)wmem_test_rand_string(allocator, (keys[j].length*4), (keys[j].length*4)+1); } - g_assert(wmem_tree_lookup32_array(tree, keys) == NULL); wmem_tree_insert32_array(tree, keys, GINT_TO_POINTER(i)); g_assert(wmem_tree_lookup32_array(tree, keys) == GINT_TO_POINTER(i)); } wmem_free_all(allocator); + tree = wmem_tree_new(allocator); + keys[0].length = 1; + keys[0].key = wmem_new(allocator, guint32); + *(keys[0].key) = 0; + keys[1].length = 0; + for (i=0; i<CONTAINER_ITERS; i++) { + wmem_tree_insert32_array(tree, keys, GINT_TO_POINTER(i)); + *(keys[0].key) += 4; + } + *(keys[0].key) = 0; + for (i=0; i<CONTAINER_ITERS; i++) { + g_assert(wmem_tree_lookup32_array(tree, keys) == GINT_TO_POINTER(i)); + for (j=0; j<3; j++) { + (*(keys[0].key)) += 1; + g_assert(wmem_tree_lookup32_array_le(tree, keys) == + GINT_TO_POINTER(i)); + } + *(keys[0].key) += 1; + } + wmem_free_all(allocator); + /* test string key functionality */ tree = wmem_tree_new(allocator); for (i=0; i<CONTAINER_ITERS; i++) { @@ -685,8 +705,12 @@ wmem_test_tree(void) tree = wmem_tree_new(allocator); expected_user_data = GINT_TO_POINTER(g_test_rand_int()); for (i=0; i<CONTAINER_ITERS; i++) { + gint tmp; + do { + tmp = g_test_rand_int(); + } while (wmem_tree_lookup32(tree, tmp)); value_seen[i] = FALSE; - wmem_tree_insert32(tree, g_test_rand_int(), GINT_TO_POINTER(i)); + wmem_tree_insert32(tree, tmp, GINT_TO_POINTER(i)); } cb_called_count = 0; |