Mercurial > emacs
comparison test/icalendar-testsuite.el @ 92340:7ae2674748b9
Ulf Jasper <ulf.jasper at web.de>: New file.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Fri, 29 Feb 2008 04:27:44 +0000 |
parents | |
children | 4b6931e21501 |
comparison
equal
deleted
inserted
replaced
92339:0c367d3e39fe | 92340:7ae2674748b9 |
---|---|
1 ;; icalendar-testsuite.el --- Test suite for icalendar.el | |
2 | |
3 ;; Copyright (C) 2005, 2008 Free Software Foundation, Inc. | |
4 | |
5 ;; Author: Ulf Jasper <ulf.jasper@web.de> | |
6 ;; Created: March 2005 | |
7 ;; Keywords: calendar | |
8 ;; Human-Keywords: calendar, diary, iCalendar, vCalendar | |
9 | |
10 ;; This file is part of GNU Emacs. | |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
13 ;; it under the terms of the GNU General Public License as published by | |
14 ;; the Free Software Foundation; either version 3, or (at your option) | |
15 ;; any later version. | |
16 | |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | |
25 ;; Boston, MA 02110-1301, USA. | |
26 | |
27 ;;; Commentary: | |
28 | |
29 ;; TODO: | |
30 ;; - Add more unit tests for functions, timezone etc. | |
31 | |
32 ;;; Code: | |
33 (defun icalendar-testsuite-run () | |
34 "Run icalendar test suite." | |
35 (interactive) | |
36 (icalendar-testsuite--run-function-tests) | |
37 (icalendar-testsuite--run-import-tests) | |
38 (icalendar-testsuite--run-export-tests) | |
39 (icalendar-testsuite--run-cycle-tests) | |
40 (icalendar-testsuite--run-real-world-tests) | |
41 (message "All icalendar tests finished successfully.")) | |
42 | |
43 ;; ====================================================================== | |
44 ;; Test methods for functions | |
45 ;; ====================================================================== | |
46 (defun icalendar-testsuite--run-function-tests () | |
47 "Perform tests for single icalendar functions." | |
48 (icalendar-testsuite--test-parse-summary-and-rest) | |
49 (icalendar-testsuite--test-format-ical-event) | |
50 (icalendar-testsuite--test-import-format-sample) | |
51 (icalendar-testsuite--test-first-weekday-of-year)) | |
52 | |
53 (defun icalendar-testsuite--test-format-ical-event () | |
54 "Test icalendar--format-ical-event" | |
55 (let ((icalendar-import-format "%s%d%l%o%t%u%c") | |
56 (icalendar-import-format-summary "SUM %s") | |
57 (icalendar-import-format-location " LOC %s") | |
58 (icalendar-import-format-description " DES %s") | |
59 (icalendar-import-format-organizer " ORG %s") | |
60 (icalendar-import-format-status " STA %s") | |
61 (icalendar-import-format-url " URL %s") | |
62 (icalendar-import-format-class " CLA %s") | |
63 (was-european-calendar european-calendar-style) | |
64 (event (icalendar-testsuite--get-ical-event "BEGIN:VEVENT | |
65 DTSTAMP:20030509T043439Z | |
66 DTSTART:20030509T103000 | |
67 SUMMARY:sum | |
68 ORGANIZER:org | |
69 LOCATION:loc | |
70 DTEND:20030509T153000 | |
71 DESCRIPTION:des | |
72 END:VEVENT | |
73 "))) | |
74 (assert (string= (icalendar--format-ical-event event) | |
75 "SUM sum DES des LOC loc ORG org") t) | |
76 (setq icalendar-import-format (lambda (&rest ignore) | |
77 "helloworld")) | |
78 (assert (string= (icalendar--format-ical-event event) | |
79 "helloworld") t) | |
80 (setq icalendar-import-format | |
81 (lambda (e) | |
82 (format "-%s-%s-%s-%s-%s-%s-%s-" | |
83 (icalendar--get-event-property event 'SUMMARY) | |
84 (icalendar--get-event-property event 'DESCRIPTION) | |
85 (icalendar--get-event-property event 'LOCATION) | |
86 (icalendar--get-event-property event 'ORGANIZER) | |
87 (icalendar--get-event-property event 'STATUS) | |
88 (icalendar--get-event-property event 'URL) | |
89 (icalendar--get-event-property event 'CLASS)))) | |
90 (assert (string= (icalendar--format-ical-event event) | |
91 "-sum-des-loc-org-nil-nil-nil-") t))) | |
92 | |
93 (defun icalendar-testsuite--test-parse-summary-and-rest () | |
94 "Test icalendar--parse-summary-and-rest." | |
95 (let ((icalendar-import-format "%s%d%l%o%t%u%c") | |
96 (icalendar-import-format-summary "SUM %s") | |
97 (icalendar-import-format-location " LOC %s") | |
98 (icalendar-import-format-description " DES %s") | |
99 (icalendar-import-format-organizer " ORG %s") | |
100 (icalendar-import-format-status " STA %s") | |
101 (icalendar-import-format-url " URL %s") | |
102 (icalendar-import-format-class " CLA %s") | |
103 (was-european-calendar european-calendar-style) | |
104 (result)) | |
105 ;; FIXME: need a trailing blank char! | |
106 (setq result (icalendar--parse-summary-and-rest "SUM sum ORG org ")) | |
107 (assert (string= (cdr (assoc 'org result)) "org")) | |
108 | |
109 (setq result (icalendar--parse-summary-and-rest | |
110 "SUM sum DES des LOC loc ORG org STA sta URL url CLA cla ")) | |
111 (assert (string= (cdr (assoc 'des result)) "des")) | |
112 (assert (string= (cdr (assoc 'loc result)) "loc")) | |
113 (assert (string= (cdr (assoc 'org result)) "org")) | |
114 (assert (string= (cdr (assoc 'sta result)) "sta")) | |
115 (assert (string= (cdr (assoc 'cla result)) "cla")) | |
116 | |
117 (setq icalendar-import-format (lambda () "Hello world")) | |
118 (setq result (icalendar--parse-summary-and-rest | |
119 "blah blah ")) | |
120 (assert (not result)) | |
121 )) | |
122 | |
123 (defun icalendar-testsuite--get-ical-event (ical-string) | |
124 "Helper function for testing `icalendar-testsuite--test-format-ical-event'." | |
125 (save-excursion | |
126 (with-temp-buffer | |
127 (insert ical-string) | |
128 (goto-char (point-min)) | |
129 (car (icalendar--read-element nil nil))))) | |
130 | |
131 (defun icalendar-testsuite--test-import-format-sample () | |
132 "Test method for `icalendar-import-format-sample'." | |
133 (assert (string= (icalendar-import-format-sample | |
134 (icalendar-testsuite--get-ical-event "BEGIN:VEVENT | |
135 DTSTAMP:20030509T043439Z | |
136 DTSTART:20030509T103000 | |
137 SUMMARY:a | |
138 ORGANIZER:d | |
139 LOCATION:c | |
140 DTEND:20030509T153000 | |
141 DESCRIPTION:b | |
142 END:VEVENT | |
143 ")) | |
144 (concat "SUMMARY=`a' DESCRIPTION=`b' LOCATION=`c' " | |
145 "ORGANIZER=`d' STATUS=`' URL=`' CLASS=`'")))) | |
146 | |
147 (defun icalendar-testsuite--test-first-weekday-of-year () | |
148 (assert (eq 1 (icalendar-first-weekday-of-year "TU" 2008))) | |
149 (assert (eq 3 (icalendar-first-weekday-of-year "WE" 2007))) | |
150 (assert (eq 5 (icalendar-first-weekday-of-year "TH" 2006))) | |
151 (assert (eq 7 (icalendar-first-weekday-of-year "FR" 2005))) | |
152 (assert (eq 3 (icalendar-first-weekday-of-year "SA" 2004))) | |
153 (assert (eq 5 (icalendar-first-weekday-of-year "SU" 2003))) | |
154 (assert (eq 7 (icalendar-first-weekday-of-year "MO" 2002))) | |
155 (assert (eq 3 (icalendar-first-weekday-of-year "MO" 2000))) | |
156 (assert (eq 1 (icalendar-first-weekday-of-year "TH" 1970)))) | |
157 | |
158 ;; ====================================================================== | |
159 ;; Test methods for exporting from diary to icalendar | |
160 ;; ====================================================================== | |
161 | |
162 (defun icalendar-testsuite--test-export (input-european input-american | |
163 expected-output) | |
164 "Perform an export test. | |
165 Argument INPUT-EUROPEAN european style diary string. | |
166 Argument INPUT-AMERICAN american style diary string. | |
167 Argument EXPECTED-OUTPUT expected icalendar result string." | |
168 (message "--- icalendar-testsuite--test-export ---") | |
169 (let ((was-european-calendar european-calendar-style) | |
170 (icalendar-recurring-start-year 2000)) | |
171 (set-time-zone-rule "CET") ;;FIXME: reset timezone! | |
172 (when input-european | |
173 (let ((calendar-month-name-array | |
174 ["Januar" "Februar" "März" "April" "Mai" "Juni" "Juli" "August" | |
175 "September" "Oktober" "November" "Dezember"]) | |
176 (calendar-day-name-array | |
177 ["Sonntag" "Montag" "Dienstag" "Mittwoch" "Donnerstag" "Freitag" | |
178 "Samstag"])) | |
179 (european-calendar) | |
180 (icalendar-testsuite--do-test-export input-european expected-output))) | |
181 (when input-american | |
182 (let ((calendar-month-name-array | |
183 ["January" "February" "March" "April" "May" "June" "July" "August" | |
184 "September" "October" "November" "December"]) | |
185 (calendar-day-name-array | |
186 ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" | |
187 "Saturday"])) | |
188 (american-calendar) | |
189 (icalendar-testsuite--do-test-export input-american expected-output))) | |
190 (if was-european-calendar | |
191 (european-calendar) | |
192 (american-calendar)))) | |
193 | |
194 (defun icalendar-testsuite--do-test-export (input expected-output) | |
195 "Actually perform export test. | |
196 Argument INPUT input diary string. | |
197 Argument EXPECTED-OUTPUT expected icalendar result string." | |
198 (let ((temp-file (make-temp-file "icalendar-testsuite-ics"))) | |
199 (with-temp-buffer | |
200 (insert input) | |
201 (icalendar-export-region (point-min) (point-max) temp-file)) | |
202 (save-excursion | |
203 (find-file temp-file) | |
204 (goto-char (point-min)) | |
205 (unless | |
206 (cond (expected-output | |
207 (and (re-search-forward "^\\s-*BEGIN:VCALENDAR | |
208 PRODID:-//Emacs//NONSGML icalendar.el//EN | |
209 VERSION:2.0 | |
210 BEGIN:VEVENT | |
211 UID:emacs[0-9]+ | |
212 \\(\\(.\\|\n\\)+\\) | |
213 END:VEVENT | |
214 END:VCALENDAR | |
215 \\s-*$" | |
216 nil t) | |
217 (string-match | |
218 (concat "^\\s-*" | |
219 (regexp-quote (buffer-substring-no-properties | |
220 (match-beginning 1) (match-end 1))) | |
221 "\\s-*$") | |
222 expected-output))) | |
223 (t | |
224 (re-search-forward "^\\s-*BEGIN:VCALENDAR | |
225 PRODID:-//Emacs//NONSGML icalendar.el//EN | |
226 VERSION:2.0 | |
227 END:VCALENDAR | |
228 \\s-*$" | |
229 nil t))) | |
230 (error | |
231 "Export test failed! Input: `%s'\nFound:\n\n%s\n\nbut expected\n\n%s" | |
232 input | |
233 (or (and (match-beginning 1) | |
234 (buffer-substring-no-properties (match-beginning 1) (match-end 1))) | |
235 "<nil>") | |
236 (or expected-output "<nil>")))) | |
237 (kill-buffer (find-buffer-visiting temp-file)) | |
238 (delete-file temp-file))) | |
239 | |
240 ;; ====================================================================== | |
241 ;; Test methods for importing from icalendar to diary | |
242 ;; ====================================================================== | |
243 | |
244 (defun icalendar-testsuite--test-import (input expected-european | |
245 expected-american) | |
246 "Perform import test. | |
247 Argument INPUT icalendar event string. | |
248 Argument EXPECTED-EUROPEAN expected european style diary string. | |
249 Argument EXPECTED-AMERICAN expected american style diary string." | |
250 (message "--- icalendar-testsuite--test-import ---") | |
251 (let ((timezone (cadr (current-time-zone)))) | |
252 (set-time-zone-rule "CET") | |
253 (with-temp-buffer | |
254 (if (string-match "^BEGIN:VCALENDAR" input) | |
255 (insert input) | |
256 (insert "BEGIN:VCALENDAR\nPRODID:-//Emacs//NONSGML icalendar.el//EN\n") | |
257 (insert "VERSION:2.0\nBEGIN:VEVENT\n") | |
258 (insert input) | |
259 (unless (eq (char-before) ?\n) | |
260 (insert "\n")) | |
261 (insert "END:VEVENT\nEND:VCALENDAR\n")) | |
262 (let ((icalendar-import-format "%s%d%l%o%t%u%c") | |
263 (icalendar-import-format-summary "%s") | |
264 (icalendar-import-format-location "\n Location: %s") | |
265 (icalendar-import-format-description "\n Desc: %s") | |
266 (icalendar-import-format-organizer "\n Organizer: %s") | |
267 (icalendar-import-format-status "\n Status: %s") | |
268 (icalendar-import-format-url "\n URL: %s") | |
269 (icalendar-import-format-class "\n Class: %s") | |
270 (was-european-calendar european-calendar-style)) | |
271 (when expected-european | |
272 (european-calendar) | |
273 (icalendar-testsuite--do-test-import input expected-european)) | |
274 (when expected-american | |
275 (american-calendar) | |
276 (icalendar-testsuite--do-test-import input expected-american)) | |
277 (if was-european-calendar | |
278 (european-calendar) | |
279 (american-calendar)))) | |
280 (set-time-zone-rule timezone))) | |
281 | |
282 (defun icalendar-testsuite--do-test-import (input expected-output) | |
283 "Actually perform import test. | |
284 Argument INPUT input icalendar string. | |
285 Argument EXPECTED-OUTPUT expected diary string." | |
286 (let ((temp-file (make-temp-file "icalendar-test-diary"))) | |
287 (icalendar-import-buffer temp-file t t) | |
288 (save-excursion | |
289 (find-file temp-file) | |
290 (let ((result (buffer-substring-no-properties (point-min) (point-max)))) | |
291 (unless (string-match (concat "^\\s-*" expected-output "\\s-*$") | |
292 result) | |
293 (error "Import test failed! Found `%s'\nbut expected `%s'" result | |
294 expected-output))) | |
295 (kill-buffer (find-buffer-visiting temp-file)) | |
296 (delete-file temp-file)))) | |
297 | |
298 ;; ====================================================================== | |
299 ;; Test methods for cycle... | |
300 ;; ====================================================================== | |
301 (defun icalendar-testsuite--test-cycle (input) | |
302 "Perform cycle test. | |
303 Argument INPUT icalendar event string." | |
304 (with-temp-buffer | |
305 (if (string-match "^BEGIN:VCALENDAR" input) | |
306 (insert input) | |
307 (insert "BEGIN:VCALENDAR\nPRODID:-//Emacs//NONSGML icalendar.el//EN\n") | |
308 (insert "VERSION:2.0\nBEGIN:VEVENT\n") | |
309 (insert input) | |
310 (unless (eq (char-before) ?\n) | |
311 (insert "\n")) | |
312 (insert "END:VEVENT\nEND:VCALENDAR\n")) | |
313 (let ((icalendar-import-format "%s%d%l%o%t%u%c") | |
314 (icalendar-import-format-summary "%s") | |
315 (icalendar-import-format-location "\n Location: %s") | |
316 (icalendar-import-format-description "\n Desc: %s") | |
317 (icalendar-import-format-organizer "\n Organizer: %s") | |
318 (icalendar-import-format-status "\n Status: %s") | |
319 (icalendar-import-format-url "\n URL: %s") | |
320 (icalendar-import-format-class "\n Class: %s") | |
321 (was-european-calendar european-calendar-style)) | |
322 (european-calendar) | |
323 (icalendar-testsuite--do-test-cycle) | |
324 (american-calendar) | |
325 (icalendar-testsuite--do-test-cycle) | |
326 (if was-european-calendar | |
327 (european-calendar) | |
328 (american-calendar))))) | |
329 | |
330 (defun icalendar-testsuite--do-test-cycle () | |
331 "Actually perform import/export cycle test." | |
332 (let ((temp-diary (make-temp-file "icalendar-test-diary")) | |
333 (temp-ics (make-temp-file "icalendar-test-ics")) | |
334 (org-input (buffer-substring-no-properties (point-min) (point-max)))) | |
335 (icalendar-import-buffer temp-diary t t) | |
336 (save-excursion | |
337 (find-file temp-diary) | |
338 (icalendar-export-region (point-min) (point-max) temp-ics)) | |
339 (save-excursion | |
340 (find-file temp-ics) | |
341 (goto-char (point-min)) | |
342 (when (re-search-forward "\nUID:.*\n" nil t) | |
343 (replace-match "\n")) | |
344 (let ((cycled (buffer-substring-no-properties (point-min) (point-max)))) | |
345 (unless (string-equal org-input cycled) | |
346 (error "Import test failed! Found `%s'\nbut expected `%s'" cycled | |
347 org-input)))) | |
348 (kill-buffer (find-buffer-visiting temp-diary)) | |
349 (save-excursion | |
350 (set-buffer (find-buffer-visiting temp-ics)) | |
351 (set-buffer-modified-p nil) | |
352 (kill-buffer (current-buffer))) | |
353 (delete-file temp-diary) | |
354 (delete-file temp-ics))) | |
355 | |
356 ;; ====================================================================== | |
357 ;; Import tests | |
358 ;; ====================================================================== | |
359 (defun icalendar-testsuite--run-import-tests () | |
360 "Perform standard import tests." | |
361 (icalendar-testsuite--test-import | |
362 "SUMMARY:non-recurring | |
363 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
364 DTEND;VALUE=DATE-TIME:20030919T113000" | |
365 "&19/9/2003 09:00-11:30 non-recurring" | |
366 "&9/19/2003 09:00-11:30 non-recurring") | |
367 | |
368 (icalendar-testsuite--test-import | |
369 "SUMMARY:non-recurring allday | |
370 DTSTART;VALUE=DATE-TIME:20030919" | |
371 "&19/9/2003 non-recurring allday" | |
372 "&9/19/2003 non-recurring allday") | |
373 | |
374 (icalendar-testsuite--test-import | |
375 "SUMMARY:long | |
376 summary | |
377 DTSTART;VALUE=DATE:20030919" | |
378 "&19/9/2003 long summary" | |
379 "&9/19/2003 long summary") | |
380 | |
381 (icalendar-testsuite--test-import | |
382 "UID:748f2da0-0d9b-11d8-97af-b4ec8686ea61 | |
383 SUMMARY:Sommerferien | |
384 STATUS:TENTATIVE | |
385 CLASS:PRIVATE | |
386 X-MOZILLA-ALARM-DEFAULT-UNITS:Minuten | |
387 X-MOZILLA-RECUR-DEFAULT-INTERVAL:0 | |
388 DTSTART;VALUE=DATE:20040719 | |
389 DTEND;VALUE=DATE:20040828 | |
390 DTSTAMP:20031103T011641Z | |
391 " | |
392 "&%%(and (diary-block 19 7 2004 27 8 2004)) Sommerferien" | |
393 "&%%(and (diary-block 7 19 2004 8 27 2004)) Sommerferien") | |
394 (icalendar-testsuite--test-import | |
395 "UID | |
396 :04979712-3902-11d9-93dd-8f9f4afe08da | |
397 SUMMARY | |
398 :folded summary | |
399 STATUS | |
400 :TENTATIVE | |
401 CLASS | |
402 :PRIVATE | |
403 X-MOZILLA-ALARM-DEFAULT-LENGTH | |
404 :0 | |
405 DTSTART | |
406 :20041123T140000 | |
407 DTEND | |
408 :20041123T143000 | |
409 DTSTAMP | |
410 :20041118T013430Z | |
411 LAST-MODIFIED | |
412 :20041118T013640Z | |
413 " | |
414 "&23/11/2004 14:00-14:30 folded summary" | |
415 "&11/23/2004 14:00-14:30 folded summary") | |
416 (icalendar-testsuite--test-import | |
417 "UID | |
418 :6161a312-3902-11d9-b512-f764153bb28b | |
419 SUMMARY | |
420 :another example | |
421 STATUS | |
422 :TENTATIVE | |
423 CLASS | |
424 :PRIVATE | |
425 X-MOZILLA-ALARM-DEFAULT-LENGTH | |
426 :0 | |
427 DTSTART | |
428 :20041123T144500 | |
429 DTEND | |
430 :20041123T154500 | |
431 DTSTAMP | |
432 :20041118T013641Z | |
433 " | |
434 "&23/11/2004 14:45-15:45 another example" | |
435 "&11/23/2004 14:45-15:45 another example") | |
436 (icalendar-testsuite--test-import | |
437 "SUMMARY:rrule daily | |
438 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
439 DTEND;VALUE=DATE-TIME:20030919T113000 | |
440 RRULE:FREQ=DAILY; | |
441 " | |
442 "&%%(and (diary-cyclic 1 19 9 2003)) 09:00-11:30 rrule daily" | |
443 "&%%(and (diary-cyclic 1 9 19 2003)) 09:00-11:30 rrule daily") | |
444 | |
445 ;; RRULE examples | |
446 (icalendar-testsuite--test-import | |
447 "SUMMARY:rrule daily | |
448 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
449 DTEND;VALUE=DATE-TIME:20030919T113000 | |
450 RRULE:FREQ=DAILY;INTERVAL=2 | |
451 " | |
452 "&%%(and (diary-cyclic 2 19 9 2003)) 09:00-11:30 rrule daily" | |
453 "&%%(and (diary-cyclic 2 9 19 2003)) 09:00-11:30 rrule daily") | |
454 (icalendar-testsuite--test-import | |
455 "SUMMARY:rrule daily with exceptions | |
456 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
457 DTEND;VALUE=DATE-TIME:20030919T113000 | |
458 RRULE:FREQ=DAILY;INTERVAL=2 | |
459 EXDATE:20030921,20030925 | |
460 " | |
461 "&%%(and (not (diary-date 25 9 2003)) (not (diary-date 21 9 2003)) (diary-cyclic 2 19 9 2003)) 09:00-11:30 rrule daily with exceptions" | |
462 "&%%(and (not (diary-date 9 25 2003)) (not (diary-date 9 21 2003)) (diary-cyclic 2 9 19 2003)) 09:00-11:30 rrule daily with exceptions") | |
463 (icalendar-testsuite--test-import | |
464 "SUMMARY:rrule weekly | |
465 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
466 DTEND;VALUE=DATE-TIME:20030919T113000 | |
467 RRULE:FREQ=WEEKLY; | |
468 " | |
469 "&%%(and (diary-cyclic 7 19 9 2003)) 09:00-11:30 rrule weekly" | |
470 "&%%(and (diary-cyclic 7 9 19 2003)) 09:00-11:30 rrule weekly") | |
471 (icalendar-testsuite--test-import | |
472 "SUMMARY:rrule monthly no end | |
473 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
474 DTEND;VALUE=DATE-TIME:20030919T113000 | |
475 RRULE:FREQ=MONTHLY; | |
476 " | |
477 "&%%(and (diary-date 19 t t) (diary-block 19 9 2003 1 1 9999)) 09:00-11:30 rrule monthly no end" | |
478 "&%%(and (diary-date t 19 t) (diary-block 9 19 2003 1 1 9999)) 09:00-11:30 rrule monthly no end") | |
479 (icalendar-testsuite--test-import | |
480 "SUMMARY:rrule monthly with end | |
481 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
482 DTEND;VALUE=DATE-TIME:20030919T113000 | |
483 RRULE:FREQ=MONTHLY;UNTIL=20050819; | |
484 " | |
485 "&%%(and (diary-date 19 t t) (diary-block 19 9 2003 19 8 2005)) 09:00-11:30 rrule monthly with end" | |
486 "&%%(and (diary-date t 19 t) (diary-block 9 19 2003 8 19 2005)) 09:00-11:30 rrule monthly with end") | |
487 (icalendar-testsuite--test-import | |
488 "DTSTART;VALUE=DATE:20040815 | |
489 DTEND;VALUE=DATE:20040816 | |
490 SUMMARY:Maria Himmelfahrt | |
491 UID:CC56BEA6-49D2-11D8-8833-00039386D1C2-RID | |
492 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=8 | |
493 " | |
494 "&%%(and (diary-anniversary 15 8 2004)) Maria Himmelfahrt" | |
495 "&%%(and (diary-anniversary 8 15 2004)) Maria Himmelfahrt") | |
496 (icalendar-testsuite--test-import | |
497 "SUMMARY:rrule yearly | |
498 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
499 DTEND;VALUE=DATE-TIME:20030919T113000 | |
500 RRULE:FREQ=YEARLY;INTERVAL=2 | |
501 " | |
502 "&%%(and (diary-anniversary 19 9 2003)) 09:00-11:30 rrule yearly" ;FIXME | |
503 "&%%(and (diary-anniversary 9 19 2003)) 09:00-11:30 rrule yearly") ;FIXME | |
504 (icalendar-testsuite--test-import | |
505 "SUMMARY:rrule count daily short | |
506 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
507 DTEND;VALUE=DATE-TIME:20030919T113000 | |
508 RRULE:FREQ=DAILY;COUNT=1;INTERVAL=1 | |
509 " | |
510 "&%%(and (diary-cyclic 1 19 9 2003) (diary-block 19 9 2003 19 9 2003)) 09:00-11:30 rrule count daily short" | |
511 "&%%(and (diary-cyclic 1 9 19 2003) (diary-block 9 19 2003 9 19 2003)) 09:00-11:30 rrule count daily short") | |
512 (icalendar-testsuite--test-import | |
513 "SUMMARY:rrule count daily long | |
514 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
515 DTEND;VALUE=DATE-TIME:20030919T113000 | |
516 RRULE:FREQ=DAILY;COUNT=14;INTERVAL=1 | |
517 " | |
518 "&%%(and (diary-cyclic 1 19 9 2003) (diary-block 19 9 2003 2 10 2003)) 09:00-11:30 rrule count daily long" | |
519 "&%%(and (diary-cyclic 1 9 19 2003) (diary-block 9 19 2003 10 2 2003)) 09:00-11:30 rrule count daily long") | |
520 (icalendar-testsuite--test-import | |
521 "SUMMARY:rrule count bi-weekly 3 times | |
522 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
523 DTEND;VALUE=DATE-TIME:20030919T113000 | |
524 RRULE:FREQ=WEEKLY;COUNT=3;INTERVAL=2 | |
525 " | |
526 "&%%(and (diary-cyclic 14 19 9 2003) (diary-block 19 9 2003 31 10 2003)) 09:00-11:30 rrule count bi-weekly 3 times" | |
527 "&%%(and (diary-cyclic 14 9 19 2003) (diary-block 9 19 2003 10 31 2003)) 09:00-11:30 rrule count bi-weekly 3 times") | |
528 (icalendar-testsuite--test-import | |
529 "SUMMARY:rrule count monthly | |
530 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
531 DTEND;VALUE=DATE-TIME:20030919T113000 | |
532 RRULE:FREQ=MONTHLY;INTERVAL=1;COUNT=5 | |
533 " | |
534 "&%%(and (diary-date 19 t t) (diary-block 19 9 2003 19 1 2004)) 09:00-11:30 rrule count monthly" | |
535 "&%%(and (diary-date t 19 t) (diary-block 9 19 2003 1 19 2004)) 09:00-11:30 rrule count monthly") | |
536 (icalendar-testsuite--test-import | |
537 "SUMMARY:rrule count every second month | |
538 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
539 DTEND;VALUE=DATE-TIME:20030919T113000 | |
540 RRULE:FREQ=MONTHLY;INTERVAL=2;COUNT=5 | |
541 " | |
542 "&%%(and (diary-date 19 t t) (diary-block 19 9 2003 19 5 2004)) 09:00-11:30 rrule count every second month" ;FIXME | |
543 "&%%(and (diary-date t 19 t) (diary-block 9 19 2003 5 19 2004)) 09:00-11:30 rrule count every second month") ;FIXME | |
544 (icalendar-testsuite--test-import | |
545 "SUMMARY:rrule count yearly | |
546 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
547 DTEND;VALUE=DATE-TIME:20030919T113000 | |
548 RRULE:FREQ=YEARLY;INTERVAL=1;COUNT=5 | |
549 " | |
550 "&%%(and (diary-date 19 9 t) (diary-block 19 9 2003 19 9 2007)) 09:00-11:30 rrule count yearly" | |
551 "&%%(and (diary-date 9 19 t) (diary-block 9 19 2003 9 19 2007)) 09:00-11:30 rrule count yearly") | |
552 (icalendar-testsuite--test-import | |
553 "SUMMARY:rrule count every second year | |
554 DTSTART;VALUE=DATE-TIME:20030919T090000 | |
555 DTEND;VALUE=DATE-TIME:20030919T113000 | |
556 RRULE:FREQ=YEARLY;INTERVAL=2;COUNT=5 | |
557 " | |
558 "&%%(and (diary-date 19 9 t) (diary-block 19 9 2003 19 9 2011)) 09:00-11:30 rrule count every second year" ;FIXME!!! | |
559 "&%%(and (diary-date 9 19 t) (diary-block 9 19 2003 9 19 2011)) 09:00-11:30 rrule count every second year") ;FIXME!!! | |
560 | |
561 ;; duration | |
562 (icalendar-testsuite--test-import | |
563 "DTSTART;VALUE=DATE:20050217 | |
564 SUMMARY:duration | |
565 DURATION:P7D | |
566 " | |
567 "&%%(and (diary-block 17 2 2005 23 2 2005)) duration" | |
568 "&%%(and (diary-block 2 17 2005 2 23 2005)) duration") | |
569 | |
570 (icalendar-testsuite--test-import | |
571 "UID:20041127T183329Z-18215-1001-4536-49109@andromeda | |
572 DTSTAMP:20041127T183315Z | |
573 LAST-MODIFIED:20041127T183329 | |
574 SUMMARY:Urlaub | |
575 DTSTART;VALUE=DATE:20011221 | |
576 DTEND;VALUE=DATE:20011221 | |
577 RRULE:FREQ=DAILY;UNTIL=20011229;INTERVAL=1;WKST=SU | |
578 CLASS:PUBLIC | |
579 SEQUENCE:1 | |
580 CREATED:20041127T183329 | |
581 " | |
582 "&%%(and (diary-cyclic 1 21 12 2001) (diary-block 21 12 2001 29 12 2001)) Urlaub" | |
583 "&%%(and (diary-cyclic 1 12 21 2001) (diary-block 12 21 2001 12 29 2001)) Urlaub") | |
584 ) | |
585 | |
586 ;; ====================================================================== | |
587 ;; Export tests | |
588 ;; ====================================================================== | |
589 (defun icalendar-testsuite--run-export-tests () | |
590 "Perform standard export tests." | |
591 | |
592 (let ((icalendar-export-hidden-diary-entries nil)) | |
593 (icalendar-testsuite--test-export | |
594 "&3 Okt 2000 ordinary no time " | |
595 "&Oct 3 2000 ordinary no time " | |
596 nil)) | |
597 | |
598 ;; "ordinary" events | |
599 (icalendar-testsuite--test-export | |
600 "3 Okt 2000 ordinary no time " | |
601 "Oct 3 2000 ordinary no time " | |
602 "DTSTART;VALUE=DATE:20001003 | |
603 DTEND;VALUE=DATE:20001004 | |
604 SUMMARY:ordinary no time | |
605 ") | |
606 (icalendar-testsuite--test-export | |
607 "3 Okt 2000 16:30 ordinary with time" | |
608 "Oct 3 2000 16:30 ordinary with time" | |
609 "DTSTART;VALUE=DATE-TIME:20001003T163000 | |
610 DTEND;VALUE=DATE-TIME:20001003T173000 | |
611 SUMMARY:ordinary with time | |
612 ") | |
613 (icalendar-testsuite--test-export | |
614 "3 10 2000 16:30 ordinary with time 2" | |
615 "10 3 2000 16:30 ordinary with time 2" | |
616 "DTSTART;VALUE=DATE-TIME:20001003T163000 | |
617 DTEND;VALUE=DATE-TIME:20001003T173000 | |
618 SUMMARY:ordinary with time 2 | |
619 ") | |
620 | |
621 (icalendar-testsuite--test-export | |
622 "3/10/2000 16:30 ordinary with time 3" | |
623 "10/3/2000 16:30 ordinary with time 3" | |
624 "DTSTART;VALUE=DATE-TIME:20001003T163000 | |
625 DTEND;VALUE=DATE-TIME:20001003T173000 | |
626 SUMMARY:ordinary with time 3 | |
627 ") | |
628 | |
629 ;; multiline -- FIXME!!! | |
630 (icalendar-testsuite--test-export | |
631 "3 Oktober 2000 16:30 multiline | |
632 17:30 multiline continued FIXME" | |
633 "October 3 2000 16:30 multiline | |
634 17:30 multiline continued FIXME" | |
635 "DTSTART;VALUE=DATE-TIME:20001003T163000 | |
636 DTEND;VALUE=DATE-TIME:20001003T173000 | |
637 SUMMARY:multiline | |
638 DESCRIPTION: | |
639 17:30 multiline continued FIXME | |
640 ") | |
641 | |
642 ;; weekly by day | |
643 (icalendar-testsuite--test-export | |
644 "Montag 13:30 weekly by day with start time" | |
645 "Monday 1:30pm weekly by day with start time" | |
646 "DTSTART;VALUE=DATE-TIME:20000103T133000 | |
647 DTEND;VALUE=DATE-TIME:20000103T143000 | |
648 RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO | |
649 SUMMARY:weekly by day with start time | |
650 ") | |
651 | |
652 (icalendar-testsuite--test-export | |
653 "Montag 13:30-15:00 weekly by day with start and end time" | |
654 "Monday 01:30pm-03:00pm weekly by day with start and end time" | |
655 "DTSTART;VALUE=DATE-TIME:20000103T133000 | |
656 DTEND;VALUE=DATE-TIME:20000103T150000 | |
657 RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO | |
658 SUMMARY:weekly by day with start and end time | |
659 ") | |
660 | |
661 ;; yearly | |
662 (icalendar-testsuite--test-export | |
663 "1 Mai yearly no time" | |
664 "may 1 yearly no time" | |
665 "DTSTART;VALUE=DATE:19000501 | |
666 DTEND;VALUE=DATE:19000502 | |
667 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=5;BYMONTHDAY=1 | |
668 SUMMARY:yearly no time | |
669 ") | |
670 | |
671 ;; anniversaries | |
672 (icalendar-testsuite--test-export | |
673 "%%(diary-anniversary 3 10 1989) anniversary no time" | |
674 "%%(diary-anniversary 10 3 1989) anniversary no time" | |
675 "DTSTART;VALUE=DATE:19891003 | |
676 DTEND;VALUE=DATE:19891004 | |
677 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=10;BYMONTHDAY=03 | |
678 SUMMARY:anniversary no time | |
679 ") | |
680 (icalendar-testsuite--test-export | |
681 "%%(diary-anniversary 3 10 1989) 19:00-20:00 anniversary with time" | |
682 "%%(diary-anniversary 10 3 1989) 19:00-20:00 anniversary with time" | |
683 "DTSTART;VALUE=DATE-TIME:19891003T190000 | |
684 DTEND;VALUE=DATE-TIME:19891004T200000 | |
685 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=10;BYMONTHDAY=03 | |
686 SUMMARY:anniversary with time | |
687 ") | |
688 | |
689 ;; block | |
690 (icalendar-testsuite--test-export | |
691 "%%(diary-block 18 6 2001 6 7 2001) block no time" | |
692 "%%(diary-block 6 18 2001 7 6 2001) block no time" | |
693 "DTSTART;VALUE=DATE:20010618 | |
694 DTEND;VALUE=DATE:20010707 | |
695 SUMMARY:block no time | |
696 ") | |
697 (icalendar-testsuite--test-export | |
698 "%%(diary-block 18 6 2001 6 7 2001) 13:00-17:00 block with time" | |
699 "%%(diary-block 6 18 2001 7 6 2001) 13:00-17:00 block with time" | |
700 "DTSTART;VALUE=DATE-TIME:20010618T130000 | |
701 DTEND;VALUE=DATE-TIME:20010618T170000 | |
702 RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20010706 | |
703 SUMMARY:block with time | |
704 ") | |
705 (icalendar-testsuite--test-export | |
706 "%%(diary-block 18 6 2001 6 7 2001) 13:00 block no end time" | |
707 "%%(diary-block 6 18 2001 7 6 2001) 13:00 block no end time" | |
708 "DTSTART;VALUE=DATE-TIME:20010618T130000 | |
709 DTEND;VALUE=DATE-TIME:20010618T140000 | |
710 RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20010706 | |
711 SUMMARY:block no end time | |
712 ") | |
713 ) | |
714 | |
715 ;; ====================================================================== | |
716 ;; Real world | |
717 ;; ====================================================================== | |
718 (defun icalendar-testsuite--run-real-world-tests () | |
719 "Perform real-world tests, as gathered from problem reports." | |
720 ;; 2003-05-29 | |
721 (icalendar-testsuite--test-import | |
722 "BEGIN:VCALENDAR | |
723 METHOD:REQUEST | |
724 PRODID:Microsoft CDO for Microsoft Exchange | |
725 VERSION:2.0 | |
726 BEGIN:VTIMEZONE | |
727 TZID:Kolkata\, Chennai\, Mumbai\, New Delhi | |
728 X-MICROSOFT-CDO-TZID:23 | |
729 BEGIN:STANDARD | |
730 DTSTART:16010101T000000 | |
731 TZOFFSETFROM:+0530 | |
732 TZOFFSETTO:+0530 | |
733 END:STANDARD | |
734 BEGIN:DAYLIGHT | |
735 DTSTART:16010101T000000 | |
736 TZOFFSETFROM:+0530 | |
737 TZOFFSETTO:+0530 | |
738 END:DAYLIGHT | |
739 END:VTIMEZONE | |
740 BEGIN:VEVENT | |
741 DTSTAMP:20030509T043439Z | |
742 DTSTART;TZID=\"Kolkata, Chennai, Mumbai, New Delhi\":20030509T103000 | |
743 SUMMARY:On-Site Interview | |
744 UID:040000008200E00074C5B7101A82E0080000000080B6DE661216C301000000000000000 | |
745 010000000DB823520692542408ED02D7023F9DFF9 | |
746 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=\"Xxxxx | |
747 xxx Xxxxxxxxxxxx\":MAILTO:xxxxxxxx@xxxxxxx.com | |
748 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=\"Yyyyyyy Y | |
749 yyyy\":MAILTO:yyyyyyy@yyyyyyy.com | |
750 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=\"Zzzz Zzzz | |
751 zz\":MAILTO:zzzzzz@zzzzzzz.com | |
752 ORGANIZER;CN=\"Aaaaaa Aaaaa\":MAILTO:aaaaaaa@aaaaaaa.com | |
753 LOCATION:Cccc | |
754 DTEND;TZID=\"Kolkata, Chennai, Mumbai, New Delhi\":20030509T153000 | |
755 DESCRIPTION:10:30am - Blah | |
756 SEQUENCE:0 | |
757 PRIORITY:5 | |
758 CLASS: | |
759 CREATED:20030509T043439Z | |
760 LAST-MODIFIED:20030509T043459Z | |
761 STATUS:CONFIRMED | |
762 TRANSP:OPAQUE | |
763 X-MICROSOFT-CDO-BUSYSTATUS:BUSY | |
764 X-MICROSOFT-CDO-INSTTYPE:0 | |
765 X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY | |
766 X-MICROSOFT-CDO-ALLDAYEVENT:FALSE | |
767 X-MICROSOFT-CDO-IMPORTANCE:1 | |
768 X-MICROSOFT-CDO-OWNERAPPTID:126441427 | |
769 BEGIN:VALARM | |
770 ACTION:DISPLAY | |
771 DESCRIPTION:REMINDER | |
772 TRIGGER;RELATED=START:-PT00H15M00S | |
773 END:VALARM | |
774 END:VEVENT | |
775 END:VCALENDAR" | |
776 "&9/5/2003 10:30-15:30 On-Site Interview | |
777 Desc: 10:30am - Blah | |
778 Location: Cccc | |
779 Organizer: MAILTO:aaaaaaa@aaaaaaa.com" | |
780 "&5/9/2003 10:30-15:30 On-Site Interview | |
781 Desc: 10:30am - Blah | |
782 Location: Cccc | |
783 Organizer: MAILTO:aaaaaaa@aaaaaaa.com") | |
784 | |
785 ;; 2003-06-18 a | |
786 (icalendar-testsuite--test-import | |
787 "DTSTAMP:20030618T195512Z | |
788 DTSTART;TZID=\"Mountain Time (US & Canada)\":20030623T110000 | |
789 SUMMARY:Dress Rehearsal for XXXX-XXXX | |
790 UID:040000008200E00074C5B7101A82E00800000000608AA7DA9835C301000000000000000 | |
791 0100000007C3A6D65EE726E40B7F3D69A23BD567E | |
792 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=\"AAAAA,AAA | |
793 AA (A-AAAAAAA,ex1)\":MAILTO:aaaaa_aaaaa@aaaaa.com | |
794 ORGANIZER;CN=\"ABCD,TECHTRAINING | |
795 (A-Americas,exgen1)\":MAILTO:xxx@xxxxx.com | |
796 LOCATION:555 or TN 555-5555 ID 5555 & NochWas (see below) | |
797 DTEND;TZID=\"Mountain Time (US & Canada)\":20030623T120000 | |
798 DESCRIPTION:753 Zeichen hier radiert | |
799 SEQUENCE:0 | |
800 PRIORITY:5 | |
801 CLASS: | |
802 CREATED:20030618T195518Z | |
803 LAST-MODIFIED:20030618T195527Z | |
804 STATUS:CONFIRMED | |
805 TRANSP:OPAQUE | |
806 X-MICROSOFT-CDO-BUSYSTATUS:BUSY | |
807 X-MICROSOFT-CDO-INSTTYPE:0 | |
808 X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY | |
809 X-MICROSOFT-CDO-ALLDAYEVENT:FALSE | |
810 X-MICROSOFT-CDO-IMPORTANCE:1 | |
811 X-MICROSOFT-CDO-OWNERAPPTID:1022519251 | |
812 BEGIN:VALARM | |
813 ACTION:DISPLAY | |
814 DESCRIPTION:REMINDER | |
815 TRIGGER;RELATED=START:-PT00H15M00S | |
816 END:VALARM" | |
817 "&23/6/2003 11:00-12:00 Dress Rehearsal for XXXX-XXXX | |
818 Desc: 753 Zeichen hier radiert | |
819 Location: 555 or TN 555-5555 ID 5555 & NochWas (see below) | |
820 Organizer: MAILTO:xxx@xxxxx.com" | |
821 "&6/23/2003 11:00-12:00 Dress Rehearsal for XXXX-XXXX | |
822 Desc: 753 Zeichen hier radiert | |
823 Location: 555 or TN 555-5555 ID 5555 & NochWas (see below) | |
824 Organizer: MAILTO:xxx@xxxxx.com") | |
825 | |
826 ;; 2003-06-18 b -- uses timezone | |
827 (icalendar-testsuite--test-import | |
828 "BEGIN:VCALENDAR | |
829 METHOD:REQUEST | |
830 PRODID:Microsoft CDO for Microsoft Exchange | |
831 VERSION:2.0 | |
832 BEGIN:VTIMEZONE | |
833 TZID:Mountain Time (US & Canada) | |
834 X-MICROSOFT-CDO-TZID:12 | |
835 BEGIN:STANDARD | |
836 DTSTART:16010101T020000 | |
837 TZOFFSETFROM:-0600 | |
838 TZOFFSETTO:-0700 | |
839 RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=10;BYDAY=-1SU | |
840 END:STANDARD | |
841 BEGIN:DAYLIGHT | |
842 DTSTART:16010101T020000 | |
843 TZOFFSETFROM:-0700 | |
844 TZOFFSETTO:-0600 | |
845 RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=4;BYDAY=1SU | |
846 END:DAYLIGHT | |
847 END:VTIMEZONE | |
848 BEGIN:VEVENT | |
849 DTSTAMP:20030618T230323Z | |
850 DTSTART;TZID=\"Mountain Time (US & Canada)\":20030623T090000 | |
851 SUMMARY:Updated: Dress Rehearsal for ABC01-15 | |
852 UID:040000008200E00074C5B7101A82E00800000000608AA7DA9835C301000000000000000 | |
853 0100000007C3A6D65EE726E40B7F3D69A23BD567E | |
854 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;X-REPLYTIME=20030618T20 | |
855 0700Z;RSVP=TRUE;CN=\"AAAAA,AAAAAA | |
856 \(A-AAAAAAA,ex1)\":MAILTO:aaaaaa_aaaaa@aaaaa | |
857 .com | |
858 ORGANIZER;CN=\"ABCD,TECHTRAINING | |
859 \(A-Americas,exgen1)\":MAILTO:bbb@bbbbb.com | |
860 LOCATION:123 or TN 123-1234 ID abcd & SonstWo (see below) | |
861 DTEND;TZID=\"Mountain Time (US & Canada)\":20030623T100000 | |
862 DESCRIPTION:Viele Zeichen standen hier früher | |
863 SEQUENCE:0 | |
864 PRIORITY:5 | |
865 CLASS: | |
866 CREATED:20030618T230326Z | |
867 LAST-MODIFIED:20030618T230335Z | |
868 STATUS:CONFIRMED | |
869 TRANSP:OPAQUE | |
870 X-MICROSOFT-CDO-BUSYSTATUS:BUSY | |
871 X-MICROSOFT-CDO-INSTTYPE:0 | |
872 X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY | |
873 X-MICROSOFT-CDO-ALLDAYEVENT:FALSE | |
874 X-MICROSOFT-CDO-IMPORTANCE:1 | |
875 X-MICROSOFT-CDO-OWNERAPPTID:1022519251 | |
876 BEGIN:VALARM | |
877 ACTION:DISPLAY | |
878 DESCRIPTION:REMINDER | |
879 TRIGGER;RELATED=START:-PT00H15M00S | |
880 END:VALARM | |
881 END:VEVENT | |
882 END:VCALENDAR" | |
883 "&23/6/2003 17:00-18:00 Updated: Dress Rehearsal for ABC01-15 | |
884 Desc: Viele Zeichen standen hier früher | |
885 Location: 123 or TN 123-1234 ID abcd & SonstWo (see below) | |
886 Organizer: MAILTO:bbb@bbbbb.com | |
887 Status: CONFIRMED" | |
888 "&6/23/2003 17:00-18:00 Updated: Dress Rehearsal for ABC01-15 | |
889 Desc: Viele Zeichen standen hier früher | |
890 Location: 123 or TN 123-1234 ID abcd & SonstWo (see below) | |
891 Organizer: MAILTO:bbb@bbbbb.com | |
892 Status: CONFIRMED") | |
893 | |
894 ;; export 2004-10-28 block entries | |
895 (icalendar-testsuite--test-export | |
896 nil | |
897 "-*- mode: text; fill-column: 256;-*- | |
898 | |
899 >>> block entries: | |
900 | |
901 %%(diary-block 11 8 2004 11 10 2004) Nov 8-10 aa | |
902 " | |
903 "DTSTART;VALUE=DATE:20041108 | |
904 DTEND;VALUE=DATE:20041111 | |
905 SUMMARY:Nov 8-10 aa") | |
906 | |
907 (icalendar-testsuite--test-export | |
908 nil | |
909 "%%(diary-block 12 13 2004 12 17 2004) Dec 13-17 bb" | |
910 "DTSTART;VALUE=DATE:20041213 | |
911 DTEND;VALUE=DATE:20041218 | |
912 SUMMARY:Dec 13-17 bb") | |
913 | |
914 (icalendar-testsuite--test-export | |
915 nil | |
916 "%%(diary-block 2 3 2005 2 4 2005) Feb 3-4 cc" | |
917 "DTSTART;VALUE=DATE:20050203 | |
918 DTEND;VALUE=DATE:20050205 | |
919 SUMMARY:Feb 3-4 cc") | |
920 | |
921 (icalendar-testsuite--test-export | |
922 nil | |
923 "%%(diary-block 4 24 2005 4 29 2005) April 24-29 dd" | |
924 "DTSTART;VALUE=DATE:20050424 | |
925 DTEND;VALUE=DATE:20050430 | |
926 SUMMARY:April 24-29 dd | |
927 ") | |
928 (icalendar-testsuite--test-export | |
929 nil | |
930 "%%(diary-block 5 30 2005 6 1 2005) may 30 - June 1: ee" | |
931 "DTSTART;VALUE=DATE:20050530 | |
932 DTEND;VALUE=DATE:20050602 | |
933 SUMMARY:may 30 - June 1: ee") | |
934 | |
935 (icalendar-testsuite--test-export | |
936 nil | |
937 "%%(diary-block 6 6 2005 6 8 2005) ff" | |
938 "DTSTART;VALUE=DATE:20050606 | |
939 DTEND;VALUE=DATE:20050609 | |
940 SUMMARY:ff") | |
941 | |
942 ;; export 2004-10-28 anniversary entries | |
943 (icalendar-testsuite--test-export | |
944 nil | |
945 " | |
946 >>> anniversaries: | |
947 | |
948 %%(diary-anniversary 3 28 1991) aa birthday (%d years old)" | |
949 "DTSTART;VALUE=DATE:19910328 | |
950 DTEND;VALUE=DATE:19910329 | |
951 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=03;BYMONTHDAY=28 | |
952 SUMMARY:aa birthday (%d years old) | |
953 ") | |
954 | |
955 (icalendar-testsuite--test-export | |
956 nil | |
957 "%%(diary-anniversary 5 17 1957) bb birthday (%d years old)" | |
958 "DTSTART;VALUE=DATE:19570517 | |
959 DTEND;VALUE=DATE:19570518 | |
960 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=05;BYMONTHDAY=17 | |
961 SUMMARY:bb birthday (%d years old)") | |
962 | |
963 (icalendar-testsuite--test-export | |
964 nil | |
965 "%%(diary-anniversary 6 8 1997) cc birthday (%d years old)" | |
966 "DTSTART;VALUE=DATE:19970608 | |
967 DTEND;VALUE=DATE:19970609 | |
968 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=06;BYMONTHDAY=08 | |
969 SUMMARY:cc birthday (%d years old)") | |
970 | |
971 (icalendar-testsuite--test-export | |
972 nil | |
973 "%%(diary-anniversary 7 22 1983) dd (%d years ago...!)" | |
974 "DTSTART;VALUE=DATE:19830722 | |
975 DTEND;VALUE=DATE:19830723 | |
976 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=07;BYMONTHDAY=22 | |
977 SUMMARY:dd (%d years ago...!)") | |
978 | |
979 (icalendar-testsuite--test-export | |
980 nil | |
981 "%%(diary-anniversary 8 1 1988) ee birthday (%d years old)" | |
982 "DTSTART;VALUE=DATE:19880801 | |
983 DTEND;VALUE=DATE:19880802 | |
984 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=08;BYMONTHDAY=01 | |
985 SUMMARY:ee birthday (%d years old)") | |
986 | |
987 (icalendar-testsuite--test-export | |
988 nil | |
989 "%%(diary-anniversary 9 21 1957) ff birthday (%d years old)" | |
990 "DTSTART;VALUE=DATE:19570921 | |
991 DTEND;VALUE=DATE:19570922 | |
992 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=09;BYMONTHDAY=21 | |
993 SUMMARY:ff birthday (%d years old)") | |
994 | |
995 | |
996 ;; FIXME! | |
997 | |
998 ;; export 2004-10-28 monthly, weekly entries | |
999 | |
1000 ;; (icalendar-testsuite--test-export | |
1001 ;; nil | |
1002 ;; " | |
1003 ;; >>> ------------ monthly: | |
1004 | |
1005 ;; */27/* 10:00 blah blah" | |
1006 ;; "xxx") | |
1007 | |
1008 (icalendar-testsuite--test-export | |
1009 nil | |
1010 ">>> ------------ my week: | |
1011 | |
1012 Monday 13:00 MAC" | |
1013 "DTSTART;VALUE=DATE-TIME:20000103T130000 | |
1014 DTEND;VALUE=DATE-TIME:20000103T140000 | |
1015 RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO | |
1016 SUMMARY:MAC") | |
1017 | |
1018 (icalendar-testsuite--test-export | |
1019 nil | |
1020 "Monday 15:00 a1" | |
1021 "DTSTART;VALUE=DATE-TIME:20000103T150000 | |
1022 DTEND;VALUE=DATE-TIME:20000103T160000 | |
1023 RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO | |
1024 SUMMARY:a1") | |
1025 | |
1026 | |
1027 (icalendar-testsuite--test-export | |
1028 nil | |
1029 "Monday 16:00-17:00 a2" | |
1030 "DTSTART;VALUE=DATE-TIME:20000103T160000 | |
1031 DTEND;VALUE=DATE-TIME:20000103T170000 | |
1032 RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO | |
1033 SUMMARY:a2") | |
1034 | |
1035 (icalendar-testsuite--test-export | |
1036 nil | |
1037 "Tuesday 11:30-13:00 a3" | |
1038 "DTSTART;VALUE=DATE-TIME:20000104T113000 | |
1039 DTEND;VALUE=DATE-TIME:20000104T130000 | |
1040 RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=TU | |
1041 SUMMARY:a3") | |
1042 | |
1043 (icalendar-testsuite--test-export | |
1044 nil | |
1045 "Tuesday 15:00 a4" | |
1046 "DTSTART;VALUE=DATE-TIME:20000104T150000 | |
1047 DTEND;VALUE=DATE-TIME:20000104T160000 | |
1048 RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=TU | |
1049 SUMMARY:a4") | |
1050 | |
1051 (icalendar-testsuite--test-export | |
1052 nil | |
1053 "Wednesday 13:00 a5" | |
1054 "DTSTART;VALUE=DATE-TIME:20000105T130000 | |
1055 DTEND;VALUE=DATE-TIME:20000105T140000 | |
1056 RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=WE | |
1057 SUMMARY:a5") | |
1058 | |
1059 (icalendar-testsuite--test-export | |
1060 nil | |
1061 "Wednesday 11:30-13:30 a6" | |
1062 "DTSTART;VALUE=DATE-TIME:20000105T113000 | |
1063 DTEND;VALUE=DATE-TIME:20000105T133000 | |
1064 RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=WE | |
1065 SUMMARY:a6") | |
1066 | |
1067 (icalendar-testsuite--test-export | |
1068 nil | |
1069 "Wednesday 15:00 s1" | |
1070 "DTSTART;VALUE=DATE-TIME:20000105T150000 | |
1071 DTEND;VALUE=DATE-TIME:20000105T160000 | |
1072 RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=WE | |
1073 SUMMARY:s1") | |
1074 | |
1075 | |
1076 ;; export 2004-10-28 regular entries | |
1077 (icalendar-testsuite--test-export | |
1078 nil | |
1079 " | |
1080 >>> regular diary entries: | |
1081 | |
1082 Oct 12 2004, 14:00 Tue: [2004-10-12] q1" | |
1083 "DTSTART;VALUE=DATE-TIME:20041012T140000 | |
1084 DTEND;VALUE=DATE-TIME:20041012T150000 | |
1085 SUMMARY:Tue: [2004-10-12] q1") | |
1086 | |
1087 ;; 2004-11-19 | |
1088 (icalendar-testsuite--test-import | |
1089 "BEGIN:VCALENDAR | |
1090 VERSION | |
1091 :2.0 | |
1092 PRODID | |
1093 :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN | |
1094 BEGIN:VEVENT | |
1095 UID | |
1096 :04979712-3902-11d9-93dd-8f9f4afe08da | |
1097 SUMMARY | |
1098 :Jjjjj & Wwwww | |
1099 STATUS | |
1100 :TENTATIVE | |
1101 CLASS | |
1102 :PRIVATE | |
1103 X-MOZILLA-ALARM-DEFAULT-LENGTH | |
1104 :0 | |
1105 DTSTART | |
1106 :20041123T140000 | |
1107 DTEND | |
1108 :20041123T143000 | |
1109 DTSTAMP | |
1110 :20041118T013430Z | |
1111 LAST-MODIFIED | |
1112 :20041118T013640Z | |
1113 END:VEVENT | |
1114 BEGIN:VEVENT | |
1115 UID | |
1116 :6161a312-3902-11d9-b512-f764153bb28b | |
1117 SUMMARY | |
1118 :BB Aaaaaaaa Bbbbb | |
1119 STATUS | |
1120 :TENTATIVE | |
1121 CLASS | |
1122 :PRIVATE | |
1123 X-MOZILLA-ALARM-DEFAULT-LENGTH | |
1124 :0 | |
1125 DTSTART | |
1126 :20041123T144500 | |
1127 DTEND | |
1128 :20041123T154500 | |
1129 DTSTAMP | |
1130 :20041118T013641Z | |
1131 END:VEVENT | |
1132 BEGIN:VEVENT | |
1133 UID | |
1134 :943a4d7e-3902-11d9-9ce7-c9addeadf928 | |
1135 SUMMARY | |
1136 :Hhhhhhhh | |
1137 STATUS | |
1138 :TENTATIVE | |
1139 CLASS | |
1140 :PRIVATE | |
1141 X-MOZILLA-ALARM-DEFAULT-LENGTH | |
1142 :0 | |
1143 DTSTART | |
1144 :20041123T110000 | |
1145 DTEND | |
1146 :20041123T120000 | |
1147 DTSTAMP | |
1148 :20041118T013831Z | |
1149 END:VEVENT | |
1150 BEGIN:VEVENT | |
1151 UID | |
1152 :fe53615e-3902-11d9-9dd8-9d38a155bf41 | |
1153 SUMMARY | |
1154 :MMM Aaaaaaaaa | |
1155 STATUS | |
1156 :TENTATIVE | |
1157 CLASS | |
1158 :PRIVATE | |
1159 X-MOZILLA-ALARM-DEFAULT-LENGTH | |
1160 :0 | |
1161 X-MOZILLA-RECUR-DEFAULT-INTERVAL | |
1162 :2 | |
1163 RRULE | |
1164 :FREQ=WEEKLY;INTERVAL=2;BYDAY=FR | |
1165 DTSTART | |
1166 :20041112T140000 | |
1167 DTEND | |
1168 :20041112T183000 | |
1169 DTSTAMP | |
1170 :20041118T014117Z | |
1171 END:VEVENT | |
1172 BEGIN:VEVENT | |
1173 UID | |
1174 :87c928ee-3901-11d9-b21f-b45042155024 | |
1175 SUMMARY | |
1176 :Rrrr/Cccccc ii Aaaaaaaa | |
1177 DESCRIPTION | |
1178 :Vvvvv Rrrr aaa Cccccc | |
1179 STATUS | |
1180 :TENTATIVE | |
1181 CLASS | |
1182 :PRIVATE | |
1183 X-MOZILLA-ALARM-DEFAULT-LENGTH | |
1184 :0 | |
1185 DTSTART | |
1186 ;VALUE=DATE | |
1187 :20041119 | |
1188 DTEND | |
1189 ;VALUE=DATE | |
1190 :20041120 | |
1191 DTSTAMP | |
1192 :20041118T013107Z | |
1193 LAST-MODIFIED | |
1194 :20041118T014203Z | |
1195 END:VEVENT | |
1196 BEGIN:VEVENT | |
1197 UID | |
1198 :e8f331ae-3902-11d9-9948-dfdcb66a2872 | |
1199 SUMMARY | |
1200 :Wwww aa hhhh | |
1201 STATUS | |
1202 :TENTATIVE | |
1203 CLASS | |
1204 :PRIVATE | |
1205 X-MOZILLA-ALARM-DEFAULT-LENGTH | |
1206 :0 | |
1207 RRULE | |
1208 :FREQ=WEEKLY;INTERVAL=1;BYDAY=MO | |
1209 DTSTART | |
1210 ;VALUE=DATE | |
1211 :20041101 | |
1212 DTEND | |
1213 ;VALUE=DATE | |
1214 :20041102 | |
1215 DTSTAMP | |
1216 :20041118T014045Z | |
1217 LAST-MODIFIED | |
1218 :20041118T023846Z | |
1219 END:VEVENT | |
1220 END:VCALENDAR | |
1221 " | |
1222 "&23/11/2004 14:00-14:30 Jjjjj & Wwwww | |
1223 Status: TENTATIVE | |
1224 Class: PRIVATE | |
1225 &23/11/2004 14:45-15:45 BB Aaaaaaaa Bbbbb | |
1226 Status: TENTATIVE | |
1227 Class: PRIVATE | |
1228 &23/11/2004 11:00-12:00 Hhhhhhhh | |
1229 Status: TENTATIVE | |
1230 Class: PRIVATE | |
1231 &%%(and (diary-cyclic 14 12 11 2004)) 14:00-18:30 MMM Aaaaaaaaa | |
1232 Status: TENTATIVE | |
1233 Class: PRIVATE | |
1234 &%%(and (diary-block 19 11 2004 19 11 2004)) Rrrr/Cccccc ii Aaaaaaaa | |
1235 Desc: Vvvvv Rrrr aaa Cccccc | |
1236 Status: TENTATIVE | |
1237 Class: PRIVATE | |
1238 &%%(and (diary-cyclic 7 1 11 2004)) Wwww aa hhhh | |
1239 Status: TENTATIVE | |
1240 Class: PRIVATE " | |
1241 "&11/23/2004 14:00-14:30 Jjjjj & Wwwww | |
1242 Status: TENTATIVE | |
1243 Class: PRIVATE | |
1244 &11/23/2004 14:45-15:45 BB Aaaaaaaa Bbbbb | |
1245 Status: TENTATIVE | |
1246 Class: PRIVATE | |
1247 &11/23/2004 11:00-12:00 Hhhhhhhh | |
1248 Status: TENTATIVE | |
1249 Class: PRIVATE | |
1250 &%%(and (diary-cyclic 14 11 12 2004)) 14:00-18:30 MMM Aaaaaaaaa | |
1251 Status: TENTATIVE | |
1252 Class: PRIVATE | |
1253 &%%(and (diary-block 11 19 2004 11 19 2004)) Rrrr/Cccccc ii Aaaaaaaa | |
1254 Desc: Vvvvv Rrrr aaa Cccccc | |
1255 Status: TENTATIVE | |
1256 Class: PRIVATE | |
1257 &%%(and (diary-cyclic 7 11 1 2004)) Wwww aa hhhh | |
1258 Status: TENTATIVE | |
1259 Class: PRIVATE ") | |
1260 | |
1261 ;; 2004-09-09 pg | |
1262 (icalendar-testsuite--test-export | |
1263 "%%(diary-block 1 1 2004 4 1 2004) Urlaub" | |
1264 nil | |
1265 "DTSTART;VALUE=DATE:20040101 | |
1266 DTEND;VALUE=DATE:20040105 | |
1267 SUMMARY:Urlaub") | |
1268 | |
1269 ;; 2004-10-25 pg | |
1270 (icalendar-testsuite--test-export | |
1271 "5 11 2004 Bla Fasel" | |
1272 nil | |
1273 "DTSTART;VALUE=DATE:20041105 | |
1274 DTEND;VALUE=DATE:20041106 | |
1275 SUMMARY:Bla Fasel") | |
1276 | |
1277 ;; 2004-10-30 pg | |
1278 (icalendar-testsuite--test-export | |
1279 "2 Nov 2004 15:00-16:30 Zahnarzt" | |
1280 nil | |
1281 "DTSTART;VALUE=DATE-TIME:20041102T150000 | |
1282 DTEND;VALUE=DATE-TIME:20041102T163000 | |
1283 SUMMARY:Zahnarzt") | |
1284 | |
1285 ;; 2005-02-07 lt | |
1286 (icalendar-testsuite--test-import | |
1287 "UID | |
1288 :b60d398e-1dd1-11b2-a159-cf8cb05139f4 | |
1289 SUMMARY | |
1290 :Waitangi Day | |
1291 DESCRIPTION | |
1292 :abcdef | |
1293 CATEGORIES | |
1294 :Public Holiday | |
1295 STATUS | |
1296 :CONFIRMED | |
1297 CLASS | |
1298 :PRIVATE | |
1299 DTSTART | |
1300 ;VALUE=DATE | |
1301 :20050206 | |
1302 DTEND | |
1303 ;VALUE=DATE | |
1304 :20050207 | |
1305 DTSTAMP | |
1306 :20050128T011209Z" | |
1307 "&%%(and (diary-block 6 2 2005 6 2 2005)) Waitangi Day | |
1308 Desc: abcdef" | |
1309 "&%%(and (diary-block 2 6 2005 2 6 2005)) Waitangi Day | |
1310 Desc: abcdef") | |
1311 | |
1312 ;; 2005-03-01 lt | |
1313 (icalendar-testsuite--test-import | |
1314 "DTSTART;VALUE=DATE:20050217 | |
1315 SUMMARY:Hhhhhh Aaaaa ii Aaaaaaaa | |
1316 UID:6AFA7558-6994-11D9-8A3A-000A95A0E830-RID | |
1317 DTSTAMP:20050118T210335Z | |
1318 DURATION:P7D" | |
1319 "&%%(and (diary-block 17 2 2005 23 2 2005)) Hhhhhh Aaaaa ii Aaaaaaaa" | |
1320 "&%%(and (diary-block 2 17 2005 2 23 2005)) Hhhhhh Aaaaa ii Aaaaaaaa") | |
1321 | |
1322 ;; 2005-03-23 lt | |
1323 (icalendar-testsuite--test-export | |
1324 "&%%(diary-cyclic 7 8 2 2005) 16:00-16:45 [WORK] Pppp" | |
1325 nil | |
1326 "DTSTART;VALUE=DATE-TIME:20050208T160000 | |
1327 DTEND;VALUE=DATE-TIME:20050208T164500 | |
1328 RRULE:FREQ=DAILY;INTERVAL=7 | |
1329 SUMMARY:[WORK] Pppp | |
1330 ") | |
1331 | |
1332 ;; 2005-05-27 eu | |
1333 (icalendar-testsuite--test-export | |
1334 nil | |
1335 ;; FIXME: colon not allowed! | |
1336 ;;"Nov 1: NNN Wwwwwwww Wwwww - Aaaaaa Pppppppp rrrrrr ddd oo Nnnnnnnn 30" | |
1337 "Nov 1 NNN Wwwwwwww Wwwww - Aaaaaa Pppppppp rrrrrr ddd oo Nnnnnnnn 30" | |
1338 "DTSTART;VALUE=DATE:19001101 | |
1339 DTEND;VALUE=DATE:19001102 | |
1340 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=11;BYMONTHDAY=1 | |
1341 SUMMARY:NNN Wwwwwwww Wwwww - Aaaaaa Pppppppp rrrrrr ddd oo Nnnnnnnn 30 | |
1342 ") | |
1343 ) | |
1344 | |
1345 (defun icalendar-testsuite--run-cycle-tests () | |
1346 (icalendar-testsuite--test-cycle | |
1347 "DTSTART;VALUE=DATE-TIME:20030919T090000 | |
1348 DTEND;VALUE=DATE-TIME:20030919T113000 | |
1349 SUMMARY:Cycletest | |
1350 ") | |
1351 | |
1352 (icalendar-testsuite--test-cycle | |
1353 "DTSTART;VALUE=DATE-TIME:20030919T090000 | |
1354 DTEND;VALUE=DATE-TIME:20030919T113000 | |
1355 SUMMARY:Cycletest | |
1356 DESCRIPTION:beschreibung! | |
1357 LOCATION:nowhere | |
1358 ORGANIZER:ulf | |
1359 ") | |
1360 | |
1361 ;; FIXME: does not work | |
1362 ;; (icalendar-testsuite--test-cycle | |
1363 ;; "DTSTART;VALUE=DATE:19190909 | |
1364 ;;DTEND;VALUE=DATE:19190910 | |
1365 ;;RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=09;BYMONTHDAY=09 | |
1366 ;;SUMMARY:and diary-anniversary | |
1367 ;;") | |
1368 ) | |
1369 | |
1370 | |
1371 (provide 'icalendar-testsuite) | |
1372 | |
1373 ;; arch-tag: 33a98396-90e9-49c8-b0e9-b606386d6e8c | |
1374 ;;; icalendar-testsuite.el ends here |