Files
Explorer-Workbench/tests/Explorer.Application.Tests/FolderStatusTextTests.cs

86 lines
2.3 KiB
C#

using Explorer.Application;
using Explorer.Domain;
namespace Explorer.Application.Tests;
public class FolderStatusTextTests
{
[Fact]
public void Empty_folder_is_zero_items()
{
Assert.Equal("0 items", FolderStatusText.Format([], []));
}
[Fact]
public void Folder_totals_use_known_sizes()
{
var items = new[]
{
File("a.txt", 100),
File("b.txt", 924),
Folder("pics", size: 0, SizeKnowledge.Unknown)
};
Assert.Equal("3 items · 1 KB", FolderStatusText.Format(items, []));
}
[Fact]
public void Selection_replaces_folder_totals()
{
var items = new[] { File("a.txt", 100), File("b.txt", 200), File("c.txt", 300) };
Assert.Equal("1 item selected · 200 B", FolderStatusText.Format(items, [items[1]]));
Assert.Equal("2 items selected · 300 B", FolderStatusText.Format(items, [items[0], items[1]]));
}
[Fact]
public void Unknown_folder_sizes_are_omitted()
{
var folders = new[]
{
Folder("a", 0, SizeKnowledge.Unknown),
Folder("b", 0, SizeKnowledge.Unknown)
};
Assert.Equal("2 items", FolderStatusText.Format(folders, []));
}
[Fact]
public void Indexed_folder_sizes_are_included()
{
var items = new[]
{
Folder("docs", 2_048, SizeKnowledge.Calculated),
File("readme.txt", 1_024)
};
Assert.Equal("2 items · 3 KB", FolderStatusText.Format(items, []));
}
[Fact]
public void Zero_byte_file_selection_still_shows_size()
{
var file = File("empty.dat", 0);
Assert.Equal("1 item selected · 0 B", FolderStatusText.Format([file], [file]));
}
private static FileSystemItem File(string name, long size)
=> new()
{
FullPath = @"C:\" + name,
Name = name,
SizeBytes = size,
SizeKnowledge = SizeKnowledge.Calculated
};
private static FileSystemItem Folder(string name, long size, SizeKnowledge knowledge)
=> new()
{
FullPath = @"C:\" + name,
Name = name,
IsDirectory = true,
SizeBytes = size,
SizeKnowledge = knowledge
};
}