예제 #1
0
        public void GeneratorShouldReturnCorrectDictionary()
        {
            CodeCoverageDataModel codeCoverageDataModel = new CodeCoverageDataModel();
            Generator             generator             = new Generator();

            codeCoverageDataModel.Sources.Add("s1.cs");
            codeCoverageDataModel.Sources.Add("s2.cs");
            Range range1 = new Range(5, 6, true, 0);
            Range range2 = new Range(9, 12, true, 1);
            Range range3 = new Range(13, 13, false, 0);

            codeCoverageDataModel.Ranges.Add(range1);
            codeCoverageDataModel.Ranges.Add(range1);
            codeCoverageDataModel.Ranges.Add(range2);
            codeCoverageDataModel.Ranges.Add(range3);

            Dictionary <string, Dictionary <int, int> > expecedLcovModelData = new Dictionary <string, Dictionary <int, int> >();

            expecedLcovModelData.Add("s1.cs", new Dictionary <int, int> {
                { 5, 2 }, { 6, 2 }, { 13, 0 }
            });
            expecedLcovModelData.Add("s2.cs", new Dictionary <int, int> {
                { 9, 1 }, { 10, 1 }, { 11, 1 }, { 12, 1 }
            });

            var actualLcovModelData = generator.GenerateLcovCoverageData(codeCoverageDataModel);

            foreach (var modelData in expecedLcovModelData)
            {
                CollectionAssert.AreEqual(expecedLcovModelData[modelData.Key], actualLcovModelData.Data[modelData.Key]);
            }
        }
예제 #2
0
        public LcovModel GenerateLcovCoverageData(CodeCoverageDataModel codeCoverageDataModel)
        {
            Dictionary <string, Dictionary <int, int> > lcovModelData = new Dictionary <string, Dictionary <int, int> >();

            foreach (var range in codeCoverageDataModel.Ranges)
            {
                var source = codeCoverageDataModel.Sources[range.SourceFileId];


                if (!lcovModelData.ContainsKey(source))
                {
                    lcovModelData.Add(source, new Dictionary <int, int>());
                }

                for (int i = range.StartLine; i <= range.EndLine; i++)
                {
                    if (range.Covered)
                    {
                        lcovModelData[source][i] = lcovModelData[source].ContainsKey(i) ? lcovModelData[source][i] + 1 : 1;
                    }
                    else
                    {
                        lcovModelData[source][i] = lcovModelData[source].ContainsKey(i) ? lcovModelData[source][i] : 0;
                    }
                }
            }

            return(new LcovModel(lcovModelData));
        }
예제 #3
0
        public void LcovModelToStringShouldWriteToFile()
        {
            CodeCoverageDataModel codeCoverageDataModel = new CodeCoverageDataModel();
            Generator             generator             = new Generator();

            codeCoverageDataModel.Sources.Add("s1.cs");
            codeCoverageDataModel.Sources.Add("s2.cs");

            Range range1 = new Range(5, 6, true, 0);
            Range range2 = new Range(9, 12, true, 1);
            Range range3 = new Range(13, 13, false, 0);

            codeCoverageDataModel.Ranges.Add(range1);
            codeCoverageDataModel.Ranges.Add(range1);
            codeCoverageDataModel.Ranges.Add(range2);
            codeCoverageDataModel.Ranges.Add(range3);

            var actualLcovModelData = generator.GenerateLcovCoverageData(codeCoverageDataModel);

            var actualText = actualLcovModelData.ToString();

            Console.WriteLine(actualText);

            string expectedText = "SF:s1.cs" + Environment.NewLine +
                                  "DA:5,2" + Environment.NewLine +
                                  "DA:6,2" + Environment.NewLine +
                                  "DA:13,0" + Environment.NewLine +
                                  "end_of_record" + Environment.NewLine +
                                  "SF:s2.cs" + Environment.NewLine +
                                  "DA:9,1" + Environment.NewLine +
                                  "DA:10,1" + Environment.NewLine +
                                  "DA:11,1" + Environment.NewLine +
                                  "DA:12,1" + Environment.NewLine +
                                  "end_of_record" + Environment.NewLine;

            Assert.AreEqual(actualText, expectedText);
            System.Console.WriteLine(expectedText);
        }
 private void AssertUtility(CodeCoverageDataModel coverageData, List <string> expectedSourceFileNames, List <Range> expectedRanges)
 {
     CollectionAssert.AreEqual(coverageData.Sources, expectedSourceFileNames);
     CollectionAssert.AreEqual(coverageData.Ranges, expectedRanges, Comparer <Range> .Create((Range x, Range y) => { return(x.StartLine == y.StartLine && x.EndLine == y.EndLine && x.SourceFileId == y.SourceFileId && x.Covered == y.Covered ? 0 : -1); }));
 }