kopia lustrzana https://github.com/jazzband/icalevents
ical events tests
rodzic
40b9ade7fb
commit
556b9a600d
|
@ -0,0 +1,3 @@
|
|||
"""
|
||||
Tests for icalevents.
|
||||
"""
|
Plik diff jest za duży
Load Diff
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,305 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
X-WR-CALNAME:Der Wir Kalender
|
||||
X-WR-CALDESC:
|
||||
X-APPLE-CALENDAR-COLOR:#ff2d55FF
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:US/Pacific
|
||||
X-LIC-LOCATION:US/Pacific
|
||||
BEGIN:STANDARD
|
||||
DTSTART:18831118T120702
|
||||
RDATE;VALUE=DATE-TIME:18831118T120702
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0752
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19180331T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19190330T100000Z;BYDAY=-1SU;BYMONTH=3
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19181027T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19191026T090000Z;BYDAY=-1SU;BYMONTH=10
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19420209T020000
|
||||
RDATE;VALUE=DATE-TIME:19420209T020000
|
||||
TZNAME:PWT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19450814T160000
|
||||
RDATE;VALUE=DATE-TIME:19450814T160000
|
||||
TZNAME:PPT
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19450930T020000
|
||||
RDATE;VALUE=DATE-TIME:19450930T020000
|
||||
RDATE;VALUE=DATE-TIME:19490101T020000
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19460101T000000
|
||||
RDATE;VALUE=DATE-TIME:19460101T000000
|
||||
RDATE;VALUE=DATE-TIME:19670101T000000
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19480314T020100
|
||||
RDATE;VALUE=DATE-TIME:19480314T020100
|
||||
RDATE;VALUE=DATE-TIME:19740106T020000
|
||||
RDATE;VALUE=DATE-TIME:19750223T020000
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19500430T010000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19660424T090000Z;BYDAY=-1SU;BYMONTH=4
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19500924T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19610924T090000Z;BYDAY=-1SU;BYMONTH=9
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19621028T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19661030T090000Z;BYDAY=-1SU;BYMONTH=10
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19670430T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19730429T100000Z;BYDAY=-1SU;BYMONTH=4
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19671029T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=20061029T090000Z;BYDAY=-1SU;BYMONTH=10
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19760425T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19860427T100000Z;BYDAY=-1SU;BYMONTH=4
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19870405T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=20060402T100000Z;BYDAY=1SU;BYMONTH=4
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:20070311T020000
|
||||
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:20071104T020000
|
||||
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/Berlin
|
||||
X-LIC-LOCATION:Europe/Berlin
|
||||
BEGIN:STANDARD
|
||||
DTSTART:18930401T000000
|
||||
RDATE;VALUE=DATE-TIME:18930401T000000
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+5328
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19160430T230000
|
||||
RDATE;VALUE=DATE-TIME:19160430T230000
|
||||
RDATE;VALUE=DATE-TIME:19400401T020000
|
||||
RDATE;VALUE=DATE-TIME:19430329T020000
|
||||
RDATE;VALUE=DATE-TIME:19460414T020000
|
||||
RDATE;VALUE=DATE-TIME:19470406T030000
|
||||
RDATE;VALUE=DATE-TIME:19480418T020000
|
||||
RDATE;VALUE=DATE-TIME:19490410T020000
|
||||
RDATE;VALUE=DATE-TIME:19800406T020000
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19161001T010000
|
||||
RDATE;VALUE=DATE-TIME:19161001T010000
|
||||
RDATE;VALUE=DATE-TIME:19421102T030000
|
||||
RDATE;VALUE=DATE-TIME:19431004T030000
|
||||
RDATE;VALUE=DATE-TIME:19441002T030000
|
||||
RDATE;VALUE=DATE-TIME:19451118T030000
|
||||
RDATE;VALUE=DATE-TIME:19461007T030000
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19170416T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19180415T010000Z;BYDAY=3MO;BYMONTH=4
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19170917T030000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19180916T010000Z;BYDAY=3MO;BYMONTH=9
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19440403T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19450402T010000Z;BYDAY=1MO;BYMONTH=4
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19450524T020000
|
||||
RDATE;VALUE=DATE-TIME:19450524T020000
|
||||
RDATE;VALUE=DATE-TIME:19470511T030000
|
||||
TZNAME:CEMT
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0300
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19450924T030000
|
||||
RDATE;VALUE=DATE-TIME:19450924T030000
|
||||
RDATE;VALUE=DATE-TIME:19470629T030000
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0300
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19460101T000000
|
||||
RDATE;VALUE=DATE-TIME:19460101T000000
|
||||
RDATE;VALUE=DATE-TIME:19800101T000000
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19471005T030000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19491002T010000Z;BYDAY=1SU;BYMONTH=10
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19800928T030000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYDAY=-1SU;BYMONTH=9
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19810329T020000
|
||||
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19961027T030000
|
||||
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20161026T154648Z
|
||||
DTEND;TZID=Europe/Berlin:20161103T183000
|
||||
DTSTAMP:20161026T154649Z
|
||||
DTSTART;TZID=Europe/Berlin:20161103T180000
|
||||
LAST-MODIFIED:20161026T154648Z
|
||||
LOCATION:Naturpark Altmühltal\nKanalstraße 5\n91757
|
||||
Treuchtlingen\nDeutschland
|
||||
SEQUENCE:0
|
||||
SUMMARY:Friseur
|
||||
UID:003AFB7E-BA60-481A-A087-23024D956074
|
||||
X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS=Kanalstraße 5\\n91757
|
||||
Treuchtlingen\\nDeutschland;X-APPLE-RADIUS=100;X-APPLE-REFERENCEFRAME=1;
|
||||
X-TITLE=Naturpark Altmühltal:geo:48.954682,10.909644
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
DTEND;TZID=Europe/Berlin:20160616T213000
|
||||
UID:015A230B-1627-4C27-939B-DB0B54F8CF26
|
||||
DTSTAMP:20160616T173403Z
|
||||
LOCATION:Römerstraße 49
|
||||
URL;VALUE=URI:message:
|
||||
%3C1836419472.103507.1464935907579.JavaMail.open-xchange@omgreatgod.store%
|
||||
3E
|
||||
SEQUENCE:0
|
||||
SUMMARY:Weinabend Franken – Castell
|
||||
DTSTART;TZID=Europe/Berlin:20160616T193000
|
||||
CREATED:20160603T100150Z
|
||||
LAST-MODIFIED:20160603T100150Z
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20151209T212646Z
|
||||
DTEND;TZID=Europe/Berlin:20151209T110000
|
||||
DTSTAMP:20160401T132640Z
|
||||
DTSTART;TZID=Europe/Berlin:20151209T100000
|
||||
LAST-MODIFIED:20160401T132551Z
|
||||
RRULE:FREQ=YEARLY
|
||||
SEQUENCE:1
|
||||
SUMMARY:Geburtstag
|
||||
UID:09094143-005B-478F-BF37-10316FC9490B
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20160222T073027Z
|
||||
DTEND;TZID=Europe/Berlin:20160222T173000
|
||||
DTSTAMP:20160926T150116Z
|
||||
DTSTART;TZID=Europe/Berlin:20160222T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160321T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160328T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160516T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160523T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160801T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160808T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160815T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160822T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160829T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160905T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160912T161500
|
||||
LAST-MODIFIED:20160926T150115Z
|
||||
RRULE:FREQ=WEEKLY;UNTIL=20161001T215959Z
|
||||
SEQUENCE:0
|
||||
SUMMARY:Kinderturnen
|
||||
UID:0ED5515F-D6C2-4678-9EB1-8C483A12C410
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,305 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
X-WR-CALNAME:Der Wir Kalender
|
||||
X-WR-CALDESC:
|
||||
X-APPLE-CALENDAR-COLOR:#ff2d55FF
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:US/Pacific
|
||||
X-LIC-LOCATION:US/Pacific
|
||||
BEGIN:STANDARD
|
||||
DTSTART:18831118T120702
|
||||
RDATE;VALUE=DATE-TIME:18831118T120702
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0752
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19180331T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19190330T100000Z;BYDAY=-1SU;BYMONTH=3
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19181027T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19191026T090000Z;BYDAY=-1SU;BYMONTH=10
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19420209T020000
|
||||
RDATE;VALUE=DATE-TIME:19420209T020000
|
||||
TZNAME:PWT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19450814T160000
|
||||
RDATE;VALUE=DATE-TIME:19450814T160000
|
||||
TZNAME:PPT
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19450930T020000
|
||||
RDATE;VALUE=DATE-TIME:19450930T020000
|
||||
RDATE;VALUE=DATE-TIME:19490101T020000
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19460101T000000
|
||||
RDATE;VALUE=DATE-TIME:19460101T000000
|
||||
RDATE;VALUE=DATE-TIME:19670101T000000
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19480314T020100
|
||||
RDATE;VALUE=DATE-TIME:19480314T020100
|
||||
RDATE;VALUE=DATE-TIME:19740106T020000
|
||||
RDATE;VALUE=DATE-TIME:19750223T020000
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19500430T010000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19660424T090000Z;BYDAY=-1SU;BYMONTH=4
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19500924T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19610924T090000Z;BYDAY=-1SU;BYMONTH=9
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19621028T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19661030T090000Z;BYDAY=-1SU;BYMONTH=10
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19670430T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19730429T100000Z;BYDAY=-1SU;BYMONTH=4
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19671029T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=20061029T090000Z;BYDAY=-1SU;BYMONTH=10
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19760425T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19860427T100000Z;BYDAY=-1SU;BYMONTH=4
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19870405T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=20060402T100000Z;BYDAY=1SU;BYMONTH=4
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:20070311T020000
|
||||
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
|
||||
TZNAME:PDT
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:20071104T020000
|
||||
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/Berlin
|
||||
X-LIC-LOCATION:Europe/Berlin
|
||||
BEGIN:STANDARD
|
||||
DTSTART:18930401T000000
|
||||
RDATE;VALUE=DATE-TIME:18930401T000000
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0053
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19160430T230000
|
||||
RDATE;VALUE=DATE-TIME:19160430T230000
|
||||
RDATE;VALUE=DATE-TIME:19400401T020000
|
||||
RDATE;VALUE=DATE-TIME:19430329T020000
|
||||
RDATE;VALUE=DATE-TIME:19460414T020000
|
||||
RDATE;VALUE=DATE-TIME:19470406T030000
|
||||
RDATE;VALUE=DATE-TIME:19480418T020000
|
||||
RDATE;VALUE=DATE-TIME:19490410T020000
|
||||
RDATE;VALUE=DATE-TIME:19800406T020000
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19161001T010000
|
||||
RDATE;VALUE=DATE-TIME:19161001T010000
|
||||
RDATE;VALUE=DATE-TIME:19421102T030000
|
||||
RDATE;VALUE=DATE-TIME:19431004T030000
|
||||
RDATE;VALUE=DATE-TIME:19441002T030000
|
||||
RDATE;VALUE=DATE-TIME:19451118T030000
|
||||
RDATE;VALUE=DATE-TIME:19461007T030000
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19170416T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19180415T010000Z;BYDAY=3MO;BYMONTH=4
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19170917T030000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19180916T010000Z;BYDAY=3MO;BYMONTH=9
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19440403T020000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19450402T010000Z;BYDAY=1MO;BYMONTH=4
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19450524T020000
|
||||
RDATE;VALUE=DATE-TIME:19450524T020000
|
||||
RDATE;VALUE=DATE-TIME:19470511T030000
|
||||
TZNAME:CEMT
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0300
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19450924T030000
|
||||
RDATE;VALUE=DATE-TIME:19450924T030000
|
||||
RDATE;VALUE=DATE-TIME:19470629T030000
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0300
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19460101T000000
|
||||
RDATE;VALUE=DATE-TIME:19460101T000000
|
||||
RDATE;VALUE=DATE-TIME:19800101T000000
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19471005T030000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19491002T010000Z;BYDAY=1SU;BYMONTH=10
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19800928T030000
|
||||
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYDAY=-1SU;BYMONTH=9
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19810329T020000
|
||||
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19961027T030000
|
||||
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20161026T154648Z
|
||||
DTEND;TZID=Europe/Berlin:20161103T183000
|
||||
DTSTAMP:20161026T154649Z
|
||||
DTSTART;TZID=Europe/Berlin:20161103T180000
|
||||
LAST-MODIFIED:20161026T154648Z
|
||||
LOCATION:Naturpark Altmühltal\nKanalstraße 5\n91757
|
||||
Treuchtlingen\nDeutschland
|
||||
SEQUENCE:0
|
||||
SUMMARY:Friseur
|
||||
UID:003AFB7E-BA60-481A-A087-23024D956074
|
||||
X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS=Kanalstraße 5\\n91757
|
||||
Treuchtlingen\\nDeutschland;X-APPLE-RADIUS=100;X-APPLE-REFERENCEFRAME=1;
|
||||
X-TITLE=Naturpark Altmühltal:geo:48.954682,10.909644
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
DTEND;TZID=Europe/Berlin:20160616T213000
|
||||
UID:015A230B-1627-4C27-939B-DB0B54F8CF26
|
||||
DTSTAMP:20160616T173403Z
|
||||
LOCATION:Römerstraße 49
|
||||
URL;VALUE=URI:message:
|
||||
%3C1836419472.103507.1464935907579.JavaMail.open-xchange@omgreatgod.store%
|
||||
3E
|
||||
SEQUENCE:0
|
||||
SUMMARY:Weinabend Franken – Castell
|
||||
DTSTART;TZID=Europe/Berlin:20160616T193000
|
||||
CREATED:20160603T100150Z
|
||||
LAST-MODIFIED:20160603T100150Z
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20151209T212646Z
|
||||
DTEND;TZID=Europe/Berlin:20151209T110000
|
||||
DTSTAMP:20160401T132640Z
|
||||
DTSTART;TZID=Europe/Berlin:20151209T100000
|
||||
LAST-MODIFIED:20160401T132551Z
|
||||
RRULE:FREQ=YEARLY
|
||||
SEQUENCE:1
|
||||
SUMMARY:Geburtstag
|
||||
UID:09094143-005B-478F-BF37-10316FC9490B
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20160222T073027Z
|
||||
DTEND;TZID=Europe/Berlin:20160222T173000
|
||||
DTSTAMP:20160926T150116Z
|
||||
DTSTART;TZID=Europe/Berlin:20160222T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160321T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160328T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160516T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160523T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160801T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160808T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160815T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160822T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160829T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160905T161500
|
||||
EXDATE;TZID=Europe/Berlin:20160912T161500
|
||||
LAST-MODIFIED:20160926T150115Z
|
||||
RRULE:FREQ=WEEKLY;UNTIL=20161001T215959Z
|
||||
SEQUENCE:0
|
||||
SUMMARY:Kinderturnen
|
||||
UID:0ED5515F-D6C2-4678-9EB1-8C483A12C410
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,62 @@
|
|||
import unittest
|
||||
import icalevents.icaldownload
|
||||
|
||||
|
||||
class ICalDownloadTests(unittest.TestCase):
|
||||
|
||||
def test_apple_data_fix(self):
|
||||
data = """
|
||||
DTSTART:18831118T120702
|
||||
RDATE;VALUE=DATE-TIME:18831118T120702
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:+5328
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19180331T020000
|
||||
"""
|
||||
expected = """
|
||||
DTSTART:18831118T120702
|
||||
RDATE;VALUE=DATE-TIME:18831118T120702
|
||||
TZNAME:PST
|
||||
TZOFFSETFROM:+0053
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19180331T020000
|
||||
"""
|
||||
res = icalevents.icaldownload.apple_data_fix(data)
|
||||
self.assertEqual(res, expected, "fix invalid TZOFFSETFROM")
|
||||
|
||||
def test_apple_url_fix(self):
|
||||
data = "webcal://blah.blub/webcal/"
|
||||
expected = "http://blah.blub/webcal/"
|
||||
|
||||
res = icalevents.icaldownload.apple_url_fix(data)
|
||||
self.assertEqual(res, expected, "fix url protocol")
|
||||
|
||||
def test_data_from_file_google(self):
|
||||
file = "test/test_data/basic.ics"
|
||||
result = "test/test_data/basic_content.txt"
|
||||
|
||||
expected = None
|
||||
|
||||
with open(result, mode='r', encoding='utf-8') as f:
|
||||
expected = f.read()
|
||||
|
||||
content = icalevents.icaldownload.ICalDownload().data_from_file(file)
|
||||
|
||||
self.assertEqual(expected, content, "content form iCal file, google format")
|
||||
|
||||
def test_data_from_file_apple(self):
|
||||
file = "test/test_data/icloud.ics"
|
||||
result = "test/test_data/icloud_content.txt"
|
||||
|
||||
expected = None
|
||||
|
||||
with open(result, mode='r', encoding='utf-8') as f:
|
||||
expected = f.read()
|
||||
|
||||
content = icalevents.icaldownload.ICalDownload().data_from_file(file, apple_fix=True)
|
||||
|
||||
self.assertEqual(expected, content, "content form iCal file, google format")
|
|
@ -0,0 +1,90 @@
|
|||
import unittest
|
||||
import icalevents.icalparser
|
||||
from datetime import datetime, date
|
||||
from pytz import utc
|
||||
|
||||
|
||||
class ICalParserTests(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.eventA = icalevents.icalparser.Event()
|
||||
self.eventA.uid = 1234
|
||||
self.eventA.start = datetime(year=2017, month=2, day=3, hour=12, minute=5, tzinfo=utc)
|
||||
self.eventA.end = datetime(year=2017, month=2, day=3, hour=15, minute=5, tzinfo=utc)
|
||||
self.eventA.all_day = False
|
||||
self.eventA.summary = "Event A"
|
||||
|
||||
self.eventB = icalevents.icalparser.Event()
|
||||
self.eventB.uid = 1234
|
||||
self.eventB.start = datetime(year=2017, month=2, day=1, hour=15, minute=5, tzinfo=utc)
|
||||
self.eventB.end = datetime(year=2017, month=2, day=1, hour=16, minute=5, tzinfo=utc)
|
||||
self.eventB.all_day = False
|
||||
self.eventB.summary = "Event B"
|
||||
|
||||
def test_now(self):
|
||||
n = icalevents.icalparser.now()
|
||||
|
||||
self.assertTrue(type(n) == datetime, "result of now has type datetime")
|
||||
self.assertTrue(n.tzinfo, "result of now has a timezone info")
|
||||
|
||||
def test_event_copy_to(self):
|
||||
new_start = utc.normalize(datetime(year=2017, month=2, day=5, hour=12, minute=5, tzinfo=utc))
|
||||
eventC = self.eventA.copy_to(new_start)
|
||||
|
||||
self.assertNotEqual(eventC.uid, self.eventA.uid, "new event has new UID")
|
||||
self.assertEqual(eventC.start, new_start, "new event has new start")
|
||||
self.assertEqual(eventC.end - eventC.start, self.eventA.end - self.eventA.start, "new event has same duration")
|
||||
self.assertEqual(eventC.all_day , False, "new event is no all day event")
|
||||
self.assertEqual(eventC.summary, self.eventA.summary, "copy to: summary")
|
||||
|
||||
def test_event_order(self):
|
||||
self.assertTrue(self.eventA > self.eventB, "order of events")
|
||||
|
||||
def test_next_year(self):
|
||||
date = utc.normalize(datetime(year=2016, month=1, day=1, hour=0, minute=0, tzinfo=utc))
|
||||
|
||||
other = icalevents.icalparser.next_year_at(date, count=2)
|
||||
|
||||
self.assertEqual(date.year + 2, other.year, "year is changed")
|
||||
self.assertEqual(date.month, other.month, "month is same")
|
||||
self.assertEqual(date.day, other.day, "day is same")
|
||||
self.assertEqual(date.hour, other.hour, "hour is same")
|
||||
self.assertEqual(date.minute, other.minute, "minute is same")
|
||||
self.assertEqual(date.tzinfo, other.tzinfo, "timezone is same")
|
||||
|
||||
def test_next_month(self):
|
||||
dt = utc.normalize(datetime(year=2016, month=10, day=1, hour=0, minute=0, tzinfo=utc))
|
||||
|
||||
other = icalevents.icalparser.next_month_at(dt, count=5)
|
||||
|
||||
self.assertEqual(2017, other.year, "year is same")
|
||||
self.assertEqual(3, other.month, "month is changed")
|
||||
self.assertEqual(dt.day, other.day, "day is same")
|
||||
self.assertEqual(dt.hour, other.hour, "hour is same")
|
||||
self.assertEqual(dt.minute, other.minute, "minute is same")
|
||||
self.assertEqual(dt.tzinfo, other.tzinfo, "timezone is same")
|
||||
|
||||
def test_normalize(self):
|
||||
dt = date(year=2016, month=11, day=13)
|
||||
norm = icalevents.icalparser.normalize(dt)
|
||||
|
||||
self.assertTrue(type(norm) is datetime, "type is datetime")
|
||||
self.assertEqual(2016, norm.year, "year")
|
||||
self.assertEqual(11, norm.month, "month")
|
||||
self.assertEqual(13, norm.day, "day")
|
||||
self.assertEqual(0, norm.hour, "hour")
|
||||
self.assertEqual(0, norm.minute, "minute")
|
||||
self.assertEqual(0, norm.second, "second")
|
||||
self.assertEqual(0, norm.microsecond, "microsecond")
|
||||
self.assertEqual(utc, norm.tzinfo, "timezone")
|
||||
|
||||
def test_in_range(self):
|
||||
range_start = datetime(year=2017, month=2, day=2, hour=12, minute=0, tzinfo=utc)
|
||||
range_end = datetime(year=2017, month=2, day=4, hour=12, minute=0, tzinfo=utc)
|
||||
|
||||
events = [self.eventA, self.eventB]
|
||||
|
||||
filtered = icalevents.icalparser.in_range(events, range_start, range_end)
|
||||
|
||||
self.assertEqual(len(filtered), 1, "one event is left")
|
||||
self.assertEqual(filtered[0], self.eventA, "event A is left")
|
Ładowanie…
Reference in New Issue