SubtitleParserTests.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using Emby.Naming.Common;
  3. using Emby.Naming.Subtitles;
  4. using Xunit;
  5. namespace Jellyfin.Naming.Tests.Subtitles
  6. {
  7. public class SubtitleParserTests
  8. {
  9. private readonly NamingOptions _namingOptions = new NamingOptions();
  10. [Theory]
  11. [InlineData("The Skin I Live In (2011).srt", null, false, false)]
  12. [InlineData("The Skin I Live In (2011).eng.srt", "eng", false, false)]
  13. [InlineData("The Skin I Live In (2011).eng.default.srt", "eng", true, false)]
  14. [InlineData("The Skin I Live In (2011).eng.forced.srt", "eng", false, true)]
  15. [InlineData("The Skin I Live In (2011).eng.foreign.srt", "eng", false, true)]
  16. [InlineData("The Skin I Live In (2011).eng.default.foreign.srt", "eng", true, true)]
  17. [InlineData("The Skin I Live In (2011).default.foreign.eng.srt", "eng", true, true)]
  18. public void SubtitleParser_ValidFileName_Parses(string input, string language, bool isDefault, bool isForced)
  19. {
  20. var parser = new SubtitleParser(_namingOptions);
  21. var result = parser.ParseFile(input);
  22. Assert.Equal(language, result?.Language, true);
  23. Assert.Equal(isDefault, result?.IsDefault);
  24. Assert.Equal(isForced, result?.IsForced);
  25. }
  26. [Theory]
  27. [InlineData("The Skin I Live In (2011).mp4")]
  28. public void SubtitleParser_InvalidFileName_ReturnsNull(string input)
  29. {
  30. var parser = new SubtitleParser(_namingOptions);
  31. Assert.Null(parser.ParseFile(input));
  32. }
  33. [Fact]
  34. public void SubtitleParser_EmptyFileName_ThrowsArgumentException()
  35. {
  36. Assert.Throws<ArgumentException>(() => new SubtitleParser(_namingOptions).ParseFile(string.Empty));
  37. }
  38. }
  39. }