< Summary

Information
Class: MyNet.Humanizer.Ordinalizing.Cultures.EnglishOrdinalizer
Assembly: MyNet.Humanizer
File(s): https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.Humanizer/Ordinalizing/Cultures/EnglishOrdinalizer.cs
Tag: 323_28699572109
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 50
Line coverage: 100%
Branch coverage
100%
Covered branches: 10
Total branches: 10
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
Ordinalize(...)100%11100%
GetSuffix(...)100%1010100%

File(s)

https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.Humanizer/Ordinalizing/Cultures/EnglishOrdinalizer.cs

#LineLine coverage
 1// -----------------------------------------------------------------------
 2// <copyright file="EnglishOrdinalizer.cs" company="Stéphane ANDRE">
 3// Copyright (c) Stéphane ANDRE. All rights reserved.
 4// </copyright>
 5// -----------------------------------------------------------------------
 6
 7using System;
 8using MyNet.Globalization.Culture;
 9
 10namespace MyNet.Humanizer.Ordinalizing.Cultures;
 11
 12/// <summary>
 13/// Represents an ordinalizer for the English language, which converts numbers into their corresponding ordinal string r
 14/// </summary>
 15public sealed class EnglishOrdinalizer : OrdinalizerBase
 16{
 17    /// <summary>
 18    /// Initializes a new instance of the <see cref="EnglishOrdinalizer"/> class.
 19    /// </summary>
 20    internal EnglishOrdinalizer()
 321        : base(SupportedCultures.English)
 22    {
 323    }
 24
 25    /// <inheritdoc/>
 28526    public override string Ordinalize(long number, OrdinalizationOptions? options = null) => $"{number}{GetSuffix(number
 27
 28    /// <summary>
 29    /// Determines the appropriate suffix for a given number based on English ordinalization rules. The method calculate
 30    /// </summary>
 31    /// <param name="number">The number for which to determine the ordinal suffix.</param>
 32    /// <returns>The appropriate ordinal suffix for the given number.</returns>
 33    private static string GetSuffix(long number)
 34    {
 28535        var absolute = Math.Abs(number);
 36
 28537        var lastTwoDigits = absolute % 100;
 38
 28539        return lastTwoDigits is >= 11 and <= 13
 28540            ? "th"
 28541            : (absolute % 10) switch
 28542        {
 6043            1 => "st",
 3944            2 => "nd",
 3045            3 => "rd",
 12946            _ => "th"
 28547        };
 48    }
 49}
 50