static void test_filter(void) { Rlist *list = NULL; for (int i = 0; i < 10; i++) { char *item = StringFromLong(i); RlistAppend(&list, item, RVAL_TYPE_SCALAR); } assert_int_equal(10, RlistLen(list)); int mod_by = 0; RlistFilter(&list, is_even, &mod_by, free); assert_int_equal(5, RlistLen(list)); int i = 0; for (Rlist *rp = list; rp; rp = rp->next) { int k = StringToLong(rp->val.item); assert_int_equal(i, k); i += 2; } RlistDestroy(list); }
static void test_filter(void) { Rlist *list = NULL; for (int i = 0; i < 10; i++) { void *item = xmemdup(&i, sizeof(int)); RlistAppendAlien(&list, item); } assert_int_equal(10, RlistLen(list)); int mod_by = 0; RlistFilter(&list, is_even, &mod_by, free); assert_int_equal(5, RlistLen(list)); int i = 0; for (Rlist *rp = list; rp; rp = rp->next) { int *k = rp->item; assert_int_equal(i, *k); free(k); rp->item = NULL; i += 2; } RlistDestroy(list); }
static void test_filter_everything(void) { Rlist *list = NULL; for (int i = 1; i < 10; i += 2) { char *item = StringFromLong(i); RlistAppend(&list, item, RVAL_TYPE_SCALAR); } assert_int_equal(5, RlistLen(list)); int mod_by = 0; RlistFilter(&list, is_even, &mod_by, free); assert_int_equal(0, RlistLen(list)); assert_true(list == NULL); }
static void test_filter_everything(void) { Rlist *list = NULL; for (int i = 1; i < 10; i += 2) { void *item = xmemdup(&i, sizeof(int)); RlistAppendAlien(&list, item); } assert_int_equal(5, RlistLen(list)); int mod_by = 0; RlistFilter(&list, is_even, &mod_by, free); assert_int_equal(0, RlistLen(list)); assert_true(list == NULL); }