void block_setRootInstance(Block *block, Segment *segment) { block = block_getPositiveOrientation(block); segment = segment_getPositiveOrientation(segment); assert(block_getInstance(block, segment_getName(segment)) == segment); end_setRootInstance(block_get5End(block), segment_get5Cap(segment)); end_setRootInstance(block_get3End(block), segment_get3Cap(segment)); }
void testBlock_serialisation(CuTest* testCase) { cactusBlockTestSetup(); Name rootInstanceName = segment_getName(rootSegment); Name leaf1InstanceName = segment_getName(leaf1Segment); Name leaf2InstanceName = segment_getName(leaf2Segment); int64_t i; void *vA = binaryRepresentation_makeBinaryRepresentation(block, (void(*)(void *, void(*)(const void *, size_t, size_t))) block_writeBinaryRepresentation, &i); CuAssertTrue(testCase, i > 0); block_destruct(block); void *vA2 = vA; block = block_loadFromBinaryRepresentation(&vA2, flower); rootSegment = segment_getReverse(block_getInstance(block, rootInstanceName)); leaf1Segment = block_getInstance(block, leaf1InstanceName); leaf2Segment = segment_getReverse(block_getInstance(block, leaf2InstanceName)); free(vA); nestedTest = 1; testBlock_getName(testCase); testBlock_getOrientation(testCase); testBlock_getReverse(testCase); testBlock_getLength(testCase); testBlock_getFlower(testCase); testBlock_getLeftEnd(testCase); testBlock_getRightEnd(testCase); testBlock_getSetRootInstance(testCase); testBlock_getInstanceNumber(testCase); testBlock_getInstance(testCase); testBlock_getFirst(testCase); testBlock_instanceIterator(testCase); testBlock_makeNewickString(testCase); testBlock_getChain(testCase); testBlock_getSegmentForEvent(testCase); nestedTest = 0; cactusBlockTestTeardown(); }
void testBlock_getInstance(CuTest* testCase) { cactusBlockTestSetup(); CuAssertTrue(testCase, block_getInstance(block, segment_getName(rootSegment)) == segment_getReverse(rootSegment)); CuAssertTrue(testCase, block_getInstance(block, segment_getName(leaf1Segment)) == leaf1Segment); CuAssertTrue(testCase, block_getInstance(block, segment_getName(leaf2Segment)) == segment_getReverse(leaf2Segment)); CuAssertTrue(testCase, block_getInstance(block_getReverse(block), segment_getName(rootSegment)) == rootSegment); CuAssertTrue(testCase, block_getInstance(block_getReverse(block), segment_getName(leaf1Segment)) == segment_getReverse(leaf1Segment)); CuAssertTrue(testCase, block_getInstance(block_getReverse(block), segment_getName(leaf2Segment)) == leaf2Segment); cactusBlockTestTeardown(); }
char *block_makeNewickStringP(Segment *segment, bool includeInternalNames, bool includeUnaryEvents) { if(!includeUnaryEvents && segment_getChildNumber(segment) == 1) { return block_makeNewickStringP(segment_getChild(segment, 0), includeInternalNames, includeUnaryEvents); } if(segment_getChildNumber(segment) > 0) { char *left = stString_print("("); int64_t i; bool comma = 0; for(i=0; i<segment_getChildNumber(segment); i++) { Segment *childSegment = segment_getChild(segment, i); char *cA = block_makeNewickStringP(childSegment, includeInternalNames, includeUnaryEvents); char *cA2 = stString_print(comma ? "%s,%s" : "%s%s", left, cA); free(cA); left = cA2; comma = 1; } char *final = includeInternalNames ? stString_print("%s)%s", left, cactusMisc_nameToStringStatic(segment_getName(segment))) : stString_print("%s)", left); free(left); return final; }
int blockConstruct_constructP(const void *o1, const void *o2) { return cactusMisc_nameCompare(segment_getName((Segment *)o1), segment_getName((Segment *)o2)); }
static int flower_constructSegmentsP(const void *o1, const void *o2) { return cactusMisc_nameCompare(segment_getName((Segment *) o1), segment_getName((Segment *) o2)); }