public void BuildContext_ReplaceParentContext()
        {
            var classContextBuilder = new ClassContextBuilder(_parentBuilderMock, typeof(BaseType2));

            classContextBuilder.Clear().AddMixins <BT1Mixin1, BT1Mixin2> ();

            var          parentContext = ClassContextObjectMother.Create(typeof(BaseType2), typeof(BT2Mixin1));
            ClassContext builtContext  = classContextBuilder.BuildClassContext(new[] { parentContext });

            Assert.That(builtContext.Mixins.Count, Is.EqualTo(2));
            Assert.That(builtContext.Mixins.ContainsKey(typeof(BT1Mixin1)), Is.True);
            Assert.That(builtContext.Mixins.ContainsKey(typeof(BT1Mixin2)), Is.True);
        }
        public void Clear()
        {
            var classBuilder = new ClassContextBuilder(_parentBuilderMock, typeof(BaseType1));

            classBuilder.AddMixin <BT1Mixin2> ();
            classBuilder.AddComposedInterface <IBaseType31> ();

            Assert.That(classBuilder.MixinContextBuilders, Is.Not.Empty);
            Assert.That(classBuilder.ComposedInterfaces, Is.Not.Empty);
            Assert.That(classBuilder.SuppressInheritance, Is.False);

            Assert.That(classBuilder.Clear(), Is.SameAs(classBuilder));
            Assert.That(classBuilder.MixinContextBuilders, Is.Empty);
            Assert.That(classBuilder.ComposedInterfaces.ToArray(), Is.Empty);
            Assert.That(classBuilder.SuppressInheritance, Is.True);
        }
        public void BuildContext_SuppressedInheritance()
        {
            ClassContext inheritedContext = new ClassContextBuilder(typeof(BaseType2))
                                            .AddMixin(typeof(BT3Mixin1))
                                            .AddComposedInterface(typeof(BT1Mixin2))
                                            .BuildClassContext();

            _classBuilder.Clear();
            _classBuilder.AddMixins <BT1Mixin1, BT1Mixin2> ();
            _classBuilder.AddComposedInterfaces <IBT6Mixin1, IBT6Mixin2> ();

            ClassContext builtContext = _classBuilder.BuildClassContext(new[] { inheritedContext });

            Assert.That(builtContext.Mixins.Count, Is.EqualTo(2));
            Assert.That(builtContext.Mixins.ContainsKey(typeof(BT1Mixin1)), Is.True);
            Assert.That(builtContext.Mixins.ContainsKey(typeof(BT1Mixin2)), Is.True);

            Assert.That(builtContext.ComposedInterfaces.Count, Is.EqualTo(2));
            Assert.That(builtContext.ComposedInterfaces, Has.Member(typeof(IBT6Mixin1)));
            Assert.That(builtContext.ComposedInterfaces, Has.Member(typeof(IBT6Mixin2)));
        }