/// <summary> /// using type location, examines the appdomain for ITestOfs /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static List <ITestOf <T> > LocateTests <T>() { Type genType = typeof(ITestOf <>); var tests = TheTypeLocator.Instance.Locator.Locate((t) => { if (!t.HasGenericDefinition(genType)) { return(false); } var type = t.GetGenericParameterType(genType); var ttype = typeof(T); if (ttype.Equals(type)) { return(true); } if (type.IsSubclassOf(type)) { return(true); } return(false); }); List <ITestOf <T> > rv = new List <ITestOf <T> >(); tests.WithEach((testType) => { ITestOf <T> test = (ITestOf <T>)Activator.CreateInstance(testType); rv.Add(test); }); return(rv); }
/// <summary> /// Performs a single test /// </summary> /// <typeparam name="T"></typeparam> /// <param name="item"></param> /// <param name="test"></param> /// <returns></returns> public static TestOfResult Test <T>(T item, ITestOf <T> test) { try { test.Test(item); return(new TestOfResult(test.GetType(), null)); } catch (Exception ex) { return(new TestOfResult(test.GetType(), ex)); } }