public void EnsureMixin_NonGeneric_WithoutOrigin()
        {
            var expectedOrigin = MixinContextOrigin.CreateForMethod(MethodBase.GetCurrentMethod());

            _classBuilderMock.Expect(mock => mock.EnsureMixin(typeof(BT2Mixin1), expectedOrigin)).Return(_mixinBuilderMock);

            _mockRepository.ReplayAll();

            var result = _classBuilderMock.EnsureMixin(typeof(BT2Mixin1));

            _mockRepository.VerifyAll();
            Assert.That(result, Is.SameAs(_mixinBuilderMock));
        }
        public void EnsureMixin_NonGeneric()
        {
            var origin = MixinContextOriginObjectMother.Create();

            MixinContextBuilder builder = _classBuilder.EnsureMixin(typeof(BT2Mixin1), origin);

            Assert.That(builder.MixinType, Is.EqualTo(typeof(BT2Mixin1)));
            Assert.That(builder.Origin, Is.EqualTo(origin));
            Type[] mixinTypes = GetMixinTypes();
            Assert.That(mixinTypes, Is.EquivalentTo(new object[] { typeof(BT2Mixin1) }));

            var otherOrigin = MixinContextOriginObjectMother.Create("some other kind");

            Assert.That(_classBuilder.EnsureMixin(typeof(BT2Mixin1), otherOrigin), Is.SameAs(builder));
            Type[] mixinTypesAfterSecondEnsureMixin = GetMixinTypes();
            Assert.That(mixinTypesAfterSecondEnsureMixin, Is.EquivalentTo(new object[] { typeof(BT2Mixin1) }));
            Assert.That(builder.Origin, Is.EqualTo(origin));
        }