def test_tree_validate(): class TestNode(Node): def __setattr__(self, attr, value): object.__setattr__(self, attr, value) root = Node(1) root.validate() # Should pass root = Node(1) root.left = Node(2) root.validate() # Should pass root = Node(1) root.left = Node(2) root.right = Node(3) root.validate() # Should pass root = Node(1) root.left = Node(2) root.right = Node(3) root.left.left = Node(4) root.left.right = Node(5) root.left.right.left = Node(6) root.validate() # Should pass root = TestNode(1) root.left = 'not_a_node' with pytest.raises(InvalidNodeTypeError) as err: root.validate() assert str(err.value) == 'Invalid node instance at index 1' root = TestNode(1) root.right = TestNode(2) root.right.value = 'not_an_integer' with pytest.raises(InvalidNodeValueError) as err: root.validate() assert str(err.value) == 'Invalid node value at index 2' root = TestNode(1) root.left = TestNode(2) root.left.right = root with pytest.raises(CyclicNodeReferenceError) as err: root.validate() assert str(err.value) == 'Cyclic node reference at index 4'
def test_tree_validate(): class TestNode(Node): def __setattr__(self, attr, value): object.__setattr__(self, attr, value) root = Node(1) root.validate() # Should pass root = Node(1) root.left = Node(2) root.validate() # Should pass root = Node(1) root.left = Node(2) root.right = Node(3) root.validate() # Should pass root = Node(1) root.left = Node(2) root.right = Node(3) root.left.left = Node(4) root.left.right = Node(5) root.left.right.left = Node(6) root.validate() # Should pass root = TestNode(1) root.left = "not_a_node" with pytest.raises(NodeTypeError) as err: root.validate() assert str(err.value) == "invalid node instance at index 1" root = TestNode(1) root.right = TestNode(2) root.right.val = "not_an_integer" with pytest.raises(NodeValueError) as err: root.validate() assert str(err.value) == "invalid node value at index 2" root = TestNode(1) root.left = TestNode(2) root.left.right = root with pytest.raises(NodeReferenceError) as err: root.validate() assert str( err.value) == "cyclic reference at Node(1) (level-order index 4)"