コード例 #1
0
        public void ShouldSupportsImplicitMethodsInclusion()
        {
            ServiceLocatorStub sl = CreateDefaultContainer();

            bool resumedCalled = false;
            bool startedCalled = false;
            var  convFactory   = new ConversationFactoryStub(delegate(string id)
            {
                IConversation result = new NoOpConversationStub(id);
                result.Resumed      += ((s, a) => resumedCalled = true);
                result.Started      += ((s, a) => startedCalled = true);
                return(result);
            });

            sl.AddInstance <IConversationFactory>(convFactory);

            var conversationContainer = CurrentConversationContainer;

            var presenter = new SamplePresenter();

            presenter.GetProduct(Guid.NewGuid());
            Assert.That(startedCalled, "An implicit method inclusion don't start the conversation.");
            Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(1),
                        "Should have one active conversation because the default mode is continue.");
            resumedCalled = false;
            startedCalled = false;

            presenter.GetProduct(Guid.NewGuid());
            Assert.That(resumedCalled, "An implicit method inclusion don't resume the conversation.");
            Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(1),
                        "Should have one active conversation because the default mode is continue.");
            resumedCalled = false;

            presenter.DoSomethingNoPersistent();
            Assert.That(!resumedCalled, "An explicit method exclusion resume the conversation; shouldn't");
            Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(1),
                        "Should have one active conversation because the default mode is continue.");

            string value = presenter.PropertyOutConversation;

            Assert.That(!resumedCalled, "An explicit method exclusion resume the conversation; shouldn't");
            Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(1),
                        "Should have one active conversation because the default mode is continue.");

            value = presenter.PropertyInConversation;
            Assert.That(resumedCalled, "An implicit method inclusion don't resume the conversation.");
            Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(1),
                        "Should have one active conversation because the default mode is continue.");
            resumedCalled = false;

            presenter.AcceptAll();
            Assert.That(resumedCalled, "An explicit method inclusion should resume the conversation");
            Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(0),
                        "Should have NO active conversation because the method AcceptAll end the conversation.");
        }
コード例 #2
0
        public void PrivateMethodsShouldNotBeImplicitlyIncluded()
        {
            var sl = CreateDefaultContainer();

            int startedCalledTimes = 0;
            var convFactory        = new ConversationFactoryStub(delegate(string id)
            {
                IConversation result = new NoOpConversationStub(id);
                result.Started      += (s, a) => startedCalledTimes++;
                return(result);
            });

            sl.AddInstance <IConversationFactory>(convFactory);

            var presenter = new SamplePresenter();

            //DoSomethingNoPersistent() calls to a private method that is not explicit included
            presenter.DoSomethingNoPersistent();

            Assert.That(startedCalledTimes, Is.EqualTo(0),
                        "The conversation should not be started.");
        }