Example #1
0
class TreeManagement:
    '''
    "TreeManagement" class defines trees used to store tests data.
    Each class instance is composed by the following attributes:
        - nodeList: auxiliar array used to associate child nodes to its parent node;
        - 
        - subTree: auxiliar tree used to store subtests data, which is later merged into the "mainTree"
        - mainTree: tree used to store test data
        - nodeRoot: used to intialize "mainTree" root
    '''
    def __init__(self):
        self.nodeList = [None] * 100
        self.node = None
        self.subTree = Tree()
        self.mainTree = Tree()
        self.nodeRoot = self.mainTree.create_node(tag="Root",
                                                  identifier="root",
                                                  data=TreeNode(
                                                      "root", "root"))

    def CreateTestOkNode(self, value):
        '''
        This method creates a "ok" status test node and adds it to the tree
        Arguments:
            - value: node identification
        '''
        if self.subTree != None:
            self.node = self.mainTree.create_node(value,
                                                  value,
                                                  parent=self.nodeRoot,
                                                  data=TreeNode("OK", ""))
            self.mainTree.merge(value, self.subTree)
        else:
            self.mainTree.create_node(value,
                                      value,
                                      parent=self.nodeRoot,
                                      data=TreeNode("OK", ""))

    def CreateSubtestOkNode(self, value):
        '''
        This method creates a "ok" status subtest node and adds it to the tree
        Arguments:
            - value: node identification
        '''
        n = GetTreeLevel(value)
        if n == 1:
            if self.subTree != None:
                self.node = self.subTree.get_node("aux")
            if self.node == None:
                self.subTree = Tree()
                self.nodeList[n - 1] = self.subTree.create_node("aux",
                                                                "aux",
                                                                data=TreeNode(
                                                                    "OK", ""))
        self.nodeList[n] = self.subTree.create_node(value,
                                                    value,
                                                    parent=self.nodeList[n -
                                                                         1],
                                                    data=TreeNode("OK", ""))

    def CreateTestNotOkNode(self, value):
        '''
        This method creates a "not ok" status test node and adds it to the tree
        Arguments:
            - value: node identification
        '''
        if self.subTree != None:
            self.node = self.mainTree.create_node(value,
                                                  value,
                                                  parent=self.nodeRoot,
                                                  data=TreeNode("OK", ""))
            self.mainTree.merge(value, self.subTree)
        else:
            self.mainTree.create_node(value,
                                      value,
                                      parent=self.nodeRoot,
                                      data=TreeNode("OK", ""))

    def CreateSubtestNotOkNode(self, value):
        '''
        This method creates a "not ok" status subtest node and adds it to the tree
        Arguments:
            - value: node identification
        '''
        n = GetTreeLevel(value)
        if n == 1:
            if self.subTree != None:
                self.node = self.subTree.get_node("aux")
            if self.node == None:
                self.subTree = Tree()
                self.nodeList[n - 1] = self.subTree.create_node("aux",
                                                                "aux",
                                                                data=TreeNode(
                                                                    "NOT OK",
                                                                    ""))
        self.nodeList[n] = self.subTree.create_node(
            value,
            value,
            parent=self.nodeList[n - 1],
            data=TreeNode("NOT OK", ""))
Example #2
0
    def test_merge(self):

        # merge on empty initial tree
        t1 = Tree(identifier='t1')
        t2 = self.get_t2()
        t1.merge(nid=None, new_tree=t2)

        self.assertEqual(t1.identifier, 't1')
        self.assertEqual(t1.root, 'r2')
        self.assertEqual(set(t1._nodes.keys()), {'r2', 'c', 'd', 'd1'})
        self.assertEqual(t1.show(stdout=False), '''root2
├── C
└── D
    └── D1
''')

        # merge empty new_tree (on root)
        t1 = self.get_t1()
        t2 = Tree(identifier='t2')
        t1.merge(nid='r', new_tree=t2)

        self.assertEqual(t1.identifier, 't1')
        self.assertEqual(t1.root, 'r')
        self.assertEqual(set(t1._nodes.keys()), {'r', 'a', 'a1', 'b'})
        self.assertEqual(t1.show(stdout=False), '''root
├── A
│   └── A1
└── B
''')

        # merge at root
        t1 = self.get_t1()
        t2 = self.get_t2()
        t1.merge(nid='r', new_tree=t2)

        self.assertEqual(t1.identifier, 't1')
        self.assertEqual(t1.root, 'r')
        self.assertNotIn('r2', t1._nodes.keys())
        self.assertEqual(set(t1._nodes.keys()),
                         {'r', 'a', 'a1', 'b', 'c', 'd', 'd1'})
        self.assertEqual(
            t1.show(stdout=False), '''root
├── A
│   └── A1
├── B
├── C
└── D
    └── D1
''')

        # merge on node
        t1 = self.get_t1()
        t2 = self.get_t2()
        t1.merge(nid='b', new_tree=t2)
        self.assertEqual(t1.identifier, 't1')
        self.assertEqual(t1.root, 'r')
        self.assertNotIn('r2', t1._nodes.keys())
        self.assertEqual(set(t1._nodes.keys()),
                         {'r', 'a', 'a1', 'b', 'c', 'd', 'd1'})
        self.assertEqual(
            t1.show(stdout=False), '''root
├── A
│   └── A1
└── B
    ├── C
    └── D
        └── D1
''')