/// <summary>
        /// Evaluates css for a group of files
        /// </summary>
        /// <param name="numberOfGroups"></param>
        /// <param name="directories"></param>
        /// <param name="specificGroup">Not zero indexed - 1 means group 1, 0 means all</param>
        public void Evaluate(int numberOfGroups, string[] directories, int specificGroup)
        {
            var groupedFilesViewModels = DirectoryGroupEvaluator.Evaluate(numberOfGroups, directories);

            var groupedResults = new List <List <CssEvaluationResult> >();

            var i = 1;

            foreach (var fileList in groupedFilesViewModels)
            {
                if (specificGroup == 0 || i == specificGroup)
                {
                    Ux.WriteLine(string.Format("Group{0} ({1} - {2})", i, fileList.StartDir, fileList.EndDir));
                    groupedResults.Add(CssStatsPresenter.Present(fileList.Files));
                    Ux.WriteLine("");
                    ScrollDown(null, null);
                }
                i++;
            }

            Ux.DisplayBoolOption("Store detailed CSS results to disk?", () =>
            {
                i = 1;
                foreach (var resultGroup in groupedResults)
                {
                    CssStatsStorageService.Store(resultGroup, string.Format("Group {0}", specificGroup > 0 ? specificGroup : i));
                    ScrollDown(null, null);
                    i++;
                }
                //FolderPresenter.Present(Properties.Settings.Default.ResultsPath);
            }, null);

            Ux.WriteLine("");
        }
示例#2
0
        public void View(List <string> files)
        {
            if (PathExistenceEvaluator.Evaluate(Properties.Settings.Default.InspectionPath))
            {
                var results = CssStatsPresenter.Present(FilteredFilesEvaluator.Evaluate(files));
                Ux.DisplayBoolOption("Store detailed CSS results to disk?", () =>
                {
                    var filename = CssStatsStorageService.Store(results, string.Empty);
                    //FilePresenter.Present(filename);
                }, null);

                Ux.WriteLine("");
            }
            else
            {
                MessageBox.Show("Please specify the results folder first.", "Invalid Directory");
            }
        }
示例#3
0
        public void StoreCss()
        {
            var mockHumanInterface   = new Mock <IHumanInterface>();
            var mockDateTimeProvider = new Mock <IDateTimeProvider>();
            var mockStorer           = new Mock <IStorageService>();
            var mockNamer            = new Mock <ICssStatsFileNameEvaluator>();

            mockStorer.Setup(x => x.Store(It.IsAny <StringBuilder>(), It.IsAny <string>())).Callback <StringBuilder, string>((sb, title) =>
            {
                var str = sb.ToString();

                Assert.AreEqual(18, str.Count(x => x == ','));
                Assert.AreEqual(2, Regex.Matches(str, Environment.NewLine).Count);
            });

            var evaluator = new CssStatsStorageService(mockStorer.Object, mockDateTimeProvider.Object, mockHumanInterface.Object, mockNamer.Object);

            var testData = new List <CssEvaluationResult>
            {
                new CssEvaluationResult
                {
                    Inline = new List <DetailedCssEvaluationResult>
                    {
                        new DetailedCssEvaluationResult {
                            Value = "<div style='display:none;'></div>"
                        }
                    },
                    FileName = "test",
                    Page     = new List <int> {
                        3, 5
                    },
                    Razor = new List <DetailedCssEvaluationResult>
                    {
                        new DetailedCssEvaluationResult {
                            Value = "{ style = 'float:left;' }"
                        }
                    },
                }
            };

            evaluator.Store(testData, string.Empty);
        }