diff --git a/src/test/java/net/fortuna/ical4j/model/property/ExDateTest.java b/src/test/java/net/fortuna/ical4j/model/property/ExDateTest.java index fbf77dd2b..5c60da6c4 100644 --- a/src/test/java/net/fortuna/ical4j/model/property/ExDateTest.java +++ b/src/test/java/net/fortuna/ical4j/model/property/ExDateTest.java @@ -31,21 +31,17 @@ */ package net.fortuna.ical4j.model.property; -import java.text.ParseException; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import junit.framework.TestCase; import net.fortuna.ical4j.data.CalendarBuilder; -import net.fortuna.ical4j.model.Calendar; -import net.fortuna.ical4j.model.Component; -import net.fortuna.ical4j.model.Date; -import net.fortuna.ical4j.model.DateTime; -import net.fortuna.ical4j.model.ParameterList; -import net.fortuna.ical4j.model.Property; +import net.fortuna.ical4j.model.*; +import net.fortuna.ical4j.model.component.VEvent; +import net.fortuna.ical4j.model.component.VTimeZone; import net.fortuna.ical4j.util.CompatibilityHints; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.ParseException; +import java.util.List; /** * $Id$ @@ -90,7 +86,22 @@ public void testTimeZones() throws Exception { } } - + public void testDstOnlyVTimeZones() throws Exception { + CalendarBuilder builder = new CalendarBuilder(); + + Calendar ical = builder.build(getClass().getResourceAsStream("/samples/valid/dst-only-vtimezone.ics")); + VTimeZone vTZ = (VTimeZone) ical.getComponent(VTimeZone.VTIMEZONE); + + String id = vTZ.getTimeZoneId().getValue(); + assertEquals("Europe/Berlin", id); + assertEquals(vTZ.getObservances().get(0), vTZ.getApplicableObservance(new Date("20180403"))); + + VEvent vEvent = (VEvent) ical.getComponent(VEvent.VEVENT); + DtStart start = vEvent.getStartDate(); + assertEquals(vTZ, start.getTimeZone().getVTimeZone()); + assertEquals(1522738800000L, start.getDate().getTime()); + } + public void testShouldPreserveUtcTimezoneForExDate() throws Exception { CalendarBuilder builder = new CalendarBuilder(); Calendar calendar = builder.build(getClass().getResourceAsStream("/samples/valid/EXDATE-IN-UTC.ics")); diff --git a/src/test/resources/samples/valid/dst-only-vtimezone.ics b/src/test/resources/samples/valid/dst-only-vtimezone.ics new file mode 100644 index 000000000..64d7bdde5 --- /dev/null +++ b/src/test/resources/samples/valid/dst-only-vtimezone.ics @@ -0,0 +1,21 @@ +BEGIN:VCALENDAR +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:Europe/Berlin +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +DTSTART:20180325T030000 +TZNAME:CEST +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +UID:only-dst@example.com +DTSTAMP:20180329T084939Z +DTSTART;TZID=Europe/Berlin:20180403T090000 +DTEND;TZID=Europe/Berlin:20180403T101500 +SUMMARY:Sample Event +CREATED:20180329T084939Z +LAST-MODIFIED:20180329T084939Z +END:VEVENT +END:VCALENDAR