XmlTvReaderLanguageTests.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using System.Threading;
  5. using Emby.XmlTv.Classes;
  6. using NUnit.Framework;
  7. namespace Jellyfin.XmlTv.Test
  8. {
  9. [TestFixture]
  10. public class XmlTvReaderLanguageTests
  11. {
  12. private string _testFilePath;
  13. [SetUp]
  14. public void BeforeEachTest()
  15. {
  16. _testFilePath = Path.GetFullPath(Path.Combine("XmlFiles", "MultilanguageData.xml"));
  17. }
  18. /*
  19. <title lang="es">Homes Under the Hammer - Spanish</title>
  20. <title lang="es">Homes Under the Hammer - Spanish 2</title>
  21. <title lang="en">Homes Under the Hammer - English</title>
  22. <title lang="en">Homes Under the Hammer - English 2</title>
  23. <title lang="">Homes Under the Hammer - Empty Language</title>
  24. <title lang="">Homes Under the Hammer - Empty Language 2</title>
  25. <title>Homes Under the Hammer - No Language</title>
  26. <title>Homes Under the Hammer - No Language 2</title>
  27. */
  28. /* Expected Behaviour:
  29. - Language = Null Homes Under the Hammer - No Language
  30. - Language = "" Homes Under the Hammer - No Language
  31. - Language = es Homes Under the Hammer - Spanish
  32. - Language = en Homes Under the Hammer - English
  33. */
  34. [Test]
  35. public void Should_Return_The_First_Matching_Language_ES()
  36. {
  37. var reader = new XmlTvReader(_testFilePath, "es");
  38. var channel = reader.GetChannels().FirstOrDefault();
  39. Assert.IsNotNull(channel);
  40. var startDate = new DateTime(2015, 11, 26);
  41. var cancellationToken = new CancellationToken();
  42. var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault();
  43. Assert.IsNotNull(programme);
  44. Assert.AreEqual("Homes Under the Hammer - Spanish", programme.Title);
  45. Assert.AreEqual(1, programme.Categories.Count);
  46. Assert.AreEqual("Property - Spanish", programme.Categories[0]);
  47. }
  48. [Test]
  49. public void Should_Return_The_First_Matching_Language_EN()
  50. {
  51. var reader = new XmlTvReader(_testFilePath, "en");
  52. var channel = reader.GetChannels().FirstOrDefault();
  53. Assert.IsNotNull(channel);
  54. var startDate = new DateTime(2015, 11, 26);
  55. var cancellationToken = new CancellationToken();
  56. var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault();
  57. Assert.IsNotNull(programme);
  58. Assert.AreEqual("Homes Under the Hammer - English", programme.Title);
  59. Assert.AreEqual(1, programme.Categories.Count);
  60. Assert.AreEqual("Property - English", programme.Categories[0]);
  61. }
  62. [Test]
  63. public void Should_Return_The_First_Matching_With_No_Language()
  64. {
  65. var reader = new XmlTvReader(_testFilePath, null);
  66. var channel = reader.GetChannels().FirstOrDefault();
  67. Assert.IsNotNull(channel);
  68. var startDate = new DateTime(2015, 11, 26);
  69. var cancellationToken = new CancellationToken();
  70. var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault();
  71. Assert.IsNotNull(programme);
  72. Assert.AreEqual("Homes Under the Hammer - No Language", programme.Title);
  73. Assert.AreEqual(1, programme.Categories.Count);
  74. Assert.AreEqual("Property - No Language", programme.Categories[0]);
  75. }
  76. [Test]
  77. public void Should_Return_The_First_Matching_With_Empty_Language()
  78. {
  79. var reader = new XmlTvReader(_testFilePath, String.Empty);
  80. var channel = reader.GetChannels().FirstOrDefault();
  81. Assert.IsNotNull(channel);
  82. var startDate = new DateTime(2015, 11, 26);
  83. var cancellationToken = new CancellationToken();
  84. var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault();
  85. Assert.IsNotNull(programme);
  86. Assert.AreEqual("Homes Under the Hammer - Empty Language", programme.Title);
  87. Assert.AreEqual(1, programme.Categories.Count);
  88. Assert.AreEqual("Property - Empty Language", programme.Categories[0]);
  89. }
  90. [Test]
  91. public void Should_Return_The_First_When_NoMatchFound()
  92. {
  93. var reader = new XmlTvReader(_testFilePath, "es"); // There are no titles or categories for spanish
  94. var channel = reader.GetChannels().FirstOrDefault();
  95. Assert.IsNotNull(channel);
  96. var startDate = new DateTime(2015, 11, 26);
  97. var cancellationToken = new CancellationToken();
  98. var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).Skip(1).FirstOrDefault();
  99. Assert.IsNotNull(programme);
  100. Assert.AreEqual("Homes Under the Hammer - English", programme.Title);
  101. // Should return all categories
  102. Assert.AreEqual(2, programme.Categories.Count);
  103. Assert.IsTrue(programme.Categories.Contains("Property - English"));
  104. Assert.IsTrue(programme.Categories.Contains("Property - Empty Language"));
  105. }
  106. [Test]
  107. public void Should_Return_The_First_When_NoLanguage()
  108. {
  109. var reader = new XmlTvReader(_testFilePath, null);
  110. var channel = reader.GetChannels().FirstOrDefault();
  111. Assert.IsNotNull(channel);
  112. var startDate = new DateTime(2015, 11, 26);
  113. var cancellationToken = new CancellationToken();
  114. var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).Skip(1).FirstOrDefault();
  115. Assert.IsNotNull(programme);
  116. Assert.AreEqual("Homes Under the Hammer - English", programme.Title); // Should return the first in the list
  117. // Should return all categories
  118. Assert.AreEqual(2, programme.Categories.Count);
  119. Assert.IsTrue(programme.Categories.Contains("Property - English"));
  120. Assert.IsTrue(programme.Categories.Contains("Property - Empty Language"));
  121. }
  122. [Test]
  123. public void Should_Return_All_Languages()
  124. {
  125. var reader = new XmlTvReader(_testFilePath);
  126. var cancellationToken = new CancellationToken();
  127. var results = reader.GetLanguages(cancellationToken);
  128. Assert.IsNotNull(results);
  129. foreach (var result in results)
  130. {
  131. Console.WriteLine("{0} - {1}", result.Name, result.Relevance);
  132. }
  133. Assert.AreEqual(2, results.Count);
  134. Assert.AreEqual("en", results[0].Name);
  135. Assert.AreEqual(11, results[0].Relevance);
  136. Assert.AreEqual("es", results[1].Name);
  137. Assert.AreEqual(3, results[1].Relevance);
  138. }
  139. }
  140. }