Nulah.PowerShell/tests/ModuleTests/Calendar/MarkedDayRenderTests.cs
Scott 3547e32b6e tests(calendar): Add calendar render tests (#3)
- updates calendar to support overriding the current day when rendering
- supports current culture when rendering
- renames Calendar to CalendarGenerator
2026-08-05 06:15:53 +00:00

86 lines
No EOL
2.5 KiB
C#

using System.Text;
using ModuleCore.Calendar;
namespace ModuleTests.Calendar;
public class MarkedDayRenderTests
{
private static readonly VerifySettings Settings;
static MarkedDayRenderTests()
{
Settings = new VerifySettings();
var testBaseDirectory = Path.Join(TestConstants.SnapshotFolderName, nameof(MarkedDayRenderTests));
Settings.UseDirectory(testBaseDirectory);
Settings.DisableDiff();
}
[Fact]
public Task DefaultMarkedDayRender()
{
Settings.UseFileName(nameof(DefaultMarkedDayRender));
var date = new DateTime(2026, 8, 1);
var calendar = new CalendarGenerator();
var renderedMonth = calendar.Render(date, date.AddDays(15));
return Verify(renderedMonth, Settings);
}
[Fact]
public Task SimpleMarkedDayRender()
{
Settings.UseFileName(nameof(SimpleMarkedDayRender));
var date = new DateTime(2026, 8, 1);
var calendar = new CalendarGenerator("|");
var renderedMonth = calendar.Render(date, date.AddDays(15));
return Verify(renderedMonth, Settings);
}
[Fact]
public Task LongMarkedDayRender()
{
Settings.UseFileName(nameof(LongMarkedDayRender));
var date = new DateTime(2026, 8, 1);
var calendar = new CalendarGenerator("passed");
var renderedMonth = calendar.Render(date, date.AddDays(15));
return Verify(renderedMonth, Settings);
}
[Fact]
public Task EmojiMarkedDayRender()
{
Settings.UseFileName(nameof(EmojiMarkedDayRender));
var date = new DateTime(2026, 8, 1);
var calendar = new CalendarGenerator("🤫");
var sb = new StringBuilder();
sb.AppendLine("Emojis will display incorrectly in text but output correctly in terminals with UTF-8 encoding.")
.AppendLine(calendar.Render(date, date.AddDays(15)));
return Verify(sb, Settings);
}
[Fact]
public Task DoubleWideMarkedDayRender()
{
Settings.UseFileName(nameof(DoubleWideMarkedDayRender));
var date = new DateTime(2026, 8, 1);
// Using an asian-character to have a test covering the unfortunate reality of character rendering of
// characters that are visually 1 character in width, but render as double width or some other cursed form.
// Written language was a mistake but trying to render it on computers alongside a different one
// is arguably worse.
var calendar = new CalendarGenerator("火");
var sb = new StringBuilder();
sb.AppendLine("Double-wide characters will display incorrectly but still tested until rendering can be improved")
.AppendLine(calendar.Render(date, date.AddDays(15)));
return Verify(sb, Settings);
}
}