XmlTvReaderDateTimeTests.cs 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. [Test]
  11. public void ShouldHandlePartDates()
  12. {
  13. var testFile = Path.GetFullPath(@"MultilanguageData.xml");
  14. var reader = new XmlTvReader(testFile, "es");
  15. Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("2016"));
  16. Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("201601"));
  17. Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("20160101"));
  18. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("2016010112"));
  19. Assert.AreEqual(Parse("01 Jan 2016 12:34:00"), reader.ParseDate("201601011234"));
  20. Assert.AreEqual(Parse("01 Jan 2016 12:34:56"), reader.ParseDate("20160101123456"));
  21. }
  22. [Test]
  23. public void ShouldHandleDateWithOffset()
  24. {
  25. var testFile = Path.GetFullPath(@"MultilanguageData.xml");
  26. var reader = new XmlTvReader(testFile, "es");
  27. // parse variations on 1:00AM
  28. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +0000"));
  29. Assert.AreEqual(Parse("01 Jan 2016 02:00:00"), reader.ParseDate("20160101120000 +1000"));
  30. Assert.AreEqual(Parse("01 Jan 2016 11:00:00"), reader.ParseDate("20160101120000 +0100"));
  31. Assert.AreEqual(Parse("01 Jan 2016 11:50:00"), reader.ParseDate("20160101120000 +0010"));
  32. Assert.AreEqual(Parse("01 Jan 2016 11:59:00"), reader.ParseDate("20160101120000 +0001"));
  33. Assert.AreEqual(Parse("01 Jan 2016 22:00:00"), reader.ParseDate("20160101120000 -1000"));
  34. Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("20160101120000 -0100"));
  35. Assert.AreEqual(Parse("01 Jan 2016 12:10:00"), reader.ParseDate("20160101120000 -0010"));
  36. Assert.AreEqual(Parse("01 Jan 2016 12:01:00"), reader.ParseDate("20160101120000 -0001"));
  37. }
  38. [Test]
  39. public void ShouldHandlePartDatesWithOffset()
  40. {
  41. var testFile = Path.GetFullPath(@"MultilanguageData.xml");
  42. var reader = new XmlTvReader(testFile, "es");
  43. Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("2016 -0100"));
  44. Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("201601 -0100"));
  45. Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("20160101 -0100"));
  46. Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("2016010112 -0100"));
  47. Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("201601011200 -0100"));
  48. Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("20160101120000 -0100"));
  49. }
  50. [Test]
  51. public void ShouldHandleSpaces()
  52. {
  53. var testFile = Path.GetFullPath(@"MultilanguageData.xml");
  54. var reader = new XmlTvReader(testFile, "es");
  55. // parse variations on 1:00AM
  56. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +000"));
  57. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +00"));
  58. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +0"));
  59. }
  60. [Test]
  61. public void ShouldHandleSpaces2()
  62. {
  63. var testFile = Path.GetFullPath(@"MultilanguageData.xml");
  64. var reader = new XmlTvReader(testFile, "es");
  65. // parse variations on 1:00AM
  66. Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 0"));
  67. }
  68. private static DateTimeOffset Parse(string value)
  69. {
  70. return new DateTimeOffset(DateTimeOffset.Parse(value).Ticks, TimeSpan.Zero);
  71. }
  72. }
  73. }