Skip to content

Commit

Permalink
Add tests for FileTreeAsyncEnumerable
Browse files Browse the repository at this point in the history
  • Loading branch information
rameel committed Aug 7, 2024
1 parent aee740c commit a440e7f
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 2 deletions.
5 changes: 3 additions & 2 deletions Ramstack.Globbing.Tests/Ramstack.Globbing.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="NUnit" Version="4.1.0"/>
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/>
<PackageReference Include="NUnit" Version="4.1.0" />
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
</ItemGroup>

<ItemGroup>
Expand Down
81 changes: 81 additions & 0 deletions Ramstack.Globbing.Tests/Traversal/FileTreeAsyncEnumerableTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
using Ramstack.Globbing.Traversal.Helpers;

namespace Ramstack.Globbing.Traversal;

[TestFixture]
public class FileTreeAsyncEnumerableTests
{
private readonly TempFileStorage _storage = new();

[OneTimeTearDown]
public void Cleanup() =>
_storage.Dispose();

[Test]
public async Task Enumerate_Files()
{
var enumerable = new FileTreeAsyncEnumerable<FileSystemInfo, string>(new DirectoryInfo(_storage.Root))
{
Patterns = ["**"],
Flags = MatchFlags.Auto,
FileNameSelector = info => info.Name,
ShouldRecursePredicate = info => info is DirectoryInfo,
ShouldIncludePredicate = info => info is FileInfo,
ResultSelector = info => info.FullName,
ChildrenSelector = (info, _) => ((DirectoryInfo)info).EnumerateFileSystemInfos().ToAsyncEnumerable()
}.OrderBy(p => p);

var expected = Directory
.EnumerateFiles(_storage.Root, "*", SearchOption.AllDirectories)
.OrderBy(p => p);

Assert.That(
await enumerable.ToArrayAsync(),
Is.EquivalentTo(expected));
}

[Test]
public async Task Enumerate_Directories()
{
var enumerable = new FileTreeAsyncEnumerable<FileSystemInfo, string>(new DirectoryInfo(_storage.Root))
{
Patterns = ["**"],
Flags = MatchFlags.Auto,
FileNameSelector = info => info.Name,
ShouldRecursePredicate = info => info is DirectoryInfo,
ShouldIncludePredicate = info => info is DirectoryInfo,
ResultSelector = info => info.FullName,
ChildrenSelector = (info, _) => ((DirectoryInfo)info).EnumerateFileSystemInfos().ToAsyncEnumerable()
}.OrderBy(p => p);

var expected = Directory
.EnumerateDirectories(_storage.Root, "*", SearchOption.AllDirectories)
.OrderBy(p => p);

Assert.That(
await enumerable.ToArrayAsync(),
Is.EquivalentTo(expected));
}

[Test]
public async Task Enumerate_Both()
{
var enumerable = new FileTreeAsyncEnumerable<FileSystemInfo, string>(new DirectoryInfo(_storage.Root))
{
Patterns = ["**"],
Flags = MatchFlags.Auto,
FileNameSelector = info => info.Name,
ShouldRecursePredicate = info => info is DirectoryInfo,
ResultSelector = info => info.FullName,
ChildrenSelector = (info, _) => ((DirectoryInfo)info).EnumerateFileSystemInfos().ToAsyncEnumerable(),
}.OrderBy(p => p);

var expected = Directory
.EnumerateFileSystemEntries(_storage.Root, "*", SearchOption.AllDirectories)
.OrderBy(p => p);

Assert.That(
await enumerable.ToArrayAsync(),
Is.EquivalentTo(expected));
}
}

0 comments on commit a440e7f

Please sign in to comment.