def setUp(self): # Set initial points for sentinels (to simulate infinity) big_pos_value = 10E10 big_neg_value = -1 * big_pos_value self.p1 = np.array([big_neg_value, big_pos_value, big_neg_value]) p2 = np.array([big_pos_value, big_neg_value, big_neg_value]) # Initialize avltree point0 = eaf3D.ApproxPoint(None, 1000, self.p1) point1 = eaf3D.ApproxPoint(None, 1001, p2) node0 = bst.AVLNode(point0, 1) node1 = bst.AVLNode(point1, 0) self.t = bst.AVLTree() self.t.root = node0 node0.right = node1 self.t.count = 2 # Import more data points fname = 'example/run01' exset = eaf3D.import_approximate_set(fname) x, m = eaf3D.multiset_sum([exset]) # Q is X sorted in ascending order of the z coordinate self.qstack = Stack() xintoq = sorted(x.values(), key=attrgetter('z')) for i in range(len(xintoq)): self.qstack.push(xintoq[i]) # Add new data points to tree for i in range(4): p = self.qstack.pop() self.t.insert(p)
def test_remove_node_case3_left_is_rightmost(self): # Set up tree to test case 3 when the left node is the rightmost tree = bst.AVLTree() point0 = eaf3D.ApproxPoint(1, 1, np.array([4, 12.67, 0])) tree.set_newroot(point0) # Set initial points for sentinels (to simulate infinity) big_pos_value = 10E10 big_neg_value = -1 * big_pos_value p1 = np.array([big_neg_value, big_pos_value, big_neg_value]) p2 = np.array([big_pos_value, big_neg_value, big_neg_value]) # Initialize avltree point1 = eaf3D.ApproxPoint(None, 1000, p1) av1 = bst.AVLNode(point1, balance=1) tree.root.left = av1 point2 = eaf3D.ApproxPoint(None, 1001, p2) av2 = bst.AVLNode(point2, balance=-1) tree.root.right = av2 point3 = eaf3D.ApproxPoint(1, 2, np.array([3, 20.21, 0])) av3 = bst.AVLNode(point3) tree.root.left.right = av3 point4 = eaf3D.ApproxPoint(1, 3, np.array([5, 10.42, 0])) av4 = bst.AVLNode(point4) tree.root.right.left = av4 tree.count = 5 tree.remove_node(tree.root) tree.remove_node(tree.root) self.assertEqual(tree.root, av4) self.check_node_balances(tree)
def test_adjustBalances_negative(self): for i in range(4): self.qstack.pop() point = self.qstack.pop() (pivot, theStack, parent, found) = self.t.search(point) newNode = bst.AVLNode(point) self.t.adjustBalances_add(theStack, pivot, newNode) self.assertEqual(pivot.balance, -2)