[Fat-develop] FAT/src/FAT.Core ITestFixtureLoader.cs,1.1,1.2 TestFixtureLoader.cs,1.1,1.2
Brought to you by:
exortech
|
From: <dmc...@us...> - 2004-02-06 20:30:29
|
Update of /cvsroot/fat/FAT/src/FAT.Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2365/src/FAT.Core Modified Files: ITestFixtureLoader.cs TestFixtureLoader.cs Log Message: Added string []TestFixtureLoader.GetfixtureNames() which gets a list of all the fixture names in all the assemblies given in the Configuration. Index: ITestFixtureLoader.cs =================================================================== RCS file: /cvsroot/fat/FAT/src/FAT.Core/ITestFixtureLoader.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ITestFixtureLoader.cs 12 Dec 2003 23:28:50 -0000 1.1 --- ITestFixtureLoader.cs 6 Feb 2004 20:27:31 -0000 1.2 *************** *** 6,9 **** --- 6,10 ---- { ITestFixture GetFixture(string story); + string []GetFixtureNames(); } } Index: TestFixtureLoader.cs =================================================================== RCS file: /cvsroot/fat/FAT/src/FAT.Core/TestFixtureLoader.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestFixtureLoader.cs 12 Dec 2003 23:28:50 -0000 1.1 --- TestFixtureLoader.cs 6 Feb 2004 20:27:33 -0000 1.2 *************** *** 14,41 **** } public ITestFixture GetFixture(string fixture) { foreach (Assembly assembly in configuration.Assemblies) { foreach (Type type in assembly.GetTypes()) { ! if (HasCorrectTestFixtureAttribute(type, fixture)) { ! return new TestFixture(fixture, new TestStepInvoker(type)); } } } - throw new TestFixtureLoadException(fixture); } ! private bool HasCorrectTestFixtureAttribute(Type type, string fixture) { ! FATFixtureAttribute[] attributes = (FATFixtureAttribute[]) type.GetCustomAttributes(typeof(FATFixtureAttribute), false); ! foreach (FATFixtureAttribute attribute in attributes) ! { ! if (attribute.Fixture == fixture) return true; } ! return false; ! } } ! } --- 14,92 ---- } + public string []GetFixtureNames() + { + GetFixtureNamesVisitor getFixtureNamesVisitor = new GetFixtureNamesVisitor(); + VisitFixtures(getFixtureNamesVisitor); + return getFixtureNamesVisitor.FixtureNames; + } + public ITestFixture GetFixture(string fixture) { + GetFixtureVisitor getFixtureVisitor = new GetFixtureVisitor(fixture); + VisitFixtures(getFixtureVisitor); + return getFixtureVisitor.Fixture; + } + + private void VisitFixtures(IFixtureVisitor fixtureVisitor) + { foreach (Assembly assembly in configuration.Assemblies) { foreach (Type type in assembly.GetTypes()) { ! foreach (FATFixtureAttribute attribute in GetFATFixtureAttributeForType(type)) { ! fixtureVisitor.VisitFixture(attribute.Fixture, type); } } } } ! private FATFixtureAttribute[] GetFATFixtureAttributeForType(Type type) { ! return (FATFixtureAttribute[]) type.GetCustomAttributes(typeof(FATFixtureAttribute), false); ! } ! } ! ! interface IFixtureVisitor ! { ! void VisitFixture(string fixtureName, Type type); ! } ! ! class GetFixtureNamesVisitor : IFixtureVisitor ! { ! ArrayList fixtureNames = new ArrayList(); ! ! public void VisitFixture(string fixtureName, Type type) ! { ! fixtureNames.Add(fixtureName); ! } ! ! public string []FixtureNames { get {return (string [])fixtureNames.ToArray(typeof(string));} } ! } ! ! class GetFixtureVisitor : IFixtureVisitor ! { ! private string fixtureNameToFind; ! private TestFixture fixture = null; ! ! public GetFixtureVisitor(string fixtureNameTofind) ! { ! this.fixtureNameToFind = fixtureNameTofind; ! } ! ! public void VisitFixture(string fixtureName, Type type) ! { ! if (fixtureName == fixtureNameToFind) fixture = new TestFixture(fixtureName, new TestStepInvoker(type)); ! } ! ! public TestFixture Fixture { ! get { ! if (fixture == null) ! { ! throw new TestFixtureLoadException(fixtureNameToFind); ! } ! return fixture; } ! } } ! } \ No newline at end of file |