mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-25 11:42:10 +01:00
Merge branch 'array-test-fixes' into 'master'
Small array test fixes See merge request GNOME/glib!996
This commit is contained in:
commit
b482a5c1a9
@ -845,18 +845,20 @@ g_array_binary_search (GArray *array,
|
|||||||
|
|
||||||
while (left <= right)
|
while (left <= right)
|
||||||
{
|
{
|
||||||
middle = (left + right) / 2;
|
middle = left + (right - left) / 2;
|
||||||
|
|
||||||
val = compare_func (_array->data + (_array->elt_size * middle), target);
|
val = compare_func (_array->data + (_array->elt_size * middle), target);
|
||||||
if (val < 0)
|
if (val == 0)
|
||||||
left = middle + 1;
|
|
||||||
else if (val > 0)
|
|
||||||
right = middle - 1;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
result = TRUE;
|
result = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if (val < 0)
|
||||||
|
left = middle + 1;
|
||||||
|
else if (/* val > 0 && */ middle > 0)
|
||||||
|
right = middle - 1;
|
||||||
|
else
|
||||||
|
break; /* element not found */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1020,6 +1022,9 @@ g_ptr_array_new (void)
|
|||||||
* If @func is %NULL, then only the pointers (and not what they are
|
* If @func is %NULL, then only the pointers (and not what they are
|
||||||
* pointing to) are copied to the new #GPtrArray.
|
* pointing to) are copied to the new #GPtrArray.
|
||||||
*
|
*
|
||||||
|
* The copy of @array will have the same #GDestroyNotify for its elements as
|
||||||
|
* @array.
|
||||||
|
*
|
||||||
* Returns: (transfer full): a deep copy of the initial #GPtrArray.
|
* Returns: (transfer full): a deep copy of the initial #GPtrArray.
|
||||||
*
|
*
|
||||||
* Since: 2.62
|
* Since: 2.62
|
||||||
@ -1035,6 +1040,8 @@ g_ptr_array_copy (GPtrArray *array,
|
|||||||
g_return_val_if_fail (array != NULL, NULL);
|
g_return_val_if_fail (array != NULL, NULL);
|
||||||
|
|
||||||
new_array = g_ptr_array_sized_new (array->len);
|
new_array = g_ptr_array_sized_new (array->len);
|
||||||
|
g_ptr_array_set_free_func (new_array, ((GRealPtrArray *) array)->element_free_func);
|
||||||
|
|
||||||
if (func != NULL)
|
if (func != NULL)
|
||||||
{
|
{
|
||||||
for (i = 0; i < array->len; i++)
|
for (i = 0; i < array->len; i++)
|
||||||
@ -1046,6 +1053,8 @@ g_ptr_array_copy (GPtrArray *array,
|
|||||||
array->len * sizeof (*array->pdata));
|
array->len * sizeof (*array->pdata));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
new_array->len = array->len;
|
||||||
|
|
||||||
return new_array;
|
return new_array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -508,8 +508,9 @@ array_copy (gconstpointer test_data)
|
|||||||
/* Check internal parameters ('clear' flag) */
|
/* Check internal parameters ('clear' flag) */
|
||||||
if (config->clear_)
|
if (config->clear_)
|
||||||
{
|
{
|
||||||
g_array_set_size (array_copy, array_copy->len + 5);
|
guint old_length = array_copy->len;
|
||||||
for (i = array_copy->len; i < array_copy->len + 5; i++)
|
g_array_set_size (array_copy, old_length + 5);
|
||||||
|
for (i = old_length; i < old_length + 5; i++)
|
||||||
g_assert_cmpint (g_array_index (array_copy, gint, i), ==, 0);
|
g_assert_cmpint (g_array_index (array_copy, gint, i), ==, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -676,6 +677,9 @@ test_array_binary_search (void)
|
|||||||
|
|
||||||
g_assert_true (g_array_binary_search (garray, &i, cmpint, NULL));
|
g_assert_true (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
i = 2;
|
i = 2;
|
||||||
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
@ -683,26 +687,32 @@ test_array_binary_search (void)
|
|||||||
|
|
||||||
/* Testing array of size 2 */
|
/* Testing array of size 2 */
|
||||||
garray = g_array_sized_new (FALSE, FALSE, sizeof (guint), 2);
|
garray = g_array_sized_new (FALSE, FALSE, sizeof (guint), 2);
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 1; i < 3; i++)
|
||||||
g_array_append_val (garray, i);
|
g_array_append_val (garray, i);
|
||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 1; i < 3; i++)
|
||||||
g_assert_true (g_array_binary_search (garray, &i, cmpint, NULL));
|
g_assert_true (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
i = 3;
|
i = 0;
|
||||||
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
|
i = 4;
|
||||||
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
g_array_free (garray, TRUE);
|
g_array_free (garray, TRUE);
|
||||||
|
|
||||||
/* Testing array of size 3 */
|
/* Testing array of size 3 */
|
||||||
garray = g_array_sized_new (FALSE, FALSE, sizeof (guint), 3);
|
garray = g_array_sized_new (FALSE, FALSE, sizeof (guint), 3);
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 1; i < 4; i++)
|
||||||
g_array_append_val (garray, i);
|
g_array_append_val (garray, i);
|
||||||
|
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 1; i < 4; i++)
|
||||||
g_assert_true (g_array_binary_search (garray, &i, cmpint, NULL));
|
g_assert_true (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
i = 4;
|
i = 0;
|
||||||
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
|
i = 5;
|
||||||
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
g_array_free (garray, TRUE);
|
g_array_free (garray, TRUE);
|
||||||
@ -710,23 +720,43 @@ test_array_binary_search (void)
|
|||||||
/* Testing array of size 10000 */
|
/* Testing array of size 10000 */
|
||||||
garray = g_array_sized_new (FALSE, FALSE, sizeof (guint), 10000);
|
garray = g_array_sized_new (FALSE, FALSE, sizeof (guint), 10000);
|
||||||
|
|
||||||
for (i = 0; i < 10000; i++)
|
for (i = 1; i < 10001; i++)
|
||||||
g_array_append_val (garray, i);
|
g_array_append_val (garray, i);
|
||||||
|
|
||||||
for (i = 0; i < 10000; i++)
|
for (i = 1; i < 10001; i++)
|
||||||
g_assert_true (g_array_binary_search (garray, &i, cmpint, NULL));
|
g_assert_true (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
for (i = 0; i < 10000; i++)
|
for (i = 1; i < 10001; i++)
|
||||||
{
|
{
|
||||||
g_assert_true (g_array_binary_search (garray, &i, cmpint, &matched_index));
|
g_assert_true (g_array_binary_search (garray, &i, cmpint, &matched_index));
|
||||||
g_assert_cmpint (i, ==, matched_index);
|
g_assert_cmpint (i, ==, matched_index + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Testing negative result */
|
/* Testing negative result */
|
||||||
i = 10001;
|
i = 0;
|
||||||
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
g_assert_false (g_array_binary_search (garray, &i, cmpint, &matched_index));
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, &matched_index));
|
||||||
|
|
||||||
|
i = 10002;
|
||||||
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, &matched_index));
|
||||||
|
|
||||||
|
g_array_free (garray, TRUE);
|
||||||
|
|
||||||
|
/* Test for a not-found element in the middle of the array. */
|
||||||
|
garray = g_array_sized_new (FALSE, FALSE, sizeof (guint), 3);
|
||||||
|
for (i = 1; i < 10; i += 2)
|
||||||
|
g_array_append_val (garray, i);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
|
i = 2;
|
||||||
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
|
i = 10;
|
||||||
|
g_assert_false (g_array_binary_search (garray, &i, cmpint, NULL));
|
||||||
|
|
||||||
g_array_free (garray, TRUE);
|
g_array_free (garray, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -938,6 +968,8 @@ pointer_array_copy (void)
|
|||||||
ptr_array = g_ptr_array_sized_new (0);
|
ptr_array = g_ptr_array_sized_new (0);
|
||||||
ptr_array2 = g_ptr_array_copy (ptr_array, NULL, NULL);
|
ptr_array2 = g_ptr_array_copy (ptr_array, NULL, NULL);
|
||||||
|
|
||||||
|
g_assert_cmpuint (ptr_array2->len, ==, ptr_array->len);
|
||||||
|
|
||||||
g_ptr_array_unref (ptr_array);
|
g_ptr_array_unref (ptr_array);
|
||||||
g_ptr_array_unref (ptr_array2);
|
g_ptr_array_unref (ptr_array2);
|
||||||
|
|
||||||
@ -949,6 +981,7 @@ pointer_array_copy (void)
|
|||||||
|
|
||||||
ptr_array2 = g_ptr_array_copy (ptr_array, NULL, NULL);
|
ptr_array2 = g_ptr_array_copy (ptr_array, NULL, NULL);
|
||||||
|
|
||||||
|
g_assert_cmpuint (ptr_array2->len, ==, ptr_array->len);
|
||||||
for (i = 0; i < array_size; i++)
|
for (i = 0; i < array_size; i++)
|
||||||
g_assert_cmpuint (*((gsize *) g_ptr_array_index (ptr_array2, i)), ==, i);
|
g_assert_cmpuint (*((gsize *) g_ptr_array_index (ptr_array2, i)), ==, i);
|
||||||
|
|
||||||
@ -960,7 +993,9 @@ pointer_array_copy (void)
|
|||||||
|
|
||||||
/* Test copy through GCopyFunc */
|
/* Test copy through GCopyFunc */
|
||||||
ptr_array2 = g_ptr_array_copy (ptr_array, ptr_array_copy_func, NULL);
|
ptr_array2 = g_ptr_array_copy (ptr_array, ptr_array_copy_func, NULL);
|
||||||
|
g_ptr_array_set_free_func (ptr_array2, g_free);
|
||||||
|
|
||||||
|
g_assert_cmpuint (ptr_array2->len, ==, ptr_array->len);
|
||||||
for (i = 0; i < array_size; i++)
|
for (i = 0; i < array_size; i++)
|
||||||
g_assert_cmpuint (*((gsize *) g_ptr_array_index (ptr_array2, i)), ==, i);
|
g_assert_cmpuint (*((gsize *) g_ptr_array_index (ptr_array2, i)), ==, i);
|
||||||
|
|
||||||
@ -968,9 +1003,6 @@ pointer_array_copy (void)
|
|||||||
g_assert_cmpuint ((gsize) g_ptr_array_index (ptr_array, i), !=,
|
g_assert_cmpuint ((gsize) g_ptr_array_index (ptr_array, i), !=,
|
||||||
(gsize) g_ptr_array_index (ptr_array2, i));
|
(gsize) g_ptr_array_index (ptr_array2, i));
|
||||||
|
|
||||||
for (i = 0; i < array_size; i++)
|
|
||||||
free(ptr_array2->pdata[i]);
|
|
||||||
|
|
||||||
g_ptr_array_free (ptr_array2, TRUE);
|
g_ptr_array_free (ptr_array2, TRUE);
|
||||||
|
|
||||||
/* Final cleanup */
|
/* Final cleanup */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user