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)
{
foreach (PropertyInfo property in typeof(T).GetProperties(BindingFlags.Instance))
Assert.Equal(property.GetValue(expected), property.GetValue(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);
}
}
}