ChronosDesk uses xUnit in ChronosDesk.Core.Tests. The suite focuses on domain time logic, JSON persistence, and scheduler integration. UI, tray icons, and real Windows toasts are verified manually on Windows.
From the repository root:
dotnet test ChronosDesk.sln -c Release| Area | Test classes | What they prove |
|---|---|---|
| Persistence | JsonReminderRepositoryTests |
Polymorphic JSON round-trip for all reminder types; atomic save leaves no .tmp file |
| One-shot domain | OneShotReminderTests |
Active and already-fired trigger-time rules |
| Repeating domain | RepeatingReminderTests |
Daily windows, grid alignment, post-fire intervals, midnight crossover |
| Burst domain | BurstIntervalReminderTests |
Burst/break/completed phases, limits, pause/resume re-anchoring |
| Scheduler | ReminderSchedulerTests |
Tick fires due reminders, respects play-sound flag, skips not-yet-due items, pause/resume through scheduler, save-failure callback |
The scheduler accepts an injectable Func<DateTime> and exposes ProcessTickAsync so tests can drive ticks without a real timer.
- WPF windows and code-behind layout
- System tray icon behavior
- Windows toast delivery and COM shortcut registration
- Corrupt or hand-edited JSON recovery
- Full
PeriodicTimerbackground loop under load
Those gaps are intentional for a small desktop utility. See known limitations.
GitHub Actions runs on windows-latest for pushes and pull requests to main and master:
dotnet build ChronosDesk.sln -c Release
dotnet test ChronosDesk.sln -c Release