public void InvalidOperationException_should_be_thrown_if_Static_is_called_after_GetValue()
        {
            var provider = DependencyProvider.Create(() => "Sparky");

            Assert.AreEqual("Sparky", provider.GetValue());

            AssertExceptionThrown
            .OfType <InvalidOperationException>()
            .WithMessage("The Static() method cannot be called after GetValue() has been called.")
            .WhenExecuting(() => provider.Static());
        }
        public void DependencyProvider_should_work_when_created_via_Create_function_method()
        {
            int callCount = 0;

            var provider = DependencyProvider.Create(() =>
            {
                callCount++;
                return(callCount);
            });

            Enumerable.Range(1, 5).TestEach(scenarioCount =>
            {
                Assert.AreEqual(scenarioCount, provider.GetValue());
                Assert.AreEqual(scenarioCount, callCount);
            });
        }
        public void DependencyProvider_marked_Static_should_always_return_the_same_value()
        {
            int callCount = 0;

            var provider = DependencyProvider.Create(() =>
            {
                callCount++;
                return(callCount);
            })
                           .Static();

            Enumerable.Range(1, 5).TestEach(scenarioCount =>
            {
                Assert.AreEqual(1, provider.GetValue());
                Assert.AreEqual(1, callCount);
            });
        }
        public void DependencyProvider_should_work_when_created_via_Create_value_method()
        {
            var provider = DependencyProvider.Create(123);

            Enumerable.Range(1, 5).TestEach(scenarioCount => Assert.AreEqual(123, provider.GetValue()));
        }