public void SetUp()
        {
            _classContextBuilderWithParent = new ClassContextBuilder(typeof(NullTarget));
            _classContextBuilderWithParent.AddMixin(typeof(NullMixin2));
            _parentContextWithBuilder = ClassContextObjectMother.Create(typeof(NullTarget), typeof(NullMixin));

            _classContextBuilderWithIndirectParent = new ClassContextBuilder(typeof(DerivedNullTarget));

            _classContextBuilderWithoutParent = new ClassContextBuilder(typeof(BaseType4));
            _classContextBuilderWithParent.AddMixin(typeof(BT4Mixin1));

            _buildersWithParentContexts = new Dictionary <Type, Tuple <ClassContextBuilder, ClassContext> > ();
            _buildersWithParentContexts.Add(_classContextBuilderWithParent.TargetType, Tuple.Create(_classContextBuilderWithParent, _parentContextWithBuilder));
            _buildersWithParentContexts.Add(_classContextBuilderWithoutParent.TargetType, Tuple.Create(_classContextBuilderWithoutParent, (ClassContext)null));

            _parentContextWithoutBuilder = ClassContextObjectMother.Create(typeof(BaseType1));
            _parentContexts = new ClassContextCollection(_parentContextWithoutBuilder, _parentContextWithBuilder);

            _inheritancePolicyMock = MockRepository.GenerateMock <IMixinInheritancePolicy> ();
            _inheritedContext      = ClassContextObjectMother.Create(typeof(object), typeof(NullMixin));

            var classContextBuilders = new[] { _classContextBuilderWithoutParent, _classContextBuilderWithIndirectParent, _classContextBuilderWithParent };

            _builder = new InheritanceResolvingClassContextBuilder(classContextBuilders, _parentContexts, _inheritancePolicyMock);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Builds a configuration object with the data gathered so far.
        /// </summary>
        /// <returns>A new <see cref="MixinConfiguration"/> instance incorporating all the data acquired so far.</returns>
        public virtual MixinConfiguration BuildConfiguration()
        {
            using (StopwatchScope.CreateScope(s_log, LogLevel.Info, "Time needed to build mixin configuration from fluent builders: {elapsed}."))
            {
                var parentContexts = ParentConfiguration != null ? ParentConfiguration.ClassContexts : new ClassContextCollection();
                s_log.DebugFormat("Building a mixin configuration with {0} parent class contexts from fluent builders...", parentContexts.Count);

                var builder = new InheritanceResolvingClassContextBuilder(ClassContextBuilders, parentContexts, DefaultMixinInheritancePolicy.Instance);

                var allContexts            = builder.BuildAllAndCombineWithParentContexts();
                var classContextCollection = new ClassContextCollection(allContexts);
                return(new MixinConfiguration(classContextCollection)
                       .LogAndReturnValue(
                           s_log,
                           LogLevel.Info,
                           conf => string.Format("Built mixin configuration from fluent builders with {0} class contexts.", conf.ClassContexts.Count)));
            }
        }