This repository has been archived on 2023-02-02. You can view files and clone it, but cannot push or open issues or pull requests.
mfgames-nitride-cil/tests/MfGames.Nitride.IO.Tests/Paths/GetEntityByPathTests.cs
D. Moonfire 9e93eb6ce6 refactor!: fixed missed namespaces
- reformatted code and cleaned up references
2023-01-14 18:19:42 -06:00

140 lines
3.5 KiB
C#

using System.Collections.Generic;
using System.Linq;
using MfGames.Gallium;
using MfGames.Nitride.IO.Contents;
using Xunit;
using Xunit.Abstractions;
using Zio;
namespace MfGames.Nitride.IO.Tests.Paths;
public class GetEntityByPathTests : NitrideIOTestBase
{
public GetEntityByPathTests(ITestOutputHelper output)
: base(output)
{
}
[Fact]
public void FoundFile()
{
// Set up the test.
using NitrideIOTestContext context = this.CreateContext();
// Set up the file.
IFileSystem fileSystem = context.FileSystem;
fileSystem.CreateFile("/b1.txt");
fileSystem.CreateFile("/c1.md");
// Set up the operation.
ReadFiles readFiles = context.Resolve<ReadFiles>();
// Read and replace the paths.
IOrderedEnumerable<string> output = NitrideIOEnumerableEntityExtensions
.GetEntityByPath(
readFiles.WithPattern("/**")
.Run(),
"/c1.md",
out Entity? found)
.Select(
x => x.Get<UPath>()
.ToString())
.OrderBy(x => x);
// Verify the results.
Assert.Equal(
new[]
{
"/b1.txt",
},
output);
Assert.NotNull(found);
Assert.Equal("/c1.md", found!.Get<UPath>());
}
[Fact]
public void FoundFileAndKeep()
{
// Set up the test.
using NitrideIOTestContext context = this.CreateContext();
// Set up the file.
IFileSystem fileSystem = context.FileSystem;
fileSystem.CreateFile("/b1.txt");
fileSystem.CreateFile("/c1.md");
// Set up the operation.
ReadFiles readFiles = context.Resolve<ReadFiles>();
// Read and replace the paths.
IOrderedEnumerable<string> output = NitrideIOEnumerableEntityExtensions
.GetEntityByPath(
(IEnumerable<Entity>)readFiles.WithPattern("/**")
.Run(),
(UPath)"/c1.md",
out Entity? found,
(IfFoundOutput)IfFoundOutput.ReturnInOutput)
.Select(
x => x.Get<UPath>()
.ToString())
.OrderBy(x => x);
// Verify the results.
Assert.Equal(
new[]
{
"/b1.txt",
"/c1.md",
},
output);
Assert.NotNull(found);
Assert.Equal("/c1.md", found!.Get<UPath>());
}
[Fact]
public void NotFoundFile()
{
// Set up the test.
using NitrideIOTestContext context = this.CreateContext();
// Set up the file.
IFileSystem fileSystem = context.FileSystem;
fileSystem.CreateFile("/b1.txt");
fileSystem.CreateFile("/c1.md");
// Set up the operation.
ReadFiles readFiles = context.Resolve<ReadFiles>();
// Read and replace the paths.
IOrderedEnumerable<string> output = NitrideIOEnumerableEntityExtensions
.GetEntityByPath(
readFiles.WithPattern("/**")
.Run(),
"/not-found.md",
out Entity? found)
.Select(
x => x.Get<UPath>()
.ToString())
.OrderBy(x => x);
// Verify the results.
Assert.Equal(
new[]
{
"/b1.txt",
"/c1.md",
},
output);
Assert.Null(found);
}
}