public void Evaluate() { var evaluator = new RelevantAttributesEvaluator(); var testData = new List <JavaScriptEvaluationResult> { new JavaScriptEvaluationResult { Block = new List <DetailedJavaScriptEvaluationResult> { new DetailedJavaScriptEvaluationResult { AttributeName = "onclick" }, new DetailedJavaScriptEvaluationResult { AttributeName = "onblur" }, }, Razor = new List <DetailedJavaScriptEvaluationResult> { new DetailedJavaScriptEvaluationResult { AttributeName = "onclick" }, new DetailedJavaScriptEvaluationResult { AttributeName = "ondblclick" }, }, } }; var result = evaluator.Evaluate(testData); Assert.AreEqual(3, result.Count); Assert.AreEqual("onclick", result[0]); Assert.AreEqual("onblur", result[1]); Assert.AreEqual("ondblclick", result[2]); }
public string Store(List <JavaScriptEvaluationResult> results, string groupName) { var attributeTotals = new List <AttributeTotal>(); var sb = new StringBuilder(); sb.Append("Filename,Inline Instances,Total Inline LOC, Contains '@'"); var comparer = StringComparer.OrdinalIgnoreCase; var attributesInUse = RelevantAttributesEvaluator.Evaluate(results); foreach (var attribute in attributesInUse) { sb.AppendFormat(",{0}", attribute); } sb.AppendLine(",Total Inline Instances,Total Razor Instances"); foreach (var result in results.OrderBy(x => x.FileName)) { sb.AppendFormat("{0},{1},{2},{3}", result.FileName, result.PageInstances.Length, result.PageInstances.Sum(x => x.Lines.Count), result.PageInstances.Any(x => x.AtSymbols > 0)); foreach (var attribute in attributesInUse) { var blockCount = result.Block.Where(x => comparer.Equals(attribute, x.AttributeName)).Sum(x => x.InlineJavascriptTags.Count); var razorCount = result.Razor.Count(x => comparer.Equals(attribute, x.AttributeName)); sb.AppendFormat(",{0}", blockCount + razorCount); attributeTotals.Add(new AttributeTotal { Attribute = attribute, BlockCount = blockCount, RazorCount = razorCount }); } sb.AppendFormat(",{0},{1}", result.Block.Sum(x => x.InlineJavascriptTags.Count), result.Razor.Count); sb.AppendLine(""); } sb.AppendFormat("Total: {0},{1},{2},{3}", results.Count, results.Sum(x => x.PageInstances.Length), results.Sum(x => x.PageInstances.Sum(y => y.Lines.Count)), results.Sum(x => x.PageInstances.Count(y => y.AtSymbols > 0))); foreach (var attribute in attributesInUse) { sb.AppendFormat(",{0}", attributeTotals.Where(x => x.Attribute == attribute).Sum(x => x.BlockCount + x.RazorCount)); } sb.AppendFormat(",{0},{1}", attributeTotals.Sum(x => x.BlockCount), attributeTotals.Sum(x => x.RazorCount)); var filename = StorageService.Store(sb, JavaScriptStatsFileNameEvaluator.Evaluate(groupName)); Ux.WriteLine(string.Format("Saved to {0}", filename)); Ux.WriteLine(""); return(filename); }