< Summary

Information
Class: Punch.CLI.Duration
Assembly: punch
File(s): /home/runner/work/punch/punch/src/Punch.CLI/Duration.cs
Line coverage
100%
Covered lines: 12
Uncovered lines: 0
Coverable lines: 12
Total lines: 26
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Humanize(...)100%44100%
HumanizeTotal(...)100%22100%

File(s)

/home/runner/work/punch/punch/src/Punch.CLI/Duration.cs

#LineLine coverage
 1namespace Punch.CLI;
 2
 3// Formats minute counts as human-readable durations.
 4internal static class Duration
 5{
 6    // Compact form for individual entries: drops the hours part below 60m,
 7    // and drops the minutes part when they are zero. e.g. 45 -> "45m",
 8    // 90 -> "1h 30m", 120 -> "2h".
 9    public static string Humanize(int minutes)
 510    {
 511        if (minutes < 60)
 212            return $"{minutes}m";
 313        var h = minutes / 60;
 314        var m = minutes % 60;
 315        return m == 0 ? $"{h}h" : $"{h}h {m}m";
 516    }
 17
 18    // Total form: always leads with hours, even when zero. e.g. 45 -> "0h 45m",
 19    // 120 -> "2h 0m", 0 -> "0h 0m".
 20    public static string HumanizeTotal(int minutes)
 421    {
 422        var h = minutes / 60;
 423        var m = minutes % 60;
 424        return m > 0 ? $"{h}h {m}m" : $"{h}h 0m";
 425    }
 26}