XmlTvReaderLanguageTests.cs 7.7 KB

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