public void GetMarkedClasses_TestHasAttributes_GetsTestType() { var analyzer = new Analyzer(); IEnumerable <PerformanceSet> sets = analyzer.GetPerformanceSets((typeof(Test)).Assembly); PerformanceSet type = sets.First(); Assert.IsTrue(type.Name == typeof(Test).Name); }
/// <summary> /// Generic search method. /// </summary> /// <param name="treeObject"> /// The tree object. /// </param> /// <param name="searchItem"> /// Item we want to search for. Can be string or double. /// </param> /// <typeparam name="T"> /// Parameter can be string or double. /// </typeparam> /// <returns> /// Returns list of type int containing path to node, null if not found. /// </returns> public SearchResult GenericSearch <T>(TreeObject treeObject, T searchItem) { Stopwatch watch; PerformanceSet performanceSet; SearchResult searchResult; string type; var progress = new string[2]; if (typeof(T) == typeof(string)) { watch = new Stopwatch(); watch.Start(); searchResult = treeObject.TextTree.Contains(searchItem as string); watch.Stop(); type = "text"; } else { watch = new Stopwatch(); watch.Start(); searchResult = treeObject.NumericTree.Contains((double)(object)searchItem); watch.Stop(); type = "numeric"; } if (searchResult.SearchPath != null) { performanceSet = new PerformanceSet { TreeName = treeObject.Name, SearchTime = watch.ElapsedMilliseconds.ToString(), TypeOfNodes = this.CheckNodeType(type), TypeOfTree = this.GetTreeType(treeObject), NoOfNodes = searchResult.NodesVisited.ToString() }; this.provider.PerformanceSets.Add(performanceSet); progress[0] = watch.ElapsedMilliseconds + " ms"; progress[1] = searchResult.NodesVisited.ToString(); this.backgroundWorker.ReportProgress(0, progress); } else { performanceSet = new PerformanceSet { TreeName = treeObject.Name, SearchTime = watch.ElapsedMilliseconds + "/Not Found", TypeOfNodes = this.CheckNodeType(type), TypeOfTree = this.GetTreeType(treeObject), NoOfNodes = searchResult.NodesVisited.ToString() }; this.provider.PerformanceSets.Add(performanceSet); progress[0] = watch.ElapsedMilliseconds + " ms/NF"; progress[1] = searchResult.NodesVisited.ToString(); this.backgroundWorker.ReportProgress(0, progress); } return(searchResult); }
public void GetMarkedMethods_TestMethodHasAttribute_ReturnstestMethod() { var analyzer = new Analyzer(); IEnumerable <PerformanceSet> sets = analyzer.GetPerformanceSets((typeof(Test).Assembly)); PerformanceSet set = sets.First(); PerformanceUnit unit = set.PerformanceUnits.First(); Assert.AreEqual("TestMethod", unit.Name); }
public void Build_BuildAnActionFromTypeAndMethodInfo_ReturnsActionThatDoesNotThrow() { var analyzer = new Analyzer(); PerformanceSet set = analyzer.GetPerformanceSets((typeof(Test).Assembly)).First(); PerformanceUnit performanceUnit = set.PerformanceUnits.First(); var builder = new DelegateBuilder(); Action action = builder.Build(set.Type, performanceUnit.MethodInfo); Assert.DoesNotThrow(action.Invoke); }
public void Run_RunsAMarkedMethodOneHundredTimes_ReturnsResultWithOneHundredResults() { var analyzer = new Analyzer(); IEnumerable <PerformanceSet> sets = analyzer.GetPerformanceSets((typeof(Test).Assembly)); PerformanceSet set = sets.First(); PerformanceUnit unit = set.PerformanceUnits.First(); MethodInfo methodInfo = unit.MethodInfo; var builder = new DelegateBuilder(); Action action = builder.Build(set.Type, methodInfo); var runner = new UnitRunner(); Result result = runner.Run(set.Name, methodInfo.Name, action, unit.Runs); Assert.IsTrue(result.Success); }
/// <summary> /// The generic batch search. /// </summary> /// <param name="searchItems"> /// The search items. /// </param> /// <param name="type"> /// The type. /// </param> /// <typeparam name="T"> /// Parameter can be string or double. /// </typeparam> public void GenericBatchSearch <T>(List <T> searchItems, string type) { this.counter = 1; this.denominator = this.provider.BatchTreeObject.Count * searchItems.Count; foreach (var treeObject in this.provider.BatchTreeObject) { if (!treeObject.Type.Equals(type)) { continue; } foreach (var item in searchItems) { Stopwatch watch; SearchResult searchResult; if (type.Equals("text")) { watch = new Stopwatch(); watch.Start(); searchResult = treeObject.TextTree.Contains(item as string); watch.Stop(); } else { watch = new Stopwatch(); watch.Start(); searchResult = treeObject.NumericTree.Contains((double)(object)item); watch.Stop(); } PerformanceSet performanceSet; if (searchResult.SearchPath != null) { performanceSet = new PerformanceSet { TreeName = treeObject.Name, SearchTime = watch.ElapsedMilliseconds.ToString(), TypeOfNodes = this.CheckNodeType(type), TypeOfTree = this.GetTreeType(treeObject), NoOfNodes = searchResult.NodesVisited.ToString() }; this.provider.BatchPerformanceSet.Add(performanceSet); var currentDateTime = DateTime.Now.TimeOfDay.ToString(); var progress = "[" + currentDateTime.Substring(0, 13) + "]" + "\tGroup tree name: " + treeObject.Name + Environment.NewLine + "\t\tValue: " + item + Environment.NewLine + "\t\tFound in " + watch.ElapsedMilliseconds + " ms for tree type: " + this.GetTreeType(treeObject) + Environment.NewLine + "\t\tNodes visited: " + searchResult.NodesVisited + Environment.NewLine; var percent = (100 * this.counter) / this.denominator; this.backgroundWorker.ReportProgress(percent, progress); } else { performanceSet = new PerformanceSet { TreeName = treeObject.Name, SearchTime = watch.ElapsedMilliseconds + "/Not Found", TypeOfNodes = this.CheckNodeType(type), TypeOfTree = this.GetTreeType(treeObject), NoOfNodes = searchResult.NodesVisited.ToString() }; this.provider.BatchPerformanceSet.Add(performanceSet); var currentDateTime = DateTime.Now.TimeOfDay.ToString(); var progress = "[" + currentDateTime.Substring(0, 13) + "]" + "\tGroup tree name: " + treeObject.Name + Environment.NewLine + "\t\tValue: " + item + Environment.NewLine + "\t\tNot found in " + watch.ElapsedMilliseconds + " ms for tree type: " + this.GetTreeType(treeObject) + Environment.NewLine + "\t\tNodes visited: " + searchResult.NodesVisited + Environment.NewLine; var percent = (100 * this.counter) / this.denominator; this.backgroundWorker.ReportProgress(percent, progress); } this.counter++; } } }