PathExtensionsTests.cs 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System;
  2. using Emby.Server.Implementations.Library;
  3. using Xunit;
  4. namespace Jellyfin.Server.Implementations.Tests.Library
  5. {
  6. public class PathExtensionsTests
  7. {
  8. [Theory]
  9. [InlineData("Superman: Red Son [imdbid=tt10985510]", "imdbid", "tt10985510")]
  10. [InlineData("Superman: Red Son - tt10985510", "imdbid", "tt10985510")]
  11. [InlineData("Superman: Red Son", "imdbid", null)]
  12. [InlineData("Superman: Red Son", "something", null)]
  13. [InlineData("Superman: Red Son [imdbid1=tt11111111][imdbid=tt10985510]", "imdbid", "tt10985510")]
  14. [InlineData("Superman: Red Son [tmdbid=618355][imdbid=tt10985510]", "imdbid", "tt10985510")]
  15. [InlineData("Superman: Red Son [tmdbid=618355][imdbid=tt10985510]", "tmdbid", "618355")]
  16. [InlineData("[tmdbid=618355]", "tmdbid", "618355")]
  17. [InlineData("tmdbid=618355][tmdbid=618355]", "tmdbid", "618355")]
  18. [InlineData("[tmdbid=618355]tmdbid=618355]", "tmdbid", "618355")]
  19. [InlineData("tmdbid=618355]", "tmdbid", null)]
  20. [InlineData("[tmdbid=618355", "tmdbid", null)]
  21. [InlineData("tmdbid=618355", "tmdbid", null)]
  22. [InlineData("tmdbid=", "tmdbid", null)]
  23. [InlineData("tmdbid", "tmdbid", null)]
  24. public void GetAttributeValue_ValidArgs_Correct(string input, string attribute, string? expectedResult)
  25. {
  26. Assert.Equal(expectedResult, PathExtensions.GetAttributeValue(input, attribute));
  27. }
  28. [Theory]
  29. [InlineData("", "")]
  30. [InlineData("Superman: Red Son [imdbid=tt10985510]", "")]
  31. [InlineData("", "imdbid")]
  32. public void GetAttributeValue_EmptyString_ThrowsArgumentException(string input, string attribute)
  33. {
  34. Assert.Throws<ArgumentException>(() => PathExtensions.GetAttributeValue(input, attribute));
  35. }
  36. [Theory]
  37. [InlineData("C:/Users/jeff/myfile.mkv", "C:/Users/jeff", "/home/jeff", "/home/jeff/myfile.mkv")]
  38. [InlineData("C:/Users/jeff/myfile.mkv", "C:/Users/jeff/", "/home/jeff", "/home/jeff/myfile.mkv")]
  39. [InlineData("/home/jeff/music/jeff's band/consistently inconsistent.mp3", "/home/jeff/music/jeff's band", "/home/not jeff", "/home/not jeff/consistently inconsistent.mp3")]
  40. [InlineData("C:\\Users\\jeff\\myfile.mkv", "C:\\Users/jeff", "/home/jeff", "/home/jeff/myfile.mkv")]
  41. [InlineData("C:\\Users\\jeff\\myfile.mkv", "C:\\Users/jeff", "/home/jeff/", "/home/jeff/myfile.mkv")]
  42. [InlineData("C:\\Users\\jeff\\myfile.mkv", "C:\\Users/jeff/", "/home/jeff/", "/home/jeff/myfile.mkv")]
  43. [InlineData("C:\\Users\\jeff\\myfile.mkv", "C:\\Users/jeff/", "/", "/myfile.mkv")]
  44. [InlineData("/o", "/o", "/s", "/s")] // regression test for #5977
  45. public void TryReplaceSubPath_ValidArgs_Correct(string path, string subPath, string newSubPath, string? expectedResult)
  46. {
  47. Assert.True(PathExtensions.TryReplaceSubPath(path, subPath, newSubPath, out var result));
  48. Assert.Equal(expectedResult, result);
  49. }
  50. [Theory]
  51. [InlineData(null, null, null)]
  52. [InlineData(null, "/my/path", "/another/path")]
  53. [InlineData("/my/path", null, "/another/path")]
  54. [InlineData("/my/path", "/another/path", null)]
  55. [InlineData("", "", "")]
  56. [InlineData("/my/path", "", "")]
  57. [InlineData("", "/another/path", "")]
  58. [InlineData("", "", "/new/subpath")]
  59. [InlineData("/home/jeff/music/jeff's band/consistently inconsistent.mp3", "/home/jeff/music/not jeff's band", "/home/not jeff")]
  60. public void TryReplaceSubPath_InvalidInput_ReturnsFalseAndNull(string? path, string? subPath, string? newSubPath)
  61. {
  62. Assert.False(PathExtensions.TryReplaceSubPath(path, subPath, newSubPath, out var result));
  63. Assert.Null(result);
  64. }
  65. }
  66. }