Issue50Test.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. namespace Sabre\VObject;
  3. use
  4. DateTime,
  5. DateTimeZone;
  6. class Issue50Test extends \PHPUnit_Framework_TestCase {
  7. function testExpand() {
  8. $input = <<<ICS
  9. BEGIN:VCALENDAR
  10. VERSION:2.0
  11. PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
  12. BEGIN:VTIMEZONE
  13. TZID:Europe/Brussels
  14. X-LIC-LOCATION:Europe/Brussels
  15. BEGIN:DAYLIGHT
  16. TZOFFSETFROM:+0100
  17. TZOFFSETTO:+0200
  18. TZNAME:CEST
  19. DTSTART:19700329T020000
  20. RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
  21. END:DAYLIGHT
  22. BEGIN:STANDARD
  23. TZOFFSETFROM:+0200
  24. TZOFFSETTO:+0100
  25. TZNAME:CET
  26. DTSTART:19701025T030000
  27. RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
  28. END:STANDARD
  29. END:VTIMEZONE
  30. BEGIN:VEVENT
  31. CREATED:20130705T142510Z
  32. LAST-MODIFIED:20130715T132556Z
  33. DTSTAMP:20130715T132556Z
  34. UID:1aef0b27-3d92-4581-829a-11999dd36724
  35. SUMMARY:Werken
  36. RRULE:FREQ=DAILY;COUNT=5
  37. DTSTART;TZID=Europe/Brussels:20130715T090000
  38. DTEND;TZID=Europe/Brussels:20130715T170000
  39. LOCATION:Job
  40. DESCRIPTION:Vrij
  41. X-MOZ-GENERATION:9
  42. END:VEVENT
  43. BEGIN:VEVENT
  44. CREATED:20130715T081654Z
  45. LAST-MODIFIED:20130715T110931Z
  46. DTSTAMP:20130715T110931Z
  47. UID:1aef0b27-3d92-4581-829a-11999dd36724
  48. SUMMARY:Werken
  49. RECURRENCE-ID;TZID=Europe/Brussels:20130719T090000
  50. DTSTART;TZID=Europe/Brussels:20130719T070000
  51. DTEND;TZID=Europe/Brussels:20130719T150000
  52. SEQUENCE:1
  53. LOCATION:Job
  54. DESCRIPTION:Vrij
  55. X-MOZ-GENERATION:1
  56. END:VEVENT
  57. BEGIN:VEVENT
  58. CREATED:20130715T111654Z
  59. LAST-MODIFIED:20130715T132556Z
  60. DTSTAMP:20130715T132556Z
  61. UID:1aef0b27-3d92-4581-829a-11999dd36724
  62. SUMMARY:Werken
  63. RECURRENCE-ID;TZID=Europe/Brussels:20130716T090000
  64. DTSTART;TZID=Europe/Brussels:20130716T070000
  65. DTEND;TZID=Europe/Brussels:20130716T150000
  66. SEQUENCE:1
  67. LOCATION:Job
  68. X-MOZ-GENERATION:2
  69. END:VEVENT
  70. BEGIN:VEVENT
  71. CREATED:20130715T125942Z
  72. LAST-MODIFIED:20130715T130023Z
  73. DTSTAMP:20130715T130023Z
  74. UID:1aef0b27-3d92-4581-829a-11999dd36724
  75. SUMMARY:Werken
  76. RECURRENCE-ID;TZID=Europe/Brussels:20130717T090000
  77. DTSTART;TZID=Europe/Brussels:20130717T070000
  78. DTEND;TZID=Europe/Brussels:20130717T150000
  79. SEQUENCE:1
  80. LOCATION:Job
  81. X-MOZ-GENERATION:3
  82. END:VEVENT
  83. BEGIN:VEVENT
  84. CREATED:20130715T130024Z
  85. LAST-MODIFIED:20130715T130034Z
  86. DTSTAMP:20130715T130034Z
  87. UID:1aef0b27-3d92-4581-829a-11999dd36724
  88. SUMMARY:Werken
  89. RECURRENCE-ID;TZID=Europe/Brussels:20130718T090000
  90. DTSTART;TZID=Europe/Brussels:20130718T090000
  91. DTEND;TZID=Europe/Brussels:20130718T170000
  92. LOCATION:Job
  93. X-MOZ-GENERATION:5
  94. DESCRIPTION:Vrij
  95. END:VEVENT
  96. END:VCALENDAR
  97. ICS;
  98. $vcal = Reader::read($input);
  99. $this->assertInstanceOf('Sabre\\VObject\\Component\\VCalendar', $vcal);
  100. $it = new Recur\EventIterator($vcal, '1aef0b27-3d92-4581-829a-11999dd36724');
  101. $result = array();
  102. foreach($it as $instance) {
  103. $result[] = $instance;
  104. }
  105. $tz = new DateTimeZone('Europe/Brussels');
  106. $this->assertEquals(array(
  107. new DateTime('2013-07-15 09:00:00', $tz),
  108. new DateTime('2013-07-16 07:00:00', $tz),
  109. new DateTime('2013-07-17 07:00:00', $tz),
  110. new DateTime('2013-07-18 09:00:00', $tz),
  111. new DateTime('2013-07-19 07:00:00', $tz),
  112. ), $result);
  113. }
  114. }