package jfxtras.icalendarfx.component; import static org.junit.Assert.assertEquals; import org.junit.Test; import jfxtras.icalendarfx.ICalendarTestAbstract; import jfxtras.icalendarfx.components.VComponent; import jfxtras.icalendarfx.components.VTimeZone; public class VTimeZoneTest { @Test public void canBuildVTimeZone() throws InstantiationException, IllegalAccessException { VTimeZone builtComponent = new VTimeZone() .withTimeZoneIdentifier("America/Los_Angeles"); String componentName = builtComponent.name(); String expectedContent = "BEGIN:" + componentName + System.lineSeparator() + "TZID:America/Los_Angeles" + System.lineSeparator() + "END:" + componentName; VComponent parsedComponent = builtComponent.getClass().newInstance(); parsedComponent.addChild(expectedContent); assertEquals(parsedComponent, builtComponent); assertEquals(expectedContent, builtComponent.toString()); } @Test public void canParseVTimeZone() { String expectedContent = "BEGIN:VTIMEZONE" + System.lineSeparator() + "TZID:America/New_York" + System.lineSeparator() + "LAST-MODIFIED:20050809T050000Z" + System.lineSeparator() + "BEGIN:DAYLIGHT" + System.lineSeparator() + // 1 "DTSTART:19670430T020000" + System.lineSeparator() + "RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19730429T070000Z" + System.lineSeparator() + "TZOFFSETFROM:-0500" + System.lineSeparator() + "TZOFFSETTO:-0400" + System.lineSeparator() + "TZNAME:EDT" + System.lineSeparator() + "END:DAYLIGHT" + System.lineSeparator() + "BEGIN:STANDARD" + System.lineSeparator() + // 2 "DTSTART:19671029T020000" + System.lineSeparator() + "RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=20061029T060000Z" + System.lineSeparator() + "TZOFFSETFROM:-0400" + System.lineSeparator() + "TZOFFSETTO:-0500" + System.lineSeparator() + "TZNAME:EST" + System.lineSeparator() + "END:STANDARD" + System.lineSeparator() + "BEGIN:DAYLIGHT" + System.lineSeparator() + // 3 "DTSTART:19740106T020000" + System.lineSeparator() + "RDATE:19750223T020000" + System.lineSeparator() + "TZOFFSETFROM:-0500" + System.lineSeparator() + "TZOFFSETTO:-0400" + System.lineSeparator() + "TZNAME:EDT" + System.lineSeparator() + "END:DAYLIGHT" + System.lineSeparator() + "BEGIN:DAYLIGHT" + System.lineSeparator() + // 4 "DTSTART:19760425T020000" + System.lineSeparator() + "RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19860427T070000Z" + System.lineSeparator() + "TZOFFSETFROM:-0500" + System.lineSeparator() + "TZOFFSETTO:-0400" + System.lineSeparator() + "TZNAME:EDT" + System.lineSeparator() + "END:DAYLIGHT" + System.lineSeparator() + "BEGIN:DAYLIGHT" + System.lineSeparator() + // 5 "DTSTART:19870405T020000" + System.lineSeparator() + "RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=20060402T070000Z" + System.lineSeparator() + "TZOFFSETFROM:-0500" + System.lineSeparator() + "TZOFFSETTO:-0400" + System.lineSeparator() + "TZNAME:EDT" + System.lineSeparator() + "END:DAYLIGHT" + System.lineSeparator() + "BEGIN:DAYLIGHT" + System.lineSeparator() + // 6 "DTSTART:20070311T020000" + System.lineSeparator() + "RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU" + System.lineSeparator() + "TZOFFSETFROM:-0500" + System.lineSeparator() + "TZOFFSETTO:-0400" + System.lineSeparator() + "TZNAME:EDT" + System.lineSeparator() + "END:DAYLIGHT" + System.lineSeparator() + "BEGIN:STANDARD" + System.lineSeparator() + // 7 "DTSTART:20071104T020000" + System.lineSeparator() + "RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU" + System.lineSeparator() + "TZOFFSETFROM:-0400" + System.lineSeparator() + "TZOFFSETTO:-0500" + System.lineSeparator() + "TZNAME:EST" + System.lineSeparator() + "END:STANDARD" + System.lineSeparator() + "END:VTIMEZONE"; VTimeZone component = VTimeZone.parse(expectedContent); VTimeZone builtComponent = ICalendarTestAbstract.getTimeZone1(); assertEquals(component, builtComponent); assertEquals(expectedContent, component.toString()); assertEquals(builtComponent.toString(), component.toString()); } }