public void CreatesCorrectFixtures(Type testClass, Type[] fixtureTypes, InterfaceFixtureSetFactory sut)
        {
            var result = sut.CreateFixturesFor(Reflector.Wrap(testClass));
            Assert.IsType<FixtureSet>(result);
            var fixtureSet = (FixtureSet) result;

            Assert.That(fixtureSet.Fixtures, Matches.AllOf(fixtureTypes
                .Select(type =>
                {
                    var ifc = testClass.GetInterfaces().First(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IUseFixture<>) && x.GetGenericArguments()[0] == type);
                    return Has.Entry(Is.EqualTo(ifc.GetMethod("SetFixture", new[] {type})), Is.InstanceOf(type));
                })));
        }
 public void UnwrapsTargetInvocationIfThrown(InterfaceFixtureSetFactory sut)
 {
     var ex = Assert.Throws<Exception>(() => sut.CreateFixturesFor(Reflector.Wrap(typeof(AClassWithInvalidFixture))));
     Assert.Equal("Invalid fixture", ex.Message);
 }
 public void ThrowsWhenClassUsesItselfAsFixture(InterfaceFixtureSetFactory sut)
 {
     Assert.Throws<InvalidOperationException>(() => sut.CreateFixturesFor(Reflector.Wrap(typeof (AClassWithSelfAsFixture))));
 }