Ejemplo n.º 1
0
static void test_empty(void)
{
	struct list_node *spos, *ssafe;
	struct node *pos, *safe;

	check(!slist_is_empty(&slist),
	      "slist is empty but slist_is_empty returned false");
	check(!list_is_empty(&list),
	      "list is empty but list_is_empty returned false");

	check(slist_head(&slist) != &slist,
	      "slist is empty but slist_head returned non-self");
	check(list_head(&list) != NULL,
	      "list is empty but list_head returned non-NULL");

	check(slist_tail(&slist) != &slist,
	      "slist is empty but slist_tail returned non-self");
	check(list_tail(&list) != NULL,
	      "list is empty but list_tail returned non-NULL");

	check_loop_never(slist_for_each(spos, &slist),
			 "slist is empty, but slist_for_each looped");
	check_loop_never(list_for_each(pos, &list),
			 "list is empty, but list_for_each looped");

	check_loop_never(slist_for_each_safe(spos, ssafe, &slist),
			 "slist is empty, but slist_for_each_safe looped");
	check_loop_never(list_for_each_safe(pos, safe, &list),
			 "list is empty, but list_for_each_safe looped");

	check_loop_never(slist_for_each_entry(pos, &slist, node),
			 "slist is empty, but slist_for_each_entry looped");
	check_loop_never(slist_for_each_entry_safe(pos, safe, &slist, node),
			 "slist is empty, but slist_for_each-entry_safe looped");
}
Ejemplo n.º 2
0
void do_test(unsigned int c)
{
	unsigned int i;
	struct node *p, *n;
	SLIST_HEAD(head);

	for (i = 0; i < c; ++i) {
		p = (struct node*)malloc(sizeof(*p));

		if (!p) {
			perror("malloc failed");
			exit(1);
		}

		p->data = c - i;
		slist_add(&p->slist, &head);
	}

	slist_for_each_entry(p, &head, slist) printf("%d ", p->data);
	printf("\n");

	slist_reverse(&head);

	slist_for_each_entry(p, &head, slist) printf("%d ", p->data);
	printf("\n");

	slist_for_each_entry(p, &head, slist) p->data = (size_t)rand()%100;
	printf("before sort: ");
	slist_for_each_entry(p, &head, slist) printf("%d ", p->data);
	printf("\n");
	slist_sort(NULL, &head, int_cmp);
	printf("after sort: ");
	slist_for_each_entry(p, &head, slist) printf("%d ", p->data);
	printf("\n");
	slist_for_each_entry_safe(p, n, &head, slist) free(p);
}