XmlTvReaderDateTimeTests.cs 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.IO;
  3. using Emby.XmlTv.Classes;
  4. using NUnit.Framework;
  5. namespace Jellyfin.XmlTv.Test
  6. {
  7. [TestFixture]
  8. public class XmlTvReaderDateTimeTests
  9. {
  10. private string _testFilePath;
  11. [SetUp]
  12. public void BeforeEachTest()
  13. {
  14. _testFilePath = Path.GetFullPath(Path.Combine("XmlFiles", "MultilanguageData.xml"));
  15. }
  16. [Test]
  17. public void ShouldHandlePartDates()
  18. {
  19. var reader = new XmlTvReader(_testFilePath, "es");
  20. Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("2016"));
  21. Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("201601"));
  22. Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("20160101"));
  23. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("2016010112"));
  24. Assert.AreEqual(Parse("01 Jan 2016 12:34:00"), reader.ParseDate("201601011234"));
  25. Assert.AreEqual(Parse("01 Jan 2016 12:34:56"), reader.ParseDate("20160101123456"));
  26. }
  27. [Test]
  28. public void ShouldHandleDateWithOffset()
  29. {
  30. var reader = new XmlTvReader(_testFilePath, "es");
  31. // parse variations on 1:00AM
  32. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +0000"));
  33. Assert.AreEqual(Parse("01 Jan 2016 02:00:00"), reader.ParseDate("20160101120000 +1000"));
  34. Assert.AreEqual(Parse("01 Jan 2016 11:00:00"), reader.ParseDate("20160101120000 +0100"));
  35. Assert.AreEqual(Parse("01 Jan 2016 11:50:00"), reader.ParseDate("20160101120000 +0010"));
  36. Assert.AreEqual(Parse("01 Jan 2016 11:59:00"), reader.ParseDate("20160101120000 +0001"));
  37. Assert.AreEqual(Parse("01 Jan 2016 22:00:00"), reader.ParseDate("20160101120000 -1000"));
  38. Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("20160101120000 -0100"));
  39. Assert.AreEqual(Parse("01 Jan 2016 12:10:00"), reader.ParseDate("20160101120000 -0010"));
  40. Assert.AreEqual(Parse("01 Jan 2016 12:01:00"), reader.ParseDate("20160101120000 -0001"));
  41. }
  42. [Test]
  43. public void ShouldHandlePartDatesWithOffset()
  44. {
  45. var reader = new XmlTvReader(_testFilePath, "es");
  46. Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("2016 -0100"));
  47. Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("201601 -0100"));
  48. Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("20160101 -0100"));
  49. Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("2016010112 -0100"));
  50. Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("201601011200 -0100"));
  51. Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("20160101120000 -0100"));
  52. }
  53. [Test]
  54. public void ShouldHandleSpaces()
  55. {
  56. var reader = new XmlTvReader(_testFilePath, "es");
  57. // parse variations on 1:00AM
  58. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +000"));
  59. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +00"));
  60. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +0"));
  61. }
  62. [Test]
  63. public void ShouldHandleSpaces2()
  64. {
  65. var reader = new XmlTvReader(_testFilePath, "es");
  66. // parse variations on 1:00AM
  67. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 0"));
  68. }
  69. private static DateTimeOffset Parse(string value)
  70. {
  71. return new DateTimeOffset(DateTimeOffset.Parse(value).Ticks, TimeSpan.Zero);
  72. }
  73. }
  74. }