def test_locate_transaction(self): t = Tree() trans1 = Transaction(0, 1, 2) self.assertTrue(t.add_transaction(trans1)) trans2 = Transaction(1, 2, 3) self.assertTrue(t.add_transaction(trans2)) self.assertEqual(t.depth, 1) self.assertTrue(t.is_present(trans1)) trans3 = Transaction(0, 1, 2) self.assertFalse(t.is_present(trans3))
def test_tree_serialize(self): t = Tree() u = Tree.from_json(t.to_json()) self.assertEqual(t.root.get_hash(), u.root.get_hash()) trans1 = Transaction(0, 1, 2) self.assertTrue(t.add_transaction(trans1)) trans2 = Transaction(1, 2, 3) self.assertTrue(t.add_transaction(trans2)) trans3 = Transaction(2, 3, 4) self.assertTrue(t.add_transaction(trans3)) u = Tree.from_json(t.to_json()) self.assertEqual(t.root._child_1.get_hash(), u.root._child_1.get_hash()) self.assertEqual(t.root.get_hash(), u.root.get_hash())
def test_add_transactions(self): t = Tree() trans1 = Transaction(0, 1, 2) self.assertTrue(t.add_transaction(trans1)) self.assertEqual(t.depth, 0) trans2 = Transaction(1, 2, 3) self.assertTrue(t.add_transaction(trans2)) self.assertEqual(t.depth, 1) trans3 = Transaction(2, 3, 4) self.assertTrue(t.add_transaction(trans3)) self.assertEqual(t.depth, 2) trans4 = Transaction(3, 4, 5) self.assertTrue(t.add_transaction(trans4)) self.assertEqual(t.depth, 2) self.assertEqual(len(list(Tree.walk(t.root))), 7) expected_remaining_transactions_before_failure = 2**Tree.MAX_DEPTH - 4 for i in range(expected_remaining_transactions_before_failure): tx = Transaction(0, 0, 1) t.add_transaction(tx) # Cannot add a fifth transaction, since the MAX_DEPTH equals to 2 trans5 = Transaction(4, 5, 6) self.assertFalse(t.add_transaction(trans5)) self.assertEqual(t.depth, Tree.MAX_DEPTH)