static void print_set(set_foo* f) { printf("size %d |", set_foo_size(f)); set_for_each(foo, f, i) printf("%d ", i); printf("\n"); }
void test_set(void) { int i; void* S = set_create(100, NULL, NULL); fprintf(stdout, "call function : %s\n", __func__); set_object(S); fprintf(stdout, "\ntest function - set_insert ===>\n"); { srand((unsigned int)time(0)); for (i = 0; i < 5; ++i) { double* d = (double*)malloc(sizeof(double)); *d = (i + 1) * rand() % 1000 * 0.456; fprintf(stdout, "\tinsert {object=>0x%p, vlaue=>%.3f}\n", d, *d); set_insert(S, d); } set_object(S); set_for_each(S, set_member_show_double, NULL); set_for_each(S, set_member_destroy, NULL); set_object(S); set_clear(S); } set_object(S); fprintf(stdout, "\ntest function - set_remove ===>\n"); { double* remove_member = NULL; srand((unsigned int)time(0)); for (i = 0; i < 5; ++i) { double* d = (double*)malloc(sizeof(double)); *d = (i + 1) * rand() % 1000 * 0.456; fprintf(stdout, "\tinsert {object=>0x%p, vlaue=>%.3f}\n", d, *d); set_insert(S, d); if (0 == i) remove_member = d; } set_object(S); set_for_each(S, set_member_show_double, NULL); set_remove(S, remove_member); set_object(S); set_for_each(S, set_member_show_double, NULL); set_for_each(S, set_member_destroy, NULL); set_object(S); set_clear(S); } set_object(S); fprintf(stdout, "\ntest function - set_release ===>\n"); set_release(&S); set_object(S); fprintf(stdout, "\n\ntest function - set operations ===>\n"); { void* s = set_create(100, NULL, NULL); void* t = set_create(100, NULL, NULL); void* oper_s; for (i = 0; i < 7; ++i) { double* d = (double*)malloc(sizeof(double)); *d = (i + 1) * (i + 1) * 0.234; fprintf(stdout, "\tinsert s {object=>0x%p, value=>%.3f}\n", d, *d); if (i < 5) set_insert(s, d); set_insert(t, d); } fprintf(stdout, " show 's' set object:\n"); set_object(s); set_for_each(s, set_member_show_double, NULL); fprintf(stdout, " show 't' set object:\n"); set_object(t); set_for_each(t, set_member_show_double, NULL); /* set_union */ fprintf(stdout, " test function - set_union ===>\n"); oper_s = set_union(NULL, t); fprintf(stdout, " s = NULL, t = t:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release union(s=NULL,t=t):\n"); set_object(oper_s); /* *** */ oper_s = set_union(s, NULL); fprintf(stdout, " s = s, t = NULL:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release union(s=s,t=NULL):\n"); set_object(oper_s); /* *** */ oper_s = set_union(s, t); fprintf(stdout, " s = s, t = t:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release union(s=s,t=t):\n"); set_object(oper_s); /* set_inter */ fprintf(stdout, " test function - set_inter ===>\n"); oper_s = set_inter(NULL, t); fprintf(stdout, " s = NULL, t = t:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release inter(s=NULL,t=t):\n"); set_object(oper_s); /* *** */ oper_s = set_inter(s, NULL); fprintf(stdout, " s = s, t = NULL:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release inter(s=s,t=NULL):\n"); set_object(oper_s); /* *** */ oper_s = set_inter(s, t); fprintf(stdout, " s = s, t = t:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release inter(s=s,t=t):\n"); set_object(oper_s); /* set_minus */ fprintf(stdout, " test function - set_minus ===>\n"); oper_s = set_minus(NULL, t); fprintf(stdout, " s = NULL, t = t:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release minus(s=NULL,t=t):\n"); set_object(oper_s); /* *** */ oper_s = set_minus(s, NULL); fprintf(stdout, " s = s, t = NULL:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release minus(s=s,t=NULL):\n"); set_object(oper_s); /* *** */ oper_s = set_minus(s, t); fprintf(stdout, " s = s, t = t:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release minus(s=s,t=t):\n"); set_object(oper_s); /* set_diff */ fprintf(stdout, " test function - set_diff ===>\n"); oper_s = set_diff(NULL, t); fprintf(stdout, " s = NULL, t = t:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release diff(s=NULL,t=t):\n"); set_object(oper_s); /* *** */ oper_s = set_diff(s, NULL); fprintf(stdout, " s = s, t = NULL:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release diff(s=s,t=NULL):\n"); set_object(oper_s); /* *** */ oper_s = set_diff(s, t); fprintf(stdout, " s = s, t = t:\n"); set_object(oper_s); set_for_each(oper_s, set_member_show_double, NULL); set_clear(oper_s); set_release(&oper_s); fprintf(stdout, " after release diff(s=s,t=t):\n"); set_object(oper_s); fprintf(stdout, " release 's' and 't' object:\n"); set_for_each(t, set_member_destroy, NULL); set_clear(s); set_clear(t); set_release(&s); set_release(&t); fprintf(stdout, " show 's' set object:\n"); set_object(s); fprintf(stdout, " show 't' set object:\n"); set_object(t); } }