< Summary - Core.Tests

Information
Class: Common.Core.Converters.StringConverter
Assembly: Common.Core
File(s): D:\a\NuGetPackages\NuGetPackages\src\Common\Core\Converters\StringConverter.cs
Tag: 3_8508158812
Line coverage
100%
Covered lines: 76
Uncovered lines: 0
Coverable lines: 76
Total lines: 215
Line coverage: 100%
Branch coverage
100%
Covered branches: 22
Total branches: 22
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CheckBoolStr(...)100%1212100%
TryParse(...)100%22100%
TryParse(...)100%11100%
TryParse(...)100%11100%
TryParse(...)100%11100%
TryParse(...)100%11100%
TryParse(...)100%11100%
TryParse(...)100%22100%
TryParse(...)100%22100%
TryParse(...)100%22100%
TryParse(...)100%11100%
TryParse(...)100%11100%
TryParse(...)100%11100%
TryParse(...)100%11100%
TryParse(...)100%11100%
TryParse(...)100%22100%
TryParse(...)100%11100%
TryParse(...)100%11100%
TryParse(...)100%11100%

File(s)

D:\a\NuGetPackages\NuGetPackages\src\Common\Core\Converters\StringConverter.cs

#LineLine coverage
 1using System.Globalization;
 2
 3namespace Common.Core.Converters;
 4
 5// https://learn.microsoft.com/en-us/dotnet/api/system.globalization.numberstyles
 6
 7/// <summary>Helper class to convert strings to other data types.</summary>
 8public static class StringConverter
 9{
 10  private static string CheckBoolStr( string value )
 2311  {
 4912    if( value[0] is '0' or 'n' ) { return bool.FalseString; }
 2613    else if( value[0] is '1' or 'y' ) { return bool.TrueString; }
 214    return value;
 2315  }
 16
 17  /// <summary>Tries to convert the specified string to its System.Boolean equivalent.</summary>
 18  /// <param name="value">A string containing the value to convert.</param>
 19  /// <param name="result">If the conversion succeeded, contains the value.</param>
 20  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 21  public static bool TryParse( ref string value, out bool result )
 2422  {
 9323    if( !string.IsNullOrWhiteSpace( value ) ) { value = CheckBoolStr( value.ToLower().Trim() ); }
 2424    return bool.TryParse( value, out result );
 2425  }
 26
 27  /// <summary>Tries to convert the specified string to its System.Byte equivalent.</summary>
 28  /// <param name="value">A string containing the value to convert.</param>
 29  /// <param name="result">If the conversion succeeded, contains the value.</param>
 30  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 31  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 32  public static bool TryParse( ref string value, out byte result, CultureInfo? culture = null )
 133  {
 134    return byte.TryParse( value, NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingWhite,
 135      culture, out result );
 136  }
 37
 38  /// <summary>Tries to convert the specified string to its System.DateOnly equivalent.</summary>
 39  /// <param name="value">A string containing the value to convert.</param>
 40  /// <param name="result">If the conversion succeeded, contains the value.</param>
 41  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 42  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 43  public static bool TryParse( ref string value, out DateOnly result, CultureInfo? culture = null )
 344  {
 345    return DateOnly.TryParse( value, culture, DateTimeStyles.None, out result );
 346  }
 47
 48  /// <summary>Tries to convert the specified string to its System.DateTime equivalent.</summary>
 49  /// <param name="value">A string containing the value to convert.</param>
 50  /// <param name="result">If the conversion succeeded, contains the value.</param>
 51  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 52  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 53  public static bool TryParse( ref string value, out DateTime result, CultureInfo? culture = null )
 154  {
 155    return DateTime.TryParse( value, culture, DateTimeStyles.None, out result );
 156  }
 57
 58  /// <summary>Tries to convert the specified string to its System.DateTimeOffset equivalent.</summary>
 59  /// <param name="value">A string containing the value to convert.</param>
 60  /// <param name="result">If the conversion succeeded, contains the value.</param>
 61  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 62  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 63  public static bool TryParse( ref string value, out DateTimeOffset result, CultureInfo? culture = null )
 164  {
 165    return DateTimeOffset.TryParse( value, culture, DateTimeStyles.None, out result );
 166  }
 67
 68  /// <summary>Tries to convert the specified string to its System.Decimal equivalent.</summary>
 69  /// <param name="value">A string containing the value to convert.</param>
 70  /// <param name="result">If the conversion succeeded, contains the value.</param>
 71  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 72  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 73  public static bool TryParse( ref string value, out decimal result, CultureInfo? culture = null )
 374  {
 375    return decimal.TryParse( value, NumberStyles.Currency, culture, out result );
 376  }
 77
 78  /// <summary>Tries to convert the specified string to its System.Double equivalent.</summary>
 79  /// <param name="value">A string containing the value to convert.</param>
 80  /// <param name="result">If the conversion succeeded, contains the value.</param>
 81  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 82  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 83  public static bool TryParse( ref string value, out double result, CultureInfo? culture = null )
 284  {
 285    result = 0;
 486    if( string.IsNullOrWhiteSpace( value ) ) { return false; }
 87
 188    return double.TryParse( value, NumberStyles.Number, culture, out result );
 289  }
 90
 91  /// <summary>Tries to convert the specified string to its System.Single (float) equivalent.</summary>
 92  /// <param name="value">A string containing the value to convert.</param>
 93  /// <param name="result">If the conversion succeeded, contains the value.</param>
 94  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 95  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 96  public static bool TryParse( ref string value, out float result, CultureInfo? culture = null )
 297  {
 298    result = 0;
 499    if( string.IsNullOrWhiteSpace( value ) ) { return false; }
 100
 1101    return float.TryParse( value, NumberStyles.Number, culture, out result );
 2102  }
 103
 104  /// <summary>Tries to convert the specified string to its System.Guid equivalent.</summary>
 105  /// <param name="value">A string containing the value to convert.</param>
 106  /// <param name="result">If the conversion succeeded, contains the value.</param>
 107  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 108  public static bool TryParse( ref string value, out Guid result )
 2109  {
 2110    result = Guid.Empty;
 4111    if( string.IsNullOrWhiteSpace( value ) ) { return false; }
 112
 1113    return Guid.TryParse( value, out result );
 2114  }
 115
 116  /// <summary>Tries to convert the specified string to its System.Int32 (integer) equivalent.</summary>
 117  /// <param name="value">A string containing the value to convert.</param>
 118  /// <param name="result">If the conversion succeeded, contains the value.</param>
 119  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 120  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 121  public static bool TryParse( ref string value, out int result, CultureInfo? culture = null )
 4122  {
 4123    return int.TryParse( value, NumberStyles.Integer | NumberStyles.AllowThousands |
 4124      NumberStyles.AllowTrailingSign, culture, out result );
 4125  }
 126
 127  /// <summary>Tries to convert the specified string to its System.Int64 (long) equivalent.</summary>
 128  /// <param name="value">A string containing the value to convert.</param>
 129  /// <param name="result">If the conversion succeeded, contains the value.</param>
 130  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 131  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 132  public static bool TryParse( ref string value, out long result, CultureInfo? culture = null )
 1133  {
 1134    return long.TryParse( value, NumberStyles.Integer | NumberStyles.AllowThousands |
 1135      NumberStyles.AllowTrailingSign, culture, out result );
 1136  }
 137
 138  /// <summary>Tries to convert the specified string to its System.SByte equivalent.</summary>
 139  /// <param name="value">A string containing the value to convert.</param>
 140  /// <param name="result">If the conversion succeeded, contains the value.</param>
 141  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 142  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 143  public static bool TryParse( ref string value, out sbyte result, CultureInfo? culture = null )
 1144  {
 1145    return sbyte.TryParse( value, NumberStyles.None, culture, out result );
 1146  }
 147
 148  /// <summary>Tries to convert the specified string to its System.Int16 (short) equivalent.</summary>
 149  /// <param name="value">A string containing the value to convert.</param>
 150  /// <param name="result">If the conversion succeeded, contains the value.</param>
 151  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 152  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 153  public static bool TryParse( ref string value, out short result, CultureInfo? culture = null )
 1154  {
 1155    return short.TryParse( value, NumberStyles.Integer | NumberStyles.AllowThousands |
 1156      NumberStyles.AllowTrailingSign, culture, out result );
 1157  }
 158
 159  /// <summary>Tries to convert the specified string to its System.TimeOnly equivalent.</summary>
 160  /// <param name="value">A string containing the value to convert.</param>
 161  /// <param name="result">If the conversion succeeded, contains the value.</param>
 162  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 163  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 164  public static bool TryParse( ref string value, out TimeOnly result, CultureInfo? culture = null )
 1165  {
 1166    return TimeOnly.TryParse( value, culture, DateTimeStyles.None, out result );
 1167  }
 168
 169  /// <summary>Tries to convert the specified string to its System.TimeSpan equivalent.</summary>
 170  /// <param name="value">A string containing the value to convert.</param>
 171  /// <param name="result">If the conversion succeeded, contains the value.</param>
 172  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 173  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 174  public static bool TryParse( ref string value, out TimeSpan result, CultureInfo? culture = null )
 1175  {
 1176    value = value.Trim();
 1177    if( value.EndsWith( '-' ) ) // Handle trailing negative sign
 3178    { value = string.Concat( "-", value.AsSpan( 0, value.Length - 1 ) ); }
 179
 1180    return TimeSpan.TryParse( value, culture, out result );
 1181  }
 182
 183  /// <summary>Tries to convert the specified string to its System.UInt32 (unsigned integer) equivalent.</summary>
 184  /// <param name="value">A string containing the value to convert.</param>
 185  /// <param name="result">If the conversion succeeded, contains the value.</param>
 186  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 187  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 188  public static bool TryParse( ref string value, out uint result, CultureInfo? culture = null )
 1189  {
 1190    return uint.TryParse( value, NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingWhite |
 1191      NumberStyles.AllowThousands, culture, out result );
 1192  }
 193
 194  /// <summary>Tries to convert the specified string to its System.UInt64 (unsigned long) equivalent.</summary>
 195  /// <param name="value">A string containing the value to convert.</param>
 196  /// <param name="result">If the conversion succeeded, contains the value.</param>
 197  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 198  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 199  public static bool TryParse( ref string value, out ulong result, CultureInfo? culture = null )
 1200  {
 1201    return ulong.TryParse( value, NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingWhite |
 1202      NumberStyles.AllowThousands, culture, out result );
 1203  }
 204
 205  /// <summary>Tries to convert the specified string to its System.UInt16 (unsigned short) equivalent.</summary>
 206  /// <param name="value">A string containing the value to convert.</param>
 207  /// <param name="result">If the conversion succeeded, contains the value.</param>
 208  /// <param name="culture">An object that provides culture-specific formatting information.</param>
 209  /// <returns><see langword="true"/> if value was converted successfully.</returns>
 210  public static bool TryParse( ref string value, out ushort result, CultureInfo? culture = null )
 1211  {
 1212    return ushort.TryParse( value, NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingWhite |
 1213      NumberStyles.AllowThousands, culture, out result );
 1214  }
 215}