public void ObjectTraversalTraverseVisitedObjectTest()
        {
            bool isVisited = false;

            ObjectTraversal traversal = new ObjectTraversal
            {
                OnVisitedObject = (o, p) =>
                {
                    isVisited = true;
                }
            };

            Parent parent = new Parent();
            Child  child  = new Child();

            parent.Child = child;
            child.Parent = parent;

            traversal.Traverse(parent);

            Assert.IsTrue(isVisited);

            isVisited = false;

            traversal.Traverse(child);

            Assert.IsTrue(isVisited);
        }
        public void ObjectTraversalTraverseNullObjectTest()
        {
            bool isNull = false;

            ObjectTraversal traversal = new ObjectTraversal
            {
                OnNullObject = (propertyName) =>
                {
                    isNull = true;
                }
            };

            traversal.Traverse(null);

            Assert.IsTrue(isNull);
        }