<PackageReference Include="NUnit" Version="4.3.1" />

DisplayName

static class DisplayName
using System; using System.Globalization; using System.Runtime.CompilerServices; using System.Text; namespace NUnit.Framework.Internal { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal static class DisplayName { private const string THREE_DOTS = "..."; public static string GetValueString([System.Runtime.CompilerServices.Nullable(2)] object arg, int stringMax) { string text = (arg == null) ? "null" : Convert.ToString(arg, CultureInfo.InvariantCulture); Array array = arg as Array; if (array != null && array.Rank == 1) { if (array.Length == 0) text = "[]"; else { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append('['); int num = Math.Min(array.Length, 5); for (int i = 0; i < num; i++) { if (i > 0) stringBuilder.Append(", "); object value = array.GetValue(i); Array array2 = value as Array; if (array2 != null && array2.Rank == 1) { stringBuilder.Append(array2.GetType().GetElementType().Name); stringBuilder.Append("[]"); } else { string valueString = GetValueString(value, stringMax); stringBuilder.Append(valueString); } } if (array.Length > 5) stringBuilder.Append(", ..."); stringBuilder.Append(']'); text = stringBuilder.ToString(); } } else if (arg is double) { double num2 = (double)arg; if (double.IsNaN(num2)) text = "double.NaN"; else if (double.IsPositiveInfinity(num2)) { text = "double.PositiveInfinity"; } else if (double.IsNegativeInfinity(num2)) { text = "double.NegativeInfinity"; } else if (num2 == 1.7976931348623157E+308) { text = "double.MaxValue"; } else if (num2 == -1.7976931348623157E+308) { text = "double.MinValue"; } else { if (text.IndexOf('.') == -1) text += ".0"; text += "d"; } } else if (arg is float) { float num3 = (float)arg; if (float.IsNaN(num3)) text = "float.NaN"; else if (float.IsPositiveInfinity(num3)) { text = "float.PositiveInfinity"; } else if (float.IsNegativeInfinity(num3)) { text = "float.NegativeInfinity"; } else if (num3 == 3.4028235E+38) { text = "float.MaxValue"; } else if (num3 == -3.4028235E+38) { text = "float.MinValue"; } else { if (text.IndexOf('.') == -1) text += ".0"; text += "f"; } } else if (arg is decimal) { decimal d = (decimal)arg; text = ((d == decimal.MinValue) ? "decimal.MinValue" : ((!(d == decimal.MaxValue)) ? (text + "m") : "decimal.MaxValue")); } else if (arg is long) { long num4 = (long)arg; text = (num4.Equals(-9223372036854775808) ? "long.MinValue" : ((!num4.Equals(9223372036854775807)) ? (text + "L") : "long.MaxValue")); } else if (arg is ulong) { switch ((ulong)arg) { case 0: text = "ulong.MinValue"; break; case ulong.MaxValue: text = "ulong.MaxValue"; break; default: text += "UL"; break; } } else { string text2 = arg as string; if (text2 != null) { bool flag = stringMax > 0 && text2.Length > stringMax; int num5 = flag ? (stringMax - "...".Length) : 0; if (!flag && !MayNeedEscape(text2)) text = "\"" + text2 + "\""; else { StringBuilder stringBuilder2 = new StringBuilder(); stringBuilder2.Append('"'); string text3 = text2; foreach (char c in text3) { stringBuilder2.Append(EscapeCharInString(c)); if (flag && stringBuilder2.Length > num5) { stringBuilder2.Append("..."); break; } } stringBuilder2.Append('"'); text = stringBuilder2.ToString(); } } else if (arg is char) { char c2 = (char)arg; text = "'" + EscapeSingleChar(c2) + "'"; } else if (arg is int) { int num6 = (int)arg; if (num6.Equals(2147483647)) text = "int.MaxValue"; else if (num6.Equals(-2147483648)) { text = "int.MinValue"; } } else if (arg is uint) { uint num7 = (uint)arg; if (num7.Equals(uint.MaxValue)) text = "uint.MaxValue"; else if (num7.Equals(0)) { text = "uint.MinValue"; } } else if (arg is short) { short num8 = (short)arg; if (num8.Equals(short.MaxValue)) text = "short.MaxValue"; else if (num8.Equals(short.MinValue)) { text = "short.MinValue"; } } else if (arg is ushort) { ushort num9 = (ushort)arg; if (num9.Equals(ushort.MaxValue)) text = "ushort.MaxValue"; else if (num9.Equals(0)) { text = "ushort.MinValue"; } } else if (arg is byte) { byte b = (byte)arg; if (b.Equals(byte.MaxValue)) text = "byte.MaxValue"; else if (b.Equals(0)) { text = "byte.MinValue"; } } else if (arg is sbyte) { sbyte b2 = (sbyte)arg; if (b2.Equals(sbyte.MaxValue)) text = "sbyte.MaxValue"; else if (b2.Equals(sbyte.MinValue)) { text = "sbyte.MinValue"; } } else { Exception ex = arg as Exception; if (ex != null) text = FormatException(ex); } } return text; } private static string FormatException(Exception ex) { StringBuilder stringBuilder = new StringBuilder(); for (Exception ex2 = ex; ex2 != null; ex2 = ex2.InnerException) { stringBuilder.Append(ex2.GetType().Name); stringBuilder.Append(": "); stringBuilder.Append(ex2.Message); if (ex2.InnerException != null) stringBuilder.Append(", "); } return stringBuilder.ToString(); } private static bool MayNeedEscape(string s) { foreach (char c in s) { if (MayNeedEscape(c)) return true; } return false; } private static bool MayNeedEscape(char c) { if (!char.IsLetterOrDigit(c) && c != '.' && c != '/' && c != '-') return c != '_'; return false; } private static string EscapeSingleChar(char c) { if (c == '\'') return "\\'"; return EscapeControlChar(c); } private static string EscapeCharInString(char c) { if (c == '"') return "\\\""; return EscapeControlChar(c); } private static string EscapeControlChar(char c) { switch (c) { case '\\': return "\\\\"; case '': return "\\0"; case '': return "\\a"; case '\b': return "\\b"; case ' ': return "\\f"; case '\n': return "\\n"; case '\r': return "\\r"; case '\t': return "\\t"; case ' ': return "\\v"; case '…': case '
': case '
': { DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(2, 1); defaultInterpolatedStringHandler.AppendLiteral("\\x"); defaultInterpolatedStringHandler.AppendFormatted((int)c, "X4"); return defaultInterpolatedStringHandler.ToStringAndClear(); } default: return c.ToString(); } } } }