|
|
|
@ -1,6 +1,7 @@ |
|
|
|
// Copyright (c) Six Labors.
|
|
|
|
// Licensed under the Six Labors Split License.
|
|
|
|
|
|
|
|
using System.Collections; |
|
|
|
using System.Reflection; |
|
|
|
using System.Text; |
|
|
|
using SixLabors.ImageSharp.Formats.Heif.Av1; |
|
|
|
@ -101,24 +102,62 @@ public class ObuFrameHeaderTests |
|
|
|
Assert.Equal(PrettyPrintProperties(obuReader1.FrameHeader.TilesInfo), PrettyPrintProperties(obuReader2.FrameHeader.TilesInfo)); |
|
|
|
} |
|
|
|
|
|
|
|
private static string PrettyPrintProperties(object obj) |
|
|
|
private static readonly char[] spaces = " ".ToCharArray(); |
|
|
|
|
|
|
|
private static string PrettyPrintProperties(object obj, int indent = 0) |
|
|
|
{ |
|
|
|
StringBuilder builder = new(); |
|
|
|
builder.Append(obj.GetType().Name); |
|
|
|
builder.AppendLine("{"); |
|
|
|
indent += 2; |
|
|
|
MemberInfo[] properties = obj.GetType().FindMembers(MemberTypes.Property, BindingFlags.Instance | BindingFlags.Public, null, null); |
|
|
|
foreach (MemberInfo member in properties) |
|
|
|
{ |
|
|
|
builder.Append(spaces, 0, indent); |
|
|
|
if (member is PropertyInfo property) |
|
|
|
{ |
|
|
|
builder.Append(property.Name); |
|
|
|
builder.Append(" = "); |
|
|
|
object value = property.GetValue(obj) ?? "NULL"; |
|
|
|
builder.AppendLine(value.ToString()); |
|
|
|
PrettyPrintValue(builder, value, indent); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
indent -= 2; |
|
|
|
builder.Append(spaces, 0, indent); |
|
|
|
builder.AppendLine("}"); |
|
|
|
return builder.ToString(); |
|
|
|
} |
|
|
|
|
|
|
|
private static void PrettyPrintValue(StringBuilder builder, object value, int indent) |
|
|
|
{ |
|
|
|
if (value.GetType() == typeof(string)) |
|
|
|
{ |
|
|
|
builder.AppendLine(value.ToString()); |
|
|
|
} |
|
|
|
else if (value.GetType().IsArray) |
|
|
|
{ |
|
|
|
builder.AppendLine("["); |
|
|
|
indent += 2; |
|
|
|
builder.Append(spaces, 0, indent); |
|
|
|
Type elementType = value.GetType().GetElementType(); |
|
|
|
IList list = value as IList; |
|
|
|
foreach (object item in list) |
|
|
|
{ |
|
|
|
PrettyPrintValue(builder, item, indent); |
|
|
|
} |
|
|
|
|
|
|
|
indent -= 2; |
|
|
|
builder.Append(spaces, 0, indent); |
|
|
|
builder.AppendLine("]"); |
|
|
|
} |
|
|
|
else if (value.GetType().IsClass) |
|
|
|
{ |
|
|
|
builder.AppendLine(PrettyPrintProperties(value, indent)); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
builder.AppendLine(value.ToString()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|