void and_or_test() { run_container_t* B1 = run_container_create(); run_container_t* B2 = run_container_create(); run_container_t* BI = run_container_create(); run_container_t* BO = run_container_create(); run_container_t* TMP = run_container_create(); assert_non_null(B1); assert_non_null(B2); assert_non_null(BI); assert_non_null(BO); assert_non_null(TMP); for (size_t x = 0; x < (1 << 16); x += 3) { run_container_add(B1, x); run_container_add(BI, x); } // important: 62 is not divisible by 3 for (size_t x = 0; x < (1 << 16); x += 62) { run_container_add(B2, x); run_container_add(BI, x); } for (size_t x = 0; x < (1 << 16); x += 62 * 3) { run_container_add(BO, x); } run_container_intersection(B1, B2, TMP); assert_true(run_container_equals(BO, TMP)); run_container_union(B1, B2, TMP); assert_true(run_container_equals(BI, TMP)); run_container_free(B1); run_container_free(B2); run_container_free(BO); run_container_free(BI); run_container_free(TMP); }
int intersection_test(run_container_t* B1, run_container_t* B2, run_container_t* BO) { run_container_intersection(B1, B2, BO); return run_container_cardinality(BO); }