static void test_stSortedSetDifference(CuTest* testCase) { sonLibSortedSetTestSetup(); //Check difference of empty sets is okay.. stSortedSet *sortedSet3 = stSortedSet_getDifference(sortedSet, sortedSet2); CuAssertTrue(testCase, stSortedSet_size(sortedSet3) == 0); stSortedSet_destruct(sortedSet3); int32_t i; for(i=0; i<size; i++) { stSortedSet_insert(sortedSet, stIntTuple_construct(1, input[i])); } //Check difference of non-empty set / empty set is the non-empty. sortedSet3 = stSortedSet_getDifference(sortedSet, sortedSet2); CuAssertTrue(testCase, stSortedSet_equals(sortedSet, sortedSet3)); stSortedSet_destruct(sortedSet3); //Check difference of two non-empty, overlapping sets in correct. stSortedSet_insert(sortedSet2, stIntTuple_construct(1, 0)); stSortedSet_insert(sortedSet2, stIntTuple_construct(1, 1)); stSortedSet_insert(sortedSet2, stIntTuple_construct(1, 5)); sortedSet3 = stSortedSet_getDifference(sortedSet, sortedSet2); CuAssertTrue(testCase, stSortedSet_size(sortedSet3) == stSortedSet_size(sortedSet) - 2); CuAssertTrue(testCase, !stSortedSet_equals(sortedSet, sortedSet3)); stSortedSet_insert(sortedSet3, stIntTuple_construct(1, 1)); stSortedSet_insert(sortedSet3, stIntTuple_construct(1, 5)); CuAssertTrue(testCase, stSortedSet_equals(sortedSet, sortedSet3)); stSortedSet_destruct(sortedSet3); //Check we get an exception when merging sorted sets with different comparators. stSortedSet *sortedSet4 = stSortedSet_construct(); stTry { stSortedSet_getDifference(sortedSet, sortedSet4); CuAssertTrue(testCase, 0); } stCatch(except) { CuAssertTrue(testCase, stExcept_getId(except) == SORTED_SET_EXCEPTION_ID); } stTryEnd stSortedSet_destruct(sortedSet4); sonLibSortedSetTestTeardown(); }
static void testBreakUpComponentGreedily(CuTest *testCase) { //return; for (int64_t test = 0; test < 100; test++) { st_logInfo("Starting break up giant components random test %" PRIi64 "\n", test); setup(); stList *edgesToDelete = stCaf_breakupComponentGreedily(nodes, edges, maxComponentSize); stSortedSet *edgesSet = stList_getSortedSet(edges, (int(*)(const void *, const void *)) stIntTuple_cmpFn); stSortedSet *edgesToDeleteSet = stList_getSortedSet(edgesToDelete, (int(*)(const void *, const void *)) stIntTuple_cmpFn); stSortedSet *filteredEdgesSet = stSortedSet_getDifference(edgesSet, edgesToDeleteSet); stList *filteredEdges = stSortedSet_getList(filteredEdgesSet); assert(stSortedSet_size(edgesToDeleteSet) + stSortedSet_size(filteredEdgesSet) == stSortedSet_size(edgesSet)); checkComponents(testCase, filteredEdges); stSortedSet_destruct(edgesSet); stSortedSet_destruct(edgesToDeleteSet); stSortedSet_destruct(filteredEdgesSet); stList_destruct(filteredEdges); stList_destruct(edgesToDelete); teardown(); } }