public void prepend_should_return_a_property_chain()
        {
            var accessor = ReflectionHelper.GetAccessor <Target>(x => x.Name);
            var property = ReflectionHelper.GetProperty <HierarchicalTarget>(x => x.Child);

            var prependedAccessor = accessor.Prepend(property);

            prependedAccessor.ShouldBeOfType <PropertyChain>();
            prependedAccessor.PropertyNames.ShouldHaveTheSameElementsAs("Child", "Name");

            var target = new HierarchicalTarget {
                Child = new Target {
                    Name = "Jeremy"
                }
            };

            prependedAccessor.GetValue(target).ShouldBe("Jeremy");
        }
        public void prepend_should_return_a_property_chain()
        {
            var accessor = ReflectionHelper.GetAccessor<Target>(x => x.Name);
            var property = ReflectionHelper.GetProperty<HierarchicalTarget>(x => x.Child);

            var prependedAccessor = accessor.Prepend(property);
            prependedAccessor.ShouldBeOfType<PropertyChain>();
            prependedAccessor.PropertyNames.ShouldHaveTheSameElementsAs("Child", "Name");

            var target = new HierarchicalTarget{
                Child = new Target{
                    Name = "Jeremy"
                }
            };

            prependedAccessor.GetValue(target).ShouldEqual("Jeremy");
        }