// Kyoo - A portable and vast media library solution. // Copyright (c) Kyoo. // // See AUTHORS.md and LICENSE file in the project root for full license information. // // Kyoo is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // Kyoo is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Kyoo. If not, see . using System; using System.Security.Cryptography; using FluentAssertions; using JetBrains.Annotations; using Kyoo.Abstractions.Models; 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) { if (expected is IAddedDate ea && value is IAddedDate va) { ea.AddedDate = DateTime.UnixEpoch; va.AddedDate = DateTime.UnixEpoch; } value.Should().BeEquivalentTo(expected); } /// /// Explicitly fail a test. /// [AssertionMethod] public static void Fail() { throw new XunitException("Explicit fail"); } /// /// 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); } public static Guid AsGuid(this string src) { // Use MD5 since (1) it's faster then SHA and (2) it's already 16 bytes which matches the Guid return string.IsNullOrWhiteSpace(src) ? Guid.Empty : new Guid(MD5.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes(src))); } public static Guid AsGuid(this int src) { // Use MD5 since (1) it's faster then SHA and (2) it's already 16 bytes which matches the Guid return src == 0 ? Guid.Empty : new Guid(MD5.Create().ComputeHash(BitConverter.GetBytes(src))); } } }