void assembleTree(Assembler a, ETTree t) { int i; int bc = getBranchCount(t); if( bc > 0 ) { for(i = 0; i < bc; i++ ) { assembleTree(a, getBranch(t, i)); } } assembleElement(a, getElement(t)); }
void test_container::TC_01_01() { #define NODENUM 6 HQTreeNode* pnodes = createNodes(NODENUM, 0); CPPUNIT_ASSERT(NULL != pnodes); assembleTree(pnodes); checkSubtree(pnodes, __FUNCTION__); deassembleTree(pnodes, __FUNCTION__); destroyNodes(pnodes, NODENUM); #undef NODENUM }
void test_container::TC_01_03() { #define NODENUM 12 HQTreeNode* pnodes = createNodes(NODENUM, 0); CPPUNIT_ASSERT(NULL != pnodes); HQTreeNode* ptree1 = pnodes; HQTreeNode* ptree2 = pnodes + 6; assembleTree(ptree1); checkSubtree(ptree1, __FUNCTION__); assembleTree(ptree2); checkSubtree(ptree2, __FUNCTION__); ptree2->Attach(ptree1 + 3); test_nodes nodes[] = { { ptree1 + 0, NULL, ptree1 + 1, NULL, NULL, NULL, ptree1 + 1, ptree1 + 3 }, { ptree1 + 1, ptree1 + 0, ptree1 + 2, ptree1 + 0, ptree1 + 2, NULL, NULL, NULL }, { ptree1 + 2, ptree1 + 0, ptree1 + 4, ptree1 + 1, ptree1 + 3, ptree1 + 1, ptree1 + 4, ptree1 + 5 }, { ptree1 + 3, ptree1 + 0, ptree2 + 0, ptree1 + 5, NULL, ptree1 + 2, ptree2 + 0, ptree2 + 0 }, { ptree1 + 4, ptree1 + 2, ptree1 + 5, ptree1 + 2, ptree1 + 5, NULL, NULL, NULL }, { ptree1 + 5, ptree1 + 2, ptree1 + 3, ptree1 + 4, NULL, ptree1 + 4, NULL, NULL }, { ptree2 + 0, ptree1 + 3, ptree2 + 1, ptree1 + 3, NULL, NULL, ptree2 + 1, ptree2 + 3 }, { ptree2 + 1, ptree2 + 0, ptree2 + 2, ptree2 + 0, ptree2 + 2, NULL, NULL, NULL }, { ptree2 + 2, ptree2 + 0, ptree2 + 4, ptree2 + 1, ptree2 + 3, ptree2 + 1, ptree2 + 4, ptree2 + 5 }, { ptree2 + 3, ptree2 + 0, NULL, ptree2 + 5, NULL, ptree2 + 2, NULL, NULL }, { ptree2 + 4, ptree2 + 2, ptree2 + 5, ptree2 + 2, ptree2 + 5, NULL, NULL, NULL }, { ptree2 + 5, ptree2 + 2, ptree2 + 3, ptree2 + 4, NULL, ptree2 + 4, NULL, NULL }, }; check_nodelist(&(nodes[0]), sizeof(nodes) / sizeof(test_nodes), __FUNCTION__); deassembleTree(ptree2, __FUNCTION__); deassembleTree(ptree1, __FUNCTION__); destroyNodes(pnodes, NODENUM); #undef NODENUM }
//for now it's just random topology but may become random labels as well later that why this is such a simple function now... void Tree::assembleRandomTree() { randomTopology(); assembleTree(); }
void Tree::assembleRandomUnifracTree(string groupA, string groupB) { vector<string> temp; temp.push_back(groupA); temp.push_back(groupB); randomLabels(temp); assembleTree(); }
void Tree::assembleRandomUnifracTree(vector<string> g) { randomLabels(g); assembleTree(); }