public void when_initializing_then_value_is_not_created()
        {
            var mockValueFactory = Substitute.For <Func <object> >();
            var lazy             = new LazyLifecycleObject <object>(mockValueFactory);

            lazy.IsValueCreated.ShouldBeFalse();
            lazy.ToString().ShouldBe("Value is not created.");
            mockValueFactory.Received(0).Invoke();
        }
        public void when_requesting_value_then_value_is_created()
        {
            var mockValueFactory = Substitute.For <Func <object> >();
            var lazy             = new LazyLifecycleObject <object>(mockValueFactory);
            var obj = new object();

            mockValueFactory.Invoke().Returns(obj);

            var value = lazy.Value;

            value.ShouldBeTheSameAs(obj);
            lazy.IsValueCreated.ShouldBeTrue();
            lazy.ToString().ShouldBe(obj.ToString());
            mockValueFactory.Received(1).Invoke();
        }