public void TestCalculateSummary()
        {
            CoverageResult result = new CoverageResult();

            result.Identifier = Guid.NewGuid().ToString();
            Lines lines = new Lines();

            lines.Add(1, 1);
            lines.Add(2, 0);
            Methods methods = new Methods();

            methods.Add("System.Void Coverlet.Core.Tests.CoverageSummaryTests.TestCalculateSummary()", lines);
            Classes classes = new Classes();

            classes.Add("Coverlet.Core.Tests.CoverageSummaryTests", methods);
            Documents documents = new Documents();

            documents.Add("doc.cs", classes);
            result.Modules = new Modules();
            result.Modules.Add("module", documents);

            CoverageSummary       summary       = new CoverageSummary(result);
            CoverageSummaryResult summaryResult = summary.CalculateSummary();

            Assert.NotEmpty(summaryResult);
            Assert.True(summaryResult.ContainsKey("module"));
            Assert.Equal(50, summaryResult["module"]);
        }
        public CoverageSummaryResult CalculateSummary()
        {
            CoverageSummaryResult result = new CoverageSummaryResult();

            foreach (var mod in _result.Modules)
            {
                int totalLines = 0, linesCovered = 0;
                foreach (var doc in mod.Value)
                {
                    foreach (var @class in doc.Value)
                    {
                        foreach (var method in @class.Value)
                        {
                            foreach (var line in method.Value)
                            {
                                totalLines++;
                                if (line.Value.Hits > 0)
                                {
                                    linesCovered++;
                                }
                            }
                        }
                    }
                }

                result.Add(System.IO.Path.GetFileNameWithoutExtension(mod.Key), totalLines == 0 ? totalLines : (linesCovered * 100) / totalLines);
            }

            return(result);
        }