using System.Collections; using System.Linq; using System.Reflection; using JetBrains.Annotations; using Xunit; using Xunit.Sdk; namespace Kyoo.Tests { /// /// Custom assertions used by Kyoo's tests. /// public static class KAssert { /// /// Check if every property of the item is equal to the other's object. /// /// The value to check against /// The value to check /// The type to check [AssertionMethod] public static void DeepEqual(T expected, T value) { PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Instance | BindingFlags.Public); foreach (PropertyInfo property in properties) Assert.Equal(property.GetValue(expected), property.GetValue(value)); if (!properties.Any()) Assert.Equal(expected, value); } /// /// Explicitly fail a test. /// [AssertionMethod] public static void Fail() { throw new XunitException(); } /// /// Explicitly fail a test. /// /// The message that will be seen in the test report [AssertionMethod] public static void Fail(string message) { throw new XunitException(message); } } }