예제 #1
0
        private static void TransformSequences_AddSources(IEnumerable <File> files, IEnumerable <Method> methods, IDictionary <uint, CodeCoverageStringTextSource> sourceRepository)
        {
            if (files == null || !files.Any())
            {
                return;
            }

            // Dictionary with stored source file names per module
            var filesDictionary = new Dictionary <string, uint>();

            foreach (var file in files.
                     Where(file => !String.IsNullOrWhiteSpace(file.FullPath) &&
                           !filesDictionary.ContainsKey(file.FullPath)))
            {
                var source = CodeCoverageStringTextSource.GetSource(file.FullPath); // never reurns null
                if (source.FileType == FileType.CSharp)
                {
                    sourceRepository.Add(file.UniqueId, source);
                }
                filesDictionary.Add(file.FullPath, file.UniqueId);
            }

            foreach (var method in methods)
            {
                if (method.SequencePoints.Length != 0)
                {
                    MapFileReferences(method.SequencePoints, filesDictionary);
                }
                if (method.BranchPoints.Length != 0)
                {
                    MapFileReferences(method.BranchPoints, filesDictionary);
                }
            }
        }
        public void WhenLoggerNotProvided_ExceptionThrown()
        {
            // arrange
            ILog logger = null;

            // act/assert
            Assert.Throws <ArgumentNullException>(() => CodeCoverageStringTextSource.GetSource("", logger));
        }
        public void GetSource()
        {
            var    timeReference  = DateTime.UtcNow; System.Threading.Thread.Sleep(100);
            string fileName       = System.IO.Path.GetTempPath() + Guid.NewGuid();
            string cSharpFileName = fileName + ".cs";
            string vBasicFileName = fileName + ".vb";

            string[] lines = { "First line", "Second line", "Third line" };

            // act on not existing file
            var source = CodeCoverageStringTextSource.GetSource(cSharpFileName);

            // assert
            Assert.True(!ReferenceEquals(source, null));
            Assert.True(source.FileType == FileType.CSharp);
            Assert.True(source.FilePath == cSharpFileName);
            Assert.False(source.FileFound);
            Assert.True(source.FileTime == DateTime.MinValue);
            Assert.False(source.IsChanged(source.FileTime));
            Assert.False(source.IsChanged(DateTime.MinValue));
            Assert.False(source.IsChanged(DateTime.Now));
            Assert.False(source.IsChanged(timeReference));

            // arrange
            System.IO.File.WriteAllLines(cSharpFileName, lines);

            // act on existing file
            source = CodeCoverageStringTextSource.GetSource(cSharpFileName);

            // assert
            Assert.True(!ReferenceEquals(source, null));
            Assert.True(source.FileType == FileType.CSharp);
            Assert.True(source.FilePath == cSharpFileName);
            Assert.True(source.FileFound);
            Assert.True(source.FileTime == System.IO.File.GetLastWriteTimeUtc(cSharpFileName));
            Assert.False(source.IsChanged(source.FileTime));
            Assert.False(source.IsChanged(DateTime.MinValue));
            Assert.False(source.IsChanged(DateTime.Now));
            Assert.True(source.IsChanged(timeReference));

            // destroy temp file
            System.IO.File.Delete(cSharpFileName);

            // arrange
            System.IO.File.WriteAllLines(vBasicFileName, lines);
            // act on existing file
            source = CodeCoverageStringTextSource.GetSource(vBasicFileName);

            // assert
            Assert.True(!ReferenceEquals(source, null));
            Assert.True(source.FileType == FileType.Unsupported);
            Assert.True(source.FilePath == vBasicFileName);
            Assert.True(source.FileFound);
            Assert.True(source.FileTime == System.IO.File.GetLastWriteTimeUtc(vBasicFileName));
            Assert.False(source.IsChanged(source.FileTime));
            Assert.False(source.IsChanged(DateTime.MinValue));
            Assert.False(source.IsChanged(DateTime.Now));
            Assert.True(source.IsChanged(timeReference));

            // destroy temp file
            System.IO.File.Delete(vBasicFileName);
        }
        public void GetSource()
        {
            var    timeReference  = DateTime.UtcNow; System.Threading.Thread.Sleep(100);
            string fileName       = System.IO.Path.GetTempPath() + Guid.NewGuid();
            string cSharpFileName = fileName + ".cs";
            string vBasicFileName = fileName + ".vb";

            string[] lines = { "First line", "Second line", "Third line" };

            var mockLog = new Mock <ILog>();

            mockLog.Setup(x => x.InfoFormat(It.IsAny <string>()));

            // act on not existing file
            var source = CodeCoverageStringTextSource.GetSource(cSharpFileName, mockLog.Object);

            mockLog.Verify(x => x.InfoFormat($"Source file does not exist: {cSharpFileName}"), Times.Once());

            // assert
            Assert.True(!ReferenceEquals(source, null));
            Assert.True(source.FileType == FileType.CSharp);
            Assert.True(source.FilePath == cSharpFileName);
            Assert.False(source.FileFound);
            Assert.True(source.FileTime == DateTime.MinValue);
            Assert.False(source.IsChanged(source.FileTime));
            Assert.False(source.IsChanged(DateTime.MinValue));
            Assert.False(source.IsChanged(DateTime.UtcNow));
            Assert.False(source.IsChanged(timeReference));

            // arrange
            System.IO.File.WriteAllLines(cSharpFileName, lines);

            // act on existing file
            source = CodeCoverageStringTextSource.GetSource(cSharpFileName, mockLog.Object);

            // assert
            Assert.True(!ReferenceEquals(source, null));
            Assert.True(source.FileType == FileType.CSharp);
            Assert.True(source.FilePath == cSharpFileName);
            Assert.True(source.FileFound);
            Assert.True(source.FileTime == System.IO.File.GetLastWriteTimeUtc(cSharpFileName));
            Assert.False(source.IsChanged(source.FileTime));
            Assert.False(source.IsChanged(DateTime.MinValue));
            Assert.False(source.IsChanged(DateTime.UtcNow));
            Assert.True(source.IsChanged(timeReference));

            // destroy temp file
            System.IO.File.Delete(cSharpFileName);

            // arrange
            System.IO.File.WriteAllLines(vBasicFileName, lines);
            // act on existing file
            source = CodeCoverageStringTextSource.GetSource(vBasicFileName, mockLog.Object);

            // assert
            Assert.True(!ReferenceEquals(source, null));
            Assert.True(source.FileType == FileType.Unsupported);
            Assert.True(source.FilePath == vBasicFileName);
            Assert.True(source.FileFound);
            Assert.True(source.FileTime == System.IO.File.GetLastWriteTimeUtc(vBasicFileName));
            Assert.False(source.IsChanged(source.FileTime));
            Assert.False(source.IsChanged(DateTime.MinValue));
            Assert.False(source.IsChanged(DateTime.UtcNow));
            Assert.True(source.IsChanged(timeReference));

            // destroy temp file
            System.IO.File.Delete(vBasicFileName);
        }