diff --git a/tests/Jellyfin.XmlTv.Test/XmlTvReaderTests.cs b/tests/Jellyfin.XmlTv.Test/XmlTvReaderTests.cs new file mode 100644 index 0000000000..d440819703 --- /dev/null +++ b/tests/Jellyfin.XmlTv.Test/XmlTvReaderTests.cs @@ -0,0 +1,217 @@ +using System; +using System.IO; +using System.Linq; +using System.Threading; +using Emby.XmlTv.Classes; +using NUnit.Framework; + +namespace Jellyfin.XmlTv.Test +{ + [TestFixture] + public class XmlTvReaderTests + { + private string _ukDataPath; + private string _esDataPath; + private string _honeybeeDataPath; + + [SetUp] + public void BeforeEachTest() + { + _ukDataPath = Path.GetFullPath(Path.Combine("XmlFiles", "UK_Data.xml")); + _esDataPath = Path.GetFullPath(Path.Combine("XmlFiles", "ES_MultiLanguageData.xml")); + _honeybeeDataPath = Path.GetFullPath(Path.Combine("XmlFiles", "honeybee.xml")); + } + + [Test] + public void UK_DataTest_ChannelsTest() + { + var reader = new XmlTvReader(_ukDataPath); + + var channels = reader.GetChannels().ToList(); + Assert.AreEqual(5, channels.Count); + + // Check each channel + var channel = channels.SingleOrDefault(c => c.Id == "UK_RT_2667"); + Assert.IsNotNull(channel); + Assert.AreEqual("BBC1 HD", channel.DisplayName); + Assert.AreEqual("7.1", channel.Number); + Assert.IsNotNull(channel.Icon); + Assert.AreEqual("Logo_UK_RT_2667", channel.Icon.Source); + Assert.AreEqual(100, channel.Icon.Width); + Assert.AreEqual(200, channel.Icon.Height); + + channel = channels.SingleOrDefault(c => c.Id == "UK_RT_105"); + Assert.IsNotNull(channel); + Assert.AreEqual("BBC2", channel.DisplayName); + Assert.IsNotNull(channel.Icon); + Assert.AreEqual("Logo_UK_RT_105", channel.Icon.Source); + Assert.IsFalse(channel.Icon.Width.HasValue); + Assert.IsFalse(channel.Icon.Height.HasValue); + + channel = channels.SingleOrDefault(c => c.Id == "UK_RT_2118"); + Assert.IsNotNull(channel); + Assert.AreEqual("ITV1 HD", channel.DisplayName); + Assert.IsNotNull(channel.Icon); + Assert.AreEqual("Logo_UK_RT_2118", channel.Icon.Source); + Assert.AreEqual(100, channel.Icon.Width); + Assert.IsFalse(channel.Icon.Height.HasValue); + + channel = channels.SingleOrDefault(c => c.Id == "UK_RT_2056"); + Assert.IsNotNull(channel); + Assert.AreEqual("Channel 4 HD", channel.DisplayName); + Assert.IsNotNull(channel.Icon); + Assert.AreEqual("Logo_UK_RT_2056", channel.Icon.Source); + Assert.IsFalse(channel.Icon.Width.HasValue); + Assert.AreEqual(200, channel.Icon.Height); + + channel = channels.SingleOrDefault(c => c.Id == "UK_RT_134"); + Assert.IsNotNull(channel); + Assert.AreEqual("Channel 5", channel.DisplayName); + Assert.IsNull(channel.Icon); + } + + [Test] + public void UK_DataTest_GeneralTest() + { + var reader = new XmlTvReader(_ukDataPath, null); + + var channels = reader.GetChannels().ToList(); + Assert.AreEqual(5, channels.Count); + + // Pick a channel to check the data for + var channel = channels.SingleOrDefault(c => c.Id == "UK_RT_2056"); + Assert.IsNotNull(channel); + + var startDate = new DateTime(2015, 11, 26); + var cancellationToken = new CancellationToken(); + var programmes = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).ToList(); + + Assert.AreEqual(27, programmes.Count); + var programme = programmes.SingleOrDefault(p => p.Title == "The Secret Life of"); + + Assert.IsNotNull(programme); + Assert.AreEqual(new DateTime(2015, 11, 26, 20, 0, 0), programme.StartDate); + Assert.AreEqual(new DateTime(2015, 11, 26, 21, 0, 0), programme.EndDate); + Assert.AreEqual("Cameras follow the youngsters' development after two weeks apart and time has made the heart grow fonder for Alfie and Emily, who are clearly happy to be back together. And although Alfie struggled to empathise with the rest of his peers before, a painting competition proves to be a turning point for him. George takes the children's rejection of his family recipe to heart, but goes on to triumph elsewhere, and romance is in the air when newcomer Sienna captures Arthur's heart.", programme.Description); + Assert.AreEqual("Documentary", programme.Categories.Single()); + Assert.IsNotNull(programme.Episode); + Assert.AreEqual("The Secret Life of 5 Year Olds", programme.Episode.Title); + Assert.AreEqual(1, programme.Episode.Series); + Assert.IsNull(programme.Episode.SeriesCount); + Assert.AreEqual(4, programme.Episode.Episode); + Assert.AreEqual(6, programme.Episode.EpisodeCount); + Assert.IsNotNull(programme.Premiere); + //Assert.AreEqual("First showing on national terrestrial TV", programme.Premiere.Details); + Assert.IsTrue(programme.IsNew); + } + + [Test] + public void UK_DataTest_MultipleTitles_SameLanguage_Should_ReturnFirstValue() + { + var reader = new XmlTvReader(_ukDataPath, null); + + /* +