// 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.Linq.Expressions; using System.Reflection; using Kyoo.Abstractions.Models; using Xunit; using KUtility = Kyoo.Utils.Utility; namespace Kyoo.Tests.Utility { public class UtilityTests { [Fact] public void IsPropertyExpression_Tests() { Expression> member = x => x.Id; Expression> memberCast = x => x.Id; Assert.True(KUtility.IsPropertyExpression(member)); Assert.True(KUtility.IsPropertyExpression(memberCast)); Expression> call = x => x.ToString(); Assert.False(KUtility.IsPropertyExpression(call)); } [Fact] public void GetPropertyName_Test() { Expression> member = x => x.Id; Expression> memberCast = x => x.Id; Assert.Equal("Id", KUtility.GetPropertyName(member)); Assert.Equal("Id", KUtility.GetPropertyName(memberCast)); } [Fact] public void GetMethodTest() { MethodInfo method = KUtility.GetMethod( typeof(UtilityTests), BindingFlags.Instance | BindingFlags.Public, nameof(GetMethodTest), Array.Empty(), Array.Empty() ); Assert.Equal(MethodBase.GetCurrentMethod(), method); } [Fact] public void GetMethodInvalidGenericsTest() { Assert.Throws( () => KUtility.GetMethod( typeof(UtilityTests), BindingFlags.Instance | BindingFlags.Public, nameof(GetMethodTest), new[] { typeof(KUtility) }, Array.Empty() ) ); } [Fact] public void GetMethodInvalidParamsTest() { Assert.Throws( () => KUtility.GetMethod( typeof(UtilityTests), BindingFlags.Instance | BindingFlags.Public, nameof(GetMethodTest), Array.Empty(), new object[] { this } ) ); } } }