void testEnd_isAttachedOrFree(CuTest* testCase) { cactusEndTestSetup(); End *end2 = end_construct(1, flower); End *end3 = end_construct(0, flower); Block *block = block_construct(2, flower); End *end4 = block_get5End(block); End *end5 = block_get3End(block); CuAssertTrue(testCase, end_isAttached(end2)); CuAssertTrue(testCase, !end_isAttached(end3)); CuAssertTrue(testCase, !end_isFree(end2)); CuAssertTrue(testCase, end_isFree(end3)); CuAssertTrue(testCase, !end_isAttached(end4)); CuAssertTrue(testCase, !end_isAttached(end5)); CuAssertTrue(testCase, end_isFree(end4)); CuAssertTrue(testCase, end_isFree(end5)); cactusEndTestTeardown(); }
int64_t flower_getFreeStubEndNumber(Flower *flower) { End *end; Flower_EndIterator *iterator = flower_getEndIterator(flower); int64_t i = 0; while ((end = flower_getNextEnd(iterator)) != NULL) { if (end_isStubEnd(end) && end_isFree(end)) { i++; } } flower_destructEndIterator(iterator); return i; }
Segment *getCapsSegment(Cap *cap) { if (cap_getSegment(cap) != NULL) { return cap_getSegment(cap); } assert(!end_isBlockEnd(cap_getEnd(cap))); assert(end_isStubEnd(cap_getEnd(cap))); //Walk up to get the next adjacency. Group *parentGroup = flower_getParentGroup(end_getFlower(cap_getEnd(cap))); if (parentGroup != NULL) { Cap *parentCap = flower_getCap(group_getFlower(parentGroup), cap_getName(cap)); if (parentCap != NULL) { assert(cap_getOrientation(parentCap)); if (!cap_getOrientation(cap)) { parentCap = cap_getReverse(parentCap); } return getCapsSegment(parentCap); } else { //Cap must be a free stub end. assert(0); //Not in the current alignments. assert(end_isFree(cap_getEnd(cap))); } } return NULL; }