Load data files

pull/1154/head
Ben Magee 6 years ago
parent 6ce4672b10
commit 757d3e7c7d

@ -20,4 +20,10 @@
<ProjectReference Include="..\..\Emby.XmlTv\Emby.XmlTv\Emby.XmlTv.csproj" /> <ProjectReference Include="..\..\Emby.XmlTv\Emby.XmlTv\Emby.XmlTv.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Content Include="XmlFiles\*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project> </Project>

@ -8,11 +8,18 @@ namespace Jellyfin.XmlTv.Test
[TestFixture] [TestFixture]
public class XmlTvReaderDateTimeTests public class XmlTvReaderDateTimeTests
{ {
private string _testFilePath;
[SetUp]
public void BeforeEachTest()
{
_testFilePath = Path.GetFullPath(Path.Combine("XmlFiles", "MultilanguageData.xml"));
}
[Test] [Test]
public void ShouldHandlePartDates() public void ShouldHandlePartDates()
{ {
var testFile = Path.GetFullPath(@"MultilanguageData.xml"); var reader = new XmlTvReader(_testFilePath, "es");
var reader = new XmlTvReader(testFile, "es");
Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("2016")); Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("2016"));
Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("201601")); Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("201601"));
@ -25,8 +32,7 @@ namespace Jellyfin.XmlTv.Test
[Test] [Test]
public void ShouldHandleDateWithOffset() public void ShouldHandleDateWithOffset()
{ {
var testFile = Path.GetFullPath(@"MultilanguageData.xml"); var reader = new XmlTvReader(_testFilePath, "es");
var reader = new XmlTvReader(testFile, "es");
// parse variations on 1:00AM // parse variations on 1:00AM
Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +0000")); Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +0000"));
@ -44,8 +50,7 @@ namespace Jellyfin.XmlTv.Test
[Test] [Test]
public void ShouldHandlePartDatesWithOffset() public void ShouldHandlePartDatesWithOffset()
{ {
var testFile = Path.GetFullPath(@"MultilanguageData.xml"); var reader = new XmlTvReader(_testFilePath, "es");
var reader = new XmlTvReader(testFile, "es");
Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("2016 -0100")); Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("2016 -0100"));
Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("201601 -0100")); Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("201601 -0100"));
@ -58,8 +63,7 @@ namespace Jellyfin.XmlTv.Test
[Test] [Test]
public void ShouldHandleSpaces() public void ShouldHandleSpaces()
{ {
var testFile = Path.GetFullPath(@"MultilanguageData.xml"); var reader = new XmlTvReader(_testFilePath, "es");
var reader = new XmlTvReader(testFile, "es");
// parse variations on 1:00AM // parse variations on 1:00AM
Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +000")); Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +000"));
@ -70,8 +74,7 @@ namespace Jellyfin.XmlTv.Test
[Test] [Test]
public void ShouldHandleSpaces2() public void ShouldHandleSpaces2()
{ {
var testFile = Path.GetFullPath(@"MultilanguageData.xml"); var reader = new XmlTvReader(_testFilePath, "es");
var reader = new XmlTvReader(testFile, "es");
// parse variations on 1:00AM // parse variations on 1:00AM
Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 0")); Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 0"));

@ -0,0 +1,173 @@
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 XmlTvReaderLanguageTests
{
private string _testFilePath;
[SetUp]
public void BeforeEachTest()
{
_testFilePath = Path.GetFullPath(Path.Combine("XmlFiles", "MultilanguageData.xml"));
}
/*
<title lang="es">Homes Under the Hammer - Spanish</title>
<title lang="es">Homes Under the Hammer - Spanish 2</title>
<title lang="en">Homes Under the Hammer - English</title>
<title lang="en">Homes Under the Hammer - English 2</title>
<title lang="">Homes Under the Hammer - Empty Language</title>
<title lang="">Homes Under the Hammer - Empty Language 2</title>
<title>Homes Under the Hammer - No Language</title>
<title>Homes Under the Hammer - No Language 2</title>
*/
/* Expected Behaviour:
- Language = Null Homes Under the Hammer - No Language
- Language = "" Homes Under the Hammer - No Language
- Language = es Homes Under the Hammer - Spanish
- Language = en Homes Under the Hammer - English
*/
[Test]
public void Should_Return_The_First_Matching_Language_ES()
{
var reader = new XmlTvReader(_testFilePath, "es");
var channel = reader.GetChannels().FirstOrDefault();
Assert.IsNotNull(channel);
var startDate = new DateTime(2015, 11, 26);
var cancellationToken = new CancellationToken();
var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault();
Assert.IsNotNull(programme);
Assert.AreEqual("Homes Under the Hammer - Spanish", programme.Title);
Assert.AreEqual(1, programme.Categories.Count);
Assert.AreEqual("Property - Spanish", programme.Categories[0]);
}
[Test]
public void Should_Return_The_First_Matching_Language_EN()
{
var reader = new XmlTvReader(_testFilePath, "en");
var channel = reader.GetChannels().FirstOrDefault();
Assert.IsNotNull(channel);
var startDate = new DateTime(2015, 11, 26);
var cancellationToken = new CancellationToken();
var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault();
Assert.IsNotNull(programme);
Assert.AreEqual("Homes Under the Hammer - English", programme.Title);
Assert.AreEqual(1, programme.Categories.Count);
Assert.AreEqual("Property - English", programme.Categories[0]);
}
[Test]
public void Should_Return_The_First_Matching_With_No_Language()
{
var reader = new XmlTvReader(_testFilePath, null);
var channel = reader.GetChannels().FirstOrDefault();
Assert.IsNotNull(channel);
var startDate = new DateTime(2015, 11, 26);
var cancellationToken = new CancellationToken();
var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault();
Assert.IsNotNull(programme);
Assert.AreEqual("Homes Under the Hammer - No Language", programme.Title);
Assert.AreEqual(1, programme.Categories.Count);
Assert.AreEqual("Property - No Language", programme.Categories[0]);
}
[Test]
public void Should_Return_The_First_Matching_With_Empty_Language()
{
var reader = new XmlTvReader(_testFilePath, String.Empty);
var channel = reader.GetChannels().FirstOrDefault();
Assert.IsNotNull(channel);
var startDate = new DateTime(2015, 11, 26);
var cancellationToken = new CancellationToken();
var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault();
Assert.IsNotNull(programme);
Assert.AreEqual("Homes Under the Hammer - Empty Language", programme.Title);
Assert.AreEqual(1, programme.Categories.Count);
Assert.AreEqual("Property - Empty Language", programme.Categories[0]);
}
[Test]
public void Should_Return_The_First_When_NoMatchFound()
{
var reader = new XmlTvReader(_testFilePath, "es"); // There are no titles or categories for spanish
var channel = reader.GetChannels().FirstOrDefault();
Assert.IsNotNull(channel);
var startDate = new DateTime(2015, 11, 26);
var cancellationToken = new CancellationToken();
var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).Skip(1).FirstOrDefault();
Assert.IsNotNull(programme);
Assert.AreEqual("Homes Under the Hammer - English", programme.Title);
// Should return all categories
Assert.AreEqual(2, programme.Categories.Count);
Assert.IsTrue(programme.Categories.Contains("Property - English"));
Assert.IsTrue(programme.Categories.Contains("Property - Empty Language"));
}
[Test]
public void Should_Return_The_First_When_NoLanguage()
{
var reader = new XmlTvReader(_testFilePath, null);
var channel = reader.GetChannels().FirstOrDefault();
Assert.IsNotNull(channel);
var startDate = new DateTime(2015, 11, 26);
var cancellationToken = new CancellationToken();
var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).Skip(1).FirstOrDefault();
Assert.IsNotNull(programme);
Assert.AreEqual("Homes Under the Hammer - English", programme.Title); // Should return the first in the list
// Should return all categories
Assert.AreEqual(2, programme.Categories.Count);
Assert.IsTrue(programme.Categories.Contains("Property - English"));
Assert.IsTrue(programme.Categories.Contains("Property - Empty Language"));
}
[Test]
public void Should_Return_All_Languages()
{
var reader = new XmlTvReader(_testFilePath);
var cancellationToken = new CancellationToken();
var results = reader.GetLanguages(cancellationToken);
Assert.IsNotNull(results);
foreach (var result in results)
{
Console.WriteLine("{0} - {1}", result.Name, result.Relevance);
}
Assert.AreEqual(2, results.Count);
Assert.AreEqual("en", results[0].Name);
Assert.AreEqual(11, results[0].Relevance);
Assert.AreEqual("es", results[1].Name);
Assert.AreEqual(3, results[1].Relevance);
}
}
}
Loading…
Cancel
Save