public AssemblyTestStatisticsByCategory Get(AssemblyTestStatistics assemblyTestStatistics)
        {
            var testsByCategory = new Dictionary <string, List <TestCategoryStatisticsItem> >();

            foreach (var testItem in assemblyTestStatistics.Items)
            {
                foreach (var testItemCategory in testItem.Categories)
                {
                    var categoryTests = testsByCategory.GetOrAdd(testItemCategory);
                    var testCategoryStatisticsItem = new TestCategoryStatisticsItem
                    {
                        Description = testItem.Description,
                        Fixture     = testItem.Fixture,
                        Name        = testItem.Name,
                    };
                    categoryTests.Add(testCategoryStatisticsItem);
                }
            }

            return(new AssemblyTestStatisticsByCategory
            {
                AssemblyName = assemblyTestStatistics.AssemblyName,
                TestsByCategory = testsByCategory
            });
        }
        public AssemblyTestStatistics Get(string pathToAssembly)
        {
            var assembliesToAnalyze = assembliesToAnalyzeProvider.Get(pathToAssembly);

            var types = assembliesToAnalyze.Assemblies.SelectMany(x => x.GetTypes()).ToArray();
            var items = testStatisticsItemsProvider.Get(types);
            var assemblyTestStatistics = new AssemblyTestStatistics
            {
                AssemblyName = assembliesToAnalyze.AssemblyWithTestsName,
                Items        = items
            };

            return(assemblyTestStatistics);
        }