- updates calendar to support overriding the current day when rendering - supports current culture when rendering - renames Calendar to CalendarGenerator
86 lines
No EOL
2.5 KiB
C#
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);
|
|
}
|
|
} |