def test_insert(self): bt = BinaryTree() bt.insert(Node(3)) bt.insert(Node(1)) bt.insert(Node(5)) self.assertLess(bt.root.value, bt.root.right.value) self.assertLess(bt.root.left.value, bt.root.value)
def test_init(self): node = Node() self.assertEqual(node.value, None) self.assertEqual(node.left, None) self.assertEqual(node.right, None) r = random() node = Node(r) self.assertEqual(node.value, r) self.assertEqual(node.left, None) self.assertEqual(node.right, None)
def __get_random_embedded_node(self, size): """ size: int return: list[Node] """ list_ = [] while len(list_) < size: # continuous if random() < 0.5: # duplicate while True and len(list_) < size: list_.append(InfoNodeDecorator(Node(randint(0, size)))) if random() < 0.5: break return list_
def get_grammar(text, line_count): blacklist = [ "-NONE-", "-LRB-", "-RRB-", "(' ')", "(\" \")", "(` `)", "(. .))", "(`` ``)" ] eof_txt = "(TOP END_OF_TEXT_UNIT)" root_nodes = [] temp = "" root_node = "" current_node = "" i = 0 tag_count = 0 not_back = 0 data_insert = 1 for line in text: #print(i) temp = line.strip() check_alpha = re.sub(r'[^a-zA-Z$]', ' ', temp) check_alpha = check_alpha.strip() if check_alpha == "": pass elif eof_txt in temp: if root_node != "": root_nodes.append(root_node) root_node = "" current_node = "" tag_count = 0 else: if "(TOP (" in temp: temp = temp.split('(TOP ', 1) temp = temp[1] temp = ''.join(temp) if "(" in temp: while (temp[0] == "("): temp = temp[1:] temp = temp.split(' ', 1) if temp[0].strip() not in blacklist: tag_count += 1 non_terminal = temp[0] non_terminal = re.sub(r'[^a-zA-Z$]', ' ', non_terminal) non_terminal = non_terminal.strip() if tag_count == 1: if non_terminal != "": root_node = Node(name=non_terminal) current_node = root_node else: not_back = 1 else: if current_node != "": if non_terminal != "": new_node = Node(name=non_terminal) current_node.add_child(new_node) current_node = current_node.get_last_child( ) else: not_back = 1 else: not_back = 1 data_insert = 0 temp = temp[1:] temp = ' '.join(temp) if ")" in temp: lex_i = 0 while (")" in temp): temp2 = temp temp = temp.split(')', 1) temp = temp[1:] temp = ')'.join(temp) if not_back == 1 and lex_i == 0: not_back = 0 continue elif lex_i == 0 and data_insert == 1: temp2 = temp2.split(")") temp2 = temp2[0] temp2 = "".join(temp2) temp2 = temp2.strip() if temp2 != "" and current_node != "": current_node.set_data(temp2) lex_i += 1 if current_node != "" and current_node != root_node: current_node = current_node.get_parent() not_back = 0 data_insert = 1 i += 1 if line_count != -1 and i > line_count: break return root_nodes
from lib.tree import Node, BinaryTree, BinaryTreeTraverseDecorator """ 10 / 5 15 / / 2 8 13 17 / / / / N 4 6 N 12 N N 18 / / / / 3 N N 7 11 N N 19 """ empty_binary_tree = BinaryTree() binary_tree = BinaryTree() n10 = Node(10) n5 = Node(5) n2 = Node(2) n4 = Node(4) n3 = Node(3) n8 = Node(8) n6 = Node(6) n7 = Node(7) n15 = Node(15) n13 = Node(13) n12 = Node(12) n11 = Node(11) n17 = Node(17) n18 = Node(18) n19 = Node(19) binary_tree.insert(n10)
def test_copy(self): r = random() node1 = Node(r) node2 = node1.copy() node1.value = r * -1 + 1 self.assertNotEqual(node1.value, node2.value)
def test_right_property(self): r = random() node = Node() right_node = Node(r) node.right = right_node self.assertEqual(node.right, right_node)
def test_left_property(self): r = random() node = Node() left_node = Node(r) node.left = left_node self.assertEqual(node.left, left_node)
def test_value_property(self): r = random() node = Node() node.value = r self.assertEqual(node.value, r)