Convert round-trip test to a theory

This commit is contained in:
Alexander Luzgarev 2018-11-07 10:27:54 +01:00
parent 4a15e9dd72
commit 40d1d55cbd

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq;
using Xunit; using Xunit;
namespace Parser.Tests namespace Parser.Tests
@ -42,7 +43,9 @@ namespace Parser.Tests
return new MParser(window); return new MParser(window);
} }
private static void ProcessFile(string fileName) [Theory]
[MemberData(nameof(FilesData))]
public void TestFile(string fileName)
{ {
var text = File.ReadAllText(fileName); var text = File.ReadAllText(fileName);
var window = new TextWindowWithNull(text, fileName); var window = new TextWindowWithNull(text, fileName);
@ -51,31 +54,39 @@ namespace Parser.Tests
var actual = tree.Root.FullText; var actual = tree.Root.FullText;
Assert.Equal(text, actual); Assert.Equal(text, actual);
} }
private static void ProcessDirectory(string directory) public static IEnumerable<object[]> FilesData()
{ {
var files = Directory.GetFiles(directory, "*.m"); return Files().Select(fileName => new object[] { fileName });
foreach (var file in files) }
public static IEnumerable<string> Files()
{
return Files(BaseDirectory);
}
public static IEnumerable<string> Files(string path)
{
var fileNames = Directory.GetFiles(path, "*.m");
foreach (var fileName in fileNames)
{ {
var relativePath = Path.GetRelativePath(BaseDirectory, file); var relativePath = Path.GetRelativePath(BaseDirectory, fileName);
if (SkipFiles.Contains(relativePath)) if (SkipFiles.Contains(relativePath))
{ {
continue; continue;
} }
ProcessFile(file);
yield return fileName;
} }
var subDirectories = Directory.GetDirectories(directory); var subDirectories = Directory.GetDirectories(path);
foreach (var subDirectory in subDirectories) foreach (var subDirectory in subDirectories)
{ {
ProcessDirectory(subDirectory); foreach (var fileName in Files(subDirectory))
{
yield return fileName;
}
} }
} }
[Fact]
public void TestEverything()
{
ProcessDirectory(BaseDirectory);
}
} }
} }