using Xunit; using System.Collections.Generic; using Semmle.Util.Logging; using Semmle.Extraction.CSharp.DependencyFetching; namespace Semmle.Extraction.Tests { internal class LoggerStub : ILogger { public void Log(Severity severity, string message) { } public void Dispose() { } } internal class UnsafeFileReaderStub : IUnsafeFileReader { private readonly List lines; public UnsafeFileReaderStub(List lines) { this.lines = lines; } public IEnumerable ReadLines(string file) { foreach (var line in lines) { yield return line; } } } internal class TestFileContent : FileContent { public TestFileContent(List lines) : base(new ProgressMonitor(new LoggerStub()), new List() { "test1.cs" }, new UnsafeFileReaderStub(lines)) { } } public class FileContentTests { [Fact] public void TestFileContent1() { // Setup var lines = new List() { "", "", "", "", "" }; var fileContent = new TestFileContent(lines); // Execute var allPackages = fileContent.AllPackages; var useAspNetDlls = fileContent.UseAspNetDlls; // Verify Assert.False(useAspNetDlls); Assert.Equal(3, allPackages.Count); Assert.Contains("DotNetAnalyzers.DocumentationAnalyzers".ToLowerInvariant(), allPackages); Assert.Contains("Microsoft.CodeAnalysis.NetAnalyzers".ToLowerInvariant(), allPackages); Assert.Contains("StyleCop.Analyzers".ToLowerInvariant(), allPackages); } [Fact] public void TestFileContent2() { // Setup var lines = new List() { "", "", "", "" }; var fileContent = new TestFileContent(lines); // Execute var useAspNetDlls = fileContent.UseAspNetDlls; var allPackages = fileContent.AllPackages; // Verify Assert.True(useAspNetDlls); Assert.Equal(2, allPackages.Count); Assert.Contains("Microsoft.CodeAnalysis.NetAnalyzers".ToLowerInvariant(), allPackages); Assert.Contains("StyleCop.Analyzers".ToLowerInvariant(), allPackages); } } }