[skiplist] Inline testing.

Add a loop to create a skip list to allow manual checking.
This commit is contained in:
Chris Wilson 2008-11-13 16:36:01 +00:00
parent e44c1f26e4
commit 032be9849d
2 changed files with 40 additions and 1 deletions

View file

@ -84,9 +84,12 @@ TESTS += check-link$(EXEEXT)
endif
EXTRA_DIST += $(TESTS_SH) check-has-hidden-symbols.c
check_PROGRAMS += check-link
check_PROGRAMS += check-link check-skiplist
check_link_LDADD = libcairo.la
check_skiplist_SOURCES = cairo-skiplist.c
check_skiplist_CPPFLAGS = -DMAIN $(AM_CPPFLAGS)
check: headers-standalone
PREPROCESS_ARGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)

View file

@ -305,3 +305,39 @@ _cairo_skip_list_delete_given (cairo_skip_list_t *list, skip_elt_t *given)
list->max_level--;
free_elt (list, elt);
}
#if MAIN
typedef struct {
int n;
skip_elt_t elt;
} test_elt_t;
static int
test_cmp (void *list, void *A, void *B)
{
const test_elt_t *a = A, *b = B;
return a->n - b->n;
}
int
main (void)
{
cairo_skip_list_t list;
test_elt_t elt;
int n;
_cairo_skip_list_init (&list, test_cmp, sizeof (test_elt_t));
for (n = 0; n < 10000000; n++) {
void *elt_and_data;
elt.n = n;
elt_and_data = _cairo_skip_list_insert (&list, &elt, TRUE);
assert (elt_and_data != NULL);
}
_cairo_skip_list_fini (&list);
return 0;
}
/* required supporting stubs */
cairo_status_t _cairo_error (cairo_status_t status) { return status; }
#endif