2
0

BaseItemKindTests.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using MediaBrowser.Controller.Entities;
  6. using Xunit;
  7. namespace Jellyfin.Server.Implementations.Tests.BaseItem
  8. {
  9. public class BaseItemKindTests
  10. {
  11. [Theory]
  12. [ClassData(typeof(GetBaseItemDescendant))]
  13. public void BaseKindEnumTest(Type baseItemDescendantType)
  14. {
  15. var defaultConstructor = baseItemDescendantType.GetConstructor(Type.EmptyTypes);
  16. Assert.NotNull(defaultConstructor);
  17. if (defaultConstructor != null)
  18. {
  19. var instance = (MediaBrowser.Controller.Entities.BaseItem)defaultConstructor.Invoke(null);
  20. var exception = Record.Exception(() => instance.GetBaseItemKind());
  21. Assert.Null(exception);
  22. }
  23. }
  24. private static bool IsProjectAssemblyName(string? name)
  25. {
  26. if (name == null)
  27. {
  28. return false;
  29. }
  30. return name.Contains("Jellyfin", StringComparison.InvariantCulture)
  31. || name.Contains("Emby", StringComparison.InvariantCulture)
  32. || name.Contains("MediaBrowser", StringComparison.InvariantCulture)
  33. || name.Contains("RSSDP", StringComparison.InvariantCulture);
  34. }
  35. private class GetBaseItemDescendant : IEnumerable<object?[]>
  36. {
  37. public IEnumerator<object?[]> GetEnumerator()
  38. {
  39. var projectAssemblies = AppDomain.CurrentDomain.GetAssemblies()
  40. .Where(x => IsProjectAssemblyName(x.FullName));
  41. foreach (var projectAssembly in projectAssemblies)
  42. {
  43. var baseItemDescendantTypes = projectAssembly.GetTypes()
  44. .Where(targetType => targetType.IsClass && !targetType.IsAbstract && targetType.IsSubclassOf(typeof(MediaBrowser.Controller.Entities.BaseItem)));
  45. foreach (var descendantType in baseItemDescendantTypes)
  46. {
  47. yield return new object?[] { descendantType };
  48. }
  49. }
  50. }
  51. IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
  52. }
  53. }
  54. }