86 lines
2.3 KiB
C#
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
|
|
};
|
|
}
|