private void LoadTestSuiteRunners(Assembly assembly) { _testSuiteRunners = new SortedDictionary <string, ITestSuiteRunner>(); ITestSuiteRunner[] tsr = assembly.GetCustomAttributes(typeof(ITestSuiteRunner), false) as ITestSuiteRunner[]; if (tsr != null && tsr.Length == 1) { _testSuiteRunners[String.Empty] = tsr[0]; } else { _testSuiteRunners[String.Empty] = new DefaultTestSuiteRunner(); } TestSuiteAttribute[] tsa = assembly.GetCustomAttributes(typeof(TestSuiteAttribute), false) as TestSuiteAttribute[]; if (tsa != null) { for (int i = 0; i < tsa.Length; i++) { ITestSuiteRunner runner = Activator.CreateInstance(tsa[i].TestSuiteRunner) as ITestSuiteRunner; if (runner != null) { _testSuiteRunners[tsa[i].Namespace] = runner; } } } }
private ITestSuiteRunner GetTestSuiteRunner(string namespacePath) { ITestSuiteRunner runner = null; string[] keys = new List <string>(_testSuiteRunners.Keys).ToArray(); int index = Array.BinarySearch <string>(keys, namespacePath); if (index >= 0) { runner = _testSuiteRunners[keys[index]]; } else { runner = _testSuiteRunners[keys[(index ^ -1) - 1]]; } return(runner); }