public void accept_a_visitor_with_no_interception_and_a_simpler_inner_builder()
        {
            var mocks = new MockRepository();

            var visitor = mocks.StrictMock<IBuildPlanVisitor>();
            var inner = mocks.StrictMock<IDependencySource>();

            var plan = new BuildPlan(typeof(IGateway), new ObjectInstance(new StubbedGateway()), inner, null);

            using (mocks.Ordered())
            {
                visitor.Instance(plan.PluginType, plan.Instance);
                visitor.InnerBuilder(inner);
            }

            mocks.ReplayAll();

            using (mocks.Playback())
            {
                plan.AcceptVisitor(visitor);
            }
        }
        public void accept_a_visitor_with_interception_and_a_visitable_inner()
        {
            var mocks = new MockRepository();

            var visitor = mocks.StrictMock<IBuildPlanVisitor>();
            var inner = mocks.StrictMultiMock<IDependencySource>(typeof(IBuildPlanVisitable));
            var interception = mocks.StrictMock<IInterceptionPlan>();

            var plan = new BuildPlan(typeof(IGateway), new ObjectInstance(new StubbedGateway()), inner, interception);

            using (mocks.Ordered())
            {
                visitor.Instance(plan.PluginType, plan.Instance);
                interception.AcceptVisitor(visitor);
                inner.As<IBuildPlanVisitable>().AcceptVisitor(visitor);
            }

            mocks.ReplayAll();

            using (mocks.Playback())
            {
                plan.AcceptVisitor(visitor);
            }
        }