/// <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("");
        }
        public void GroupsShouldBeEqual()
        {
            var mockFolderperGroupEvaluator = new Mock<IFoldersPerGroupEvaluator>();
            mockFolderperGroupEvaluator.Setup(x => x.Evaluate(It.IsAny<int>(), It.IsAny<int>())).Returns(3);
            var mockDirEvaluator = new Mock<IDirectoryDescendentFilesEvaluator>();
            mockDirEvaluator.Setup(x => x.Evaluate(It.IsAny<string>())).Returns(new List<string> { "file1" });

            var obj = new DirectoryGroupEvaluator(mockFolderperGroupEvaluator.Object, mockDirEvaluator.Object);

            var dirs = new[]
            {
                "dir1a", "dir1b", "dir1c",
                "dir2a", "dir2b", "dir2c",
                "dir3a", "dir3b", "dir3c",
                "dir4a", "dir4b", "dir4c"
            };

            var result = obj.Evaluate(4, dirs);

            Assert.AreEqual(4, result.Count);
            Assert.AreEqual(3, result[0].Files.Count);
            Assert.AreEqual(3, result[1].Files.Count);
            Assert.AreEqual(3, result[2].Files.Count);
            Assert.AreEqual(3, result[3].Files.Count);
        }