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); } }