using System.Linq; using Autofac; using Nitride.IO.Contents; using Nitride.IO.Paths; using Xunit; using Xunit.Abstractions; using Zio; using Zio.FileSystems; namespace Nitride.IO.Tests { public class MoveToIndexPathsTests : NitrideIOTestsBase { private readonly MemoryFileSystem fileSystem; public MoveToIndexPathsTests(ITestOutputHelper output) : base(output) { this.fileSystem = new MemoryFileSystem(); this.fileSystem.CreateDirectory("/c1"); this.fileSystem.CreateFile("/a1"); this.fileSystem.CreateFile("/b1.txt"); this.fileSystem.CreateFile("/c1/index.md"); this.fileSystem.CreateFile("/d1.html"); } [Fact] public void MoveAllFiles() { // Set up the operation. var readFiles = this.Container.Resolve(); var op = new MoveToIndexPaths(); // Read and replace the paths. IOrderedEnumerable output = readFiles(this.fileSystem) .Read() .Run(op) .Select(x => x.Get().ToString()) .OrderBy(x => x); // Verify the results. Assert.Equal( new[] { "/a1", "/b1.txt", "/c1/index.md", "/d1/index.html", }, output); } [Fact] public void OverrideCanMoveCallback() { // Set up the operation. var readFiles = this.Container.Resolve(); MoveToIndexPaths? op = new MoveToIndexPaths() .WithCanMoveCallback((path) => path.ToString().Contains("a1")); // Read and replace the paths. IOrderedEnumerable output = readFiles(this.fileSystem) .Read() .Run(op) .Select(x => x.Get().ToString()) .OrderBy(x => x); // Verify the results. Assert.Equal( new[] { "/a1/index", "/b1.txt", "/c1/index.md", "/d1.html", }, output); } } }