aboutsummaryrefslogtreecommitdiffstats
path: root/libical/src/test
diff options
context:
space:
mode:
authorJP Rosevear <jpr@src.gnome.org>2003-11-19 00:33:30 +0800
committerJP Rosevear <jpr@src.gnome.org>2003-11-19 00:33:30 +0800
commit58f1b46675ef29528f51e5c44fe0e087bda5d82d (patch)
tree725648cf84182762d9dc2ac5846b233203411d59 /libical/src/test
parentb47685534d7e5738d712962334537bb329831b9e (diff)
downloadgsoc2013-evolution-58f1b46675ef29528f51e5c44fe0e087bda5d82d.tar
gsoc2013-evolution-58f1b46675ef29528f51e5c44fe0e087bda5d82d.tar.gz
gsoc2013-evolution-58f1b46675ef29528f51e5c44fe0e087bda5d82d.tar.bz2
gsoc2013-evolution-58f1b46675ef29528f51e5c44fe0e087bda5d82d.tar.lz
gsoc2013-evolution-58f1b46675ef29528f51e5c44fe0e087bda5d82d.tar.xz
gsoc2013-evolution-58f1b46675ef29528f51e5c44fe0e087bda5d82d.tar.zst
gsoc2013-evolution-58f1b46675ef29528f51e5c44fe0e087bda5d82d.zip
Remove libical from this tree, it resides in e-d-s now.
svn path=/trunk/; revision=23417
Diffstat (limited to 'libical/src/test')
-rw-r--r--libical/src/test/.cvsignore16
-rw-r--r--libical/src/test/2445.ics326
-rw-r--r--libical/src/test/2446.ics0
-rw-r--r--libical/src/test/Makefile.am48
-rw-r--r--libical/src/test/copycluster.c133
-rw-r--r--libical/src/test/findobj.c71
-rw-r--r--libical/src/test/icaltestparser.c122
-rw-r--r--libical/src/test/itip.ics14
-rw-r--r--libical/src/test/outgoing.ics544
-rw-r--r--libical/src/test/process.c407
-rw-r--r--libical/src/test/recur.c161
-rw-r--r--libical/src/test/regression-classify.c187
-rw-r--r--libical/src/test/regression-component.c580
-rw-r--r--libical/src/test/regression-cxx.cpp137
-rw-r--r--libical/src/test/regression-recur.c194
-rw-r--r--libical/src/test/regression-storage.c804
-rw-r--r--libical/src/test/regression-utils.c169
-rw-r--r--libical/src/test/regression.c3667
-rw-r--r--libical/src/test/regression.h53
-rw-r--r--libical/src/test/storage.c873
-rw-r--r--libical/src/test/stow.c888
-rw-r--r--libical/src/test/test_fileset.ics60
-rw-r--r--libical/src/test/testclassify.c128
-rw-r--r--libical/src/test/testmime.c339
-rw-r--r--libical/src/test/testvcal.c64
25 files changed, 0 insertions, 9985 deletions
diff --git a/libical/src/test/.cvsignore b/libical/src/test/.cvsignore
deleted file mode 100644
index eca96994ab..0000000000
--- a/libical/src/test/.cvsignore
+++ /dev/null
@@ -1,16 +0,0 @@
-Makefile
-Makefile.in
-.deps
-.libs
-*.lo
-*.la
-copycluster
-regression
-parser
-storage
-stow
-recur
-testmime
-testvcal
-process
-testclassify
diff --git a/libical/src/test/2445.ics b/libical/src/test/2445.ics
deleted file mode 100644
index 71cf45e750..0000000000
--- a/libical/src/test/2445.ics
+++ /dev/null
@@ -1,326 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-PRODID:-//hacksw/handcal//NONSGML v1.0//EN
-BEGIN:VEVENT
-DTSTAMP:19970901T1300Z
-DTSTART:19970714T170000Z
-DTEND:19970715T035959Z
-SUMMARY:Bastille Day Party
-END:VEVENT
-END:VCALENDAR
-
-BEGIN:VEVENT
-UID:19970901T130000Z-123401@host.com
-DTSTAMP:19970901T1300Z
-DTSTART:19970903T163000Z
-DTEND:19970903T190000Z
-SUMMARY:Annual Employee Review
-CLASS:PRIVATE
-CATEGORIES:BUSINESS,HUMAN RESOURCES
-END:VEVENT
-
-BEGIN:VEVENT
-UID:19970901T130000Z-123402@host.com
-DTSTAMP:19970901T1300Z
-DTSTART:19970401T163000Z
-DTEND:19970402T010000Z
-SUMMARY:Laurel is in sensitivity awareness class.
-CLASS:PUBLIC
-CATEGORIES:BUSINESS,HUMAN RESOURCES
-TRANSP:TRANSPARENT
-END:VEVENT
-
-BEGIN:VEVENT
-UID:19970901T130000Z-123403@host.com
-DTSTAMP:19970901T1300Z
-DTSTART:19971102
-SUMMARY:Our Blissful Anniversary
-CLASS:CONFIDENTIAL
-CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION
-RRULE:FREQ=YEARLY
-END:VEVENT
-
-BEGIN:VTODO
-UID:19970901T130000Z-123404@host.com
-DTSTAMP:19970901T1300Z
-DTSTART:19970415T133000Z
-DUE:19970416T045959Z
-SUMMARY:1996 Income Tax Preparation
-CLASS:CONFIDENTIAL
-CATEGORIES:FAMILY,FINANCE
-PRIORITY:1
-STATUS:NEEDS-ACTION
-END:VTODO
-BEGIN:VJOURNAL
-UID:19970901T130000Z-123405@host.com
-DTSTAMP:19970901T1300Z
-DTSTART;VALUE=DATE:19970317
-SUMMARY:Staff meeting minutes
-DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa
- and Bob. Aurora project plans were reviewed. There is currently
- no budget reserves for this project. Lisa will escalate to
- management. Next meeting on Tuesday.\n
- 2. Telephone Conference: ABC Corp. sales representative called
- to discuss new printer. Promised to get us a demo by Friday.\n
- 3. Henry Miller (Handsoff Insurance): Car was totaled by tree.
- Is looking into a loaner car. 654-2323 (tel).
-END:VJOURNAL
-BEGIN:VFREEBUSY
-ORGANIZER:MAILTO:jane_doe@host1.com
-ATTENDEE:MAILTO:john_public@host2.com
-DTSTART:19971015T050000Z
-DTEND:19971016T050000Z
-DTSTAMP:19970901T083000Z
-END:VFREEBUSY
-BEGIN:VFREEBUSY
-ORGANIZER:MAILTO:jane_doe@host1.com
-ATTENDEE:MAILTO:john_public@host2.com
-DTSTAMP:19970901T100000Z
-FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M,
- 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M
-URL:http://host2.com/pub/busy/jpublic-01.ifb
-COMMENT:This iCalendar file contains busy time information for
- the next three months.
-END:VFREEBUSY
-BEGIN:VFREEBUSY
-ORGANIZER:jsmith@host.com
-DTSTART:19980313T141711Z
-DTEND:19980410T141711Z
-FREEBUSY:19980314T233000Z/19980315T003000Z
-FREEBUSY:19980316T153000Z/19980316T163000Z
-FREEBUSY:19980318T030000Z/19980318T040000Z
-URL:http://www.host.com/calendar/busytime/jsmith.ifb
-END:VFREEBUSY
-BEGIN:VTIMEZONE
-TZID:US-Eastern
-LAST-MODIFIED:19870101T000000Z
-BEGIN:STANDARD
-DTSTAMP:19970901T130000Z
-DTSTART:19971026T020000
-RDATE:19971026T020000
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:19971026T020000
-RDATE:19970406T020000
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VTIMEZONE
-TZID:US-Eastern
-LAST-MODIFIED:19870101T000000Z
-TZURL:http://zones.stds_r_us.net/tz/US-Eastern
-BEGIN:STANDARD
-DTSTART:19671029T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:19870405T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VTIMEZONE
-TZID:US--Fictitious-Eastern
-LAST-MODIFIED:19870101T000000Z
-BEGIN:STANDARD
-DTSTART:19671029T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:19870405T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VTIMEZONE
-TZID:US--Fictitious-Eastern
-LAST-MODIFIED:19870101T000000Z
-BEGIN:STANDARD
-DTSTART:19671029T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:19870405T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-BEGIN:DAYLIGHT
-DTSTART:19990424T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VALARM
-TRIGGER;VALUE=DATE-TIME:19970317T133000Z
-REPEAT:4
-DURATION:PT15M
-ACTION:AUDIO
-ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud
-END:VALARM
-BEGIN:VALARM
-TRIGGER:-PT30M
-REPEAT:2
-DURATION:PT15M
-ACTION:DISPLAY
-DESCRIPTION:Breakfast meeting with executive\n
- team at 8:30 AM EST.
-END:VALARM
-BEGIN:VALARM
-TRIGGER:-P2D
-ACTION:EMAIL
-ATTENDEE:MAILTO:john_doe@host.com
-SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING ***
-DESCRIPTION:A draft agenda needs to be sent out to the attendees
- to the weekly managers meeting (MGR-LIST). Attached is a
- pointer the document template for the agenda file.
-ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen
- da.doc
-END:VALARM
-BEGIN:VALARM
-TRIGGER;VALUE=DATE-TIME:19980101T050000Z
-REPEAT:23
-DURATION:PT1H
-ACTION:PROCEDURE
-ATTACH;FMTTYPE=application/binary:ftp://host.com/novo-
- procs/felizano.exe
-END:VALARM
-BEGIN:VCALENDAR
-PRODID:-//RDU Software//NONSGML HandCal//EN
-VERSION:2.0
-BEGIN:VTIMEZONE
-TZID:US-Eastern
-BEGIN:STANDARD
-DTSTART:19981025T020000
-RDATE:19981025T020000
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:19990404T020000
-RDATE:19990404T020000
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-DTSTAMP:19980309T231000Z
-UID:guid-1.host1.com
-ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com
-ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:
- MAILTO:employee-A@host.com
-DESCRIPTION:Project XYZ Review Meeting
-CATEGORIES:MEETING
-CLASS:PUBLIC
-CREATED:19980309T130000Z
-SUMMARY:XYZ Project Review
-DTSTART;TZID=US-Eastern:19980312T083000
-DTEND;TZID=US-Eastern:19980312T093000
-LOCATION:1CP Conference Room 4350
-END:VEVENT
-END:VCALENDAR
-
-BEGIN:VCALENDAR
-METHOD:PUBLISH
-VERSION:2.0
-PRODID:-//ABC Corporation//NONSGML My Product//EN
-BEGIN:VEVENT
-DTSTAMP:19970324T1200Z
-SEQUENCE:0
-UID:uid3@host1.com
-ORGANIZER:MAILTO:jdoe@host1.com
-DTSTART:19970324T123000Z
-DTEND:19970324T210000Z
-CATEGORIES:MEETING,PROJECT
-CLASS:PUBLIC
-SUMMARY:Calendaring Interoperability Planning Meeting
-DESCRIPTION:Discuss how we can test c&s interoperability\n
- using iCalendar and other IETF standards.
-LOCATION:LDB Lobby
-ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/
- conf/bkgrnd.ps
-END:VEVENT
-END:VCALENDAR
-
-BEGIN:VCALENDAR
-VERSION:2.0
-PRODID:-//ABC Corporation//NONSGML My Product//EN
-BEGIN:VTODO
-DTSTAMP:19980130T134500Z
-SEQUENCE:2
-UID:uid4@host1.com
-ORGANIZER:MAILTO:unclesam@us.gov
-ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com
-DUE:19980415T235959
-STATUS:NEEDS-ACTION
-SUMMARY:Submit Income Taxes
-BEGIN:VALARM
-ACTION:AUDIO
-TRIGGER:19980403T120000
-ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio-
- files/ssbanner.aud
-REPEAT:4
-DURATION:PT1H
-END:VALARM
-END:VTODO
-END:VCALENDAR
-
-BEGIN:VCALENDAR
-VERSION:2.0
-PRODID:-//ABC Corporation//NONSGML My Product//EN
-BEGIN:VJOURNAL
-DTSTAMP:19970324T120000Z
-UID:uid5@host1.com
-ORGANIZER:MAILTO:jsmith@host.com
-STATUS:DRAFT
-CLASS:PUBLIC
-CATEGORIES:Project Report, XYZ, Weekly Meeting
-DESCRIPTION:Project xyz Review Meeting Minutes\n
- Agenda\n1. Review of project version 1.0 requirements.\n2.
- Definition
- of project processes.\n3. Review of project schedule.\n
- Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was
- decided that the requirements need to be signed off by
- product marketing.\n-Project processes were accepted.\n
- -Project schedule needs to account for scheduled holidays
- and employee vacation time. Check with HR for specific
- dates.\n-New schedule will be distributed by Friday.\n-
- Next weeks meeting is cancelled. No meeting until 3/23.
-END:VJOURNAL
-END:VCALENDAR
-BEGIN:VCALENDAR
-VERSION:2.0
-PRODID:-//RDU Software//NONSGML HandCal//EN
-BEGIN:VFREEBUSY
-ORGANIZER:MAILTO:jsmith@host.com
-DTSTART:19980313T141711Z
-DTEND:19980410T141711Z
-FREEBUSY:19980314T233000Z/19980315T003000Z
-FREEBUSY:19980316T153000Z/19980316T163000Z
-FREEBUSY:19980318T030000Z/19980318T040000Z
-URL:http://www.host.com/calendar/busytime/jsmith.ifb
-END:VFREEBUSY
-END:VCALENDAR
diff --git a/libical/src/test/2446.ics b/libical/src/test/2446.ics
deleted file mode 100644
index e69de29bb2..0000000000
--- a/libical/src/test/2446.ics
+++ /dev/null
diff --git a/libical/src/test/Makefile.am b/libical/src/test/Makefile.am
deleted file mode 100644
index e1824b064c..0000000000
--- a/libical/src/test/Makefile.am
+++ /dev/null
@@ -1,48 +0,0 @@
-if WITH_CXX_BINDINGS
-cxx_inc=-DWITH_CXX_BINDINGS
-cxx_libs=../libical/libical-evolution_cxx.la
-regression_cxx = regression-cxx.cpp
-else
-cxx_inc=
-cxx_libs=
-regression_cxx =
-AM_CXX=@CC@
-endif
-
-if WITH_BDB4
-bdb4_inc=-DWITH_BDB -I@BDB_DIR@/include
-bdb4_libs=@BDB_DIR_LIB@/@BDB_LIB@
-else
-bdb4_inc=
-bdb4_libs=
-endif
-
-noinst_PROGRAMS = copycluster regression parser stow recur testmime testvcal process
-
-LDADD = ../libicalss/libicalss-evolution.la ../libicalvcal/libicalvcal-evolution.la $(cxx_libs) ../libical/libical-evolution.la $(bdb4_libs)
-
-LIBS = @PTHREAD_LIBS@
-
-INCLUDES = \
- -I$(top_srcdir) \
- -I$(top_srcdir)/src \
- $(cxx_inc) $(bdb4_inc)
-
-TESTS=regression
-copycluster_SOURCES = copycluster.c
-regression_SOURCES = \
- regression.c \
- regression.h \
- regression-component.c \
- regression-classify.c \
- regression-utils.c \
- regression-recur.c \
- regression-storage.c \
- $(regression_cxx)
-
-parser_SOURCES = icaltestparser.c
-stow_SOURCES = stow.c
-testvcal_SOURCES = testvcal.c
-recur_SOURCES = recur.c
-testmime_SOURCES = testmime.c
-process_SOURCES = process.c
diff --git a/libical/src/test/copycluster.c b/libical/src/test/copycluster.c
deleted file mode 100644
index 6894de9d36..0000000000
--- a/libical/src/test/copycluster.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: copycluster.c
- CREATOR: eric 15 January 2000
-
- $Id$
- $Locker$
-
- (C) COPYRIGHT 2000 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- The Original Code is eric. The Initial Developer of the Original
- Code is Eric Busboom
-
-
- ======================================================================*/
-
-#include <stdio.h> /* for printf */
-#include <errno.h>
-#include <string.h> /* For strerror */
-#include <signal.h> /* for signal */
-#include <unistd.h> /* for alarm */
-#include <stdlib.h> /* for exit */
-
-#include <libical/ical.h>
-#include <libicalss/icalss.h>
-
-static void sig_alrm(int i){
- fprintf(stderr,"Could not get lock on file\n");
- exit(1);
-}
-/* This program copies a file that holds iCal components to an other file. */
-
-
-void usage(char* arg0) {
- printf("usage: %s cluster-file1 cluster-file2\n",arg0);
-}
-
-int main(int c, char *argv[]){
-
- icalset *clusterin, *clusterout;
- icalcomponent *itr;
- int count=0;
- int tostdout = 0;
-
- if(c < 2 || c > 3){
- usage(argv[0]);
- exit(1);
- }
-
- if (c == 2){
- tostdout = 1;
- }
-
-
- /*icalerror_set_error_state(ICAL_PARSE_ERROR, ICAL_ERROR_NONFATAL);*/
-
- signal(SIGALRM,sig_alrm);
-
- alarm(10);
- clusterin = icalfileset_new(argv[1]);
- alarm(0);
-
- if (clusterin == 0){
- printf("Could not open input cluster \"%s\"\n",argv[1]);
- if(icalerrno!= ICAL_NO_ERROR){
- printf("Error: %s\n",icalerror_strerror(icalerrno));
- }
- exit(1);
- }
-
- if (!tostdout){
- alarm(10);
- clusterout = icalfileset_new(argv[2]);
- alarm(0);
- if (clusterout == 0){
- printf("Could not open output cluster \"%s\"\n",argv[2]);
- exit(1);
- }
- }
-
-
- for (itr = icalset_get_first_component(clusterin);
- itr != 0;
- itr = icalset_get_next_component(clusterin)){
-
- icalerror_set_error_state(ICAL_BADARG_ERROR, ICAL_ERROR_NONFATAL);
- icalrestriction_check(itr);
- icalerror_set_error_state(ICAL_BADARG_ERROR, ICAL_ERROR_DEFAULT);
-
- if (itr != 0){
-
- if(tostdout){
-
- printf("--------------\n%s\n",icalcomponent_as_ical_string(itr));
-
- } else {
-
- icalfileset_add_component(clusterout,
- icalcomponent_new_clone(itr));
- }
-
- count++;
-
- } else {
- printf("Got NULL component");
- }
- }
-
-
- printf("Transfered %d components\n",count);
-
- icalset_free(clusterin);
-
- if (!tostdout){
- icalfileset_mark(clusterout);
- icalset_free(clusterout);
- }
-
- return 0;
-}
-
-
diff --git a/libical/src/test/findobj.c b/libical/src/test/findobj.c
deleted file mode 100644
index eb565afa7a..0000000000
--- a/libical/src/test/findobj.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: findobj.c
- CREATOR: eric 11 February 2000
-
- $Id$
- $Locker$
-
- (C) COPYRIGHT 2000 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- The Original Code is eric. The Initial Developer of the Original
- Code is Eric Busboom
-
-
- ======================================================================*/
-
-#include <stdio.h> /* for printf */
-#include <errno.h>
-#include <string.h> /* For strerror */
-
-#include <libical/ical.h>
-#include <libicalss/icalss.h>
-
-/* This program finds an object stored in a calendar */
-
-void usage(char* arg0) {
- printf("usage: %s calendar-dir uid\n",arg0);
-}
-
-int main(int c, char *argv[]){
-
- icalcalendar *cal;
- icaldirset *booked;
- icalcomponent *itr;
-
- if(c < 2 || c > 3){
- usage(argv[0]);
- exit(1);
- }
-
- cal = icalcalendar_new(argv[1]);
-
- if(cal == 0){
- fprintf(stderr,"%s: error in opening calendar \"%s\": %s. errno is \"%s\"\n",
- argv[0],argv[1],icalerror_strerror(icalerrno),
- strerror(errno));
- }
-
- booked = icalcalendar_get_booked(cal);
-
- itr = icaldirset_fetch(booked,argv[2]);
-
-
- if(itr != 0){
- printf("%s",icalcomponent_as_ical_string(itr));
- }
-
- return 0;
-}
-
diff --git a/libical/src/test/icaltestparser.c b/libical/src/test/icaltestparser.c
deleted file mode 100644
index 9992979a3a..0000000000
--- a/libical/src/test/icaltestparser.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: icaltestparser.c
- CREATOR: eric 20 June 1999
-
- $Id$
- $Locker$
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- The original author is Eric Busboom
- The original code is icaltestparser.c
-
-
- (C) COPYRIGHT 1999 The Software Studio.
- http://www.softwarestudio.org
-
- ======================================================================*/
-
-#include <stdio.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <libical/ical.h>
-
-#include <stdlib.h>
-
-char str[] = "BEGIN:VCALENDAR\
-PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\
-VERSION:2.0\
-BEGIN:VTIMEZONE\
-TZID:US-Eastern\
-BEGIN:STANDARD\
-DTSTART:19990404T020000\
-RDATE:19990u404xT020000\
-TZOFFSETFROM:-0500\
-TZOFFSETTO:-0400\
-END:STANDARD\
-BEGIN:DAYLIGHT\
-DTSTART:19990404T020000\
-RDATE:19990404T020000\
-TZOFFSETFROM:-0500\
-TZOFFSETTO:-0400\
-TZNAME:EDT\
-Dkjhgri:derhvnv;\
-BEGIN:dfkjh\
-END:dfdfkjh\
-END:DAYLIGHT\
-END:VTIMEZONE\
-BEGIN:VEVENT\
-GEO:Bongo\
-DTSTAMP:19980309T231000Z\
-UID:guid-1.host1.com\
-ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\
-ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP\
- :MAILTO:employee-A@host.com\
-DESCRIPTION:Project XYZ Review Meeting\
-CATEGORIES:MEETING\
-CLASS:PUBLIC\
-CREATED:19980309T130000Z\
-SUMMARY:XYZ Project Review\
-DTSTART;TZID=US-Eastern:19980312T083000\
-DTEND;TZID=US-Eastern:19980312T093000\
-LOCATION:1CP Conference Room 4350\
-END:VEVENT\
-END:VCALENDAR\
-";
-
-extern int yydebug;
-
-/* Have the parser fetch data from stdin */
-
-char* read_stream(char *s, size_t size, void *d)
-{
- char *c = fgets(s,size, (FILE*)d);
-
- return c;
-
-}
-
-
-
-int main(int argc, char* argv[])
-{
-
- char* line;
- FILE* stream;
- icalcomponent *c;
- icalparser *parser = icalparser_new();
-
- stream = fopen(argv[1],"r");
-
- assert(stream != 0);
-
- icalparser_set_gen_data(parser,stream);
-
- do{
-
- line = icalparser_get_line(parser,read_stream);
-
- c = icalparser_add_line(parser,line);
-
-
- if (c != 0){
- /*icalcomponent_convert_errors(c);*/
- printf("%s",icalcomponent_as_ical_string(c));
- printf("\n---------------\n");
- icalcomponent_free(c);
- }
-
- } while ( line != 0);
-
- return 0;
- }
diff --git a/libical/src/test/itip.ics b/libical/src/test/itip.ics
deleted file mode 100644
index 9a71660a75..0000000000
--- a/libical/src/test/itip.ics
+++ /dev/null
@@ -1,14 +0,0 @@
-
-BEGIN:VCALENDAR
-METHOD:REPLY
-PRODID:-//ACME/DesktopCalendar//EN
-VERSION:2.0
-BEGIN:VEVENT
-ORGANIZER:mailto:a@example.com
-ATTENDEE:mailto:eric@agony.busboom.org
-DTSTART:19970701T200000Z
-DTSTAMP:19970611T190000Z
-SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
-UID:0981234-1234234-23@example.com
-END:VEVENT
-END:VCALENDAR
diff --git a/libical/src/test/outgoing.ics b/libical/src/test/outgoing.ics
deleted file mode 100644
index 9f9fd3fd69..0000000000
--- a/libical/src/test/outgoing.ics
+++ /dev/null
@@ -1,544 +0,0 @@
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T170735Z
-UID
- :calsrv.example.com-873970198738703@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- : Overlap 1
-SEQUENCE
- :0
-COMMENT
- :I can make it to this meeting
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=ACCEPTED
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T170735Z
-UID
- :calsrv.example.com-873970198738704@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- :Overlap 2
-SEQUENCE
- :0
-COMMENT
- :I can make it to this meeting
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=ACCEPTED
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T170735Z
-UID
- :calsrv.example.com-873970198738705@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- :Overlap 3
-SEQUENCE
- :0
-COMMENT
- :I can make it to this meeting
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=ACCEPTED
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T170953Z
-UID
- :calsrv.example.com-873970198738703@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- : Overlap 1
-SEQUENCE
- :0
-COMMENT
- :I can make it to this meeting
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=ACCEPTED
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T170953Z
-UID
- :calsrv.example.com-873970198738704@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- :Overlap 2
-SEQUENCE
- :0
-COMMENT
- :I can make it to this meeting
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=ACCEPTED
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T170953Z
-UID
- :calsrv.example.com-873970198738705@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- :Overlap 3
-SEQUENCE
- :0
-COMMENT
- :I can make it to this meeting
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=ACCEPTED
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T171147Z
-UID
- :calsrv.example.com-873970198738703@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- : Overlap 1
-SEQUENCE
- :0
-COMMENT
- :Unfortunately\, I have another commitment that conflicts with this
- meeting. I am delegating my attendance to Bob.
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=DELEGATED
- ;DELEGATED-TO=bob@cal.softwarestudio.org
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-X-LIC-NOTE
- : Overlap with Slot 2\, 1300 to 1400\, should be counterproposed
-METHOD
- :REQUEST
-VERSION
- :2.0
-BEGIN:VEVENT
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- :Mailto:alice@cal.softwarestudio.org
-ATTENDEE
- ;RSVP=TRUE
- ;CUTYPE=INDIVIDUAL
- ;CN=B
- :Mailto:B@example.com
-DTSTAMP
- :19970611T040000Z
-DTSTART
- :19970701T070000
-DTEND
- :19970701T080000
-SUMMARY
- :Overlap 2
-UID
- :calsrv.example.com-873970198738704@example.com
-SEQUENCE
- :0
-STATUS
- :CONFIRMED
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T171147Z
-UID
- :calsrv.example.com-873970198738705@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- :Overlap 3
-SEQUENCE
- :0
-COMMENT
- :I can't make it to this meeting
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=DECLINED
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T171154Z
-UID
- :calsrv.example.com-873970198738703@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- : Overlap 1
-SEQUENCE
- :0
-COMMENT
- :Unfortunately\, I have another commitment that conflicts with this
- meeting. I am delegating my attendance to Bob.
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=DELEGATED
- ;DELEGATED-TO=bob@cal.softwarestudio.org
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-X-LIC-NOTE
- : Overlap with Slot 2\, 1300 to 1400\, should be counterproposed
-METHOD
- :REQUEST
-VERSION
- :2.0
-BEGIN:VEVENT
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- :Mailto:alice@cal.softwarestudio.org
-ATTENDEE
- ;RSVP=TRUE
- ;CUTYPE=INDIVIDUAL
- ;CN=B
- :Mailto:B@example.com
-DTSTAMP
- :19970611T040000Z
-DTSTART
- :19970701T070000
-DTEND
- :19970701T080000
-SUMMARY
- :Overlap 2
-UID
- :calsrv.example.com-873970198738704@example.com
-SEQUENCE
- :0
-STATUS
- :CONFIRMED
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T171154Z
-UID
- :calsrv.example.com-873970198738705@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- :Overlap 3
-SEQUENCE
- :0
-COMMENT
- :I can't make it to this meeting
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=DECLINED
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T144324Z
-UID
- :calsrv.example.com-873970198738703@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- : Overlap 1
-SEQUENCE
- :0
-COMMENT
- :Unfortunately\, I have another commitment that conflicts with this
- meeting. I am delegating my attendance to Bob.
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=DELEGATED
- ;DELEGATED-TO=bob@cal.softwarestudio.org
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-X-LIC-NOTE
- : Overlap with Slot 2\, 1300 to 1400\, should be counterproposed
-METHOD
- :REQUEST
-VERSION
- :2.0
-BEGIN:VEVENT
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- :Mailto:alice@cal.softwarestudio.org
-ATTENDEE
- ;RSVP=TRUE
- ;CUTYPE=INDIVIDUAL
- ;CN=B
- :Mailto:B@example.com
-DTSTAMP
- :19970611T040000Z
-DTSTART
- :19970701T230000
-DTEND
- :19970702T000000
-SUMMARY
- :Overlap 2
-UID
- :calsrv.example.com-873970198738704@example.com
-SEQUENCE
- :0
-STATUS
- :CONFIRMED
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T144324Z
-UID
- :calsrv.example.com-873970198738705@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- :Overlap 3
-SEQUENCE
- :0
-COMMENT
- :I can't make it to this meeting
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=DECLINED
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T144412Z
-UID
- :calsrv.example.com-873970198738703@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- : Overlap 1
-SEQUENCE
- :0
-COMMENT
- :Unfortunately\, I have another commitment that conflicts with this
- meeting. I am delegating my attendance to Bob.
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=DELEGATED
- ;DELEGATED-TO=bob@cal.softwarestudio.org
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-X-LIC-NOTE
- : Overlap with Slot 2\, 1300 to 1400\, should be counterproposed
-METHOD
- :REQUEST
-VERSION
- :2.0
-BEGIN:VEVENT
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- :Mailto:alice@cal.softwarestudio.org
-ATTENDEE
- ;RSVP=TRUE
- ;CUTYPE=INDIVIDUAL
- ;CN=B
- :Mailto:B@example.com
-DTSTAMP
- :19970611T040000Z
-DTSTART
- :19970701T230000
-DTEND
- :19970702T000000
-SUMMARY
- :Overlap 2
-UID
- :calsrv.example.com-873970198738704@example.com
-SEQUENCE
- :0
-STATUS
- :CONFIRMED
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD
- :REPLY
-VERSION
- :2.0
-PRODID
- :-//SoftwareStudio//NONSGML libical 0.21 //EN
-BEGIN:VEVENT
-DTSTAMP
- :20001121T144412Z
-UID
- :calsrv.example.com-873970198738705@example.com
-ORGANIZER
- :Mailto:bob@cal.softwarestudio.org
-SUMMARY
- :Overlap 3
-SEQUENCE
- :0
-COMMENT
- :I can't make it to this meeting
-ATTENDEE
- ;ROLE=CHAIR
- ;CUTYPE=INDIVIDUAL
- ;CN=Alice
- ;PARTSTAT=DECLINED
- :Mailto:alice@cal.softwarestudio.org
-END:VEVENT
-END:VCALENDAR
diff --git a/libical/src/test/process.c b/libical/src/test/process.c
deleted file mode 100644
index 605a83eee7..0000000000
--- a/libical/src/test/process.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: process.c
- CREATOR: eric 11 February 2000
-
- $Id$
- $Locker$
-
- (C) COPYRIGHT 2000 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- ======================================================================*/
-
-#include <stdio.h> /* for printf */
-#include <errno.h>
-#include <string.h> /* For strerror */
-#include <stdlib.h> /* for free */
-
-#include <libical/ical.h>
-#include <libicalss/icalss.h>
-
-void send_message(icalcomponent *reply,const char* this_user)
-{
- printf("From: %s\n\n%s\n",this_user,icalcomponent_as_ical_string(reply));
-
-
-}
-
-
-int main(int argc, char* argv[])
-{
- icalcomponent *c, *next_c;
- int i=0;
- const char *class_string;
- int dont_remove;
-
- icalset* f = icalset_new_file("../../test-data/process-incoming.ics");
- icalset* trash = icalset_new_file("trash.ics");
- icalset* cal = icalset_new_file("../../test-data/process-calendar.ics");
- icalset* out = icalset_new_file("outgoing.ics");
-
- const char* this_user = "alice@cal.softwarestudio.org";
-
- assert(f!= 0);
- assert(cal!=0);
- assert(trash!=0);
- assert(out!=0);
-
-
- /* Foreach incoming message */
- for(c=icalset_get_first_component(f);c!=0;c = next_c){
-
- icalproperty_xlicclass class;
- icalcomponent *match;
- icalcomponent *inner;
- icalcomponent *reply = 0;
-
- assert(c!=0);
-
- inner = icalcomponent_get_first_real_component(c);
-
- i++;
- reply = 0;
- dont_remove = 0;
-
- if(inner == 0){
- printf("Bad component, no inner\n %s\n",
- icalcomponent_as_ical_string(c));
- continue;
- }
-
- /* Find a booked component that is matched to the incoming
- message, based on the incoming component's UID, SEQUENCE
- and RECURRENCE-ID*/
-
- match = icalset_fetch_match(cal,c);
-
- class = icalclassify(c,match,this_user);
-
- class_string = icalproperty_enum_to_string(class);
-
- /* Print out the notes associated with the incoming component
- and the matched component in the */
- {
- const char *c_note=0;
- const char *m_note=0;
- icalproperty *p;
-
- for(p = icalcomponent_get_first_property(c,ICAL_X_PROPERTY);
- p!= 0;
- p = icalcomponent_get_next_property(c,ICAL_X_PROPERTY)){
-
- if(strcmp(icalproperty_get_x_name(p),"X-LIC-NOTE")==0){
- c_note = icalproperty_get_x(p);
- }
- }
-
- if (match != 0){
- for(p = icalcomponent_get_first_property(match,
- ICAL_X_PROPERTY);
- p!= 0;
- p = icalcomponent_get_next_property(match,
- ICAL_X_PROPERTY)){
- if(strcmp(icalproperty_get_x_name(p),"X-LIC-NOTE")==0){
- m_note = icalproperty_get_x(p);
- }
- }
- }
-
- if(c_note != 0){
- printf("Incoming: %s\n",c_note);
- }
- if(m_note != 0){
- printf("Match : %s\n",m_note);
- }
- }
-
- /* Main processing structure */
-
- switch (class){
- case ICAL_XLICCLASS_NONE: {
- char temp[1024];
- /* Huh? Return an error to sender */
- icalrestriction_check(c);
- icalcomponent_convert_errors(c);
-
- snprintf(temp,1024,"I can't understand the component you sent. \n Here is the component you sent, possibly with error messages:\n %s",icalcomponent_as_ical_string(c));
-
- reply = icalmessage_new_error_reply(
- c,
- this_user,
- temp,
- "",
- ICAL_UNKNOWN_STATUS
- );
-
-
-
- break;
- }
- case ICAL_XLICCLASS_PUBLISHNEW: {
-
- /* Don't accept published events from anyone but
- self. If self, fall through to ICAL_XLICCLASS_REQUESTNEW */
-
-
-
- }
- case ICAL_XLICCLASS_REQUESTNEW: {
-
- /* Book the new component if it does not overlap
- anything. If the time is busy and the start time is
- an even modulo 4, delegate to
- bob@cal.softwarestudio.org. If the time is busy and
- is 1 modulo 4, counterpropose for the first
- available free time. Otherwise, deline the meeting */
-
- icalcomponent *overlaps;
- overlaps = icalclassify_find_overlaps(cal,c);
-
- if(overlaps == 0){
- /* No overlaps, book the meeting */
-/* icalset_add_component(cal,icalcomponent_new_clone(c));*/
-
- /* Return a reply */
- reply = icalmessage_new_accept_reply(c,this_user,
- "I can make it to this meeting");
-
- icalset_add_component(out,reply);
-
- } else {
- /* There was a conflict, so delegate, counterpropose
- or decline it */
- struct icaltimetype dtstart
- = icalcomponent_get_dtstart(c);
-
- if(dtstart.hour%4 == 0){
- /* Delegate the meeting */
- reply = icalmessage_new_delegate_reply(c,
- this_user,
- "bob@cal.softwarestudio.org",
- "Unfortunately, I have another commitment that \
-conflicts with this meeting. I am delegating my attendance to Bob. ");
-
- icalset_add_component(out,reply);
-
- } else if (dtstart.hour%4 == 1) {
- /* Counter propose to next available time */
- icalcomponent *newc;
- struct icalperiodtype next_time;
-
- icalspanlist *spanl =
- icalspanlist_new(cal,dtstart,
- icaltime_null_time());
-
- next_time = icalspanlist_next_free_time(
- spanl,icalcomponent_get_dtstart(c));
-
- newc = icalcomponent_new_clone(c);
-
- icalcomponent_set_dtstart(newc,next_time.start);
-
-
- /* Hack, the duration of the counterproposed
- meeting may be longer than the free time
- available */
- icalcomponent_set_duration(newc,
- icalcomponent_get_duration(c));
-
- reply = icalmessage_new_counterpropose_reply(c,
- newc,
- this_user,
- "Unfortunately, I have another commitment that \
-conflicts with this meeting. I am proposing a time that works better for me.");
-
- icalset_add_component(out,reply);
-
- } else {
- /* Decline the meeting */
-
- reply = icalmessage_new_decline_reply(c,
- this_user,
- "I can't make it to this meeting");
-
- icalset_add_component(out,reply);
-
- }
-
-
- }
- break;
- }
- case ICAL_XLICCLASS_PUBLISHFREEBUSY: {
- /* Store the busy time information in a file named after
- the sender */
- break;
- }
-
- case ICAL_XLICCLASS_PUBLISHUPDATE: {
- /* Only accept publish updates from self. If self, fall
- throught to ICAL_XLICCLASS_REQUESTUPDATE */
- }
-
- case ICAL_XLICCLASS_REQUESTUPDATE: {
- /* always accept the changes */
- break;
- }
-
- case ICAL_XLICCLASS_REQUESTRESCHEDULE: {
- /* Use same rules as REQUEST_NEW */
- icalcomponent *overlaps;
- overlaps = icalclassify_find_overlaps(cal,c);
-
- break;
- }
- case ICAL_XLICCLASS_REQUESTDELEGATE: {
-
- break;
- }
- case ICAL_XLICCLASS_REQUESTNEWORGANIZER: {
- break;
- }
- case ICAL_XLICCLASS_REQUESTFORWARD: {
- break;
- }
- case ICAL_XLICCLASS_REQUESTSTATUS: {
- break;
- }
-
- case ICAL_XLICCLASS_REQUESTFREEBUSY: {
- break;
- }
- case ICAL_XLICCLASS_REPLYACCEPT: {
- /* Change the PARTSTAT of the sender */
- break;
- }
- case ICAL_XLICCLASS_REPLYDECLINE: {
- /* Change the PARTSTAT of the sender */
- break;
- }
- case ICAL_XLICCLASS_REPLYCRASHERACCEPT: {
- /* Add the crasher to the ATTENDEE list with the
- appropriate PARTSTAT */
- break;
- }
- case ICAL_XLICCLASS_REPLYCRASHERDECLINE: {
- /* Add the crasher to the ATTENDEE list with the
- appropriate PARTSTAT */
- break;
- }
- case ICAL_XLICCLASS_ADDINSTANCE: {
- break;
- }
- case ICAL_XLICCLASS_CANCELEVENT: {
- /* Remove the component */
- break;
- }
- case ICAL_XLICCLASS_CANCELINSTANCE: {
- break;
- }
- case ICAL_XLICCLASS_CANCELALL: {
- /* Remove the component */
- break;
- }
- case ICAL_XLICCLASS_REFRESH: {
- /* Resend the latest copy of the request */
- break;
- }
- case ICAL_XLICCLASS_COUNTER: {
- break;
- }
- case ICAL_XLICCLASS_DECLINECOUNTER: {
- break;
- }
- case ICAL_XLICCLASS_MALFORMED: {
- /* Send back an error */
- break;
- }
- case ICAL_XLICCLASS_OBSOLETE: {
- printf(" ** Got an obsolete component:\n%s",
- icalcomponent_as_ical_string(c));
- /* Send back an error */
- break;
- }
- case ICAL_XLICCLASS_MISSEQUENCED: {
- printf(" ** Got a missequenced component:\n%s",
- icalcomponent_as_ical_string(c));
- /* Send back an error */
- break;
- }
- case ICAL_XLICCLASS_UNKNOWN: {
- printf(" ** Don't know what to do with this component:\n%s",
- icalcomponent_as_ical_string(c));
- /* Send back an error */
- break;
- }
- case ICAL_XLICCLASS_X:
- case ICAL_XLICCLASS_REPLYDELEGATE:
- default: {
- }
- }
-
-#if(0)
- if (reply != 0){
-
- /* Don't send the reply if the RSVP parameter indicates not to*/
- icalcomponent *reply_inner;
- icalproperty *attendee;
- icalparameter *rsvp;
-
- reply_inner = icalcomponent_get_first_real_component(reply);
- attendee = icalcomponent_get_first_property(reply_inner,
- ICAL_ATTENDEE_PROPERTY);
- rsvp = icalproperty_get_first_parameter(attendee,
- ICAL_RSVP_PARAMETER);
-
- if(rsvp == 0 || icalparameter_get_rsvp(rsvp) == 1){
- icalrestriction_check(reply);
- send_message(reply,this_user);
- }
-
- icalcomponent_free(reply);
- }
-#endif
-
- if(reply !=0){
- printf("%s\n",icalcomponent_as_ical_string(reply));
- }
-
- next_c = icalset_get_next_component(f);
-
- if(dont_remove == 0){
- /*icalset_remove_component(f,c);
- icalset_add_component(trash,c);*/
- }
- }
-
-#if (0)
-
- for(c = icalset_get_first_component(out);
- c!=0;
- c = icalset_get_next_component(out)){
-
- printf("%s",icalcomponent_as_ical_string(c));
-
- }
-#endif
-
- icalset_free(f);
- icalset_free(trash);
- icalset_free(cal);
- icalset_free(out);
-
- return 0;
-}
-
-
diff --git a/libical/src/test/recur.c b/libical/src/test/recur.c
deleted file mode 100644
index 0b490c0513..0000000000
--- a/libical/src/test/recur.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: recur.c
- CREATOR: ebusboom 8jun00
-
- DESCRIPTION:
-
- Test program for expanding recurrences. Run as:
-
- ./recur ../../test-data/recur.txt
-
-
- (C) COPYRIGHT 1999 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- ======================================================================*/
-
-#include <assert.h>
-#include <string.h> /* for strdup */
-#include <stdlib.h> /* for malloc */
-#include <stdio.h> /* for printf */
-#include <time.h> /* for time() */
-#include <signal.h> /* for signal */
-#ifndef WIN32
-#include <unistd.h> /* for alarm */
-#endif
-
-#include <libical/ical.h>
-#include <libicalss/icalss.h>
-
-#ifdef WIN32
-#define snprintf _snprintf
-#define strcasecmp stricmp
-#endif
-
-static void sig_alrm(int i){
- fprintf(stderr,"Could not get lock on file\n");
- exit(1);
-}
-
-static void recur_callback(icalcomponent *comp,
- struct icaltime_span *span,
- void *data)
-{
- printf("cb: %s", ctime(&span->start));
- printf(" %s\n", ctime(&span->end));
-
-}
-
-int main(int argc, char *argv[])
-{
- icalset *cin;
- struct icaltimetype next;
- icalcomponent *itr;
- icalproperty *desc, *dtstart, *rrule;
- struct icalrecurrencetype recur;
- icalrecur_iterator* ritr;
- time_t tt;
- char* file;
-
- icalerror_set_error_state(ICAL_PARSE_ERROR, ICAL_ERROR_NONFATAL);
-
-#ifndef WIN32
- signal(SIGALRM,sig_alrm);
-#endif
-
- if (argc <= 1){
- file = "../../test-data/recur.txt";
- } else if (argc == 2){
- file = argv[1];
- } else {
- fprintf(stderr,"usage: recur [input file]\n");
- exit(1);
- }
-
-#ifndef WIN32
- alarm(300); /* to get file lock */
-#endif
- cin = icalfileset_new(file);
-#ifndef WIN32
- alarm(0);
-#endif
-
- if(cin == 0){
- fprintf(stderr,"recur: can't open file %s\n",file);
- exit(1);
- }
-
-
- for (itr = icalfileset_get_first_component(cin);
- itr != 0;
- itr = icalfileset_get_next_component(cin)){
-
- struct icaltimetype start = icaltime_from_timet(1,0);
- struct icaltimetype end = icaltime_today();
-
-
-
- desc = icalcomponent_get_first_property(itr,ICAL_DESCRIPTION_PROPERTY);
- dtstart = icalcomponent_get_first_property(itr,ICAL_DTSTART_PROPERTY);
- rrule = icalcomponent_get_first_property(itr,ICAL_RRULE_PROPERTY);
-
- if (desc == 0 || dtstart == 0 || rrule == 0){
- printf("\n******** Error in input component ********\n");
- printf("The following component is malformed:\n %s\n",
- icalcomponent_as_ical_string(itr));
- continue;
- }
-
- printf("\n\n#### %s\n",icalproperty_get_description(desc));
- printf("#### %s\n",icalvalue_as_ical_string(icalproperty_get_value(rrule)));
- recur = icalproperty_get_rrule(rrule);
- start = icalproperty_get_dtstart(dtstart);
-
- ritr = icalrecur_iterator_new(recur,start);
-
- tt = icaltime_as_timet(start);
-
- printf("#### %s\n",ctime(&tt ));
-
- icalrecur_iterator_free(ritr);
-
- for(ritr = icalrecur_iterator_new(recur,start),
- next = icalrecur_iterator_next(ritr);
- !icaltime_is_null_time(next);
- next = icalrecur_iterator_next(ritr)){
-
- tt = icaltime_as_timet(next);
-
- printf(" %s",ctime(&tt ));
-
- }
- icalrecur_iterator_free(ritr);
-
- icalcomponent_foreach_recurrence(itr, start, end,
- recur_callback, NULL);
-
-
-
- }
-
- icalset_free(cin);
-
- icaltimezone_free_builtin_timezones();
-
- icalmemory_free_ring();
-
- free_zone_directory();
-
- return 0;
-}
diff --git a/libical/src/test/regression-classify.c b/libical/src/test/regression-classify.c
deleted file mode 100644
index 7af64499f3..0000000000
--- a/libical/src/test/regression-classify.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: regression-classify.c
- CREATOR: eric 11 February 2000
-
- $Id$
- $Locker$
-
- (C) COPYRIGHT 2000 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- The Original Code is eric. The Initial Developer of the Original
- Code is Eric Busboom
-
-
- ======================================================================*/
-#include <stdio.h> /* for printf */
-#include <errno.h>
-#include <string.h> /* For strerror */
-
-#include <libical/ical.h>
-#include <libicalss/icalss.h>
-#include "regression.h"
-
-extern int VERBOSE;
-
-/* Get a note about the purpose of the property*/
-static const char* get_note(icalcomponent *c)
-{
- icalproperty *p;
- const char* note = 0;
-
- if(c != 0){
- for(p = icalcomponent_get_first_property(c,ICAL_X_PROPERTY);
- p!= 0;
- p = icalcomponent_get_next_property(c,ICAL_X_PROPERTY)){
- if(strcmp(icalproperty_get_x_name(p),"X-LIC-NOTE")==0){
- note = icalproperty_get_x(p);
- }
- }
- }
-
- if(note == 0){
- note = "None";
- }
-
- return note;
-}
-
-/* Get the expected result about the purpose of the property*/
-
-static const char* get_expect(icalcomponent *c)
-{
- icalproperty *p;
- const char* note = 0;
-
- if(c != 0){
- for(p = icalcomponent_get_first_property(c,ICAL_X_PROPERTY);
- p!= 0;
- p = icalcomponent_get_next_property(c,ICAL_X_PROPERTY)){
- if(strcmp(icalproperty_get_x_name(p),"X-LIC-EXPECT")==0){
- note = icalproperty_get_x(p);
- }
- }
- }
-
- if(note == 0){
- note = "None";
- }
-
- return note;
-}
-
-void test_classify(void)
-{
- icalcomponent *c,*match;
- int i=0;
- int error_count = 0;
- /* Open up the two storage files, one for the incomming components,
- one for the calendar */
- icalset* incoming = icalset_new_file("../../test-data/incoming.ics");
- icalset* cal = icalset_new_file("../../test-data/calendar.ics");
- icalset* f = icalset_new_file("../../test-data/classify.ics");
-
- ok("opening file classify.ics", (f!=0));
- ok("opening file calendar.ics", (cal!=0));
- ok("opening file incoming.ics", (incoming!=0));
-
- /* some basic tests.. */
- if (f) {
- c = icalset_get_first_component(f);
- match = icalset_get_next_component(f);
-
- ok("test two vcalendars for SEQUENCE with icalclassify()",
- (icalclassify(c,match,"A@example.com") == ICAL_XLICCLASS_REQUESTRESCHEDULE));
-
- icalset_free(f);
- }
-
- assert(incoming!= 0);
- assert(cal!=0);
-
- /* Iterate through all of the incoming components */
- for(c=icalset_get_first_component(incoming);c!=0;
- c=icalset_get_next_component(incoming)){
-
- icalproperty_xlicclass class;
- icalcomponent *match = 0;
- const char* this_uid;
- const char* this_note = get_note(c);
- const char* expected_result = get_expect(c);
- const char* actual_result;
- const char* match_note;
- char msg[128];
-
- i++;
-
- /* Check this component against the restrictions imposed by
- iTIP. An errors will be inserted as X-LIC-ERROR properties
- in the component. The Parser will also insert errors if it
- cannot parse the component */
- icalcomponent_check_restrictions(c);
-
- /* If there are any errors, print out the component */
-
- error_count = icalcomponent_count_errors(c);
- sprintf(msg, "%s - parsing", this_note);
- int_is(msg, error_count, 0);
-
- if (error_count !=0) {
- if (VERBOSE) printf("----- Component has errors ------- \n%s-----------------\n",
- icalcomponent_as_ical_string(c));
- }
-
- /* Use one of the icalcomponent convenience routines to get
- the UID. This routine will save you from having to use
- icalcomponent_get_inner(),
- icalcomponent_get_first_property(), checking the return
- value, and then calling icalproperty_get_uid. There are
- several other convenience routines for DTSTART, DTEND,
- DURATION, SUMMARY, METHOD, and COMMENT */
- this_uid = icalcomponent_get_uid(c);
-
- if(this_uid != 0){
- /* Look in the calendar for a component with the same UID
- as the incomming component. We should reall also be
- checking the RECURRENCE-ID. Another way to do this
- operation is to us icalset_find_match(), which does use
- the RECURRENCE-ID. */
- match = icalset_fetch(cal,this_uid);
- }
-
-
- /* Classify the incoming component. The third argument is the
- calid of the user who owns the calendar. In a real program,
- you would probably switch() on the class.*/
- class = icalclassify(c,match,"A@example.com");
- /** eventually test this too.. **/
- match_note = get_note(match);
- actual_result = icalproperty_enum_to_string(class);
- sprintf(msg, "expecting %s", expected_result);
- is(msg, expected_result, actual_result);
-
- if (VERBOSE) printf("Test %d\n\
-Incoming: %s\n\
-Matched: %s\n\
-Classification: %s\n\n",
- i,this_note,get_note(match),
- icalproperty_enum_to_string(class));
- }
-
- icalset_free(incoming);
- icalset_free(cal);
-
-}
-
-
diff --git a/libical/src/test/regression-component.c b/libical/src/test/regression-component.c
deleted file mode 100644
index 5494bdd779..0000000000
--- a/libical/src/test/regression-component.c
+++ /dev/null
@@ -1,580 +0,0 @@
-#include <libical/ical.h>
-#include "regression.h"
-
-#include <string.h>
-extern int VERBOSE;
-
-void create_simple_component(void)
-{
-
- icalcomponent* calendar;
- icalproperty *version, *bogus;
-
- /* Create calendar and add properties */
- calendar = icalcomponent_new(ICAL_VCALENDAR_COMPONENT);
-
- ok("create vcalendar component", (calendar!=NULL));
-
- icalcomponent_add_property(
- calendar,
- icalproperty_new_version("2.0")
- );
-
- version = icalcomponent_get_first_property(calendar,ICAL_VERSION_PROPERTY);
- ok("version property added", (version!=NULL));
-
- bogus = icalcomponent_get_first_property(calendar,ICAL_DTSTART_PROPERTY);
- ok("bogus dtstart not found", (bogus == NULL));
-
- if (VERBOSE && calendar)
- printf("%s\n",icalcomponent_as_ical_string(calendar));
-
- icalcomponent_free(calendar);
-}
-
-
-static char* create_new_component_str =
-"BEGIN:VCALENDAR\n"
-"VERSION:2.0\n"
-"PRODID:-//RDU Software//NONSGML HandCal//EN\n"
-"BEGIN:VTIMEZONE\n"
-"TZID:America/New_York\n"
-"BEGIN:DAYLIGHT\n"
-"DTSTART:20020606T212449\n"
-"RDATE;VALUE=PERIOD:20020606T212449/20020607T012809\n"
-"TZOFFSETFROM:-0500\n"
-"TZOFFSETTO:-0400\n"
-"TZNAME:EST\n"
-"END:DAYLIGHT\n"
-"BEGIN:STANDARD\n"
-"DTSTART:20020606T212449\n"
-"RDATE;VALUE=PERIOD:20020606T212449/20020607T012809\n"
-"TZOFFSETFROM:-0400\n"
-"TZOFFSETTO:-0500\n"
-"TZNAME:EST\n"
-"END:STANDARD\n"
-"END:VTIMEZONE\n"
-"BEGIN:VEVENT\n"
-"DTSTAMP:20020606T212449\n"
-"UID:guid-1.host1.com\n"
-"ORGANIZER;ROLE=CHAIR:mrbig@host.com\n"
-"ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE;CUTYPE=GROUP:employee-A@host.com\n"
-"DESCRIPTION:Project XYZ Review Meeting\n"
-"CATEGORIES:MEETING\n"
-"CLASS:PRIVATE\n"
-"CREATED:20020606T212449\n"
-"SUMMARY:XYZ Project Review\n"
-"DTSTART;TZID=America/New_York:20020606T212449\n"
-"DTEND;TZID=America/New_York:20020606T212449\n"
-"LOCATION:1CP Conference Room 4350\n"
-"END:VEVENT\n"
-"END:VCALENDAR\n";
-
-
-/* Create a new component */
-void create_new_component()
-{
- icalcomponent* calendar;
- icalcomponent* timezone;
- icalcomponent* tzc;
- icalcomponent* event;
- struct icaltimetype atime = icaltime_from_timet( 1023398689, 0);
- struct icaldatetimeperiodtype rtime;
- icalproperty* property;
- char *calendar_as_string;
-
- rtime.period.start = icaltime_from_timet( 1023398689,0);
- rtime.period.end = icaltime_from_timet( 1023409689,0);
- rtime.period.end.hour++;
- rtime.time = icaltime_null_time();
-
- /* Create calendar and add properties */
- calendar = icalcomponent_new(ICAL_VCALENDAR_COMPONENT);
-
-
- icalcomponent_add_property(
- calendar,
- icalproperty_new_version("2.0")
- );
-
- icalcomponent_add_property(
- calendar,
- icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN")
- );
-
- /* Create a timezone object and add it to the calendar */
-
- timezone = icalcomponent_new(ICAL_VTIMEZONE_COMPONENT);
-
- icalcomponent_add_property(
- timezone,
- icalproperty_new_tzid("America/New_York")
- );
-
- /* Add a sub-component of the timezone */
- tzc = icalcomponent_new(ICAL_XDAYLIGHT_COMPONENT);
-
- icalcomponent_add_property(
- tzc,
- icalproperty_new_dtstart(atime)
- );
-
- icalcomponent_add_property(
- tzc,
- icalproperty_new_rdate(rtime)
- );
-
- icalcomponent_add_property(
- tzc,
- icalproperty_new_tzoffsetfrom(-5*3600)
- );
-
- icalcomponent_add_property(
- tzc,
- icalproperty_new_tzoffsetto(-4*3600)
- );
-
- icalcomponent_add_property(
- tzc,
- icalproperty_new_tzname("EST")
- );
-
- icalcomponent_add_component(timezone,tzc);
-
- icalcomponent_add_component(calendar,timezone);
-
- /* Add a second subcomponent */
- tzc = icalcomponent_new(ICAL_XSTANDARD_COMPONENT);
-
- icalcomponent_add_property(
- tzc,
- icalproperty_new_dtstart(atime)
- );
-
- icalcomponent_add_property(
- tzc,
- icalproperty_new_rdate(rtime)
- );
-
- icalcomponent_add_property(
- tzc,
- icalproperty_new_tzoffsetfrom(-4*3600)
- );
-
- icalcomponent_add_property(
- tzc,
- icalproperty_new_tzoffsetto(-5*3600)
- );
-
- icalcomponent_add_property(
- tzc,
- icalproperty_new_tzname("EST")
- );
-
- icalcomponent_add_component(timezone,tzc);
-
- /* Add an event */
-
- event = icalcomponent_new(ICAL_VEVENT_COMPONENT);
-
- icalcomponent_add_property(
- event,
- icalproperty_new_dtstamp(atime)
- );
-
- icalcomponent_add_property(
- event,
- icalproperty_new_uid("guid-1.host1.com")
- );
-
- /* add a property that has parameters */
- property = icalproperty_new_organizer("mrbig@host.com");
-
- icalproperty_add_parameter(
- property,
- icalparameter_new_role(ICAL_ROLE_CHAIR)
- );
-
- icalcomponent_add_property(event,property);
-
- /* add another property that has parameters */
- property = icalproperty_new_attendee("employee-A@host.com");
-
- icalproperty_add_parameter(
- property,
- icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT)
- );
-
- icalproperty_add_parameter(
- property,
- icalparameter_new_rsvp(ICAL_RSVP_TRUE)
- );
-
- icalproperty_add_parameter(
- property,
- icalparameter_new_cutype(ICAL_CUTYPE_GROUP)
- );
-
- icalcomponent_add_property(event,property);
-
-
- /* more properties */
-
- icalcomponent_add_property(
- event,
- icalproperty_new_description("Project XYZ Review Meeting")
- );
-
- icalcomponent_add_property(
- event,
- icalproperty_new_categories("MEETING")
- );
-
- icalcomponent_add_property(
- event,
- icalproperty_new_class(ICAL_CLASS_PRIVATE)
- );
-
- icalcomponent_add_property(
- event,
- icalproperty_new_created(atime)
- );
-
- icalcomponent_add_property(
- event,
- icalproperty_new_summary("XYZ Project Review")
- );
-
-
- property = icalproperty_new_dtstart(atime);
-
- icalproperty_add_parameter(
- property,
- icalparameter_new_tzid("America/New_York")
- );
-
- icalcomponent_add_property(event,property);
-
-
- property = icalproperty_new_dtend(atime);
-
- icalproperty_add_parameter(
- property,
- icalparameter_new_tzid("America/New_York")
- );
-
- icalcomponent_add_property(event,property);
-
- icalcomponent_add_property(
- event,
- icalproperty_new_location("1CP Conference Room 4350")
- );
-
- icalcomponent_add_component(calendar,event);
-
- calendar_as_string = icalcomponent_as_ical_string(calendar);
-
- is("build large, complex component",
- calendar_as_string,
- create_new_component_str);
-
- if (VERBOSE && calendar)
- printf("%s\n",icalcomponent_as_ical_string(calendar));
-
-
- if (calendar)
- icalcomponent_free(calendar);
-
-}
-
-/* Create a new component, using the va_args list */
-
-void create_new_component_with_va_args()
-{
-
- icalcomponent* calendar;
- struct icaltimetype atime = icaltime_from_timet( time(0),0);
- struct icaldatetimeperiodtype rtime;
-
- rtime.period.start = icaltime_from_timet( time(0),0);
- rtime.period.end = icaltime_from_timet( time(0),0);
- rtime.period.end.hour++;
- rtime.time = icaltime_null_time();
-
- calendar =
- icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalproperty_new_version("2.0"),
- icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN"),
- icalcomponent_vanew(
- ICAL_VTIMEZONE_COMPONENT,
- icalproperty_new_tzid("America/New_York"),
- icalcomponent_vanew(
- ICAL_XDAYLIGHT_COMPONENT,
- icalproperty_new_dtstart(atime),
- icalproperty_new_rdate(rtime),
- icalproperty_new_tzoffsetfrom(-4.0),
- icalproperty_new_tzoffsetto(-5.0),
- icalproperty_new_tzname("EST"),
- 0
- ),
- icalcomponent_vanew(
- ICAL_XSTANDARD_COMPONENT,
- icalproperty_new_dtstart(atime),
- icalproperty_new_rdate(rtime),
- icalproperty_new_tzoffsetfrom(-5.0),
- icalproperty_new_tzoffsetto(-4.0),
- icalproperty_new_tzname("EST"),
- 0
- ),
- 0
- ),
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstamp(atime),
- icalproperty_new_uid("guid-1.host1.com"),
- icalproperty_vanew_organizer(
- "mrbig@host.com",
- icalparameter_new_role(ICAL_ROLE_CHAIR),
- 0
- ),
- icalproperty_vanew_attendee(
- "employee-A@host.com",
- icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT),
- icalparameter_new_rsvp(ICAL_RSVP_TRUE),
- icalparameter_new_cutype(ICAL_CUTYPE_GROUP),
- 0
- ),
- icalproperty_new_description("Project XYZ Review Meeting"),
- icalproperty_new_categories("MEETING"),
- icalproperty_new_class(ICAL_CLASS_PUBLIC),
- icalproperty_new_created(atime),
- icalproperty_new_summary("XYZ Project Review"),
- icalproperty_vanew_dtstart(
- atime,
- icalparameter_new_tzid("America/New_York"),
- 0
- ),
- icalproperty_vanew_dtend(
- atime,
- icalparameter_new_tzid("America/New_York"),
- 0
- ),
- icalproperty_new_location("1CP Conference Room 4350"),
- 0
- ),
- 0
- );
-
- ok("creating a complex vcalendar", (calendar != NULL));
- if (VERBOSE && calendar)
- printf("%s\n",icalcomponent_as_ical_string(calendar));
-
- icalcomponent_free(calendar);
-
-}
-
-static void print_span(int c, struct icaltime_span span ){
- printf("span-->%d, %d\n", (int)span.start, (int)span.end);
- if (span.start == 0)
- printf("#%02d start: (empty)\n",c);
- else
- printf("#%02d start: %s\n",c,ical_timet_string(span.start));
-
- if (span.end == 0)
- printf(" end : (empty)\n");
- else
- printf(" end : %s\n",ical_timet_string(span.end));
-
-}
-
-/** Test icalcomponent_get_span()
- *
- */
-void test_icalcomponent_get_span()
-{
- time_t tm1 = 973378800; /*Sat Nov 4 23:00:00 UTC 2000,
- Sat Nov 4 15:00:00 PST 2000 */
- time_t tm2 = 973382400; /*Sat Nov 5 00:00:00 UTC 2000
- Sat Nov 4 16:00:00 PST 2000 */
- struct icaldurationtype dur;
- struct icaltime_span span;
- icalcomponent *c;
- icaltimezone *azone, *bzone;
- int tnum = 0;
-
- /** test 0
- * Direct assigning time_t means they will be interpreted as UTC
- */
- span.start = tm1;
- span.end = tm2;
- if (VERBOSE) print_span(tnum++,span);
-
- /** test 1
- * We specify times in a timezone, the returned span is in UTC
- */
- azone = icaltimezone_get_builtin_timezone("America/Los_Angeles");
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_dtstart(
- icaltime_from_timet_with_zone(tm1,0,azone),
- icalparameter_new_tzid("America/Los_Angeles"),0),
- icalproperty_vanew_dtend(
- icaltime_from_timet_with_zone(tm2,0,azone),
- icalparameter_new_tzid("America/Los_Angeles"),0),
- 0
- );
-
- span = icalcomponent_get_span(c);
- if (VERBOSE) print_span(tnum++,span);
- int_is("America/Los_Angeles", span.start, 973407600);
- icalcomponent_free(c);
-
- /** test 2
- * We specify times as floating, the returned span is in UTC
- * with no conversion applied - so result should be as test 0
- */
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_dtstart(icaltime_from_timet(tm1,0),0),
- icalproperty_vanew_dtend(icaltime_from_timet(tm2,0),0),
- 0
- );
-
- span = icalcomponent_get_span(c);
- if (VERBOSE) print_span(tnum++,span);
- int_is("floating time", span.start, tm1);
-
- icalcomponent_free(c);
-
- /** test 3
- * We specify times in a timezone, the returned span is in UTC
- */
- azone = icaltimezone_get_builtin_timezone("America/New_York");
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_dtstart(
- icaltime_from_timet_with_zone(tm1,0,azone),
- icalparameter_new_tzid("America/New_York"),0),
- icalproperty_vanew_dtend(
- icaltime_from_timet_with_zone(tm2,0,azone),
- icalparameter_new_tzid("America/New_York"),0),
- 0
- );
-
- span = icalcomponent_get_span(c);
- if (VERBOSE) print_span(tnum++,span);
- int_is("America/New_York", span.start, 973396800);
-
- icalcomponent_free(c);
-
- /** test 4
- * We specify times in two different timezones, the returned span
- * is in UTC
- */
- azone = icaltimezone_get_builtin_timezone("America/New_York");
- bzone = icaltimezone_get_builtin_timezone("America/Los_Angeles");
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_dtstart(
- icaltime_from_timet_with_zone(tm1,0,azone),
- icalparameter_new_tzid("America/New_York"),0),
- icalproperty_vanew_dtend(
- icaltime_from_timet_with_zone(tm2,0,bzone),
- icalparameter_new_tzid("America/Los_Angeles"),0),
- 0
- );
-
- span = icalcomponent_get_span(c);
- if (VERBOSE) print_span(tnum++,span);
- int_is("America/New_York", span.start, 973396800);
-
- icalcomponent_free(c);
-
- /** test 5
- * We specify start time in a timezone and a duration, the returned span
- * is in UTC
- */
- azone = icaltimezone_get_builtin_timezone("America/Los_Angeles");
- memset(&dur,0,sizeof(dur));
- dur.minutes = 30;
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_dtstart(
- icaltime_from_timet_with_zone(tm1,0,azone),
- icalparameter_new_tzid("America/Los_Angeles"),0),
- icalproperty_new_duration(dur),
-
- 0
- );
-
- span = icalcomponent_get_span(c);
- if (VERBOSE) print_span(tnum++,span);
- int_is("America/Los_Angeles w/ duration", span.end, 973409400);
-
- icalcomponent_free(c);
-
- icalerror_errors_are_fatal = 0;
- /** test 6
- * We specify only start time, should return a null span with no error
- */
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(icaltime_from_timet(tm1,0)),
- 0
- );
-
- span = icalcomponent_get_span(c);
- if (VERBOSE) print_span(tnum++,span);
- int_is("null span", span.start, 0);
- icalcomponent_free(c);
-
- /** test 7
- * We specify start and end date
- */
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(icaltime_from_timet(tm1,1)),
- icalproperty_new_dtend(icaltime_from_timet(tm1,1)),
- 0
- );
-
- span = icalcomponent_get_span(c);
- if (VERBOSE) print_span(tnum++,span);
- int_is("UTC", span.start, 973296000);
- icalcomponent_free(c);
-
- /** test 8
- * We specify start and end date
- */
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(icaltime_from_timet(tm1,1)),
- icalproperty_new_dtend(icaltime_from_timet(tm2,1)),
- 0
- );
-
- span = icalcomponent_get_span(c);
- int_is("UTC #2", span.start, 973296000);
- if (VERBOSE) print_span(tnum++,span);
-
- icalcomponent_free(c);
-
- /** test 9
- * We specify start date
- */
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(icaltime_from_timet(tm1,1)),
- 0
- );
-
- span = icalcomponent_get_span(c);
- if (VERBOSE) print_span(tnum++,span);
- int_is("start date only", span.end, 973382399);
-
- icalcomponent_free(c);
-
- /* assert(icalerrno == ICAL_MALFORMEDDATA_ERROR); */
- icalerror_errors_are_fatal = 1;
-}
diff --git a/libical/src/test/regression-cxx.cpp b/libical/src/test/regression-cxx.cpp
deleted file mode 100644
index e7605b8531..0000000000
--- a/libical/src/test/regression-cxx.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include "icalparameter_cxx.h"
-#include "icalproperty_cxx.h"
-#include "vcomponent.h"
-#include "regression.h"
-
-char content[] = "BEGIN:VCALENDAR\n\
-VERSION:2.1\n\
-BEGIN:VEVENT\n\
-UID:abcd12345\n\
-DTSTART:20020307T180000Z\n\
-DTEND:20020307T190000Z\n\
-SUMMARY:Important Meeting\n\
-END:VEVENT\n\
-END:VCALENDAR";
-
-void test_cxx(void)
-{
- ICalProperty *summProp = new ICalProperty(ICAL_SUMMARY_PROPERTY);
- ICalProperty *startProp = new ICalProperty(ICAL_DTSTART_PROPERTY);
- ICalProperty *endProp = new ICalProperty(ICAL_DTEND_PROPERTY);
- ICalProperty *locationProp = new ICalProperty(ICAL_LOCATION_PROPERTY);
- ICalProperty *descProp = new ICalProperty(ICAL_DESCRIPTION_PROPERTY);
-
- ok("Valid SUMMARY Property", (summProp != 0));
- ok("Valid DTSTART Property", (startProp != 0));
- ok("Valid DTEND Property", (endProp != 0));
- ok("Valid LOCATION Property", (locationProp != 0));
- ok("Valid DESCRIPTION Property", (descProp != 0));
-
- struct icaltimetype starttime = icaltime_from_string("20011221T180000Z"); // UTC time ends in Z
- struct icaltimetype endtime = icaltime_from_string("20020101T080000Z"); // UTC time ends in Z
-
- summProp->set_summary("jon said: change dir to c:\\rest\\test\\nest to get the file called <foo.dat>\nthis should be in the next line.");
- startProp->set_dtstart(starttime);
- endProp->set_dtend(endtime);
- locationProp->set_location("SF, California; Seattle, Washington");
- descProp->set_description("The best cities on the west coast, hit 'NO' if you don't agree!\n");
-
- VEvent *vEvent = new VEvent();
-
- ok("Create a new VEvent", (vEvent!=0));
-
- vEvent->add_property(summProp);
- vEvent->add_property(startProp);
- vEvent->add_property(endProp);
- vEvent->add_property(locationProp);
- vEvent->add_property(descProp);
-
- //
- is ("vEvent->get_summary()",
- vEvent->get_summary(),
- "jon said: change dir to c:\\rest\\test\\nest to get the file called <foo.dat>\nthis should be in the next line.");
-
- is ("vEvent->get_dtstart()",
- icaltime_as_ical_string(vEvent->get_dtstart()),
- "20011221T180000Z");
-
- is ("vEvent->get_dtend()",
- icaltime_as_ical_string(vEvent->get_dtend()),
- "20020101T080000Z");
-
- ok ("vEvent->as_ical_string()",
- (vEvent->as_ical_string() != 0));
-
- if (VERBOSE) {
- printf("Summary: %s\n", vEvent->get_summary());
- printf("DTSTART: %s\n", icaltime_as_ical_string(vEvent->get_dtstart()));
- printf("DTEND: %s\n", icaltime_as_ical_string(vEvent->get_dtend()));
- printf("LOCATION: %s\n", vEvent->get_location());
- printf("DESCRIPTION: %s\n", vEvent->get_description());
-
- printf("vcomponent: %s", vEvent->as_ical_string());
- }
-
- VComponent ic(icalparser_parse_string((const char*)content));
- ok("Parsing component", (ic.is_valid()));
-
- if (VERBOSE)
- printf("%s\n", ic.as_ical_string());
-
- // component is wrapped within BEGIN:VCALENDAR END:VCALENDAR
- // we need to unwrap it.
-
- VEvent* sub_ic = dynamic_cast<VEvent*>(ic.get_first_component(ICAL_VEVENT_COMPONENT));
-
- int_is("Getting VEvent subcomponent",
- sub_ic->isa(),
- ICAL_VEVENT_COMPONENT);
-
- while (sub_ic != NULL) {
- if (VERBOSE)
- printf("subcomponent: %s\n", sub_ic->as_ical_string());
-
- sub_ic = dynamic_cast<VEvent*>(ic.get_next_component(ICAL_VEVENT_COMPONENT));
- }
-
- VCalendar* cal = new VCalendar();
- VAgenda* vAgenda = new VAgenda();
-
- ok("Create a new VCalendar object", (cal != 0));
- ok("Create a new VAgenda object", (vAgenda != 0));
-
- ICalProperty* prop = new ICalProperty(ICAL_OWNER_PROPERTY);
- prop->set_owner("fred@flintstone.net");
- vAgenda->add_property(prop);
-
- prop = new ICalProperty(ICAL_SUMMARY_PROPERTY);
- prop->set_summary("CPMain");
- vAgenda->add_property(prop);
-
- prop = new ICalProperty(ICAL_TZID_PROPERTY);
- prop->set_tzid("America/Los_Angeles");
- vAgenda->add_property(prop);
-
- cal->add_component(vAgenda);
-
- ok("Complex VCALENDAR/VAGENDA", (cal->as_ical_string() != 0));
-
- if (VERBOSE)
- printf("vAgenda: %s\n", cal->as_ical_string());
-
- int caughtException = 0;
- try {
- string foo = "HFHFHFHF";
- VComponent v = VComponent(foo);
- } catch (icalerrorenum err) {
- if (err == ICAL_BADARG_ERROR) {
- caughtException = 1;
- }
- }
- int_is("Testing exception handling", caughtException, 1);
-
-}
-
diff --git a/libical/src/test/regression-recur.c b/libical/src/test/regression-recur.c
deleted file mode 100644
index 793eb402c8..0000000000
--- a/libical/src/test/regression-recur.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: regression-recur.c
- CREATOR: ebusboom 8jun00
-
- DESCRIPTION:
-
- (C) COPYRIGHT 1999 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- ======================================================================*/
-
-#include <assert.h>
-#include <string.h> /* for strdup */
-#include <stdlib.h> /* for malloc */
-#include <stdio.h> /* for printf */
-#include <time.h> /* for time() */
-#include <signal.h> /* for signal */
-#ifndef WIN32
-#include <unistd.h> /* for alarm */
-#endif
-
-#include <libical/ical.h>
-#include <libicalss/icalss.h>
-#include "regression.h"
-
-extern int VERBOSE;
-
-#ifdef WIN32
-#define snprintf _snprintf
-#define strcasecmp stricmp
-#endif
-
-
-static void sig_alrm(int i){
- fprintf(stderr,"Could not get lock on file\n");
- exit(1);
-}
-
-/* Get the expected result about the purpose of the property*/
-
-static int get_expected_numevents(icalcomponent *c)
-{
- icalproperty *p;
- const char* note = 0;
- int num_events = 0;
-
- if(c != 0){
- for(p = icalcomponent_get_first_property(c,ICAL_X_PROPERTY);
- p!= 0;
- p = icalcomponent_get_next_property(c,ICAL_X_PROPERTY)){
- if(strcmp(icalproperty_get_x_name(p),"X-EXPECT-NUMEVENTS")==0){
- note = icalproperty_get_x(p);
- }
- }
- }
-
- if(note != 0){
- num_events = atoi(note);
- }
-
-
- return num_events;
-}
-
-
-
-static void recur_callback(icalcomponent *comp,
- struct icaltime_span *span,
- void *data)
-{
- int *num_recurs = data;
-
- if (VERBOSE) {
- printf("recur: %s", ctime(&span->start));
- printf(" %s", ctime(&span->end));
- }
- *num_recurs = *num_recurs + 1;
-}
-
-void test_recur_file()
-{
- icalset *cin = 0;
- struct icaltimetype next;
- icalcomponent *itr;
- icalproperty *desc, *dtstart, *rrule;
- struct icalrecurrencetype recur;
- icalrecur_iterator* ritr;
- time_t tt;
- char* file;
- int num_recurs_found = 0;
-
- icalerror_set_error_state(ICAL_PARSE_ERROR, ICAL_ERROR_NONFATAL);
-
-#ifndef WIN32
- signal(SIGALRM,sig_alrm);
-#endif
- file = getenv("ICAL_RECUR_FILE");
- if (!file)
- file = "../../test-data/recur.txt";
-
-#ifndef WIN32
- alarm(15); /* to get file lock */
-#endif
- cin = icalfileset_new(file);
-#ifndef WIN32
- alarm(0);
-#endif
-
- ok("opening file with recurring events", (cin!=NULL));
- assert(cin!=NULL);
-
- for (itr = icalfileset_get_first_component(cin);
- itr != 0;
- itr = icalfileset_get_next_component(cin)){
- int badcomp = 0;
- int expected_events = 0;
- char msg[128];
-
-
- struct icaltimetype start = icaltime_null_time();
- struct icaltimetype startmin = icaltime_from_timet(1,0);
- struct icaltimetype endmax = icaltime_null_time();
- const char *desc_str = "malformed component";
-
- desc = icalcomponent_get_first_property(itr,ICAL_DESCRIPTION_PROPERTY);
- dtstart = icalcomponent_get_first_property(itr,ICAL_DTSTART_PROPERTY);
- rrule = icalcomponent_get_first_property(itr,ICAL_RRULE_PROPERTY);
- if (desc) {
- desc_str = icalproperty_get_description(desc);
- }
-
- ok((char*)desc_str, !(desc == 0 || dtstart == 0 || rrule == 0));
-
- if (desc == 0 || dtstart == 0 || rrule == 0) {
- badcomp = 1;
- if (VERBOSE) {
- printf("\n******** Error in input component ********\n");
- printf("The following component is malformed:\n %s\n", desc_str);
- }
- continue;
- }
- if (VERBOSE) {
- printf("\n\n#### %s\n",desc_str);
- printf("#### %s\n",icalvalue_as_ical_string(icalproperty_get_value(rrule)));
- }
-
- recur = icalproperty_get_rrule(rrule);
- start = icalproperty_get_dtstart(dtstart);
-
- ritr = icalrecur_iterator_new(recur,start);
-
- tt = icaltime_as_timet(start);
-
- if (VERBOSE)
- printf("#### %s\n",ctime(&tt ));
-
- icalrecur_iterator_free(ritr);
-
- for(ritr = icalrecur_iterator_new(recur,start),
- next = icalrecur_iterator_next(ritr);
- !icaltime_is_null_time(next);
- next = icalrecur_iterator_next(ritr)){
-
- tt = icaltime_as_timet(next);
-
- if (VERBOSE)
- printf(" %s",ctime(&tt ));
-
- }
-
- icalrecur_iterator_free(ritr);
- num_recurs_found = 0;
- expected_events = get_expected_numevents(itr);
-
- icalcomponent_foreach_recurrence(itr, startmin, endmax,
- recur_callback, &num_recurs_found);
-
- sprintf(msg," expecting total of %d events", expected_events);
- int_is(msg, num_recurs_found, expected_events);
- }
-
- icalset_free(cin);
-}
diff --git a/libical/src/test/regression-storage.c b/libical/src/test/regression-storage.c
deleted file mode 100644
index ea59767014..0000000000
--- a/libical/src/test/regression-storage.c
+++ /dev/null
@@ -1,804 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: regression-storage.c
- CREATOR: eric 03 April 1999
-
- DESCRIPTION:
-
- $Id$
- $Locker$
-
- (C) COPYRIGHT 1999 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- The original author is Eric Busboom
- The original code is usecases.c
-
-
- ======================================================================*/
-
-#include <assert.h>
-#include <string.h> /* for strdup */
-#include <stdlib.h> /* for malloc */
-#include <stdio.h> /* for printf */
-#include <time.h> /* for time() */
-
-#include <libical/ical.h>
-#include <libicalss/icalss.h>
-#include "regression.h"
-
-#define OUTPUT_FILE "filesetout.ics"
-
-/* define sample calendar struct */
-struct calendar {
- int ID;
- int total_size;
-
- /* offsets */
- int total_size_offset;
- int vcalendar_size_offset;
- int vcalendar_offset;
- int title_size_offset;
- int title_offset;
-
- /* data */
- int vcalendar_size;
- char *vcalendar;
-
- int title_size;
- char *title;
-
-};
-
-int vcalendar_init(struct calendar **cal, char *vcalendar, char *title);
-
-#ifdef WITH_BDB
-#include <db.h>
-
-int get_title(DB *dbp, const DBT *pkey, const DBT *pdata, DBT *skey);
-char * parse_vcalendar(const DBT *dbt) ;
-char * pack_calendar(struct calendar *cal, int size);
-struct calendar * unpack_calendar(char *str, int size);
-#endif
-
-static char str[] = "BEGIN:VCALENDAR\n\
-PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\n\
-VERSION:2.0\n\
-BEGIN:VTIMEZONE\n\
-TZID:US-Eastern\n\
-BEGIN:STANDARD\n\
-DTSTART:19981025T020000\n\
-RDATE:19981025T020000\n\
-TZOFFSETFROM:-0400\n\
-TZOFFSETTO:-0500\n\
-TZNAME:EST\n\
-END:STANDARD\n\
-BEGIN:DAYLIGHT\n\
-DTSTART:19990404T020000\n\
-RDATE:19990404T020000\n\
-TZOFFSETFROM:-0500\n\
-TZOFFSETTO:-0400\n\
-TZNAME:EDT\n\
-END:DAYLIGHT\n\
-END:VTIMEZONE\n\
-BEGIN:VEVENT\n\
-DTSTAMP:19980309T231000Z\n\
-UID:guid-1.host1.com\n\
-ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\n\
-ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n\
-DESCRIPTION:Project XYZ Review Meeting\n\
-CATEGORIES:MEETING\n\
-CLASS:PUBLIC\n\
-CREATED:19980309T130000Z\n\
-SUMMARY:XYZ Project Review\n\
-DTSTART;TZID=US-Eastern:19980312T083000\n\
-DTEND;TZID=US-Eastern:19980312T093000\n\
-LOCATION:1CP Conference Room 4350\n\
-END:VEVENT\n\
-BEGIN:BOOGA\n\
-DTSTAMP:19980309T231000Z\n\
-X-LIC-FOO:Booga\n\
-DTSTOMP:19980309T231000Z\n\
-UID:guid-1.host1.com\n\
-END:BOOGA\n\
-END:VCALENDAR";
-
-char str2[] = "BEGIN:VCALENDAR\n\
-PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\n\
-VERSION:2.0\n\
-BEGIN:VEVENT\n\
-DTSTAMP:19980309T231000Z\n\
-UID:guid-1.host1.com\n\
-ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\n\
-ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n\
-DESCRIPTION:Project XYZ Review Meeting\n\
-CATEGORIES:MEETING\n\
-CLASS:PUBLIC\n\
-CREATED:19980309T130000Z\n\
-SUMMARY:XYZ Project Review\n\
-DTSTART;TZID=US-Eastern:19980312T083000\n\
-DTEND;TZID=US-Eastern:19980312T093000\n\
-LOCATION:1CP Conference Room 4350\n\
-END:VEVENT\n\
-END:VCALENDAR\n\
-";
-
-
-void test_fileset_extended(void)
-{
- icalset *cout;
- int month = 0;
- int count=0;
- struct icaltimetype start, end;
- icalcomponent *c,*clone, *itr;
- icalsetiter iter;
-
- start = icaltime_from_timet( time(0),0);
- end = start;
- end.hour++;
-
- cout = icalfileset_new(OUTPUT_FILE);
- ok("Opening output file", (cout != 0));
- assert(cout!=0);
-
- c = icalparser_parse_string(str2);
- ok("Parsing str2", (c!=0));
- assert(c != 0);
-
- icalset_free(cout);
-
- /* Add data to the file */
-
- for(month = 1; month < 10; month++){
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- cout = icalfileset_new(OUTPUT_FILE);
- ok("Opening output file", (cout != 0));
- assert(cout != 0);
-
- start.month = month;
- end.month = month;
-
- clone = icalcomponent_new_clone(c);
- ok("Making clone of output file", (clone!=0));
- assert(clone !=0);
-
- event = icalcomponent_get_first_component(clone,ICAL_VEVENT_COMPONENT);
- ok("Getting first event from clone", (event!=0));
- assert(event != 0);
-
- dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY);
- ok("find DTSTART", (dtstart !=0));
- assert(dtstart!=0);
-
- icalproperty_set_dtstart(dtstart,start);
-
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
- ok("find DTEND", (dtend !=0));
-
- assert(dtend!=0);
-
- icalproperty_set_dtend(dtend,end);
-
- icalfileset_add_component(cout,clone);
- icalfileset_commit(cout);
-
- icalset_free(cout);
- }
-
- /* Print them out */
-
- cout = icalfileset_new(OUTPUT_FILE);
-
- ok("Opening output file", (cout != 0));
- assert(cout != 0);
-
- for (iter = icalfileset_begin_component(cout, ICAL_ANY_COMPONENT, 0);
- icalsetiter_deref(&iter) != 0; icalsetiter_next(&iter)) {
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- itr = icalsetiter_deref(&iter);
- count++;
-
- event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
-
- dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY);
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
-
- if (VERBOSE)
- printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart),
- icalproperty_as_ical_string(dtend));
-
- }
-
- /* Remove all of them */
-
- icalset_free(cout);
-
- cout = icalfileset_new(OUTPUT_FILE);
- ok("Opening output file", (cout!=0));
- assert(cout != 0);
-
- /* need to advance the iterator first before calling remove_componenet() */
- /* otherwise, iter will contain a "removed" component and icalsetiter_next(&iter) */
- /* will fail. */
-
- iter = icalfileset_begin_component(cout, ICAL_ANY_COMPONENT, 0);
- itr = icalsetiter_deref(&iter);
- while (itr != 0) {
- icalsetiter_next(&iter);
- icalfileset_remove_component(cout, itr);
- icalcomponent_free(itr);
- itr = icalsetiter_deref(&iter);
- }
-
- icalset_free(cout);
-
- /* Print them out again */
-
- cout = icalfileset_new(OUTPUT_FILE);
- ok("Opening output file", (cout != 0));
- assert(cout != 0);
- count =0;
-
- for (itr = icalfileset_get_first_component(cout);
- itr != 0;
- itr = icalfileset_get_next_component(cout)){
-
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- count++;
-
- event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
-
- dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY);
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
-
- printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart),
- icalproperty_as_ical_string(dtend));
-
- }
-
- icalset_free(cout);
- icalcomponent_free(c);
-}
-
-
-#ifdef WITH_BDB
-
-/*
- In this example, we're storing a calendar with several components
- under the reference id "calendar_7286" and retrieving records based
- on title, "month_1" through "month_10". We use a number of the
- "optional" arguments to specify secondary indices, sub-databases
- (i.e. having multiple databases residing within a single Berkeley
- DB file), and keys for storage and retrieval.
-*/
-
-void test_bdbset()
-{
- icalset *cout;
- int month = 0;
- int count=0;
- int num_components=0;
- int szdata_len=0;
- int ret=0;
- char *subdb, *szdata, *szpacked_data;
- char uid[255];
- struct icaltimetype start, end;
- icalcomponent *c,*clone, *itr;
- DBT key, data;
- DBC *dbcp;
-
- struct calendar *cal;
- int cal_size;
-
- return; // for now... TODO fix these broken tests..
-
-
-
- start = icaltime_from_timet( time(0),0);
- end = start;
- end.hour++;
-
- /* Note: as per the Berkeley DB ref pages:
- *
- * The database argument is optional, and allows applications to
- * have multiple databases in a single file. Although no database
- * argument needs to be specified, it is an error to attempt to
- * open a second database in a file that was not initially created
- * using a database name.
- *
- */
-
- subdb = "calendar_id";
-
- /* open database, using subdb */
- cout = icalbdbset_new("calendar.db", ICALBDB_EVENTS, DB_HASH, 0);
- /*
- sdbp = icalbdbset_secondary_open(dbp,
- DATABASE,
- "title",
- get_title,
- DB_HASH);
- */
-
- c = icalparser_parse_string(str2);
-
- assert(c != 0);
-
- /* Add data to the file */
-
- for(month = 1; month < 10; month++){
- icalcomponent *event;
- icalproperty *dtstart, *dtend, *location;
-
- /* retrieve data */
- // cout = icalbdbset_new(dbp, sdbp, NULL);
- // assert(cout != 0);
-
- start.month = month;
- end.month = month;
-
- clone = icalcomponent_new_clone(c);
- assert(clone !=0);
- event = icalcomponent_get_first_component(clone,
- ICAL_VEVENT_COMPONENT);
- assert(event != 0);
-
- dtstart = icalcomponent_get_first_property(event,
- ICAL_DTSTART_PROPERTY);
- assert(dtstart!=0);
- icalproperty_set_dtstart(dtstart,start);
-
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
- assert(dtend!=0);
- icalproperty_set_dtend(dtend,end);
-
- location = icalcomponent_get_first_property(event, ICAL_LOCATION_PROPERTY);
- assert(location!=0);
-
-#if 0
- /* change the uid to include the month */
- sprintf(uid, "%s_%d", icalcomponent_get_uid(clone), month);
- icalcomponent_set_uid(clone, uid);
-#endif
-
- icalbdbset_add_component(cout,clone);
-
- /* commit changes */
- icalbdbset_commit(cout);
-
- num_components = icalcomponent_count_components(clone, ICAL_ANY_COMPONENT);
-
- icalset_free(cout);
-
- }
-
- /* try out the cursor operations */
- memset(&key, 0, sizeof(DBT));
- memset(&data, 0, sizeof(DBT));
-
-#if 0
- ret = icalbdbset_acquire_cursor(dbp, &dbcp);
- ret = icalbdbset_get_first(dbcp, &key, &data);
- ret = icalbdbset_get_next(dbcp, &key, &data);
- ret = icalbdbset_get_last(dbcp, &key, &data);
-#endif
- /* Print them out */
-
- for(month = 1, count=0; month < 10; month++){
- char *title;
-
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- for (itr = icalbdbset_get_first_component(cout);
- itr != 0;
- itr = icalbdbset_get_next_component(cout)){
-
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- count++;
-
- event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
-
- dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY);
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
-
- printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart),
- icalproperty_as_ical_string(dtend));
-
- }
- icalset_free(cout);
- }
-
- /* open database */
- // cout = icalbdbset_bdb_open("calendar.db", "title", DB_HASH, 0644);
- /* sdbp = icalbdbset_secondary_open(dbp,
- DATABASE,
- "title",
- get_title,
- DB_HASH);
- */
- /* Remove all of them */
- for(month = 1; month < 10; month++){
- for (itr = icalbdbset_get_first_component(cout);
- itr != 0;
- itr = icalbdbset_get_next_component(cout)){
-
- icalbdbset_remove_component(cout, itr);
- }
-
- icalbdbset_commit(cout);
- icalset_free(cout);
-
- }
-
- /* Print them out again */
-
- for(month = 1, count=0; month < 10; month++){
- char *title;
-
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- for (itr = icalbdbset_get_first_component(cout);
- itr != 0;
- itr = icalbdbset_get_next_component(cout)){
-
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- count++;
-
- event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
-
- dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY);
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
-
- printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart),
- icalproperty_as_ical_string(dtend));
-
- }
- icalset_free(cout);
- }
-}
-#endif
-
-int vcalendar_init(struct calendar **rcal, char *vcalendar, char *title)
-{
- int vcalendar_size, title_size, total_size;
- struct calendar *cal;
-
- if(vcalendar)
- vcalendar_size = strlen(vcalendar);
- else {
- vcalendar = "";
- vcalendar_size = strlen(vcalendar);
- }
-
- if(title)
- title_size = strlen(title);
- else {
- title = "";
- title_size = strlen(title);
- }
-
- total_size = sizeof(struct calendar) + vcalendar_size + title_size;
-
- if((cal = (struct calendar *)malloc(total_size))==NULL)
- return 0;
- memset(cal, 0, total_size);
-
- /* offsets */
- cal->total_size_offset = sizeof(int);
- cal->vcalendar_size_offset = (sizeof(int) * 7);
- cal->vcalendar_offset = cal->vcalendar_size_offset + sizeof(int);
- cal->title_size_offset = cal->vcalendar_offset + vcalendar_size;
- cal->title_offset = cal->title_size_offset + sizeof(int);
-
- /* sizes */
- cal->total_size = total_size;
- cal->vcalendar_size = vcalendar_size;
- cal->title_size = title_size;
-
- if (vcalendar && *vcalendar)
- cal->vcalendar = strdup(vcalendar);
-
- if (title && *title)
- cal->title = strdup(title);
-
- *rcal = cal;
-
- return 0;
-}
-
-/* get_title -- extracts a secondary key (the vcalendar)
- * from a primary key/data pair */
-
-/* just create a random title for now */
-#ifdef WITH_BDB
-
-int get_title(DB *dbp, const DBT *pkey, const DBT *pdata, DBT *skey)
-{
- icalcomponent *cl;
- char title[255];
-
- memset(skey, 0, sizeof(DBT));
-
- cl = icalparser_parse_string((char *)pdata->data);
- sprintf(title, "title_%s", icalcomponent_get_uid(cl));
-
- skey->data = strdup(title);
- skey->size = strlen(skey->data);
- return (0);
-}
-
-char * pack_calendar(struct calendar *cal, int size)
-{
- char *str;
-
- if((str = (char *)malloc(sizeof(char) * size))==NULL)
- return 0;
-
- /* ID */
- memcpy(str, &cal->ID, sizeof(cal->ID));
-
- /* total_size */
- memcpy(str + cal->total_size_offset,
- &cal->total_size,
- sizeof(cal->total_size));
-
- /* vcalendar_size */
- memcpy(str + cal->vcalendar_size_offset,
- &cal->vcalendar_size,
- sizeof(cal->vcalendar_size));
-
- /* vcalendar */
- memcpy(str + cal->vcalendar_offset,
- cal->vcalendar,
- cal->vcalendar_size);
-
- /* title_size */
- memcpy(str + cal->title_size_offset,
- &cal->title_size,
- sizeof(cal->title_size));
-
- /* title */
- memcpy(str + cal->title_offset,
- cal->title,
- cal->title_size);
-
- return str;
-}
-
-struct calendar * unpack_calendar(char *str, int size)
-{
- struct calendar *cal;
- if((cal = (struct calendar *) malloc(size))==NULL)
- return 0;
- memset(cal, 0, size);
-
- /* offsets */
- cal->total_size_offset = sizeof(int);
- cal->vcalendar_size_offset = (sizeof(int) * 7);
- cal->vcalendar_offset = cal->vcalendar_size_offset + sizeof(int);
-
- /* ID */
- memcpy(&cal->ID, str, sizeof(cal->ID));
-
- /* total_size */
- memcpy(&cal->total_size,
- str + cal->total_size_offset,
- sizeof(cal->total_size));
-
- /* vcalendar_size */
- memcpy(&cal->vcalendar_size,
- str + cal->vcalendar_size_offset,
- sizeof(cal->vcalendar_size));
-
- if((cal->vcalendar = (char *)malloc(sizeof(char) *
- cal->vcalendar_size))==NULL)
- return 0;
-
- /* vcalendar */
- memcpy(cal->vcalendar,
- (char *)(str + cal->vcalendar_offset),
- cal->vcalendar_size);
-
- cal->title_size_offset = cal->vcalendar_offset + cal->vcalendar_size;
- cal->title_offset = cal->title_size_offset + sizeof(int);
-
- /* title_size */
- memcpy(&cal->title_size,
- str + cal->title_size_offset,
- sizeof(cal->title_size));
-
- if((cal->title = (char *)malloc(sizeof(char) *
- cal->title_size))==NULL)
- return 0;
-
- /* title*/
- memcpy(cal->title,
- (char *)(str + cal->title_offset),
- cal->title_size);
-
- return cal;
-}
-
-char * parse_vcalendar(const DBT *dbt)
-{
- char *str;
- struct calendar *cal;
-
- str = (char *)dbt->data;
- cal = unpack_calendar(str, dbt->size);
-
- return cal->vcalendar;
-}
-#endif
-
-void test_dirset_extended(void)
-{
-
- icalcomponent *c;
- icalgauge *gauge;
- icalerrorenum error;
- icalcomponent *itr;
- icalset* cluster;
- struct icalperiodtype rtime;
- icalset *s = icaldirset_new("store");
- icalset *s2 = icaldirset_new("store-new");
- int i, count = 0;
-
- ok("Open dirset 'store'", (s!=0));
- assert(s != 0);
-
- rtime.start = icaltime_from_timet( time(0),0);
-
- cluster = icalfileset_new(OUTPUT_FILE);
-
- ok("Open fileset to duplicate 4 times", (cluster != 0));
- assert(cluster != 0);
-
-#define NUMCOMP 4
-
- /* Duplicate every component in the cluster NUMCOMP times */
-
- icalerror_clear_errno();
-
- for (i = 1; i<NUMCOMP+1; i++){
-
- /*rtime.start.month = i%12;*/
- rtime.start.month = i;
- rtime.end = rtime.start;
- rtime.end.hour++;
-
- for (itr = icalfileset_get_first_component(cluster);
- itr != 0;
- itr = icalfileset_get_next_component(cluster)){
- icalcomponent *clone, *inner;
- icalproperty *p;
-
- inner = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
- if (inner == 0){
- continue;
- }
-
- /* Change the dtstart and dtend times in the component
- pointed to by Itr*/
-
- clone = icalcomponent_new_clone(itr);
- inner = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
-
- ok("Duplicating component...",
- (icalerrno == ICAL_NO_ERROR)&&(inner!=0));
-
- assert(icalerrno == ICAL_NO_ERROR);
- assert(inner !=0);
-
- /* DTSTART*/
- p = icalcomponent_get_first_property(inner,ICAL_DTSTART_PROPERTY);
- ok("Fetching DTSTART", (icalerrno == ICAL_NO_ERROR));
- assert(icalerrno == ICAL_NO_ERROR);
-
- if (p == 0){
- p = icalproperty_new_dtstart(rtime.start);
- icalcomponent_add_property(inner,p);
- } else {
- icalproperty_set_dtstart(p,rtime.start);
- }
-
- ok("Adding DTSTART property", (icalerrno == ICAL_NO_ERROR));
- assert(icalerrno == ICAL_NO_ERROR);
-
- /* DTEND*/
- p = icalcomponent_get_first_property(inner,ICAL_DTEND_PROPERTY);
- ok("Fetching DTEND property", (icalerrno == ICAL_NO_ERROR));
- assert(icalerrno == ICAL_NO_ERROR);
-
- if (p == 0){
- p = icalproperty_new_dtstart(rtime.end);
- icalcomponent_add_property(inner,p);
- } else {
- icalproperty_set_dtstart(p,rtime.end);
- }
- ok("Setting DTEND property", (icalerrno == ICAL_NO_ERROR));
- assert(icalerrno == ICAL_NO_ERROR);
-
- if (VERBOSE)
- printf("\n----------\n%s\n---------\n",icalcomponent_as_ical_string(inner));
-
- error = icaldirset_add_component(s,
- icalcomponent_new_clone(itr));
-
- ok("Adding component to dirset", (icalerrno == ICAL_NO_ERROR));
- assert(icalerrno == ICAL_NO_ERROR);
- }
-
- }
-
- gauge = icalgauge_new_from_sql("SELECT * FROM VEVENT WHERE VEVENT.SUMMARY = 'Submit Income Taxes' OR VEVENT.SUMMARY = 'Bastille Day Party'", 0);
-
- ok("Creating complex Gauge", (gauge!=0));
-
- icaldirset_select(s,gauge);
-
- for(c = icaldirset_get_first_component(s); c != 0;
- c = icaldirset_get_next_component(s)){
-
- printf("Got one! (%d)\n", count++);
-
- if (c != 0){
- printf("%s", icalcomponent_as_ical_string(c));;
- if (icaldirset_add_component(s2,c) == 0){
- printf("Failed to write!\n");
- }
- icalcomponent_free(c);
- } else {
- printf("Failed to get component\n");
- }
- }
-
- icalset_free(s2);
-
- for(c = icaldirset_get_first_component(s);
- c != 0;
- c = icaldirset_get_next_component(s)){
-
- if (c != 0){
- printf("%s", icalcomponent_as_ical_string(c));;
- } else {
- printf("Failed to get component\n");
- }
-
- }
-
- /* Remove all of the components */
- i=0;
- while((c=icaldirset_get_current_component(s)) != 0 ){
- i++;
-
- icaldirset_remove_component(s,c);
- }
-
-
- icalset_free(s);
- icalset_free(cluster);
-}
-
diff --git a/libical/src/test/regression-utils.c b/libical/src/test/regression-utils.c
deleted file mode 100644
index 685e9fe94a..0000000000
--- a/libical/src/test/regression-utils.c
+++ /dev/null
@@ -1,169 +0,0 @@
-#include <libical/ical.h>
-
-#include <stdlib.h> /* abort() */
-#include <string.h> /* strcmp() */
-
-static char ictt_str[1024];
-int VERBOSE = 0;
-int QUIET = 0;
-
-const char* ical_timet_string(const time_t t)
-{
- struct tm stm = *(gmtime(&t));
-
- sprintf(ictt_str,"%02d-%02d-%02d %02d:%02d:%02d Z",stm.tm_year+1900,
- stm.tm_mon+1,stm.tm_mday,stm.tm_hour,stm.tm_min,stm.tm_sec);
-
- return ictt_str;
-
-}
-
-const char* ictt_as_string(struct icaltimetype t)
-{
- const char *zone = icaltimezone_get_tzid((icaltimezone *)t.zone);
-
- if (icaltime_is_utc(t))
- sprintf(ictt_str,"%02d-%02d-%02d %02d:%02d:%02d Z UTC",
- t.year,t.month,t.day, t.hour,t.minute,t.second);
- else
- sprintf(ictt_str,"%02d-%02d-%02d %02d:%02d:%02d %s",
- t.year,t.month,t.day, t.hour,t.minute,t.second,
- zone == NULL? "(floating)": zone);
-
- return ictt_str;
-}
-
-char* icaltime_as_ctime(struct icaltimetype t)
-{
- time_t tt;
-
- tt = icaltime_as_timet(t);
- sprintf(ictt_str,"%s",ctime(&tt));
-
- return ictt_str;
-}
-
-
-/** This variable is used to control whether we core dump on errors **/
-static int die_on_errors = 0;
-static int testnumber = 0;
-static int failed = 0;
-static int current_set = 0;
-
-static struct {int set; int test;} failed_tests[1024];
-
-void die_on_errors_set(int val) {
- die_on_errors = 1;
-}
-
-void _ok(char* test_name, int success, char *file, int linenum, char *test) {
- testnumber++;
-
- if (!QUIET || (QUIET && !success))
- printf("%sok %d - %s\n", (success)?"" : "not ", testnumber, test_name);
- if (!success) {
- failed_tests[failed].set = current_set;
- failed_tests[failed].test = testnumber;
- failed++;
-
- printf("# test failed: \"%s\"\n", test);
- printf("# at: %s:%-d\n", file, linenum);
- }
-
- if (die_on_errors == 1 && !success) {
- abort();
- }
-}
-
-void _is(char* test_name, const char* str1, const char* str2, char *file, int linenum) {
- int diff;
-
- if (str1 == NULL || str2 == NULL) {
- diff = 1;
- } else {
- diff = strcmp(str1, str2);
- }
-
- if (!test_name) test_name = "()";
-
- _ok(test_name, (diff==0), file, linenum, "");
-
- if (diff) {
- printf("# got: %s\n", str1 ? str1 : "(null)");
- printf("# expected: %s\n", str2 ? str2 : "(null)");
- }
-}
-
-void _int_is(char* test_name, int i1, int i2, char *file, int linenum) {
- _ok(test_name, (i1==i2), file, linenum, "");
-
- if (i1!=i2) {
- printf("# got: %d\n", i1);
- printf("# expected: %d\n", i2);
- }
-}
-
-
-void verbose(int newval) {
- VERBOSE = newval;
-}
-
-void test_start(int numtests) {
- if (numtests) {
- if (!QUIET)
- printf("1..%-d\n", numtests);
- } else {
- if (!QUIET)
- printf("1..\n");
- }
-}
-
-void test_header(char *header, int set) {
- if (!QUIET)
- printf("########## %-40s (%d) ##########\n", header, set);
- current_set = set;
-}
-
-void test_end(void) {
- int pct;
-
- if (failed) {
- int i, oldset = 0;
-
- pct = ((testnumber - failed)*100)/testnumber;
- printf("\n Failed %d/%d tests, %2d%% okay\n", failed, testnumber, pct);
- printf("\n Failed tests:\n ");
- for (i = 0; i < failed; i++) {
- int this_set = failed_tests[i].set;
- char *prefix = "";
- if (this_set != oldset) {
- prefix = "\n ";
- oldset = this_set;
- }
-
- printf("%s%d/%d ", prefix, this_set, failed_tests[i].test);
- }
- printf("\n");
-
- } else {
- printf("\n All Tests Successful.\n");
- }
-}
-
-
-void test_run(char *test_name,
- void (*test_fcn)(void),
- int do_test, int headeronly)
-{
- static int test_set = 1;
-
- if (headeronly || do_test == 0 || do_test == test_set)
- test_header(test_name, test_set);
-
- if (!headeronly && (do_test==0 || do_test == test_set)) {
- (*test_fcn)();
- if (!QUIET)
- printf("\n");
- }
- test_set++;
-}
diff --git a/libical/src/test/regression.c b/libical/src/test/regression.c
deleted file mode 100644
index 034764551b..0000000000
--- a/libical/src/test/regression.c
+++ /dev/null
@@ -1,3667 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: regression.c
- CREATOR: eric 03 April 1999
-
- DESCRIPTION:
-
- $Id$
- $Locker$
-
- (C) COPYRIGHT 1999 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- The original author is Eric Busboom
- The original code is regression.c
-
-
- ======================================================================*/
-
-#include <libical/ical.h>
-#include <libicalss/icalss.h>
-#include <libicalvcal/icalvcal.h>
-
-#include "regression.h"
-
-#include <assert.h>
-#include <string.h> /* for strdup */
-#include <stdlib.h> /* for malloc */
-#include <stdio.h> /* for printf */
-#include <time.h> /* for time() */
-#ifndef WIN32
-#include <unistd.h> /* for unlink, fork */
-#include <sys/wait.h> /* For waitpid */
-#include <sys/time.h> /* for select */
-#else
-#include <Windows.h>
-#endif
-#include <sys/types.h> /* For wait pid */
-
-#ifdef WIN32
-typedef int pid_t;
-#endif
-
-
-/* For GNU libc, strcmp appears to be a macro, so using strcmp in
- assert results in incomprehansible assertion messages. This
- eliminates the problem */
-
-int regrstrcmp(const char* a, const char* b){
- return strcmp(a,b);
-}
-
-/* This example creates and minipulates the ical object that appears
- * in rfc 2445, page 137 */
-
-static char str[] = "BEGIN:VCALENDAR\
-PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\
-VERSION:2.0\
-BEGIN:VTIMEZONE\
-TZID:America/New_York\
-BEGIN:STANDARD\
-DTSTART:19981025T020000\
-RDATE:19981025T020000\
-TZOFFSETFROM:-0400\
-TZOFFSETTO:-0500\
-TZNAME:EST\
-END:STANDARD\
-BEGIN:DAYLIGHT\
-DTSTART:19990404T020000\
-RDATE:19990404T020000\
-TZOFFSETFROM:-0500\
-TZOFFSETTO:-0400\
-TZNAME:EDT\
-END:DAYLIGHT\
-END:VTIMEZONE\
-BEGIN:VEVENT\
-DTSTAMP:19980309T231000Z\
-UID:guid-1.host1.com\
-ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\
-ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\
-DESCRIPTION:Project XYZ Review Meeting\
-CATEGORIES:MEETING\
-CLASS:PUBLIC\
-CREATED:19980309T130000Z\
-SUMMARY:XYZ Project Review\
-DTSTART;TZID=America/New_York:19980312T083000\
-DTEND;TZID=America/New_York:19980312T093000\
-LOCATION:1CP Conference Room 4350\
-END:VEVENT\
-BEGIN:BOOGA\
-DTSTAMP:19980309T231000Z\
-X-LIC-FOO:Booga\
-DTSTOMP:19980309T231000Z\
-UID:guid-1.host1.com\
-END:BOOGA\
-END:VCALENDAR";
-
-
-
-/* Return a list of all attendees who are required. */
-
-static char** get_required_attendees(icalcomponent* event)
-{
- icalproperty* p;
- icalparameter* parameter;
-
- char **attendees;
- int max = 10;
- int c = 0;
-
- attendees = malloc(max * (sizeof (char *)));
-
- ok("event is non null", (event != 0));
- int_is("event is a VEVENT", icalcomponent_isa(event), ICAL_VEVENT_COMPONENT);
-
- for(
- p = icalcomponent_get_first_property(event,ICAL_ATTENDEE_PROPERTY);
- p != 0;
- p = icalcomponent_get_next_property(event,ICAL_ATTENDEE_PROPERTY)
- ) {
-
- parameter = icalproperty_get_first_parameter(p,ICAL_ROLE_PARAMETER);
-
- if ( icalparameter_get_role(parameter) == ICAL_ROLE_REQPARTICIPANT)
- {
- attendees[c++] = icalmemory_strdup(icalproperty_get_attendee(p));
-
- if (c >= max) {
- max *= 2;
- attendees = realloc(attendees, max * (sizeof (char *)));
- }
-
- }
- }
-
- return attendees;
-}
-
-/* If an attendee has a PARTSTAT of NEEDSACTION or has no PARTSTAT
- parameter, change it to TENTATIVE. */
-
-static void update_attendees(icalcomponent* event)
-{
- icalproperty* p;
- icalparameter* parameter;
-
-
- assert(event != 0);
- assert(icalcomponent_isa(event) == ICAL_VEVENT_COMPONENT);
-
- for(
- p = icalcomponent_get_first_property(event,ICAL_ATTENDEE_PROPERTY);
- p != 0;
- p = icalcomponent_get_next_property(event,ICAL_ATTENDEE_PROPERTY)
- ) {
-
- parameter = icalproperty_get_first_parameter(p,ICAL_PARTSTAT_PARAMETER);
-
- if (parameter == 0) {
-
- icalproperty_add_parameter(
- p,
- icalparameter_new_partstat(ICAL_PARTSTAT_TENTATIVE)
- );
-
- } else if (icalparameter_get_partstat(parameter) == ICAL_PARTSTAT_NEEDSACTION) {
-
- icalproperty_remove_parameter_by_ref(p,parameter);
-
- icalparameter_free(parameter);
-
- icalproperty_add_parameter(
- p,
- icalparameter_new_partstat(ICAL_PARTSTAT_TENTATIVE)
- );
- }
-
- }
-}
-
-
-void test_values()
-{
- icalvalue *v;
- icalvalue *copy;
-
- v = icalvalue_new_caladdress("cap://value/1");
-
- is("icalvalue_new_caladdress()",
- icalvalue_get_caladdress(v), "cap://value/1");
-
- icalvalue_set_caladdress(v,"cap://value/2");
-
- is("icalvalue_set_caladdress()",
- icalvalue_get_caladdress(v), "cap://value/2");
-
- is("icalvalue_as_ical_string()",
- icalvalue_as_ical_string(v), "cap://value/2");
-
- copy = icalvalue_new_clone(v);
-
- is("icalvalue_new_clone()",
- icalvalue_as_ical_string(copy), "cap://value/2");
- icalvalue_free(v);
- icalvalue_free(copy);
-
-
- v = icalvalue_new_boolean(1);
- int_is("icalvalue_new_boolean(1)", icalvalue_get_boolean(v), 1);
- icalvalue_set_boolean(v,2);
- ok("icalvalue_set_boolean(2)", (2 == icalvalue_get_boolean(v)));
- is("icalvalue_as_ical_string()", icalvalue_as_ical_string(v), "2");
-
- copy = icalvalue_new_clone(v);
- is("icalvalue_new_clone()", icalvalue_as_ical_string(copy), "2");
-
- icalvalue_free(v);
- icalvalue_free(copy);
-
-
- v = icalvalue_new_x("test");
- is("icalvalue_new_x(test)", icalvalue_get_x(v), "test");
- icalvalue_set_x(v, "test2");
- is("icalvalue_set_x(test2)", icalvalue_get_x(v), "test2");
- is("icalvalue_as_ical_string()", icalvalue_as_ical_string(v), "test2");
-
- copy = icalvalue_new_clone(v);
- is("icalvalue_new_clone()", icalvalue_as_ical_string(copy), "test2");
-
- icalvalue_free(v);
- icalvalue_free(copy);
-
-
- v = icalvalue_new_date(icaltime_from_timet( 1023404802,0));
- is("icalvalue_new_date()", icalvalue_as_ical_string(v), "20020606T230642");
- icalvalue_set_date(v,icaltime_from_timet( 1023404802-3600,0));
- is("icalvalue_set_date()",icalvalue_as_ical_string(v), "20020606T220642");
-
- copy = icalvalue_new_clone(v);
- is("icalvalue_new_clone()",icalvalue_as_ical_string(v), "20020606T220642");
-
- icalvalue_free(v);
- icalvalue_free(copy);
-
-
- v = icalvalue_new(-1);
-
- ok("icalvalue_new(-1), Invalid type", (v == NULL));
-
- if (v!=0) icalvalue_free(v);
-
- ok("ICAL_BOOLEAN_VALUE",(ICAL_BOOLEAN_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_BOOLEAN)));
- ok("ICAL_UTCOFFSET_VALUE",(ICAL_UTCOFFSET_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_UTCOFFSET)));
- ok("ICAL_RECUR_VALUE", (ICAL_RECUR_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_RECUR)));
- ok("ICAL_CALADDRESS_VALUE",(ICAL_CALADDRESS_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_CALADDRESS)));
- ok("ICAL_PERIOD_VALUE", (ICAL_PERIOD_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_PERIOD)));
- ok("ICAL_BINARY_VALUE",(ICAL_BINARY_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_BINARY)));
- ok("ICAL_TEXT_VALUE",(ICAL_TEXT_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_TEXT)));
- ok("ICAL_DURATION_VALUE",(ICAL_DURATION_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_DURATION)));
- ok("ICAL_INTEGER_VALUE",
- (ICAL_INTEGER_VALUE == icalparameter_value_to_value_kind(ICAL_VALUE_INTEGER)));
-
- ok("ICAL_URI_VALUE",
- (ICAL_URI_VALUE == icalparameter_value_to_value_kind(ICAL_VALUE_URI)));
- ok("ICAL_FLOAT_VALUE",(ICAL_FLOAT_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_FLOAT)));
- ok("ICAL_X_VALUE",(ICAL_X_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_X)));
- ok("ICAL_DATETIME_VALUE",(ICAL_DATETIME_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_DATETIME)));
- ok("ICAL_DATE_TIME",(ICAL_DATE_VALUE ==
- icalparameter_value_to_value_kind(ICAL_VALUE_DATE)));
-
- /* v = icalvalue_new_caladdress(0);
-
- printf("Bad string: %p\n",v);
-
- if (v!=0) icalvalue_free(v); */
-
- icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR, ICAL_ERROR_NONFATAL);
- v = icalvalue_new_from_string(ICAL_RECUR_VALUE,"D2 #0");
- ok("illegal recur value", (v == 0));
-
- v = icalvalue_new_from_string(ICAL_TRIGGER_VALUE,"Gonk");
- ok("illegal trigger value", (v == 0));
-
- v = icalvalue_new_from_string(ICAL_REQUESTSTATUS_VALUE,"Gonk");
- ok("illegal requeststatus value", (v == 0));
-
- icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR, ICAL_ERROR_DEFAULT);
-}
-
-
-void test_properties()
-{
- icalproperty *prop;
- icalparameter *param;
-
- icalproperty *clone;
- char test_cn_str[128] = "";
- char *test_cn_str_good = "A Common Name 1A Common Name 2A Common Name 3A Common Name 4";
- char *test_ical_str_good = "COMMENT;CN=A Common Name 1;CN=A Common Name 2;CN=A Common Name 3;CN=A \n Common Name 4:Another Comment\n";
-
- prop = icalproperty_vanew_comment(
- "Another Comment",
- icalparameter_new_cn("A Common Name 1"),
- icalparameter_new_cn("A Common Name 2"),
- icalparameter_new_cn("A Common Name 3"),
- icalparameter_new_cn("A Common Name 4"),
- 0);
-
- for(param = icalproperty_get_first_parameter(prop,ICAL_ANY_PARAMETER);
- param != 0;
- param = icalproperty_get_next_parameter(prop,ICAL_ANY_PARAMETER)) {
- const char *str = icalparameter_get_cn(param);
- if (VERBOSE) printf("Prop parameter: %s\n",icalparameter_get_cn(param));
- strcat(test_cn_str, str);
- }
- is("fetching parameters", test_cn_str, test_cn_str_good);
-
- if (VERBOSE) printf("Prop value: %s\n",icalproperty_get_comment(prop));
- is("icalproperty_get_comment()",
- icalproperty_get_comment(prop), "Another Comment");
-
- if (VERBOSE) printf("As iCAL string:\n %s\n",icalproperty_as_ical_string(prop));
-
- is("icalproperty_as_ical_string()",
- icalproperty_as_ical_string(prop), test_ical_str_good);
-
- clone = icalproperty_new_clone(prop);
-
- if (VERBOSE) printf("Clone:\n %s\n",icalproperty_as_ical_string(prop));
- is("icalproperty_new_clone()",
- icalproperty_as_ical_string(prop), test_ical_str_good);
-
- icalproperty_free(clone);
- icalproperty_free(prop);
-
- prop = icalproperty_new(-1);
-
- ok("test icalproperty_new() with invalid type (-1)",
- (prop == NULL));
-
- if (prop!=0) icalproperty_free(prop);
-}
-
-void test_utf8()
-{
- icalproperty *prop;
- char *utf8text = "aáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaá";
- char *test_ical_str_good = "DESCRIPTION:\n"
-" aáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaá\n"
-" óaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóa\n"
-" áóaáóaáóaáóaáóaáóaáóaáóaáóaá\n";
-
- prop = icalproperty_new_description(utf8text);
-
- is("icalproperty_as_ical_string()",
- icalproperty_as_ical_string(prop), test_ical_str_good);
- icalproperty_free(prop);
-}
-
-
-
-void test_parameters()
-{
- icalparameter *p;
- int i;
- int enums[] = {ICAL_CUTYPE_INDIVIDUAL,ICAL_CUTYPE_RESOURCE,ICAL_FBTYPE_BUSY,ICAL_PARTSTAT_NEEDSACTION,ICAL_ROLE_NONPARTICIPANT,ICAL_XLICCOMPARETYPE_LESSEQUAL,ICAL_XLICERRORTYPE_MIMEPARSEERROR,-1};
-
- char* str1 = "A Common Name";
-
- p = icalparameter_new_cn(str1);
-
- is("icalparameter_new_cn()", icalparameter_get_cn(p), str1);
- is("icalparameter_as_ical_string()" ,icalparameter_as_ical_string(p),"CN=A Common Name");
-
- icalparameter_free(p);
-
- p = icalparameter_new_from_string("PARTSTAT=ACCEPTED");
- ok("PARTSTAT_PARAMETER", (icalparameter_isa(p) == ICAL_PARTSTAT_PARAMETER));
- ok("PARTSTAT_ACCEPTED", (icalparameter_get_partstat(p) == ICAL_PARTSTAT_ACCEPTED));
-
- icalparameter_free(p);
-
- p = icalparameter_new_from_string("ROLE=CHAIR");
-
- ok("ROLE_PARAMETER", (icalparameter_isa(p) == ICAL_ROLE_PARAMETER));
- ok("ROLE_CHAIR", (icalparameter_get_partstat(p) == ICAL_ROLE_CHAIR));
-
- icalparameter_free(p);
-
- p = icalparameter_new_from_string("PARTSTAT=X-FOO");
- ok("PARTSTAT_PARAMETER", (icalparameter_isa(p) == ICAL_PARTSTAT_PARAMETER));
- ok("PARTSTAT_X", (icalparameter_get_partstat(p) == ICAL_PARTSTAT_X));
-
- icalparameter_free(p);
-
- p = icalparameter_new_from_string("X-PARAM=X-FOO");
- ok("X_PARAMETER", (icalparameter_isa(p) == ICAL_X_PARAMETER));
-
- icalparameter_free(p);
-
-
- for (i=0;enums[i] != -1; i++){
- if (VERBOSE) printf("%s\n",icalparameter_enum_to_string(enums[i]));
- ok("test paramter enums",
- (icalparameter_string_to_enum(icalparameter_enum_to_string(enums[i]))==enums[i]));
- }
-}
-
-
-char *good_child =
-"BEGIN:VEVENT\n"
-"VERSION:2.0\n"
-"DESCRIPTION:This is an event\n"
-"COMMENT;CN=A Common Name 1;CN=A Common Name 2;CN=A Common Name 3;CN=A \n"
-" Common Name 4:Another Comment\n"
-"X-LIC-ERROR;X-LIC-ERRORTYPE=COMPONENT-PARSE-ERROR:This is only a test\n"
-"END:VEVENT\n";
-
-void test_components()
-{
- icalcomponent* c;
- icalcomponent* child;
-
- c = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalproperty_new_version("2.0"),
- icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN"),
- icalproperty_vanew_comment(
- "A Comment",
- icalparameter_new_cn("A Common Name 1"),
- 0),
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_version("2.0"),
- icalproperty_new_description("This is an event"),
- icalproperty_vanew_comment(
- "Another Comment",
- icalparameter_new_cn("A Common Name 1"),
- icalparameter_new_cn("A Common Name 2"),
- icalparameter_new_cn("A Common Name 3"),
- icalparameter_new_cn("A Common Name 4"),
- 0),
- icalproperty_vanew_xlicerror(
- "This is only a test",
- icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_COMPONENTPARSEERROR),
- 0),
-
- 0
- ),
- 0
- );
-
- if (VERBOSE)
- printf("Original Component:\n%s\n\n",icalcomponent_as_ical_string(c));
-
- child = icalcomponent_get_first_component(c,ICAL_VEVENT_COMPONENT);
-
- ok("test icalcomponent_get_first_component()",
- (child != NULL));
-
- if (VERBOSE)
- printf("Child Component:\n%s\n\n",icalcomponent_as_ical_string(child));
-
- is("test results of child component",
- icalcomponent_as_ical_string(child), good_child);
-
- icalcomponent_free(c);
-}
-
-
-void test_memory()
-{
- size_t bufsize = 256;
- int i;
- char *p;
-
- char S1[] = "1) When in the Course of human events, ";
- char S2[] = "2) it becomes necessary for one people to dissolve the political bands which have connected them with another, ";
- char S3[] = "3) and to assume among the powers of the earth, ";
- char S4[] = "4) the separate and equal station to which the Laws of Nature and of Nature's God entitle them, ";
- char S5[] = "5) a decent respect to the opinions of mankind requires that they ";
- char S6[] = "6) should declare the causes which impel them to the separation. ";
- char S7[] = "7) We hold these truths to be self-evident, ";
- char S8[] = "8) that all men are created equal, ";
-
-/* char S9[] = "9) that they are endowed by their Creator with certain unalienable Rights, ";
- char S10[] = "10) that among these are Life, Liberty, and the pursuit of Happiness. ";
- char S11[] = "11) That to secure these rights, Governments are instituted among Men, ";
- char S12[] = "12) deriving their just powers from the consent of the governed. ";
-*/
-
-
- char *f, *b1, *b2, *b3, *b4, *b5, *b6, *b7, *b8;
-
-#define BUFSIZE 1024
-
- f = icalmemory_new_buffer(bufsize);
- p = f;
- b1 = icalmemory_tmp_buffer(BUFSIZE);
- strcpy(b1, S1);
- icalmemory_append_string(&f, &p, &bufsize, b1);
-
- b2 = icalmemory_tmp_buffer(BUFSIZE);
- strcpy(b2, S2);
- icalmemory_append_string(&f, &p, &bufsize, b2);
-
- b3 = icalmemory_tmp_buffer(BUFSIZE);
- strcpy(b3, S3);
- icalmemory_append_string(&f, &p, &bufsize, b3);
-
- b4 = icalmemory_tmp_buffer(BUFSIZE);
- strcpy(b4, S4);
- icalmemory_append_string(&f, &p, &bufsize, b4);
-
- b5 = icalmemory_tmp_buffer(BUFSIZE);
- strcpy(b5, S5);
- icalmemory_append_string(&f, &p, &bufsize, b5);
-
- b6 = icalmemory_tmp_buffer(BUFSIZE);
- strcpy(b6, S6);
- icalmemory_append_string(&f, &p, &bufsize, b6);
-
- b7 = icalmemory_tmp_buffer(BUFSIZE);
- strcpy(b7, S7);
- icalmemory_append_string(&f, &p, &bufsize, b7);
-
- b8 = icalmemory_tmp_buffer(BUFSIZE);
- strcpy(b8, S8);
- icalmemory_append_string(&f, &p, &bufsize, b8);
-
-
- if (VERBOSE) {
- printf("1: %p %s \n",b1,b1);
- printf("2: %p %s\n",b2,b2);
- printf("3: %p %s\n",b3,b3);
- printf("4: %p %s\n",b4,b4);
- printf("5: %p %s\n",b5,b5);
- printf("6: %p %s\n",b6,b6);
- printf("7: %p %s\n",b7,b7);
- printf("8: %p %s\n",b8,b8);
-
-
- printf("Final: %s\n", f);
-
- printf("Final buffer size: %d\n",bufsize);
- }
-
- ok("final buffer size == 806", (bufsize == 806));
-
- free(f);
-
- bufsize = 4;
-
- f = icalmemory_new_buffer(bufsize);
-
- memset(f,0,bufsize);
- p = f;
-
- icalmemory_append_char(&f, &p, &bufsize, 'a');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
-
- icalmemory_append_char(&f, &p, &bufsize, 'b');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'c');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'd');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'e');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'f');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'g');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'h');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'i');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'j');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'a');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'b');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'c');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'd');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'e');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'f');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'g');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'h');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'i');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
- icalmemory_append_char(&f, &p, &bufsize, 'j');
- if (VERBOSE) printf("Char-by-Char buffer: %s\n", f);
-
- free(f);
-
- for(i=0; i<100; i++){
- f = icalmemory_tmp_buffer(bufsize);
-
- assert(f!=0);
-
- memset(f,0,bufsize);
- sprintf(f,"%d",i);
- }
-}
-
-
-void test_dirset()
-{
- icalcomponent *c;
- icalgauge *gauge;
- icalerrorenum error;
- icalcomponent *next, *itr;
- icalset* cluster;
- icalset *s, *s2;
- struct icalperiodtype rtime;
- int i;
- int count = 0;
-
- mkdir("store", 0755);
- mkdir("store-new", 0755);
-
- s = icaldirset_new("store");
- s2 = icaldirset_new("store-new");
-
- ok("opening 'store' dirset", s!=NULL);
- ok("opening 'store-new' dirset", s2!=NULL);
-
- rtime.start = icaltime_from_timet( time(0),0);
-
- cluster = icalfileset_new("clusterin.vcd");
-
- if (cluster == 0){
- printf("Failed to create cluster: %s\n",icalerror_strerror(icalerrno));
- }
-
-#define NUMCOMP 4
-
- /* Duplicate every component in the cluster NUMCOMP times */
-
- icalerror_clear_errno();
-
- for (i = 1; i<NUMCOMP+1; i++){
-
- /*rtime.start.month = i%12;*/
- rtime.start.month = i;
- rtime.end = rtime.start;
- rtime.end.hour++;
-
- for (itr = icalfileset_get_first_component(cluster);
- itr != 0;
- itr = icalfileset_get_next_component(cluster)){
- icalcomponent *clone;
- icalproperty *p;
-
-
- if(icalcomponent_isa(itr) != ICAL_VEVENT_COMPONENT){
- continue;
- }
-
-
- /* Change the dtstart and dtend times in the component
- pointed to by Itr*/
-
- clone = icalcomponent_new_clone(itr);
- assert(icalerrno == ICAL_NO_ERROR);
- assert(clone !=0);
-
- /* DTSTART*/
- p = icalcomponent_get_first_property(clone,ICAL_DTSTART_PROPERTY);
- assert(icalerrno == ICAL_NO_ERROR);
-
- if (p == 0){
- p = icalproperty_new_dtstart(rtime.start);
- icalcomponent_add_property(clone,p);
- } else {
- icalproperty_set_dtstart(p,rtime.start);
- }
- assert(icalerrno == ICAL_NO_ERROR);
-
- /* DTEND*/
- p = icalcomponent_get_first_property(clone,ICAL_DTEND_PROPERTY);
- assert(icalerrno == ICAL_NO_ERROR);
-
- if (p == 0){
- p = icalproperty_new_dtstart(rtime.end);
- icalcomponent_add_property(clone,p);
- } else {
- icalproperty_set_dtstart(p,rtime.end);
- }
- assert(icalerrno == ICAL_NO_ERROR);
-
- printf("\n----------\n%s\n---------\n",icalcomponent_as_ical_string(clone));
-
- error = icaldirset_add_component(s,clone);
-
- assert(icalerrno == ICAL_NO_ERROR);
- }
- }
-
- gauge = icalgauge_new_from_sql("SELECT * FROM VEVENT WHERE VEVENT.SUMMARY = 'Submit Income Taxes' OR VEVENT.SUMMARY = 'Bastille Day Party'", 0);
-
- icaldirset_select(s,gauge);
-
- for(c = icaldirset_get_first_component(s); c != 0; c = icaldirset_get_next_component(s)){
- printf("Got one! (%d)\n", count++);
-
- if (c != 0){
- printf("%s", icalcomponent_as_ical_string(c));;
- if (icaldirset_add_component(s2,c) == 0){
- printf("Failed to write!\n");
- }
- icalcomponent_free(c);
- } else {
- printf("Failed to get component\n");
- }
- }
-
-
- icalset_free(s2);
-
- for(c = icaldirset_get_first_component(s);
- c != 0;
- c = next){
-
- next = icaldirset_get_next_component(s);
-
- if (c != 0){
- /*icaldirset_remove_component(s,c);*/
- printf("%s", icalcomponent_as_ical_string(c));;
- } else {
- printf("Failed to get component\n");
- }
- }
-
- icalset_free(s);
- icalset_free(cluster);
-}
-
-
-void test_compare()
-{
- icalvalue *v1, *v2;
-
- v1 = icalvalue_new_caladdress("cap://value/1");
- v2 = icalvalue_new_clone(v1);
-
- ok("compare value and clone",
- (icalvalue_compare(v1,v2) == ICAL_XLICCOMPARETYPE_EQUAL));
-
- icalvalue_free(v1);
- icalvalue_free(v2);
-
- v1 = icalvalue_new_caladdress("A");
- v2 = icalvalue_new_caladdress("B");
-
- ok("test compare of A and B results in LESS",
- (icalvalue_compare(v1,v2) == ICAL_XLICCOMPARETYPE_LESS));
-
- ok("test compare of B and A results in GREATER",
- (icalvalue_compare(v2,v1) == ICAL_XLICCOMPARETYPE_GREATER));
-
- icalvalue_free(v1);
- icalvalue_free(v2);
-
- v1 = icalvalue_new_caladdress("B");
- v2 = icalvalue_new_caladdress("A");
-
- ok("test compare of caladdress A and B results in GREATER",
- (icalvalue_compare(v1,v2) == ICAL_XLICCOMPARETYPE_GREATER));
-
- icalvalue_free(v1);
- icalvalue_free(v2);
-
- v1 = icalvalue_new_integer(5);
- v2 = icalvalue_new_integer(5);
-
- ok("test compare of 5 and 5 results in EQUAL",
- (icalvalue_compare(v1,v2) == ICAL_XLICCOMPARETYPE_EQUAL));
-
- icalvalue_free(v1);
- icalvalue_free(v2);
-
- v1 = icalvalue_new_integer(5);
- v2 = icalvalue_new_integer(10);
-
- ok("test compare of 5 and 10 results in LESS",
- (icalvalue_compare(v1,v2) == ICAL_XLICCOMPARETYPE_LESS));
-
- ok("test compare of 10 and 5 results in GREATER",
- (icalvalue_compare(v2,v1) == ICAL_XLICCOMPARETYPE_GREATER));
-
- icalvalue_free(v1);
- icalvalue_free(v2);
-}
-
-
-void test_restriction()
-{
- icalcomponent *comp;
- struct icaltimetype atime = icaltime_from_timet( time(0),0);
- int valid;
-
- struct icaldatetimeperiodtype rtime;
-
- char *str;
-
- rtime.period.start = icaltime_from_timet( time(0),0);
- rtime.period.end = icaltime_from_timet( time(0),0);
- rtime.period.end.hour++;
- rtime.time = icaltime_null_time();
-
- comp =
- icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalproperty_new_version("2.0"),
- icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN"),
- icalproperty_new_method(ICAL_METHOD_REQUEST),
- icalcomponent_vanew(
- ICAL_VTIMEZONE_COMPONENT,
- icalproperty_new_tzid("America/New_York"),
- icalcomponent_vanew(
- ICAL_XDAYLIGHT_COMPONENT,
- icalproperty_new_dtstart(atime),
- icalproperty_new_rdate(rtime),
- icalproperty_new_tzoffsetfrom(-4.0),
- icalproperty_new_tzoffsetto(-5.0),
- icalproperty_new_tzname("EST"),
- 0
- ),
- icalcomponent_vanew(
- ICAL_XSTANDARD_COMPONENT,
- icalproperty_new_dtstart(atime),
- icalproperty_new_rdate(rtime),
- icalproperty_new_tzoffsetfrom(-5.0),
- icalproperty_new_tzoffsetto(-4.0),
- icalproperty_new_tzname("EST"),
- 0
- ),
- 0
- ),
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstamp(atime),
- icalproperty_new_uid("guid-1.host1.com"),
- icalproperty_vanew_organizer(
- "mrbig@host.com",
- icalparameter_new_role(ICAL_ROLE_CHAIR),
- 0
- ),
- icalproperty_vanew_attendee(
- "employee-A@host.com",
- icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT),
- icalparameter_new_rsvp(ICAL_RSVP_TRUE),
- icalparameter_new_cutype(ICAL_CUTYPE_GROUP),
- 0
- ),
- icalproperty_new_description("Project XYZ Review Meeting"),
- icalproperty_new_categories("MEETING"),
- icalproperty_new_class(ICAL_CLASS_PUBLIC),
- icalproperty_new_created(atime),
- icalproperty_new_summary("XYZ Project Review"),
- /* icalproperty_new_dtstart(
- atime,
- icalparameter_new_tzid("America/New_York"),
- 0
- ),*/
- icalproperty_vanew_dtend(
- atime,
- icalparameter_new_tzid("America/New_York"),
- 0
- ),
- icalproperty_new_location("1CP Conference Room 4350"),
- 0
- ),
- 0
- );
-
- valid = icalrestriction_check(comp);
-
- ok("icalrestriction_check() == 0", (valid==0));
-
- str = icalcomponent_as_ical_string(comp);
-
- icalcomponent_free(comp);
-
-}
-
-void test_calendar()
-{
- icalcomponent *comp;
- icalset *c;
- icalset *s;
- icalcalendar* calendar;
- icalerrorenum error;
- struct icaltimetype atime = icaltime_from_timet( time(0),0);
-
- mkdir("calendar", 0755);
- mkdir("calendar/booked", 0755);
-
- calendar = icalcalendar_new("calendar");
-
- comp = icalcomponent_vanew(ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_version("2.0"),
- icalproperty_new_description("This is an event"),
- icalproperty_new_dtstart(atime),
- icalproperty_vanew_comment(
- "Another Comment",
- icalparameter_new_cn("A Common Name 1"),
- icalparameter_new_cn("A Common Name 2"),
- icalparameter_new_cn("A Common Name 3"),
- icalparameter_new_cn("A Common Name 4"),
- 0),
- icalproperty_vanew_xlicerror(
- "This is only a test",
- icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_COMPONENTPARSEERROR),
- 0),
-
- 0),0);
-
- s = icalcalendar_get_booked(calendar);
-
- error = icaldirset_add_component(s,comp);
-
- ok("Adding Component to dirset", (error == ICAL_NO_ERROR));
-
- c = icalcalendar_get_properties(calendar);
-
- error = icalfileset_add_component(c,icalcomponent_new_clone(comp));
-
- ok("Adding Clone Component to dirset", (error == ICAL_NO_ERROR));
-
- icalcalendar_free(calendar);
-
- ok("icalcalendar test", (1));
-}
-
-
-void test_increment(void);
-
-void print_occur(struct icalrecurrencetype recur, struct icaltimetype start)
-{
- struct icaltimetype next;
- icalrecur_iterator* ritr;
-
- time_t tt = icaltime_as_timet(start);
-
- printf("#### %s\n",icalrecurrencetype_as_string(&recur));
- printf("#### %s\n",ctime(&tt ));
-
- for(ritr = icalrecur_iterator_new(recur,start),
- next = icalrecur_iterator_next(ritr);
- !icaltime_is_null_time(next);
- next = icalrecur_iterator_next(ritr)){
-
- tt = icaltime_as_timet(next);
-
- printf(" %s",ctime(&tt ));
-
- }
-
- icalrecur_iterator_free(ritr);
-}
-
-void test_recur()
-{
- struct icalrecurrencetype rt;
- struct icaltimetype start;
- time_t array[25];
- int i;
-
- rt = icalrecurrencetype_from_string("FREQ=MONTHLY;UNTIL=19971224T000000Z;INTERVAL=1;BYDAY=TU,2FR,3SA");
- start = icaltime_from_string("19970905T090000Z");
-
- if (VERBOSE) print_occur(rt,start);
-
- if (VERBOSE) printf("\n Using icalrecur_expand_recurrence\n");
-
- icalrecur_expand_recurrence("FREQ=MONTHLY;UNTIL=19971224T000000Z;INTERVAL=1;BYDAY=TU,2FR,3SA",
- icaltime_as_timet(start),
- 25,
- array);
-
- for(i =0; array[i] != 0 && i < 25 ; i++){
- if (VERBOSE) printf(" %s",ctime(&(array[i])));
- }
-
-
-/* test_increment();*/
-
-}
-
-
-void test_expand_recurrence(){
-
- time_t arr[10];
- time_t now = 931057385;
- int i, numfound = 0;
- icalrecur_expand_recurrence( "FREQ=MONTHLY;BYDAY=MO,WE", now,
- 5, arr );
-
- if (VERBOSE) printf("Start %s",ctime(&now) );
-
- for (i=0; i<5; i++) {
- numfound++;
- if (VERBOSE) printf("i=%d %s\n", i, ctime(&arr[i]) );
- }
- int_is("Get an array of 5 items", numfound, 5);
-}
-
-
-
-enum byrule {
- NO_CONTRACTION = -1,
- BY_SECOND = 0,
- BY_MINUTE = 1,
- BY_HOUR = 2,
- BY_DAY = 3,
- BY_MONTH_DAY = 4,
- BY_YEAR_DAY = 5,
- BY_WEEK_NO = 6,
- BY_MONTH = 7,
- BY_SET_POS
-};
-
-void icalrecurrencetype_test()
-{
- icalvalue *v = icalvalue_new_from_string(
- ICAL_RECUR_VALUE,
- "FREQ=YEARLY;UNTIL=20060101T000000;INTERVAL=2;BYDAY=SU,WE;BYSECOND=15,30; BYMONTH=1,6,11");
-
- struct icalrecurrencetype r = icalvalue_get_recur(v);
- struct icaltimetype t = icaltime_from_timet( time(0), 0);
- struct icaltimetype next;
- time_t tt;
-
- struct icalrecur_iterator_impl* itr
- = (struct icalrecur_iterator_impl*) icalrecur_iterator_new(r,t);
-
- do {
-
- next = icalrecur_iterator_next(itr);
- tt = icaltime_as_timet(next);
-
- printf("%s",ctime(&tt ));
-
- } while( ! icaltime_is_null_time(next));
-
- icalvalue_free(v);
-
- icalrecur_iterator_free(itr);
-
-}
-
-/* From Federico Mena Quintero <federico@ximian.com> */
-void test_recur_parameter_bug(){
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <libical/ical.h>
-
- static const char test_icalcomp_str[] =
-"BEGIN:VEVENT\n"
-"RRULE;X-EVOLUTION-ENDDATE=20030209T081500:FREQ=DAILY;COUNT=10;INTERVAL=6\n"
-"END:VEVENT\n";
-
- icalcomponent *icalcomp;
- icalproperty *prop;
- struct icalrecurrencetype recur;
- int n_errors;
- char *str;
-
- icalcomp = icalparser_parse_string ((char *) test_icalcomp_str);
- ok("icalparser_parse_string()",(icalcomp!=NULL));
- assert(icalcomp!=NULL);
-
- str = icalcomponent_as_ical_string(icalcomp);
- is("parsed matches original", str, (char*)test_icalcomp_str);
- if (VERBOSE) printf("%s\n\n",str);
-
- n_errors = icalcomponent_count_errors (icalcomp);
- int_is("no parse errors", n_errors, 0);
-
- if (n_errors) {
- icalproperty *p;
-
- for (p = icalcomponent_get_first_property (icalcomp,
- ICAL_XLICERROR_PROPERTY);
- p;
- p = icalcomponent_get_next_property (icalcomp,
- ICAL_XLICERROR_PROPERTY)) {
- const char *str;
-
- str = icalproperty_as_ical_string (p);
- fprintf (stderr, "error: %s\n", str);
- }
- }
-
- prop = icalcomponent_get_first_property (icalcomp, ICAL_RRULE_PROPERTY);
- ok("get RRULE property", (prop!=NULL));
- assert(prop!=NULL);
-
- recur = icalproperty_get_rrule (prop);
-
- if (VERBOSE) printf("%s\n",icalrecurrencetype_as_string(&recur));
-
- icalcomponent_free(icalcomp);
-}
-
-
-void test_duration()
-{
- struct icaldurationtype d;
-
- d = icaldurationtype_from_string("PT8H30M");
- if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d));
- int_is("PT8H30M", icaldurationtype_as_int(d), 30600);
-
- d = icaldurationtype_from_string("-PT8H30M");
- if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d));
- int_is("-PT8H30M", icaldurationtype_as_int(d), -30600);
-
- d = icaldurationtype_from_string("PT10H10M10S");
- if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d));
- int_is("PT10H10M10S", icaldurationtype_as_int(d), 36610);
-
- d = icaldurationtype_from_string("P7W");
- if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d));
- int_is("P7W", icaldurationtype_as_int(d), 4233600);
-
- d = icaldurationtype_from_string("P2DT8H30M");
- if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d));
- int_is("P2DT8H30M", icaldurationtype_as_int(d), 203400);
-
- icalerror_errors_are_fatal = 0;
-
- /* Test conversion of bad input */
-
- d = icaldurationtype_from_int(1314000);
- if (VERBOSE) printf("%s %d\n",icaldurationtype_as_ical_string(d),
- icaldurationtype_as_int(d));
- is("1314000", icaldurationtype_as_ical_string(d), "P15DT5H");
-
- d = icaldurationtype_from_string("P2W1DT5H");
- if (VERBOSE) printf("%s %d\n",icaldurationtype_as_ical_string(d),
- icaldurationtype_as_int(d));
- int_is("P15DT5H", icaldurationtype_as_int(d), 0);
-
- d = icaldurationtype_from_string("P-2DT8H30M");
- if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d));
- int_is("P-2DT8H30M", icaldurationtype_as_int(d), 0);
-
- d = icaldurationtype_from_string("P7W8H");
- if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d));
- int_is("P7W8H", icaldurationtype_as_int(d), 0);
-
- d = icaldurationtype_from_string("T10H");
- if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d));
- int_is("T10H", icaldurationtype_as_int(d), 0);
-
- icalerror_errors_are_fatal = 1;
-
- d = icaldurationtype_from_int(4233600);
- if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d));
- is("P7W",
- icaldurationtype_as_ical_string(d), "P7W");
-
- d = icaldurationtype_from_int(4424400);
- if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d));
- is("P51DT5H",
- icaldurationtype_as_ical_string(d), "P51DT5H");
-}
-
-
-void test_period()
-{
- struct icalperiodtype p;
- icalvalue *v;
- char *str;
-
- str = "19971015T050000Z/PT8H30M";
- p = icalperiodtype_from_string(str);
- is(str, icalperiodtype_as_ical_string(p),str);
-
-
- str = "19971015T050000Z/19971015T060000Z";
- p = icalperiodtype_from_string(str);
- is(str, icalperiodtype_as_ical_string(p),str);
-
-
- str = "19970101T120000/PT3H";
-
- v = icalvalue_new_from_string(ICAL_PERIOD_VALUE,str);
- is(str, icalvalue_as_ical_string(v), str);
-
- icalvalue_free(v);
-}
-
-
-void test_strings(){
- icalvalue *v;
-
- v = icalvalue_new_text("foo;bar;bats");
- if (VERBOSE)
- printf("%s\n",icalvalue_as_ical_string(v));
-
- is("test encoding of 'foo;bar;bats'",
- "foo\\;bar\\;bats", icalvalue_as_ical_string(v));
-
- icalvalue_free(v);
-
-
- v = icalvalue_new_text("foo\\;b\nar\\;ba\tts");
- if (VERBOSE)
- printf("%s\n",icalvalue_as_ical_string(v));
-
- is("test encoding of 'foo\\\\;b\\nar\\\\;ba\\tts'",
- "foo\\\\\\;b\\nar\\\\\\;ba\\tts", icalvalue_as_ical_string(v));
-
- icalvalue_free(v);
-}
-
-
-void test_requeststat()
-{
- icalproperty *p;
- icalrequeststatus s;
- struct icalreqstattype st, st2;
- char temp[1024];
-
- s = icalenum_num_to_reqstat(2,1);
-
- ok("icalenum_num_to_reqstat(2,1)",(s == ICAL_2_1_FALLBACK_STATUS));
-
- ok("icalenum_reqstat_major()",(icalenum_reqstat_major(s) == 2));
- ok("icalenum_reqstat_minor()",(icalenum_reqstat_minor(s) == 1));
-
- is ("icalenum_reqstat_desc() -> 2.1", icalenum_reqstat_desc(s),
- "Success but fallback taken on one or more property values.");
-
- st.code = s;
- st.debug = "booga";
- st.desc = 0;
-
- is("icalreqstattype_as_string()",
- icalreqstattype_as_string(st),
- "2.1;Success but fallback taken on one or more property values.;booga");
-
- st.desc = " A non-standard description";
-
- is("icalreqstattype_as_string() w/ non standard description",
- icalreqstattype_as_string(st),
- "2.1; A non-standard description;booga");
-
- st.desc = 0;
-
- sprintf(temp,"%s\n",icalreqstattype_as_string(st));
-
-
- st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values.;booga");
-
- /* printf("%d -- %d -- %s -- %s\n",*/
- ok("icalenum_reqstat_major()",(icalenum_reqstat_major(st2.code) == 2));
- ok("icalenum_reqstat_minor()",(icalenum_reqstat_minor(st2.code) == 1));
- is("icalenum_reqstat_desc",
- icalenum_reqstat_desc(st2.code),
- "Success but fallback taken on one or more property values.");
-
- st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values.;booga");
- if (VERBOSE) printf("%s\n",icalreqstattype_as_string(st2));
-
- st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values.;");
- if (VERBOSE) printf("%s\n",icalreqstattype_as_string(st2));
-
- st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values.");
- if (VERBOSE) printf("%s\n",icalreqstattype_as_string(st2));
-
- st2 = icalreqstattype_from_string("2.1;");
- if (VERBOSE) printf("%s\n",icalreqstattype_as_string(st2));
-
- is("st2 test again",
- icalreqstattype_as_string(st2),
- "2.1;Success but fallback taken on one or more property values.");
-
- st2 = icalreqstattype_from_string("2.1");
- is("st2 test #3",
- icalreqstattype_as_string(st2),
- "2.1;Success but fallback taken on one or more property values.");
-
- p = icalproperty_new_from_string("REQUEST-STATUS:2.1;Success but fallback taken on one or more property values.;booga");
-
- is("icalproperty_new_from_string()",
- icalproperty_as_ical_string(p),
- "REQUEST-STATUS:2.1;Success but fallback taken on one or more property \n values.;booga\n");
-
- icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_NONFATAL);
- st2 = icalreqstattype_from_string("16.4");
-
- ok("test unknown code", (st2.code == ICAL_UNKNOWN_STATUS));
-
- st2 = icalreqstattype_from_string("1.");
-
- ok("test malformed code", (st2.code == ICAL_UNKNOWN_STATUS));
- icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_DEFAULT);
-
- icalproperty_free(p);
-}
-
-
-void test_dtstart(){
-
- struct icaltimetype tt,tt2;
-
- icalproperty *p;
-
-
- tt = icaltime_from_string("19970101");
-
- int_is("19970101 is a date", tt.is_date, 1);
-
- p = icalproperty_new_dtstart(tt);
-
- if (VERBOSE) printf("%s\n",icalvalue_kind_to_string(icalvalue_isa(icalproperty_get_value(p))));
-
- ok("ICAL_DATE_VALUE", (icalvalue_isa(icalproperty_get_value(p))==ICAL_DATE_VALUE));
-
- tt2 = icalproperty_get_dtstart(p);
- int_is("converted date is date", tt2.is_date, 1);
-
- if (VERBOSE) printf("%s\n",icalproperty_as_ical_string(p));
-
- tt = icaltime_from_string("19970101T103000");
-
- int_is("19970101T103000 is not a date", tt.is_date, 0);
-
- icalproperty_free(p);
-
- p = icalproperty_new_dtstart(tt);
-
- if (VERBOSE) printf("%s\n",icalvalue_kind_to_string(icalvalue_isa(icalproperty_get_value(p))));
- ok("ICAL_DATETIME_VALUE", (icalvalue_isa(icalproperty_get_value(p))==ICAL_DATETIME_VALUE));
-
- tt2 = icalproperty_get_dtstart(p);
- int_is("converted datetime is not date", tt2.is_date, 0);
-
- if (VERBOSE) printf("%s\n",icalproperty_as_ical_string(p));
-
- icalproperty_free(p);
-}
-
-void do_test_time(char* zone)
-{
- struct icaltimetype ictt, icttutc, icttzone, icttdayl,
- icttla, icttny,icttphoenix, icttlocal, icttnorm;
- time_t tt,tt2, tt_p200;
- int offset_tz;
- icalvalue *v;
- short day_of_week,start_day_of_week, day_of_year;
- icaltimezone *azone, *utczone;
- char msg[256];
-
- icalerror_errors_are_fatal = 0;
-
- azone = icaltimezone_get_builtin_timezone(zone);
- utczone = icaltimezone_get_utc_timezone();
-
- /* Test new API */
- if (VERBOSE) printf("\n---> From time_t \n");
-
- tt = 1025127869; /* stick with a constant... */
-
- if (VERBOSE) printf("Orig : %s\n",ical_timet_string(tt));
- if (VERBOSE) printf("\nicaltime_from_timet(tt,0) (DEPRECATED)\n");
-
- ictt = icaltime_from_timet(tt, 0);
-
- is("icaltime_from_timet(1025127869) as UTC", ictt_as_string(ictt),
- "2002-06-26 21:44:29 (floating)");
-
- ictt = icaltime_from_timet_with_zone(tt, 0, NULL);
- is("Floating time from time_t",
- ictt_as_string(ictt), "2002-06-26 21:44:29 (floating)");
-
- ictt = icaltime_from_timet_with_zone(tt, 0, azone);
- ok("icaltime_from_timet_with_zone(tt,0,zone) as zone",
- strncmp(ictt_as_string(ictt), "2002-06-26 21:44:29", 19)==0);
-
- ictt = icaltime_from_timet_with_zone(tt, 0, utczone);
-
- is("icaltime_from_timet_with_zone(tt,0,utc)", ictt_as_string(ictt),
- "2002-06-26 21:44:29 Z UTC");
-
- if (VERBOSE) printf("\n---> Convert from floating \n");
-
- ictt = icaltime_from_timet_with_zone(tt, 0, NULL);
- icttutc = icaltime_convert_to_zone(ictt, utczone);
-
- is("Convert from floating to UTC",
- ictt_as_string(icttutc),
- "2002-06-26 21:44:29 Z UTC");
-
- icttzone = icaltime_convert_to_zone(ictt, azone);
-
- ok("Convert from floating to zone",
- (strncmp(ictt_as_string(icttzone), "2002-06-26 21:44:29", 19)==0));
-
- tt2 = icaltime_as_timet(icttzone);
-
- if (VERBOSE) printf("\n---> Convert from UTC \n");
-
- ictt = icaltime_from_timet_with_zone(tt, 0, utczone);
- icttutc = icaltime_convert_to_zone(ictt, utczone);
-
- is("Convert from UTC to UTC",
- ictt_as_string(icttutc),
- "2002-06-26 21:44:29 Z UTC");
-
- icttzone = icaltime_convert_to_zone(ictt, azone);
-
- ok("Convert from UTC to zone (test year/mon only..)",
- (strncmp(ictt_as_string(icttzone), "2002-06-26 21:44:29", 7)==0));
-
- tt2 = icaltime_as_timet(icttzone);
-
- if (VERBOSE) printf("No conversion: %s\n", ical_timet_string(tt2));
-
- ok("No conversion at all (test year/mon only)",
- (strncmp(ical_timet_string(tt2), "2002-06-26 21:44:29 Z",7) == 0));
-
- tt2 = icaltime_as_timet_with_zone(icttzone, utczone);
- if (VERBOSE) printf("Back to UTC : %s\n", ical_timet_string(tt2));
-
- ok("test time conversion routines",(tt==tt2));
-
- if (VERBOSE) printf("\n---> Convert from zone \n");
- ictt = icaltime_from_timet_with_zone(tt, 0, azone);
- icttzone = icaltime_convert_to_zone(ictt, azone);
-
- if (VERBOSE)
- printf("To zone : %s\n", ictt_as_string(icttzone));
- icttutc = icaltime_convert_to_zone(ictt, utczone);
-
- if (VERBOSE)
- printf("To UTC : %s\n", ictt_as_string(icttutc));
- tt2 = icaltime_as_timet(icttutc);
-
- if (VERBOSE)
- printf("No conversion: %s\n", ical_timet_string(tt2));
-
- tt2 = icaltime_as_timet_with_zone(icttutc, azone);
-
- if (VERBOSE)
- printf("Back to zone : %s\n", ical_timet_string(tt2));
-
- ok("test time conversion, round 2", (tt==tt2));
-
- ictt = icaltime_from_string("20001103T183030Z");
-
- tt = icaltime_as_timet(ictt);
-
- ok("test icaltime -> time_t for 20001103T183030Z", (tt==973276230));
- /* Fri Nov 3 10:30:30 PST 2000 in PST
- Fri Nov 3 18:30:30 PST 2000 in UTC */
-
- if (VERBOSE) {
- printf(" Normalize \n");
- printf("Orig (ical) : %s\n", ictt_as_string(ictt));
- }
- icttnorm = ictt;
- icttnorm.second -= 60 * 60 * 24 * 5;
- icttnorm = icaltime_normalize(icttnorm);
-
- if (VERBOSE)
- printf("-5d in sec : %s\n", ictt_as_string(icttnorm));
- icttnorm.day += 60;
- icttnorm = icaltime_normalize(icttnorm);
-
- if (VERBOSE)
- printf("+60 d : %s\n", ictt_as_string(icttnorm));
-
- /** add test case here.. **/
-
- if (VERBOSE)
- printf("\n As time_t \n");
-
- tt2 = icaltime_as_timet(ictt);
-
- if (VERBOSE) {
- printf("20001103T183030Z (timet): %s\n",ical_timet_string(tt2));
- printf("20001103T183030Z : %s\n",ictt_as_string(ictt));
- }
-
- /** this test is bogus **/
- ok("test normalization", (tt2 == tt));
-
- icttlocal = icaltime_convert_to_zone(ictt, azone);
- tt2 = icaltime_as_timet(icttlocal);
- if (VERBOSE) {
- printf("20001103T183030 (timet): %s\n",ical_timet_string(tt2));
- printf("20001103T183030 : %s\n",ictt_as_string(icttlocal));
- }
-
- offset_tz = -icaltimezone_get_utc_offset_of_utc_time(azone, &ictt, 0); /* FIXME */
- if (VERBOSE)
- printf("offset_tz : %d\n",offset_tz);
-
- ok("test utc offset", (tt-tt2 == offset_tz));
-
- /* FIXME with the new API, it's not very useful */
- icttlocal = ictt;
- icaltimezone_convert_time(&icttlocal,
- icaltimezone_get_utc_timezone(),
- icaltimezone_get_builtin_timezone(zone));
-
- if (VERBOSE)
- printf("As local : %s\n", ictt_as_string(icttlocal));
-
- if (VERBOSE) printf("\n Convert to and from lib c \n");
-
- if (VERBOSE) printf("System time is: %s\n",ical_timet_string(tt));
-
- v = icalvalue_new_datetime(ictt);
-
- if (VERBOSE)
- printf("System time from libical: %s\n",icalvalue_as_ical_string(v));
-
- icalvalue_free(v);
-
- tt2 = icaltime_as_timet(ictt);
-
- if (VERBOSE)
- printf("Converted back to libc: %s\n",ical_timet_string(tt2));
-
- if (VERBOSE) printf("\n Incrementing time \n");
-
- icttnorm = ictt;
-
- icttnorm.year++;
- tt2 = icaltime_as_timet(icttnorm);
- if (VERBOSE)
- printf("Add a year: %s\n",ical_timet_string(tt2));
-
- icttnorm.month+=13;
- tt2 = icaltime_as_timet(icttnorm);
- if (VERBOSE)
- printf("Add 13 months: %s\n",ical_timet_string(tt2));
-
- icttnorm.second+=90;
- tt2 = icaltime_as_timet(icttnorm);
- if (VERBOSE)
- printf("Add 90 seconds: %s\n",ical_timet_string(tt2));
-
- if (VERBOSE) printf("\n Day Of week \n");
-
- day_of_week = icaltime_day_of_week(ictt);
- start_day_of_week = icaltime_start_doy_of_week(ictt);
- day_of_year = icaltime_day_of_year(ictt);
-
- sprintf(msg, "Testing day of week %d", day_of_week);
- int_is(msg, day_of_week, 6);
-
- sprintf(msg, "Testing day of year %d",day_of_year);
- int_is(msg, day_of_year, 308);
-
- sprintf(msg, "Week started on doy of %d", start_day_of_week);
- int_is(msg, start_day_of_week , 303);
-
- if (VERBOSE) printf("\n TimeZone Conversions \n");
-
-/*
- icttla = ictt;
- icaltimezone_convert_time(&icttla,
- icaltimezone_get_utc_timezone(),
- lazone);
-*/
- icttla = icaltime_convert_to_zone(ictt,
- icaltimezone_get_builtin_timezone("America/Los_Angeles"));
-
- int_is("Converted hour in America/Los_Angeles is 10", icttla.hour, 10);
-
- icttutc = icaltime_convert_to_zone(icttla,icaltimezone_get_utc_timezone());
-
- ok("America/Los_Angeles local time is 2000-11-03 10:30:30",
- (strncmp(ictt_as_string(icttla), "2000-11-03 10:30:30", 19)==0));
-
- ok("Test conversion back to UTC",(icaltime_compare(icttutc, ictt) == 0));
-
- icttny = icaltime_convert_to_zone(ictt,
- icaltimezone_get_builtin_timezone("America/New_York"));
-
- icttphoenix = icaltime_convert_to_zone(ictt,
- icaltimezone_get_builtin_timezone("America/Phoenix"));
-
- if (VERBOSE) {
- printf("Orig (ctime): %s\n", ical_timet_string(tt) );
- printf("Orig (ical) : %s\n", ictt_as_string(ictt));
- printf("UTC : %s\n", ictt_as_string(icttutc));
- printf("Los Angeles : %s\n", ictt_as_string(icttla));
- printf("Phoenix : %s\n", ictt_as_string(icttphoenix));
- printf("New York : %s\n", ictt_as_string(icttny));
- }
- /** @todo Check results for Phoenix here?... **/
-
- /* Daylight savings test for New York */
- if (VERBOSE) {
- printf("\n Daylight Savings \n");
-
- printf("Orig (ctime): %s\n", ical_timet_string(tt) );
- printf("Orig (ical) : %s\n", ictt_as_string(ictt));
- printf("NY : %s\n", ictt_as_string(icttny));
- }
-
- ok("Converted time in zone America/New_York is 2000-11-03 13:30:30",
- (strncmp(ictt_as_string(icttny),"2000-11-03 13:30:30",19)==0));
-
- tt_p200 = tt + 200 * 24 * 60 * 60 ; /* Add 200 days */
-
- icttdayl = icaltime_from_timet_with_zone(tt_p200,0,
- icaltimezone_get_utc_timezone());
- icttny = icaltime_convert_to_zone(icttdayl,
- icaltimezone_get_builtin_timezone("America/New_York"));
-
- if (VERBOSE) {
- printf("Orig +200d : %s\n", ical_timet_string(tt_p200) );
- printf("NY+200D : %s\n", ictt_as_string(icttny));
- }
-
- ok("Converted time +200d in zone America/New_York is 2001-05-22 14:30:30",
- (strncmp(ictt_as_string(icttny),"2001-05-22 14:30:30",19)==0));
-
-
- /* Daylight savings test for Los Angeles */
-
- icttla = icaltime_convert_to_zone(ictt,
- icaltimezone_get_builtin_timezone("America/Los_Angeles"));
-
- if (VERBOSE) {
- printf("\nOrig (ctime): %s\n", ical_timet_string(tt) );
- printf("Orig (ical) : %s\n", ictt_as_string(ictt));
- printf("LA : %s\n", ictt_as_string(icttla));
- }
-
- ok("Converted time in zone America/Los_Angeles is 2000-11-03 10:30:30",
- (strncmp(ictt_as_string(icttla),"2000-11-03 10:30:30",19)==0));
-
-
- icttla = icaltime_convert_to_zone(icttdayl,
- icaltimezone_get_builtin_timezone("America/Los_Angeles"));
-
- if (VERBOSE) {
- printf("Orig +200d : %s\n", ical_timet_string(tt_p200) );
- printf("LA+200D : %s\n", ictt_as_string(icttla));
- }
-
- ok("Converted time +200d in zone America/Los_Angeles is 2001-05-22 11:30:30",
- (strncmp(ictt_as_string(icttla),"2001-05-22 11:30:30",19)==0));
-
-
- icalerror_errors_are_fatal = 1;
-}
-
-void test_iterators()
-{
- icalcomponent *c,*inner,*next;
- icalcompiter i;
- char vevent_list[64] = "";
- char remaining_list[64] = "";
-
- char *vevent_list_good = "12347";
- char *remaining_list_good = "568910";
-
- int nomore = 1;
-
- c= icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(ICAL_VEVENT_COMPONENT,
- icalproperty_new_version("1"),0),
- icalcomponent_vanew(ICAL_VEVENT_COMPONENT,
- icalproperty_new_version("2"),0),
- icalcomponent_vanew(ICAL_VEVENT_COMPONENT,
- icalproperty_new_version("3"),0),
- icalcomponent_vanew(ICAL_VEVENT_COMPONENT,
- icalproperty_new_version("4"),0),
- icalcomponent_vanew(ICAL_VTODO_COMPONENT,
- icalproperty_new_version("5"),0),
- icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT,
- icalproperty_new_version("6"),0),
- icalcomponent_vanew(ICAL_VEVENT_COMPONENT,
- icalproperty_new_version("7"),0),
- icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT,
- icalproperty_new_version("8"),0),
- icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT,
- icalproperty_new_version("9"),0),
- icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT,
- icalproperty_new_version("10"),0),
- 0);
-
- /* List all of the VEVENTS */
-
- for(i = icalcomponent_begin_component(c,ICAL_VEVENT_COMPONENT);
- icalcompiter_deref(&i)!= 0; icalcompiter_next(&i)){
-
- icalcomponent *this = icalcompiter_deref(&i);
-
- icalproperty *p =
- icalcomponent_get_first_property(this,
- ICAL_VERSION_PROPERTY);
- const char* s = icalproperty_get_version(p);
-
- strcat(vevent_list, s);
- }
- is("iterate through VEVENTS in a component",
- vevent_list, vevent_list_good);
-
- /* Delete all of the VEVENTS */
- /* reset iterator */
- icalcomponent_get_first_component(c,ICAL_VEVENT_COMPONENT);
-
- while((inner=icalcomponent_get_current_component(c)) != 0 ){
- if(icalcomponent_isa(inner) == ICAL_VEVENT_COMPONENT){
- icalcomponent_remove_component(c,inner);
- icalcomponent_free(inner);
- } else {
- icalcomponent_get_next_component(c,ICAL_VEVENT_COMPONENT);
- }
- }
-
- /* List all remaining components */
- for(inner = icalcomponent_get_first_component(c,ICAL_ANY_COMPONENT);
- inner != 0;
- inner = icalcomponent_get_next_component(c,ICAL_ANY_COMPONENT)){
-
-
- icalproperty *p =
- icalcomponent_get_first_property(inner,ICAL_VERSION_PROPERTY);
-
- const char* s = icalproperty_get_version(p);
-
- strcat(remaining_list, s);
- }
-
- is("iterate through remaining components",
- remaining_list, remaining_list_good);
-
-
- /* Remove all remaining components */
- for(inner = icalcomponent_get_first_component(c,ICAL_ANY_COMPONENT);
- inner != 0;
- inner = next){
-
- icalcomponent *this;
- icalproperty *p;
- const char* s;
- next = icalcomponent_get_next_component(c,ICAL_ANY_COMPONENT);
-
- p=icalcomponent_get_first_property(inner,ICAL_VERSION_PROPERTY);
- s = icalproperty_get_version(p);
-
- icalcomponent_remove_component(c,inner);
-
- this = icalcomponent_get_current_component(c);
-
- if(this != 0){
- p=icalcomponent_get_first_property(this,ICAL_VERSION_PROPERTY);
- s = icalproperty_get_version(p);
- }
-
- icalcomponent_free(inner);
- }
-
-
- /* List all remaining components */
- for(inner = icalcomponent_get_first_component(c,ICAL_ANY_COMPONENT);
- inner != 0;
- inner = icalcomponent_get_next_component(c,ICAL_ANY_COMPONENT)){
-
- icalproperty *p =
- icalcomponent_get_first_property(inner,ICAL_VERSION_PROPERTY);
-
- const char* s = icalproperty_get_version(p);
-
- if (s)
- nomore = 0;
- }
-
- ok("test if any components remain after deleting the rest",
- nomore == 1);
-
- icalcomponent_free(c);
-}
-
-
-void test_time()
-{
- char *zones[6] = { "America/Los_Angeles","America/New_York","Europe/London","Asia/Shanghai", NULL};
-
- int i;
-
- do_test_time(0);
-
- for(i = 0; zones[i] != NULL; i++){
-
- if (VERBOSE) printf(" ######### Timezone: %s ############\n",zones[i]);
-
- do_test_time(zones[i]);
-
- }
-
-}
-
-
-void test_icalset()
-{
- icalcomponent *c;
-
- icalset* f = icalset_new_file("2446.ics");
- icalset* d = icalset_new_dir("outdir");
-
- assert(f!=0);
- assert(d!=0);
-
- for(c = icalset_get_first_component(f);
- c != 0;
- c = icalset_get_next_component(f)){
-
- icalcomponent *clone;
-
- clone = icalcomponent_new_clone(c);
-
- icalset_add_component(d,clone);
-
- printf(" class %d\n",icalclassify(c,0,"user"));
-
- }
-
- icalset_free(f);
- icalset_free(d);
-}
-
-
-icalcomponent* icalclassify_find_overlaps(icalset* set, icalcomponent* comp);
-
-void test_overlaps()
-{
- icalcomponent *cset,*c;
- icalset *set;
- time_t tm1 = 973378800; /*Sat Nov 4 23:00:00 UTC 2000,
- Sat Nov 4 15:00:00 PST 2000 */
- time_t tm2 = 973382400; /*Sat Nov 5 00:00:00 UTC 2000
- Sat Nov 4 16:00:00 PST 2000 */
-
- time_t hh = 1800; /* one half hour */
-
- set = icalset_new_file("../../test-data/overlaps.ics");
-
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_dtstart(icaltime_from_timet(tm1-hh,0),0),
- icalproperty_vanew_dtend(icaltime_from_timet(tm2-hh,0),0),
- 0
- );
-
- cset = icalclassify_find_overlaps(set,c);
- ok("TODO find overlaps 1", (cset != NULL));
-
- if (VERBOSE && cset) printf("%s\n",icalcomponent_as_ical_string(cset));
-
- if (cset) icalcomponent_free(cset);
- if (c) icalcomponent_free(c);
-
-
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_dtstart(icaltime_from_timet(tm1-hh,0),0),
- icalproperty_vanew_dtend(icaltime_from_timet(tm2,0),0),
- 0
- );
-
- cset = icalclassify_find_overlaps(set,c);
-
- ok("TODO find overlaps 1", cset != NULL);
- if (VERBOSE && cset) printf("%s\n",icalcomponent_as_ical_string(cset));
-
- if (cset) icalcomponent_free(cset);
- if (c) icalcomponent_free(c);
-
- c = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_dtstart(icaltime_from_timet(tm1+5*hh,0),0),
- icalproperty_vanew_dtend(icaltime_from_timet(tm2+5*hh,0),0),
- 0
- );
-
- cset = icalclassify_find_overlaps(set,c);
- ok("TODO find overlaps 1", cset != NULL);
- if (VERBOSE && cset) printf("%s\n",icalcomponent_as_ical_string(cset));
-
- if (set) icalset_free(set);
- if (cset) icalcomponent_free(cset);
- if (c) icalcomponent_free(c);
-}
-
-
-
-void test_fblist()
-{
- icalspanlist *sl, *new_sl;
- icalset* set = icalset_new_file("../../test-data/spanlist.ics");
- struct icalperiodtype period;
- icalcomponent *comp;
- int * foo;
- int i;
-
- sl = icalspanlist_new(set,
- icaltime_from_string("19980101T000000Z"),
- icaltime_from_string("19980108T000000Z"));
-
- ok("open ../../test-data/spanlist.ics", (set!=NULL));
- assert(set!=NULL);
-
- if (VERBOSE) printf("Restricted spanlist\n");
- if (VERBOSE) icalspanlist_dump(sl);
-
- period= icalspanlist_next_free_time(sl,
- icaltime_from_string("19970801T120000"));
-
- is("Next Free time start 19970801T120000", icaltime_as_ical_string(period.start), "19970801T120000");
- is("Next Free time end 19980101T000000", icaltime_as_ical_string(period.end), "19980101T000000");
-
- period= icalspanlist_next_free_time(sl, period.end);
-
- is("Next Free time start 19980101T010000", icaltime_as_ical_string(period.start), "19980101T010000");
- is("Next Free time end 19980102T010000", icaltime_as_ical_string(period.end), "19980102T010000");
-
- if (VERBOSE) printf("%s\n",
- icalcomponent_as_ical_string(icalspanlist_as_vfreebusy(sl,
- "a@foo.com",
- "b@foo.com")
- ));
-
- foo = icalspanlist_as_freebusy_matrix(sl,3600);
-
- for (i=0; foo[i] != -1; i++); /* find number entries */
-
- int_is("Calculating freebusy hourly matrix", i, (7*24));
-
- if (VERBOSE) {
- for (i=0; foo[i] != -1; i++) {
- printf("%d", foo[i]);
- if ((i % 24) == 23)
- printf("\n");
- }
- printf("\n\n");
- }
-
-
- free(foo);
-
- foo = icalspanlist_as_freebusy_matrix(sl,3600*24);
-
- ok("Calculating daily freebusy matrix", (foo!=NULL));
-
- {
- char out_str[80] = "";
- char *strp = out_str;
-
- for (i=0; foo[i]!=-1; i++){
- sprintf(strp, "%d", foo[i]);
- strp++;
- }
- is("Checking freebusy validity", out_str, "1121110");
- }
- if (VERBOSE) {
- for (i=0; foo[i] != -1; i++) {
- printf("%d", foo[i]);
- if ((i % 7) == 6)
- printf("\n");
- }
- printf("\n\n");
- }
- free(foo);
-
- icalspanlist_free(sl);
-
-
- if (VERBOSE) printf("Unrestricted spanlist\n");
-
- sl = icalspanlist_new(set,
- icaltime_from_string("19970324T120000Z"),
- icaltime_null_time());
-
- ok("add 19970324T120000Z to spanlist", (sl!=NULL));
-
- if (VERBOSE) printf("Restricted spanlist\n");
- if (VERBOSE) icalspanlist_dump(sl);
-
- period= icalspanlist_next_free_time(sl,
- icaltime_from_string("19970801T120000Z"));
-
-
- is("Next Free time start 19980101T010000",
- icaltime_as_ical_string(period.start),
- "19980101T010000");
-
- is("Next Free time end 19980102T010000",
- icaltime_as_ical_string(period.end),
- "19980102T010000");
-
- comp = icalspanlist_as_vfreebusy(sl, "a@foo.com", "b@foo.com");
-
- ok("Calculating VFREEBUSY component", (comp != NULL));
- if (VERBOSE) printf("%s\n", icalcomponent_as_ical_string(comp));
-
- new_sl = icalspanlist_from_vfreebusy(comp);
-
- ok("Calculating spanlist from generated VFREEBUSY component",
- (new_sl != NULL));
-
- if (VERBOSE) icalspanlist_dump(new_sl);
-
- if (sl) icalspanlist_free(sl);
- if (new_sl) icalspanlist_free(new_sl);
- if (comp) icalcomponent_free(comp);
-
- icalset_free(set);
-}
-
-
-void test_convenience(){
- icalcomponent *c;
- int duration;
- struct icaltimetype tt;
-
- c = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(icaltime_from_string("19970801T120000")),
- icalproperty_new_dtend(icaltime_from_string("19970801T130000")),
- 0
- ),
- 0);
-
- if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c));
-
- duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60;
-
- is("Start is 1997-08-01 12:00:00 (floating)",
- ictt_as_string(icalcomponent_get_dtstart(c)), "1997-08-01 12:00:00 (floating)");
- is("End is 1997-08-01 13:00:00 (floating)",
- ictt_as_string(icalcomponent_get_dtend(c)), "1997-08-01 13:00:00 (floating)");
- ok("Duration is 60 m", (duration == 60));
-
- icalcomponent_free(c);
-
- c = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(icaltime_from_string("19970801T120000Z")),
- icalproperty_new_duration(icaldurationtype_from_string("PT1H30M")),
- 0
- ),
- 0);
-
- if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c));
-
- duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60;
-
- is("Start is 1997-08-01 12:00:00 Z UTC",
- ictt_as_string(icalcomponent_get_dtstart(c)), "1997-08-01 12:00:00 Z UTC");
- is("End is 1997-08-01 13:30:00 Z UTC",
- ictt_as_string(icalcomponent_get_dtend(c)), "1997-08-01 13:30:00 Z UTC");
- ok("Duration is 90 m", (duration == 90));
-
- icalcomponent_free(c);
-
- icalerror_errors_are_fatal = 0;
-
- c = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(icaltime_from_string("19970801T120000")),
- icalproperty_new_dtend(icaltime_from_string("19970801T130000")),
- 0
- ),
- 0);
-
- icalcomponent_set_duration(c,icaldurationtype_from_string("PT1H30M"));
-
- if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c));
-
- duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60;
-
- is("Start is 1997-08-01 12:00:00 (floating)",
- ictt_as_string(icalcomponent_get_dtstart(c)),
- "1997-08-01 12:00:00 (floating)");
- is("End is 1997-08-01 13:00:00 (floating)",
- ictt_as_string(icalcomponent_get_dtend(c)),
- "1997-08-01 13:00:00 (floating)");
- ok("Duration is 60 m", (duration == 60));
-
- icalcomponent_free(c);
-
- c = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(icaltime_from_string("19970801T120000Z")),
- icalproperty_new_duration(icaldurationtype_from_string("PT1H30M")),
- 0
- ),
- 0);
-
- icalcomponent_set_dtend(c,icaltime_from_string("19970801T133000Z"));
-
- if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c));
-
-
- duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60;
-
- ok("Start is 1997-08-01 12:00:00 Z UTC",
- (0 == strcmp("1997-08-01 12:00:00 Z UTC", ictt_as_string(icalcomponent_get_dtstart(c)))));
- ok("End is 1997-08-01 13:30:00 Z UTC",
- (0 == strcmp("1997-08-01 13:30:00 Z UTC", ictt_as_string(icalcomponent_get_dtend(c)))));
- ok("Duration is 90 m", (duration == 90));
-
- icalerror_errors_are_fatal = 1;
-
- icalcomponent_free(c);
-
- c = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- 0
- ),
- 0);
-
- icalcomponent_set_dtstart(c,icaltime_from_string("19970801T120000Z"));
- icalcomponent_set_dtend(c,icaltime_from_string("19970801T133000Z"));
-
- if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c));
-
-
- duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60;
-
- ok("Start is 1997-08-01 12:00:00 Z UTC",
- (0 == strcmp("1997-08-01 12:00:00 Z UTC", ictt_as_string(icalcomponent_get_dtstart(c)))));
- ok("End is 1997-08-01 13:30:00 Z UTC",
- (0 == strcmp("1997-08-01 13:30:00 Z UTC", ictt_as_string(icalcomponent_get_dtend(c)))));
- ok("Duration is 90 m", (duration == 90));
-
- icalcomponent_free(c);
-
- c = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- 0
- ),
- 0);
-
-
- icalcomponent_set_dtstart(c,icaltime_from_string("19970801T120000Z"));
- icalcomponent_set_duration(c,icaldurationtype_from_string("PT1H30M"));
-
- if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c));
-
-
- duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60;
-
- ok("Start is 1997-08-01 12:00:00 Z UTC",
- (0 == strcmp("1997-08-01 12:00:00 Z UTC", ictt_as_string(icalcomponent_get_dtstart(c)))));
- ok("End is 1997-08-01 13:30:00 Z UTC",
- (0 == strcmp("1997-08-01 13:30:00 Z UTC", ictt_as_string(icalcomponent_get_dtend(c)))));
- ok("Duration is 90 m", (duration == 90));
-
- icalcomponent_free(c);
-
- c = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- 0
- ),
- 0);
-
- tt = icaltime_from_string("19970801T120000");
- icaltime_set_timezone(&tt,
- icaltimezone_get_builtin_timezone("Europe/Rome"));
- icalcomponent_set_dtstart(c,tt);
-
- if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c));
-
- icalcomponent_set_duration(c,icaldurationtype_from_string("PT1H30M"));
- duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60;
-
- ok("Start is 1997-08-01 12:00:00 /softwarestudio.org/Olson_20010626_2/Europe/Rome",
- (0 == strcmp("1997-08-01 12:00:00 /softwarestudio.org/Olson_20010626_2/Europe/Rome", ictt_as_string(icalcomponent_get_dtstart(c)))));
- ok("End is 1997-08-01 13:30:00 /softwarestudio.org/Olson_20010626_2/Europe/Rome",
- (0 == strcmp("1997-08-01 13:30:00 /softwarestudio.org/Olson_20010626_2/Europe/Rome", ictt_as_string(icalcomponent_get_dtend(c)))));
- ok("Duration is 90 m", (duration == 90));
-
- icalcomponent_free(c);
-}
-
-void test_time_parser()
-{
- struct icaltimetype tt;
-
- icalerror_errors_are_fatal = 0;
-
- tt = icaltime_from_string("19970101T1000");
- ok("19970101T1000 is null time", icaltime_is_null_time(tt));
-
- tt = icaltime_from_string("19970101X100000");
- ok("19970101X100000 is null time", icaltime_is_null_time(tt));
-
- tt = icaltime_from_string("19970101T100000");
- ok("19970101T100000 is valid", !icaltime_is_null_time(tt));
-
- if (VERBOSE) printf("%s\n",icaltime_as_ctime(tt));
-
- tt = icaltime_from_string("19970101T100000Z");
-
- ok("19970101T100000Z is valid" , !icaltime_is_null_time(tt));
- if (VERBOSE) printf("%s\n",icaltime_as_ctime(tt));
-
- tt = icaltime_from_string("19970101");
- ok("19970101 is valid", (!icaltime_is_null_time(tt)));
-
- if (VERBOSE) printf("%s\n",icaltime_as_ctime(tt));
-
- icalerror_errors_are_fatal = 1;
-}
-
-void test_recur_parser()
-{
- struct icalrecurrencetype rt;
- char *str;
-
- str = "FREQ=YEARLY;UNTIL=20000131T090000Z;INTERVAL=1;BYDAY=-1TU,3WE,-4FR,SA,SU;BYYEARDAY=34,65,76,78;BYMONTH=1,2,3,4,8";
- rt = icalrecurrencetype_from_string(str);
- is(str, icalrecurrencetype_as_string(&rt), str);
-
- str = "FREQ=DAILY;COUNT=3;INTERVAL=1;BYDAY=-1TU,3WE,-4FR,SA,SU;BYYEARDAY=34,65,76,78;BYMONTH=1,2,3,4,8";
-
- rt = icalrecurrencetype_from_string(str);
- is(str, icalrecurrencetype_as_string(&rt), str);
-}
-
-char* ical_strstr(const char *haystack, const char *needle){
- return strstr(haystack,needle);
-}
-
-void test_start_of_week()
-{
- struct icaltimetype tt2;
- struct icaltimetype tt1 = icaltime_from_string("19900110");
- int dow, doy,start_dow;
-
- do{
- tt1 = icaltime_normalize(tt1);
-
- doy = icaltime_start_doy_of_week(tt1);
- dow = icaltime_day_of_week(tt1);
-
- tt2 = icaltime_from_day_of_year(doy,tt1.year);
- start_dow = icaltime_day_of_week(tt2);
-
- if(doy == 1){
- char msg[128];
- sprintf(msg, "%s", ictt_as_string(tt1));
- int_is(msg, start_dow, 1);
- }
-
- if(start_dow != 1){ /* Sunday is 1 */
- printf("failed: Start of week (%s) is not a Sunday \n for %s (doy=%d,dow=%d)\n",ictt_as_string(tt2), ictt_as_string(tt1),dow,start_dow);
- }
-
-
- assert(start_dow == 1);
-
-
- tt1.day+=1;
-
- } while(tt1.year < 2010);
-}
-
-void test_doy()
-{
- struct icaltimetype tt1, tt2;
- short doy,doy2;
- char msg[128];
-
- doy = -1;
-
- tt1 = icaltime_from_string("19900101");
-
- if (VERBOSE) printf("Test icaltime_day_of_year() agreement with mktime\n");
-
- do{
- struct tm stm;
-
- tt1 = icaltime_normalize(tt1);
-
- stm.tm_sec = tt1.second;
- stm.tm_min = tt1.minute;
- stm.tm_hour = tt1.hour;
- stm.tm_mday = tt1.day;
- stm.tm_mon = tt1.month-1;
- stm.tm_year = tt1.year-1900;
- stm.tm_isdst = -1;
-
- mktime(&stm);
-
- doy = icaltime_day_of_year(tt1);
-
- doy2 = stm.tm_yday+1;
-
- if (doy == 1) {
- /** show some test cases **/
- sprintf(msg, "Year %d - mktime() compare", tt1.year);
- int_is(msg, doy,doy2);
- }
-
- if (doy != doy2){
- printf("Failed for %s (%d,%d)\n",ictt_as_string(tt1),doy,doy2);
- }
- assert(doy == doy2);
-
- tt1.day+=1;
-
- } while(tt1.year < 2010);
-
- if (VERBOSE) printf("\nTest icaltime_day_of_year() agreement with icaltime_from_day_of_year()\n");
-
- tt1 = icaltime_from_string("19900101");
-
- do{
- if(doy == 1){
- /** show some test cases **/
- sprintf(msg, "Year %d - icaltime_day_of_year() compare", tt1.year);
- int_is(msg, doy,doy2);
- }
-
- doy = icaltime_day_of_year(tt1);
- tt2 = icaltime_from_day_of_year(doy,tt1.year);
- doy2 = icaltime_day_of_year(tt2);
-
- assert(doy2 == doy);
- assert(icaltime_compare(tt1,tt2) == 0);
-
- tt1.day+=1;
- tt1 = icaltime_normalize(tt1);
-
- } while(tt1.year < 2010);
-
-
- tt1 = icaltime_from_string("19950301");
- doy = icaltime_day_of_year(tt1);
- tt2 = icaltime_from_day_of_year(doy,1995);
- if(VERBOSE) printf("%d %s %s\n",doy, icaltime_as_ctime(tt1),icaltime_as_ctime(tt2));
-
- ok("test 19950301", (tt2.day == 1 && tt2.month == 3));
- ok("day of year == 60", (doy == 60));
-
- tt1 = icaltime_from_string("19960301");
- doy = icaltime_day_of_year(tt1);
- tt2 = icaltime_from_day_of_year(doy,1996);
- if (VERBOSE) printf("%d %s %s\n",doy, icaltime_as_ctime(tt1),icaltime_as_ctime(tt2));
- ok("test 19960301", (tt2.day == 1 && tt2.month == 3));
- ok("day of year == 61", (doy == 61));
-
- tt1 = icaltime_from_string("19970301");
- doy = icaltime_day_of_year(tt1);
- tt2 = icaltime_from_day_of_year(doy,1997);
- if (VERBOSE) printf("%d %s %s\n",doy, icaltime_as_ctime(tt1),icaltime_as_ctime(tt2));
-
- ok("test 19970301", (tt2.day == 1 && tt2.month == 3));
- ok("day of year == 60", (doy == 60));
-
-}
-
-void test_x(){
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <libical/ical.h>
-
- static const char test_icalcomp_str[] =
-"BEGIN:VEVENT\r\n"
-"RRULE\r\n"
-" ;X-EVOLUTION-ENDDATE=20030209T081500\r\n"
-" :FREQ=DAILY;COUNT=10;INTERVAL=6\r\n"
-"X-COMMENT;X-FOO=BAR: Booga\r\n"
-"END:VEVENT\r\n";
-
- icalcomponent *icalcomp;
- icalproperty *prop;
- struct icalrecurrencetype recur;
- int n_errors;
-
- icalcomp = icalparser_parse_string ((char *) test_icalcomp_str);
- assert(icalcomp!=NULL);
-
- if (VERBOSE) printf("%s\n\n",icalcomponent_as_ical_string(icalcomp));
-
- n_errors = icalcomponent_count_errors (icalcomp);
- int_is("icalparser_parse_string()", n_errors,0);
-
- if (n_errors) {
- /** NOT USED **/
- icalproperty *p;
-
- for (p = icalcomponent_get_first_property (icalcomp,
- ICAL_XLICERROR_PROPERTY);
- p;
- p = icalcomponent_get_next_property (icalcomp,
- ICAL_XLICERROR_PROPERTY)) {
- const char *str;
-
- str = icalproperty_as_ical_string (p);
- fprintf (stderr, "error: %s\n", str);
- }
- }
-
- prop = icalcomponent_get_first_property (icalcomp, ICAL_RRULE_PROPERTY);
- ok("get RRULE property", (prop != NULL));
- assert(prop!=NULL);
-
- recur = icalproperty_get_rrule (prop);
-
- if (VERBOSE) printf("%s\n",icalrecurrencetype_as_string(&recur));
-
- icalcomponent_free(icalcomp);
-
-}
-
-void test_gauge_sql() {
- icalgauge *g;
- char* str;
-
- str= "SELECT DTSTART,DTEND,COMMENT FROM VEVENT,VTODO WHERE VEVENT.SUMMARY = 'Bongoa' AND SEQUENCE < 5";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=NULL));
- if (VERBOSE) icalgauge_dump(g);
-
- icalgauge_free(g);
-
- str="SELECT * FROM VEVENT,VTODO WHERE VEVENT.SUMMARY = 'Bongoa' AND SEQUENCE < 5 OR METHOD != 'CREATE'";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=NULL));
- if (VERBOSE) icalgauge_dump(g);
-
- icalgauge_free(g);
-
- str="SELECT * FROM VEVENT WHERE SUMMARY == 'BA301'";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=NULL));
- if (VERBOSE) icalgauge_dump(g);
-
- icalgauge_free(g);
-
- str="SELECT * FROM VEVENT WHERE SUMMARY == 'BA301'";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=NULL));
- if (VERBOSE) icalgauge_dump(g);
-
- icalgauge_free(g);
-
- str="SELECT * FROM VEVENT WHERE LOCATION == '104 Forum'";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=NULL));
- if (VERBOSE) icalgauge_dump(g);
-
- icalgauge_free(g);
-}
-
-
-void test_gauge_compare() {
- icalgauge *g;
- icalcomponent *c;
- char* str;
-
- /* Equality */
-
- c = icalcomponent_vanew(ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(
- icaltime_from_string("20000101T000002")),0),0);
-
- g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART = '20000101T000002'", 0);
-
- ok("SELECT * FROM VEVENT WHERE DTSTART = '20000101T000002'", (c!=0 && g!=0));
- assert(c!=0);
- assert(g!=0);
-
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
-
- g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART = '20000101T000001'", 0);
-
- ok("SELECT * FROM VEVENT WHERE DTSTART = '20000101T000001'\n", (g!=0));
-
- assert(g!=0);
- int_is("compare",icalgauge_compare(g,c), 0);
-
- icalgauge_free(g);
-
- g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART != '20000101T000003'", 0);
-
- ok("SELECT * FROM VEVENT WHERE DTSTART != '20000101T000003'\n", (c!=0 && g!=0));
-
-
- assert(g!=0);
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
-
- /* Less than */
-
- g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART < '20000101T000003'", 0);
-
- ok("SELECT * FROM VEVENT WHERE DTSTART < '20000101T000003'", (c!=0 && g!=0));
-
- int_is("compare",icalgauge_compare(g,c), 1);
-
- assert(g!=0);
- icalgauge_free(g);
-
- g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART < '20000101T000002'", 0);
-
- ok("SELECT * FROM VEVENT WHERE DTSTART < '20000101T000002'\n", (g!=0));
-
-
- assert(g!=0);
- int_is("compare",icalgauge_compare(g,c), 0);
-
- icalgauge_free(g);
-
- /* Greater than */
-
- g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000001'", 0);
-
- ok("SELECT * FROM VEVENT WHERE DTSTART > '20000101T000001'\n", (g!=0));
-
-
- assert(g!=0);
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
- g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000002'", 0);
-
- ok("SELECT * FROM VEVENT WHERE DTSTART > '20000101T000002'\n", (g!=0));
-
-
- assert(g!=0);
- int_is("compare",icalgauge_compare(g,c), 0);
-
-
- icalgauge_free(g);
-
-
- /* Greater than or Equal to */
-
- g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART >= '20000101T000002'", 0);
-
- ok("SELECT * FROM VEVENT WHERE DTSTART >= '20000101T000002'\n", (g!=0));
-
-
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
- g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART >= '20000101T000003'", 0);
-
- ok("SELECT * FROM VEVENT WHERE DTSTART >= '20000101T000003'\n", (g!=0));
-
-
- int_is("compare",icalgauge_compare(g,c), 0);
-
- icalgauge_free(g);
-
- /* Less than or Equal to */
-
- g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART <= '20000101T000002'", 0);
-
- ok("SELECT * FROM VEVENT WHERE DTSTART <= '20000101T000002'\n", (g!=0));
-
-
- assert(g!=0);
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
- g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART <= '20000101T000001'", 0);
-
- ok("SELECT * FROM VEVENT WHERE DTSTART <= '20000101T000001'\n", (g!=0));
-
-
- int_is("compare",icalgauge_compare(g,c), 0);
-
- icalgauge_free(g);
-
- icalcomponent_free(c);
-
- /* Combinations */
-
- c = icalcomponent_vanew(ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(
- icaltime_from_string("20000102T000000")),0),0);
-
-
- str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' and DTSTART < '20000103T000000'";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=0));
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
- str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' and DTSTART < '20000102T000000'";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=0));
- int_is("compare",icalgauge_compare(g,c), 0);
-
- icalgauge_free(g);
-
- str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' or DTSTART < '20000102T000000'";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=0));
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
-
- icalcomponent_free(c);
-
- /* Combinations, non-cannonical component */
-
- c = icalcomponent_vanew(ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(
- icaltime_from_string("20000102T000000")),0);
-
-
- str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' and DTSTART < '20000103T000000'";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=0));
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
- str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' and DTSTART < '20000102T000000'";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=0));
- int_is("compare",icalgauge_compare(g,c), 0);
-
- icalgauge_free(g);
-
- str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' or DTSTART < '20000102T000000'";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=0));
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
- icalcomponent_free(c);
-
-
- /* Complex comparisions */
-
- c = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalproperty_new_method(ICAL_METHOD_REQUEST),
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(
- icaltime_from_string("20000101T000002")),
- icalproperty_new_comment("foo"),
- icalcomponent_vanew(
- ICAL_VALARM_COMPONENT,
- icalproperty_new_dtstart(
- icaltime_from_string("20000101T120000")),
-
- 0),
- 0),
- 0);
-
-
- str = "SELECT * FROM VEVENT WHERE VALARM.DTSTART = '20000101T120000'";
-
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=0));
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
- str = "SELECT * FROM VEVENT WHERE COMMENT = 'foo'";
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=0));
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
- str = "SELECT * FROM VEVENT WHERE COMMENT = 'foo' AND VALARM.DTSTART = '20000101T120000'";
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=0));
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
- str = "SELECT * FROM VEVENT WHERE COMMENT = 'bar' AND VALARM.DTSTART = '20000101T120000'";
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=0));
- int_is("compare",icalgauge_compare(g,c), 0);
-
- icalgauge_free(g);
-
- str = "SELECT * FROM VEVENT WHERE COMMENT = 'bar' or VALARM.DTSTART = '20000101T120000'";
- g = icalgauge_new_from_sql(str, 0);
- ok(str, (g!=0));
- int_is("compare",icalgauge_compare(g,c), 1);
-
- icalgauge_free(g);
-
- icalcomponent_free(c);
-
-}
-
-icalcomponent* make_component(int i){
-
- icalcomponent *c;
-
- struct icaltimetype t = icaltime_from_string("20000101T120000Z");
-
- t.day += i;
-
- icaltime_normalize(t);
-
- c = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalproperty_new_method(ICAL_METHOD_REQUEST),
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_dtstart(t),
- 0),
- 0);
-
- assert(c != 0);
-
- return c;
-
-}
-void test_fileset()
-{
- icalset *fs;
- icalcomponent *c;
- int i;
- int comp_count = 0;
- char *path = "test_fileset.ics";
- icalgauge *g = icalgauge_new_from_sql(
- "SELECT * FROM VEVENT WHERE DTSTART > '20000103T120000Z' AND DTSTART <= '20000106T120000Z'", 0);
-
- ok("icalgauge_new_from_sql()", (g!=NULL));
-
- unlink(path);
-
- fs = icalfileset_new(path);
-
- ok("icalfileset_new()", (fs!=NULL));
- assert(fs != 0);
-
- for (i = 0; i!= 10; i++){
- c = make_component(i);
- icalfileset_add_component(fs,c);
- }
-
- icalfileset_commit(fs);
-
- icalset_free(fs);
- /** reopen fileset.ics **/
- fs = icalfileset_new(path);
-
- if (VERBOSE) printf("== No Selections \n");
-
- comp_count = 0;
- for (c = icalfileset_get_first_component(fs);
- c != 0;
- c = icalfileset_get_next_component(fs)){
- struct icaltimetype t = icalcomponent_get_dtstart(c);
- comp_count++;
- if (VERBOSE) printf("%s\n",icaltime_as_ctime(t));
- }
- int_is("icalfileset get components",comp_count, 10);
-
- icalfileset_select(fs,g);
-
- if (VERBOSE) printf("\n== DTSTART > '20000103T120000Z' AND DTSTART <= '20000106T120000Z' \n");
-
- comp_count = 0;
- for (c = icalfileset_get_first_component(fs);
- c != 0;
- c = icalfileset_get_next_component(fs)){
- struct icaltimetype t = icalcomponent_get_dtstart(c);
- comp_count++;
- if (VERBOSE) printf("%s\n",icaltime_as_ctime(t));
- }
- int_is("icalfileset get components with gauge",comp_count, 3);
-
- icalset_free(fs);
-
- /*icalgauge_free(g);*/
-
-}
-
-void microsleep(int us)
-{
-#ifndef WIN32
- struct timeval tv;
-
- tv.tv_sec = 0;
- tv.tv_usec = us;
-
- select(0,0,0,0,&tv);
-#else
- Sleep(us);
-#endif
-}
-
-
-void test_file_locks()
-{
-#ifndef WIN32
- pid_t pid;
- char *path = "test_fileset_locktest.ics";
- icalset *fs;
- icalcomponent *c, *c2;
- struct icaldurationtype d;
- int i;
- int final,sec;
-
- icalerror_clear_errno();
-
- unlink(path);
-
- fs = icalfileset_new(path);
-
- if(icalfileset_get_first_component(fs)==0){
- c = make_component(0);
-
- d = icaldurationtype_from_int(1);
-
- icalcomponent_set_duration(c,d);
-
- icalfileset_add_component(fs,c);
-
- c2 = icalcomponent_new_clone(c);
-
- icalfileset_add_component(fs,c2);
-
- icalfileset_commit(fs);
- }
-
- icalset_free(fs);
-
- assert(icalerrno == ICAL_NO_ERROR);
-
- pid = fork();
-
- assert(pid >= 0);
-
- if(pid == 0){
- /*child*/
- int i;
-
- microsleep(rand()/(RAND_MAX/100));
-
- for(i = 0; i< 50; i++){
- fs = icalfileset_new(path);
-
-
- assert(fs != 0);
-
- c = icalfileset_get_first_component(fs);
-
- assert(c!=0);
-
- d = icalcomponent_get_duration(c);
- d = icaldurationtype_from_int(icaldurationtype_as_int(d)+1);
-
- icalcomponent_set_duration(c,d);
- icalcomponent_set_summary(c,"Child");
-
- c2 = icalcomponent_new_clone(c);
- icalcomponent_set_summary(c2,"Child");
- icalfileset_add_component(fs,c2);
-
- icalfileset_mark(fs);
- icalfileset_commit(fs);
-
- icalset_free(fs);
-
- microsleep(rand()/(RAND_MAX/20));
-
-
- }
-
- exit(0);
-
- } else {
- /* parent */
- int i;
-
- for(i = 0; i< 50; i++){
- fs = icalfileset_new(path);
-
- assert(fs != 0);
-
- c = icalfileset_get_first_component(fs);
-
- assert(c!=0);
-
- d = icalcomponent_get_duration(c);
- d = icaldurationtype_from_int(icaldurationtype_as_int(d)+1);
-
- icalcomponent_set_duration(c,d);
- icalcomponent_set_summary(c,"Parent");
-
- c2 = icalcomponent_new_clone(c);
- icalcomponent_set_summary(c2,"Parent");
- icalfileset_add_component(fs,c2);
-
- icalfileset_mark(fs);
- icalfileset_commit(fs);
- icalset_free(fs);
-
- putc('.',stdout);
- fflush(stdout);
-
- }
- }
-
- assert(waitpid(pid,0,0)==pid);
-
-
- fs = icalfileset_new(path);
-
- i=1;
-
- c = icalfileset_get_first_component(fs);
- final = icaldurationtype_as_int(icalcomponent_get_duration(c));
- for (c = icalfileset_get_next_component(fs);
- c != 0;
- c = icalfileset_get_next_component(fs)){
- struct icaldurationtype d = icalcomponent_get_duration(c);
- sec = icaldurationtype_as_int(d);
-
- /*printf("%d,%d ",i,sec);*/
- assert(i == sec);
- i++;
- }
-
- printf("\nFinal: %d\n",final);
-
-
- assert(sec == final);
-#endif
-}
-
-void test_action()
-{
- icalcomponent *c;
- icalproperty *p;
- char *str;
-
- static const char test_icalcomp_str[] =
-"BEGIN:VEVENT\n"
-"ACTION:EMAIL\n"
-"ACTION:PROCEDURE\n"
-"ACTION:AUDIO\n"
-"ACTION:FUBAR\n"
-"END:VEVENT\n";
-
-
- c = icalparser_parse_string ((char *) test_icalcomp_str);
-
- ok("icalparser_parse_string(), ACTIONS", (c!=NULL));
- assert(c!=0);
-
- str = icalcomponent_as_ical_string(c);
- is("icalcomponent_as_ical_string()", str, ((char*) test_icalcomp_str));
- if (VERBOSE) printf("%s\n\n",str);
-
- p = icalcomponent_get_first_property(c,ICAL_ACTION_PROPERTY);
-
- ok("ICAL_ACTION_EMAIL", (icalproperty_get_action(p) == ICAL_ACTION_EMAIL));
-
- p = icalcomponent_get_next_property(c,ICAL_ACTION_PROPERTY);
-
- ok("ICAL_ACTION_PROCEDURE", (icalproperty_get_action(p) == ICAL_ACTION_PROCEDURE));
-
- p = icalcomponent_get_next_property(c,ICAL_ACTION_PROPERTY);
-
- ok("ICAL_ACTION_AUDIO", (icalproperty_get_action(p) == ICAL_ACTION_AUDIO));
-
- p = icalcomponent_get_next_property(c,ICAL_ACTION_PROPERTY);
-
- ok("ICAL_ACTION_X", (icalproperty_get_action(p) == ICAL_ACTION_X));
- is("ICAL_ACTION -> FUBAR", icalvalue_get_x(icalproperty_get_value(p)), "FUBAR");
- icalcomponent_free(c);
-}
-
-
-
-void test_trigger()
-{
-
- struct icaltriggertype tr;
- icalcomponent *c;
- icalproperty *p;
- const char* str;
-
- static const char test_icalcomp_str[] =
-"BEGIN:VEVENT\n"
-"TRIGGER;VALUE=DATE-TIME:19980403T120000\n"
-"TRIGGER;VALUE=DURATION:-PT15M\n"
-"TRIGGER;VALUE=DATE-TIME:19980403T120000\n"
-"TRIGGER;VALUE=DURATION:-PT15M\n"
-"END:VEVENT\n";
-
-
- c = icalparser_parse_string ((char *) test_icalcomp_str);
- ok("icalparser_parse_string()", (c!= NULL));
- assert(c!=NULL);
-
- is("parsed triggers", icalcomponent_as_ical_string(c), (char*)test_icalcomp_str);
-
- for(p = icalcomponent_get_first_property(c,ICAL_TRIGGER_PROPERTY);
- p != 0;
- p = icalcomponent_get_next_property(c,ICAL_TRIGGER_PROPERTY)){
- tr = icalproperty_get_trigger(p);
-
- if(!icaltime_is_null_time(tr.time)){
- if (VERBOSE) printf("value=DATE-TIME:%s\n", icaltime_as_ical_string(tr.time));
- } else {
- if (VERBOSE) printf("value=DURATION:%s\n", icaldurationtype_as_ical_string(tr.duration));
- }
- }
-
- icalcomponent_free(c);
-
- /* Trigger, as a DATETIME */
- tr.duration = icaldurationtype_null_duration();
- tr.time = icaltime_from_string("19970101T120000");
- p = icalproperty_new_trigger(tr);
- str = icalproperty_as_ical_string(p);
-
- is("TRIGGER;VALUE=DATE-TIME:19970101T120000", str, "TRIGGER;VALUE=DATE-TIME:19970101T120000\n");
- icalproperty_free(p);
-
- /* TRIGGER, as a DURATION */
- tr.time = icaltime_null_time();
- tr.duration = icaldurationtype_from_string("P3DT3H50M45S");
- p = icalproperty_new_trigger(tr);
- str = icalproperty_as_ical_string(p);
-
- is("TRIGGER;VALUE=DURATION:P3DT3H50M45S", str, "TRIGGER;VALUE=DURATION:P3DT3H50M45S\n");
- icalproperty_free(p);
-
- /* TRIGGER, as a DATETIME, VALUE=DATETIME*/
- tr.duration = icaldurationtype_null_duration();
- tr.time = icaltime_from_string("19970101T120000");
- p = icalproperty_new_trigger(tr);
- icalproperty_add_parameter(p,icalparameter_new_value( ICAL_VALUE_DATETIME));
- str = icalproperty_as_ical_string(p);
-
- is("TRIGGER;VALUE=DATE-TIME:19970101T120000", str, "TRIGGER;VALUE=DATE-TIME:19970101T120000\n");
- icalproperty_free(p);
-
- /*TRIGGER, as a DURATION, VALUE=DATETIME */
- tr.time = icaltime_null_time();
- tr.duration = icaldurationtype_from_string("P3DT3H50M45S");
- p = icalproperty_new_trigger(tr);
- icalproperty_add_parameter(p,icalparameter_new_value( ICAL_VALUE_DATETIME ));
-
- str = icalproperty_as_ical_string(p);
-
- is("TRIGGER;VALUE=DURATION:P3DT3H50M45S", str, "TRIGGER;VALUE=DURATION:P3DT3H50M45S\n");
- icalproperty_free(p);
-
- /* TRIGGER, as a DATETIME, VALUE=DURATION*/
- tr.duration = icaldurationtype_null_duration();
- tr.time = icaltime_from_string("19970101T120000");
- p = icalproperty_new_trigger(tr);
- icalproperty_add_parameter(p,icalparameter_new_value( ICAL_VALUE_DURATION));
- str = icalproperty_as_ical_string(p);
-
- is("TRIGGER;VALUE=DATE-TIME:19970101T120000", str, "TRIGGER;VALUE=DATE-TIME:19970101T120000\n");
- icalproperty_free(p);
-
- /*TRIGGER, as a DURATION, VALUE=DURATION */
- tr.time = icaltime_null_time();
- tr.duration = icaldurationtype_from_string("P3DT3H50M45S");
- p = icalproperty_new_trigger(tr);
- icalproperty_add_parameter(p,icalparameter_new_value( ICAL_VALUE_DURATION));
-
- str = icalproperty_as_ical_string(p);
-
- is("TRIGGER;VALUE=DURATION:P3DT3H50M45S", str, "TRIGGER;VALUE=DURATION:P3DT3H50M45S\n");
- icalproperty_free(p);
-
-
- /* TRIGGER, as a DATETIME, VALUE=BINARY */
- tr.duration = icaldurationtype_null_duration();
- tr.time = icaltime_from_string("19970101T120000");
- p = icalproperty_new_trigger(tr);
- icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_BINARY));
- str = icalproperty_as_ical_string(p);
-
- is("TRIGGER;VALUE=DATE-TIME:19970101T120000", str, "TRIGGER;VALUE=DATE-TIME:19970101T120000\n");
- icalproperty_free(p);
-
- /*TRIGGER, as a DURATION, VALUE=BINARY */
- tr.time = icaltime_null_time();
- tr.duration = icaldurationtype_from_string("P3DT3H50M45S");
- p = icalproperty_new_trigger(tr);
- icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_BINARY));
-
- str = icalproperty_as_ical_string(p);
-
- is("TRIGGER;VALUE=DURATION:P3DT3H50M45S", str, "TRIGGER;VALUE=DURATION:P3DT3H50M45S\n");
- icalproperty_free(p);
-}
-
-
-void test_rdate()
-{
-
- struct icaldatetimeperiodtype dtp;
- icalproperty *p;
- const char* str;
- struct icalperiodtype period;
-
- period.start = icaltime_from_string("19970101T120000");
- period.end = icaltime_null_time();
- period.duration = icaldurationtype_from_string("PT3H10M15S");
-
- /* RDATE, as DATE-TIME */
- dtp.time = icaltime_from_string("19970101T120000");
- dtp.period = icalperiodtype_null_period();
- p = icalproperty_new_rdate(dtp);
- str = icalproperty_as_ical_string(p);
-
- is("RDATE as DATE-TIME",
- "RDATE;VALUE=DATE-TIME:19970101T120000\n",str);
- icalproperty_free(p);
-
- /* RDATE, as PERIOD */
- dtp.time = icaltime_null_time();
- dtp.period = period;
- p = icalproperty_new_rdate(dtp);
-
- str = icalproperty_as_ical_string(p);
- is("RDATE, as PERIOD", "RDATE;VALUE=PERIOD:19970101T120000/PT3H10M15S\n",str);
- icalproperty_free(p);
-
- /* RDATE, as DATE-TIME, VALUE=DATE-TIME */
- dtp.time = icaltime_from_string("19970101T120000");
- dtp.period = icalperiodtype_null_period();
- p = icalproperty_new_rdate(dtp);
- icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_DATETIME));
- str = icalproperty_as_ical_string(p);
-
- is("RDATE, as DATE-TIME, VALUE=DATE-TIME",
- "RDATE;VALUE=DATE-TIME:19970101T120000\n",str);
- icalproperty_free(p);
-
-
- /* RDATE, as PERIOD, VALUE=DATE-TIME */
- dtp.time = icaltime_null_time();
- dtp.period = period;
- p = icalproperty_new_rdate(dtp);
- icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_DATETIME));
- str = icalproperty_as_ical_string(p);
- is("RDATE, as PERIOD, VALUE=DATE-TIME",
- "RDATE;VALUE=PERIOD:19970101T120000/PT3H10M15S\n",str);
- icalproperty_free(p);
-
-
- /* RDATE, as DATE-TIME, VALUE=PERIOD */
- dtp.time = icaltime_from_string("19970101T120000");
- dtp.period = icalperiodtype_null_period();
- p = icalproperty_new_rdate(dtp);
- icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_PERIOD));
- str = icalproperty_as_ical_string(p);
-
- is("RDATE, as DATE-TIME, VALUE=PERIOD",
- "RDATE;VALUE=DATE-TIME:19970101T120000\n",str);
- icalproperty_free(p);
-
-
- /* RDATE, as PERIOD, VALUE=PERIOD */
- dtp.time = icaltime_null_time();
- dtp.period = period;
- p = icalproperty_new_rdate(dtp);
- icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_PERIOD));
- str = icalproperty_as_ical_string(p);
-
- is("RDATE, as PERIOD, VALUE=PERIOD",
- "RDATE;VALUE=PERIOD:19970101T120000/PT3H10M15S\n",str);
- icalproperty_free(p);
-
-
- /* RDATE, as DATE-TIME, VALUE=BINARY */
- dtp.time = icaltime_from_string("19970101T120000");
- dtp.period = icalperiodtype_null_period();
- p = icalproperty_new_rdate(dtp);
- icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_BINARY));
- str = icalproperty_as_ical_string(p);
-
- is("RDATE, as DATE-TIME, VALUE=BINARY",
- "RDATE;VALUE=DATE-TIME:19970101T120000\n",str);
- icalproperty_free(p);
-
-
- /* RDATE, as PERIOD, VALUE=BINARY */
- dtp.time = icaltime_null_time();
- dtp.period = period;
- p = icalproperty_new_rdate(dtp);
- icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_BINARY));
- str = icalproperty_as_ical_string(p);
-
- is("RDAE, as PERIOD, VALUE=BINARY",
- "RDATE;VALUE=PERIOD:19970101T120000/PT3H10M15S\n",str);
- icalproperty_free(p);
-}
-
-
-void test_langbind()
-{
- icalcomponent *c, *inner;
- icalproperty *p;
- char *test_str_parsed;
- static const char test_str[] =
-"BEGIN:VEVENT\n"
-"ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n"
-"COMMENT: Comment that \n spans a line\n"
-"COMMENT: Comment with \"quotable\" \'characters\' and other \t bad magic \n things \f Yeah.\n"
-"DTSTART:19970101T120000\n"
-"DTSTART:19970101T120000Z\n"
-"DTSTART:19970101\n"
-"DURATION:P3DT4H25M\n"
-"FREEBUSY:19970101T120000/19970101T120000\n"
-"FREEBUSY:19970101T120000/P3DT4H25M\n"
-"END:VEVENT\n";
-
- static const char *test_str_parsed_good =
-"BEGIN:VEVENT\n"
-"ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:\n"
-" employee-A@host.com\n"
-"COMMENT: Comment that spans a line\n"
-"COMMENT: Comment with \\\"quotable\\\" 'characters' and other \\t bad magic \n"
-" things \\f Yeah.\n"
-"DTSTART:19970101T120000\n"
-"DTSTART:19970101T120000Z\n"
-"DTSTART;VALUE=DATE:19970101\n"
-"DURATION:P3DT4H25M\n"
-"FREEBUSY:19970101T120000/19970101T120000\n"
-"FREEBUSY:19970101T120000/P3DT4H25M\n"
-"END:VEVENT\n";
-
- if (VERBOSE) printf("%s\n",test_str);
-
- c = icalparser_parse_string(test_str);
-
- ok("icalparser_parse_string()", (c!=NULL));
- assert(c != NULL);
-
- test_str_parsed = icalcomponent_as_ical_string(c);
-
- is("parsed version with bad chars, etc",
- test_str_parsed,
- test_str_parsed_good);
-
-
- inner = icalcomponent_get_inner(c);
-
- for(
- p = icallangbind_get_first_property(inner,"ANY");
- p != 0;
- p = icallangbind_get_next_property(inner,"ANY")
- ) {
-
- const char *str = icallangbind_property_eval_string(p,":");
- /** TODO add tests **/
- if (VERBOSE) printf("%s\n",str);
- }
-
-
- p = icalcomponent_get_first_property(inner,ICAL_ATTENDEE_PROPERTY);
-
- icalproperty_set_parameter_from_string(p,"CUTYPE","INDIVIDUAL");
-
- is ("Set attendee parameter",
- icalproperty_as_ical_string(p),
- "ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL:MAILTO:\n"
- " employee-A@host.com\n");
-
- icalproperty_set_value_from_string(p,"mary@foo.org","TEXT");
-
- is ("Set attendee parameter value",
- icalproperty_as_ical_string(p),
- "ATTENDEE;VALUE=TEXT;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL:\n"
-" mary@foo.org\n");
-
- icalcomponent_free(c);
-}
-
-void test_property_parse()
-{
- icalproperty *p;
- const char *str;
-
- p= icalproperty_new_from_string(
- "ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com");
-
- ok("icalproperty_from_string(), ATTENDEE", (p != 0));
- assert (p != 0);
-
- str = icalproperty_as_ical_string(p);
- if (VERBOSE) printf("%s\n",str);
-
- icalproperty_free(p);
-
- p= icalproperty_new_from_string("DTSTART:19970101T120000Z\n");
-
- ok("icalproperty_from_string(), simple DTSTART", (p != 0));
- assert (p != 0);
-
- str = icalproperty_as_ical_string(p);
- if (VERBOSE) printf("%s\n",str);
-
- icalproperty_free(p);
-
-}
-
-
-void test_value_parameter()
-{
-
- icalcomponent *c;
- icalproperty *p;
- icalparameter *param;
-
- static const char test_icalcomp_str[] =
-"BEGIN:VEVENT\n"
-"DTSTART;VALUE=DATE-TIME:19971123T123000\n"
-"DTSTART;VALUE=DATE:19971123\n"
-"DTSTART;VALUE=FOO:19971123T123000\n"
-"END:VEVENT\n";
-
- c = icalparser_parse_string ((char *) test_icalcomp_str);
- ok("icalparser_parse_string()", (c != NULL));
- if (!c) {
- exit (EXIT_FAILURE);
- }
-
- if (VERBOSE) printf("%s",icalcomponent_as_ical_string(c));
-
- p = icalcomponent_get_first_property(c,ICAL_DTSTART_PROPERTY);
- param = icalproperty_get_first_parameter(p,ICAL_VALUE_PARAMETER);
-
- ok("icalproperty_get_value()", (icalparameter_get_value(param) == ICAL_VALUE_DATETIME));
-
- p = icalcomponent_get_next_property(c,ICAL_DTSTART_PROPERTY);
- param = icalproperty_get_first_parameter(p,ICAL_VALUE_PARAMETER);
- ok("icalproperty_get_first_parameter()",(icalparameter_get_value(param) == ICAL_VALUE_DATE));
-
- icalcomponent_free(c);
-}
-
-
-void test_x_parameter()
-{
- icalproperty *p;
-
- p= icalproperty_new_from_string(
- "COMMENT;X-A=1;X-B=2: This is a note");
-
- if (VERBOSE) printf("%s\n",icalproperty_as_ical_string(p));
-
- ok("COMMENT property",(icalproperty_isa(p) == ICAL_COMMENT_PROPERTY));
- is("COMMENT parses param", icalproperty_get_comment(p)," This is a note");
-
- icalproperty_set_parameter_from_string(p,"X-LIES", "no");
- icalproperty_set_parameter_from_string(p,"X-LAUGHS", "big");
- icalproperty_set_parameter_from_string(p,"X-TRUTH", "yes");
- icalproperty_set_parameter_from_string(p,"X-HUMOUR", "bad");
-
- if (VERBOSE) printf("%s\n",icalproperty_as_ical_string(p));
-
- is("Check X-LIES", icalproperty_get_parameter_as_string(p, "X-LIES"), "no");
- is("Check X-LAUGHS", icalproperty_get_parameter_as_string(p, "X-LAUGHS"), "big");
- is("Check X-TRUTH", icalproperty_get_parameter_as_string(p, "X-TRUTH"), "yes");
- is("Check X-HUMOUR", icalproperty_get_parameter_as_string(p, "X-HUMOUR"), "bad");
-
- icalproperty_free(p);
-}
-
-
-
-void test_x_property()
-{
- icalproperty *p;
-
- p= icalproperty_new_from_string(
- "X-LIC-PROPERTY: This is a note");
-
- if (VERBOSE && p) printf("%s\n",icalproperty_as_ical_string(p));
-
- ok("x-property is correct kind",(icalproperty_isa(p) == ICAL_X_PROPERTY));
- is("icalproperty_get_x_name() works",
- icalproperty_get_x_name(p),"X-LIC-PROPERTY");
- is("icalproperty_get_x() works",
- icalproperty_get_x(p)," This is a note");
-
- icalproperty_free(p);
-}
-
-void test_utcoffset()
-{
- icalproperty *p;
-
- p = icalproperty_new_from_string("TZOFFSETFROM:-001608");
- ok("parse TZOOFSETFROM:-001608", (p!=NULL));
-
- if (VERBOSE && p) printf("%s\n",icalproperty_as_ical_string(p));
-
- if (p) icalproperty_free(p);
-}
-
-void test_attach()
-{
- icalcomponent *c;
-
- static const char test_icalcomp_str[] =
-"BEGIN:VEVENT\n"
-"ATTACH:CID:jsmith.part3.960817T083000.xyzMain@host1.com\n"
-"ATTACH:FMTTYPE=application/postscript;ftp://xyzCorp.com/pub/reports/r-960812.ps\n"
-"END:VEVENT\n";
-
- c = icalparser_parse_string ((char *) test_icalcomp_str);
- ok("parse simple attachment", (c != NULL));
-
- if (VERBOSE) printf("%s",icalcomponent_as_ical_string(c));
-
- if (c) icalcomponent_free(c);
-}
-
-
-void test_vcal(void)
-{
- VObject *vcal = 0;
- icalcomponent *comp;
- char* file = "../../test-data/user-cal.vcf";
-
- vcal = Parse_MIME_FromFileName(file);
-
- ok("Parsing ../../test-data/user-cal.vcf", (vcal != 0));
-
- comp = icalvcal_convert(vcal);
-
- ok("Converting to ical component", (comp != 0));
-
- if (VERBOSE && comp)
- printf("%s\n",icalcomponent_as_ical_string(comp));
-
- if (comp) icalcomponent_free(comp);
- if (vcal) deleteVObject(vcal);
-}
-
-int main(int argc, char *argv[])
-{
- int c;
- extern char *optarg;
- extern int optopt;
- int errflg=0;
- char* program_name = strrchr(argv[0],'/');
- int do_test = 0;
- int do_header = 0;
-
- set_zone_directory("../../zoneinfo");
- putenv("TZ=");
-
- test_start(0);
-
-
-#ifndef WIN32
- while ((c = getopt(argc, argv, "lvq")) != -1) {
- switch (c) {
- case 'v': {
- VERBOSE = 1;
- break;
- }
- case 'q': {
- QUIET = 1;
- break;
- }
- case 'l': {
- do_header = 1;;
- }
- case '?': {
- errflg++;
- }
- }
- }
- if (optind < argc) {
- do_test = atoi(argv[argc-1]);
- }
-#else
- if (argc>1)
- do_test = atoi(argv[2]);
-
-#endif
-
-
- test_run("Test time parser functions", test_time_parser, do_test, do_header);
- test_run("Test time", test_time, do_test, do_header);
- test_run("Test day of Year", test_doy, do_test, do_header);
- test_run("Test duration", test_duration, do_test, do_header);
- test_run("Test period", test_period, do_test, do_header);
- test_run("Test DTSTART", test_dtstart, do_test, do_header);
- test_run("Test day of year of week start", test_start_of_week, do_test, do_header);
- test_run("Test recur parser", test_recur_parser, do_test, do_header);
- test_run("Test recur", test_recur, do_test, do_header);
- test_run("Test Recurring Events File", test_recur_file, do_test, do_header);
- test_run("Test parameter bug", test_recur_parameter_bug, do_test, do_header);
- test_run("Test Array Expansion", test_expand_recurrence, do_test, do_header);
- test_run("Test Free/Busy lists", test_fblist, do_test, do_header);
- test_run("Test Overlaps", test_overlaps, do_test, do_header);
-
- test_run("Test Span", test_icalcomponent_get_span, do_test, do_header);
- test_run("Test Gauge SQL", test_gauge_sql, do_test, do_header);
- test_run("Test Gauge Compare", test_gauge_compare, do_test, do_header);
- test_run("Test File Set", test_fileset, do_test, do_header);
- test_run("Test File Set (Extended)", test_fileset_extended, do_test, do_header);
- test_run("Test Dir Set", test_dirset, do_test, do_header);
- test_run("Test Dir Set (Extended)", test_dirset_extended, do_test, do_header);
-
- test_run("Test File Locks", test_file_locks, do_test, do_header);
- test_run("Test X Props and Params", test_x, do_test, do_header);
- test_run("Test Trigger", test_trigger, do_test, do_header);
- test_run("Test Restriction", test_restriction, do_test, do_header);
- test_run("Test RDATE", test_rdate, do_test, do_header);
- test_run("Test language binding", test_langbind, do_test, do_header);
- test_run("Test property parser", test_property_parse, do_test, do_header);
- test_run("Test Action", test_action, do_test, do_header);
- test_run("Test Value Parameter", test_value_parameter, do_test, do_header);
- test_run("Test X property", test_x_property, do_test, do_header);
- test_run("Test X parameter", test_x_parameter, do_test, do_header);
- test_run("Test request status", test_requeststat, do_test, do_header);
- test_run("Test UTC-OFFSET", test_utcoffset, do_test, do_header);
- test_run("Test Values", test_values, do_test, do_header);
- test_run("Test Parameters", test_parameters, do_test, do_header);
- test_run("Test Properties", test_properties, do_test, do_header);
- test_run("Test Components", test_components, do_test, do_header);
- test_run("Test Convenience", test_convenience, do_test, do_header);
- test_run("Test classify ", test_classify, do_test, do_header);
- test_run("Test Iterators", test_iterators, do_test, do_header);
- test_run("Test strings", test_strings, do_test, do_header);
- test_run("Test Compare", test_compare, do_test, do_header);
- test_run("Create Simple Component", create_simple_component, do_test, do_header);
- test_run("Create Components", create_new_component, do_test, do_header);
- test_run("Create Components with vaargs", create_new_component_with_va_args, do_test, do_header);
- test_run("Test Memory", test_memory, do_test, do_header);
- test_run("Test Attachment", test_attach, do_test, do_header);
- test_run("Test icalcalendar", test_calendar, do_test, do_header);
- test_run("Test Dirset", test_dirset, do_test, do_header);
- test_run("Test vCal to iCal conversion", test_vcal, do_test, do_header);
- test_run("Test UTF-8 Handling", test_utf8, do_test, do_header);
-
- /** OPTIONAL TESTS go here... **/
-
-#ifdef WITH_CXX_BINDINGS
- test_run("Test C++ API", test_cxx, do_test, do_header);
-#endif
-
-#ifdef WITH_BDB
- test_run("Test BDB Set", test_bdbset, do_test, do_header);
-#endif
-
-
- icaltimezone_free_builtin_timezones();
- icalmemory_free_ring();
- free_zone_directory();
-
- test_end();
-
- return 0;
-}
-
-
diff --git a/libical/src/test/regression.h b/libical/src/test/regression.h
deleted file mode 100644
index 633cd3295d..0000000000
--- a/libical/src/test/regression.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int VERBOSE;
-extern int QUIET;
-
-/* regression-component.c */
-void create_new_component(void);
-void create_new_component_with_va_args(void);
-void create_simple_component(void);
-void test_icalcomponent_get_span(void);
-void create_new_component_with_va_args(void);
-
-/* regression-classify.c */
-void test_classify(void);
-
-/* regression-recur.c */
-void test_recur_file(void);
-
-/* regression-cxx.c */
-void test_cxx(void);
-
-/* regression-storage.c */
-void test_fileset_extended(void);
-void test_dirset_extended(void);
-void test_bdbset(void);
-
-/* regression-utils.c */
-const char* ical_timet_string(const time_t t);
-const char* ictt_as_string(struct icaltimetype t);
-char* icaltime_as_ctime(struct icaltimetype t);
-
-
-void _ok(char*name, int result, char*file, int linenum, char *test);
-void _is(char* test_name, const char* str1, const char* str2, char *file, int linenum);
-void _int_is(char* test_name, int i1, int i2, char *file, int linenum);
-#define ok(TEST, EX) (_ok(TEST, EX, __FILE__, __LINE__, #EX))
-#define is(S1, S2, EX) (_is(S1, S2, EX, __FILE__, __LINE__))
-#define int_is(I1, I2, EX) (_int_is(I1, I2, EX, __FILE__, __LINE__))
-void test_header(char*title, int test_set);
-void test_start(int);
-void test_end(void);
-void test_run(char *test_name,
- void (*test_fcn)(void),
- int do_test, int headeronly);
-
-
-
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/libical/src/test/storage.c b/libical/src/test/storage.c
deleted file mode 100644
index acd9d95734..0000000000
--- a/libical/src/test/storage.c
+++ /dev/null
@@ -1,873 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: storage.c
- CREATOR: eric 03 April 1999
-
- DESCRIPTION:
-
- $Id$
- $Locker$
-
- (C) COPYRIGHT 1999 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- The original author is Eric Busboom
- The original code is usecases.c
-
-
- ======================================================================*/
-
-#include <libical/ical.h>
-#include <assert.h>
-#include <string.h> /* for strdup */
-#include <stdlib.h> /* for malloc */
-#include <stdio.h> /* for printf */
-#include <time.h> /* for time() */
-#include "icalmemory.h"
-#include "icaldirset.h"
-#include "icalfileset.h"
-#ifdef WITH_BDB4
-#include "icalbdbset.h"
-#endif
-#include "icalerror.h"
-#include "icalrestriction.h"
-#include "icalcalendar.h"
-
-#define OUTPUT_FILE "filesetout.ics"
-#define DATABASE "calendar.db"
-
-/* define sample calendar struct */
-struct calendar {
- int ID;
- int total_size;
-
- /* offsets */
- int total_size_offset;
- int vcalendar_size_offset;
- int vcalendar_offset;
- int title_size_offset;
- int title_offset;
-
- /* data */
- int vcalendar_size;
- char *vcalendar;
-
- int title_size;
- char *title;
-
-};
-
-int vcalendar_init(struct calendar **cal, char *vcalendar, char *title);
-
-#ifdef WITH_BDB4
-int get_title(DB *dbp, const DBT *pkey, const DBT *pdata, DBT *skey);
-char * parse_vcalendar(const DBT *dbt) ;
-#endif
-
-char * pack_calendar(struct calendar *cal, int size);
-struct calendar * unpack_calendar(char *str, int size);
-
-char str[] = "BEGIN:VCALENDAR\n\
-PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\n\
-VERSION:2.0\n\
-BEGIN:VTIMEZONE\n\
-TZID:US-Eastern\n\
-BEGIN:STANDARD\n\
-DTSTART:19981025T020000\n\
-RDATE:19981025T020000\n\
-TZOFFSETFROM:-0400\n\
-TZOFFSETTO:-0500\n\
-TZNAME:EST\n\
-END:STANDARD\n\
-BEGIN:DAYLIGHT\n\
-DTSTART:19990404T020000\n\
-RDATE:19990404T020000\n\
-TZOFFSETFROM:-0500\n\
-TZOFFSETTO:-0400\n\
-TZNAME:EDT\n\
-END:DAYLIGHT\n\
-END:VTIMEZONE\n\
-BEGIN:VEVENT\n\
-DTSTAMP:19980309T231000Z\n\
-UID:guid-1.host1.com\n\
-ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\n\
-ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n\
-DESCRIPTION:Project XYZ Review Meeting\n\
-CATEGORIES:MEETING\n\
-CLASS:PUBLIC\n\
-CREATED:19980309T130000Z\n\
-SUMMARY:XYZ Project Review\n\
-DTSTART;TZID=US-Eastern:19980312T083000\n\
-DTEND;TZID=US-Eastern:19980312T093000\n\
-LOCATION:1CP Conference Room 4350\n\
-END:VEVENT\n\
-BEGIN:BOOGA\n\
-DTSTAMP:19980309T231000Z\n\
-X-LIC-FOO:Booga\n\
-DTSTOMP:19980309T231000Z\n\
-UID:guid-1.host1.com\n\
-END:BOOGA\n\
-END:VCALENDAR";
-
-char str2[] = "BEGIN:VCALENDAR\n\
-PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\n\
-VERSION:2.0\n\
-BEGIN:VEVENT\n\
-DTSTAMP:19980309T231000Z\n\
-UID:guid-1.host1.com\n\
-ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\n\
-ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n\
-DESCRIPTION:Project XYZ Review Meeting\n\
-CATEGORIES:MEETING\n\
-CLASS:PUBLIC\n\
-CREATED:19980309T130000Z\n\
-SUMMARY:XYZ Project Review\n\
-DTSTART;TZID=US-Eastern:19980312T083000\n\
-DTEND;TZID=US-Eastern:19980312T093000\n\
-LOCATION:1CP Conference Room 4350\n\
-END:VEVENT\n\
-END:VCALENDAR\n\
-";
-
-void test_fileset()
-{
- icalfileset *cout;
- int month = 0;
- int count=0;
- struct icaltimetype start, end;
- icalcomponent *c,*clone, *itr;
-
- start = icaltime_from_timet( time(0),0);
- end = start;
- end.hour++;
-
- cout = icalfileset_new(OUTPUT_FILE);
- assert(cout != 0);
-
- c = icalparser_parse_string(str2);
- assert(c != 0);
-
- /* Add data to the file */
-
- for(month = 1; month < 10; month++){
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- cout = icalfileset_new(OUTPUT_FILE);
- assert(cout != 0);
-
- start.month = month;
- end.month = month;
-
- clone = icalcomponent_new_clone(c);
- assert(clone !=0);
- event = icalcomponent_get_first_component(clone,ICAL_VEVENT_COMPONENT);
- assert(event != 0);
-
- dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY);
- assert(dtstart!=0);
- icalproperty_set_dtstart(dtstart,start);
-
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
- assert(dtend!=0);
- icalproperty_set_dtend(dtend,end);
-
- icalfileset_add_component(cout,clone);
- icalfileset_commit(cout);
-
- icalset_free(cout);
-
- }
-
- /* Print them out */
-
- cout = icalfileset_new(OUTPUT_FILE);
- assert(cout != 0);
-
- for (itr = icalfileset_get_first_component(cout);
- itr != 0;
- itr = icalfileset_get_next_component(cout)){
-
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- count++;
-
- event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
-
- dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY);
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
-
- printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart),
- icalproperty_as_ical_string(dtend));
-
- }
-
- /* Remove all of them */
-
- icalset_free(cout);
-
- cout = icalfileset_new(OUTPUT_FILE);
- assert(cout != 0);
-
- for (itr = icalfileset_get_first_component(cout);
- itr != 0;
- itr = icalfileset_get_next_component(cout)){
-
-
- icalfileset_remove_component(cout, itr);
- }
-
- icalset_free(cout);
-
-
- /* Print them out again */
-
- cout = icalfileset_new(OUTPUT_FILE);
- assert(cout != 0);
- count =0;
-
- for (itr = icalfileset_get_first_component(cout);
- itr != 0;
- itr = icalfileset_get_next_component(cout)){
-
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- count++;
-
- event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
-
- dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY);
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
-
- printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart),
- icalproperty_as_ical_string(dtend));
-
- }
-
- icalset_free(cout);
-
-
-}
-
-/*
- In this example, we're storing a calendar with several components
- under the reference id "calendar_7286" and retrieving records based
- on title, "month_1" through "month_10". We use a number of the
- "optional" arguments to specify secondary indices, sub-databases
- (i.e. having multiple databases residing within a single Berkeley
- DB file), and keys for storage and retrieval.
-*/
-
-#ifdef WITH_BDB4
-void test_bdbset()
-{
- icalbdbset *cout;
- int month = 0;
- int count=0;
- int num_components=0;
- int szdata_len=0;
- int ret=0;
- char *subdb, *szdata, *szpacked_data;
- char uid[255];
- struct icaltimetype start, end;
- icalcomponent *c,*clone, *itr;
- DB *dbp, *sdbp;
- DBT key, data;
- DBC *dbcp;
-
- struct calendar *cal;
- int cal_size;
-
- start = icaltime_from_timet( time(0),0);
- end = start;
- end.hour++;
-
- /* Note: as per the Berkeley DB ref pages:
- *
- * The database argument is optional, and allows applications to
- * have multiple databases in a single file. Although no database
- * argument needs to be specified, it is an error to attempt to
- * open a second database in a file that was not initially created
- * using a database name.
- *
- */
-
- subdb = "calendar_id";
- sdbp = 0;
-
- /* open database, using subdb */
- dbp = icalbdbset_database_open(DATABASE, subdb, DB_HASH);
- sdbp = icalbdbset_secondary_open(dbp,
- DATABASE,
- "title",
- get_title,
- DB_HASH);
-
- c = icalparser_parse_string(str2);
- assert(c != 0);
-
- /* Add data to the file */
-
- for(month = 1; month < 10; month++){
- icalcomponent *event;
- icalproperty *dtstart, *dtend, *location;
-
- /* retrieve data */
- cout = icalbdbset_new(dbp, sdbp, NULL);
- assert(cout != 0);
-
- start.month = month;
- end.month = month;
-
- clone = icalcomponent_new_clone(c);
- assert(clone !=0);
- event = icalcomponent_get_first_component(clone,
- ICAL_VEVENT_COMPONENT);
- assert(event != 0);
-
- dtstart = icalcomponent_get_first_property(event,
- ICAL_DTSTART_PROPERTY);
- assert(dtstart!=0);
- icalproperty_set_dtstart(dtstart,start);
-
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
- assert(dtend!=0);
- icalproperty_set_dtend(dtend,end);
-
- location = icalcomponent_get_first_property(event, ICAL_LOCATION_PROPERTY);
- assert(location!=0);
-
-#if 0
- /* change the uid to include the month */
- sprintf(uid, "%s_%d", icalcomponent_get_uid(clone), month);
- icalcomponent_set_uid(clone, uid);
-#endif
-
- icalbdbset_add_component(cout,clone);
-
- /* commit changes */
- icalbdbset_commit(cout);
-
- num_components = icalcomponent_count_components(clone, ICAL_ANY_COMPONENT);
-
- icalset_free(cout);
-
- }
-
- /* try out the cursor operations */
- memset(&key, 0, sizeof(DBT));
- memset(&data, 0, sizeof(DBT));
-
- ret = icalbdbset_acquire_cursor(dbp, &dbcp);
- ret = icalbdbset_get_first(dbcp, &key, &data);
- ret = icalbdbset_get_next(dbcp, &key, &data);
- ret = icalbdbset_get_last(dbcp, &key, &data);
-
- /* Print them out */
-
- for(month = 1, count=0; month < 10; month++){
- char *title;
-
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- cout = icalbdbset_new(dbp, sdbp, NULL);
- assert(cout != 0);
-
- for (itr = icalbdbset_get_first_component(cout);
- itr != 0;
- itr = icalbdbset_get_next_component(cout)){
-
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- count++;
-
- event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
-
- dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY);
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
-
- printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart),
- icalproperty_as_ical_string(dtend));
-
- }
- icalset_free(cout);
- }
-
- /* close database */
- icalbdbset_database_close(dbp);
- icalbdbset_database_close(sdbp);
-
- /* open database */
- dbp = icalbdbset_database_open(DATABASE, subdb, DB_HASH);
- sdbp = icalbdbset_secondary_open(dbp,
- DATABASE,
- "title",
- get_title,
- DB_HASH);
-
- /* Remove all of them */
- for(month = 1; month < 10; month++){
-
- cout = icalbdbset_new(dbp, sdbp, NULL);
- assert(cout != 0);
-
- for (itr = icalbdbset_get_first_component(cout);
- itr != 0;
- itr = icalbdbset_get_next_component(cout)){
-
- icalbdbset_remove_component(cout, itr);
- }
-
- icalbdbset_commit(cout);
- icalset_free(cout);
-
- }
-
- /* Print them out again */
-
- for(month = 1, count=0; month < 10; month++){
- char *title;
-
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- cout = icalbdbset_new(dbp, sdbp, NULL);
- assert(cout != 0);
-
- for (itr = icalbdbset_get_first_component(cout);
- itr != 0;
- itr = icalbdbset_get_next_component(cout)){
-
- icalcomponent *event;
- icalproperty *dtstart, *dtend;
-
- count++;
-
- event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
-
- dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY);
- dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY);
-
- printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart),
- icalproperty_as_ical_string(dtend));
-
- }
- icalset_free(cout);
- }
-}
-
-/* get_title -- extracts a secondary key (the vcalendar)
- * from a primary key/data pair */
-
-/* just create a random title for now */
-
-int get_title(DB *dbp, const DBT *pkey, const DBT *pdata, DBT *skey)
-{
- icalcomponent *cl;
- char title[255];
-
- memset(skey, 0, sizeof(DBT));
-
- cl = icalparser_parse_string((char *)pdata->data);
- sprintf(title, "title_%s", icalcomponent_get_uid(cl));
-
- skey->data = strdup(title);
- skey->size = strlen(skey->data);
- return (0);
-}
-
-char * parse_vcalendar(const DBT *dbt)
-{
- char *str;
- struct calendar *cal;
-
- str = (char *)dbt->data;
- cal = unpack_calendar(str, dbt->size);
-
- return cal->vcalendar;
-}
-
-#endif
-
-
-int vcalendar_init(struct calendar **rcal, char *vcalendar, char *title)
-{
- int vcalendar_size, title_size, total_size;
- struct calendar *cal;
-
- if(vcalendar)
- vcalendar_size = strlen(vcalendar);
- else {
- vcalendar = "";
- vcalendar_size = strlen(vcalendar);
- }
-
- if(title)
- title_size = strlen(title);
- else {
- title = "";
- title_size = strlen(title);
- }
-
- total_size = sizeof(struct calendar) + vcalendar_size + title_size;
-
- if((cal = (struct calendar *)malloc(total_size))==NULL)
- return 0;
- memset(cal, 0, total_size);
-
- /* offsets */
- cal->total_size_offset = sizeof(int);
- cal->vcalendar_size_offset = (sizeof(int) * 7);
- cal->vcalendar_offset = cal->vcalendar_size_offset + sizeof(int);
- cal->title_size_offset = cal->vcalendar_offset + vcalendar_size;
- cal->title_offset = cal->title_size_offset + sizeof(int);
-
- /* sizes */
- cal->total_size = total_size;
- cal->vcalendar_size = vcalendar_size;
- cal->title_size = title_size;
-
- if (vcalendar && *vcalendar)
- cal->vcalendar = strdup(vcalendar);
-
- if (title && *title)
- cal->title = strdup(title);
-
- *rcal = cal;
-
- return 0;
-}
-
-char * pack_calendar(struct calendar *cal, int size)
-{
- char *str;
-
- if((str = (char *)malloc(sizeof(char) * size))==NULL)
- return 0;
-
- /* ID */
- memcpy(str, &cal->ID, sizeof(cal->ID));
-
- /* total_size */
- memcpy(str + cal->total_size_offset,
- &cal->total_size,
- sizeof(cal->total_size));
-
- /* vcalendar_size */
- memcpy(str + cal->vcalendar_size_offset,
- &cal->vcalendar_size,
- sizeof(cal->vcalendar_size));
-
- /* vcalendar */
- memcpy(str + cal->vcalendar_offset,
- cal->vcalendar,
- cal->vcalendar_size);
-
- /* title_size */
- memcpy(str + cal->title_size_offset,
- &cal->title_size,
- sizeof(cal->title_size));
-
- /* title */
- memcpy(str + cal->title_offset,
- cal->title,
- cal->title_size);
-
- return str;
-}
-
-struct calendar * unpack_calendar(char *str, int size)
-{
- struct calendar *cal;
- if((cal = (struct calendar *) malloc(size))==NULL)
- return 0;
- memset(cal, 0, size);
-
- /* offsets */
- cal->total_size_offset = sizeof(int);
- cal->vcalendar_size_offset = (sizeof(int) * 7);
- cal->vcalendar_offset = cal->vcalendar_size_offset + sizeof(int);
-
- /* ID */
- memcpy(&cal->ID, str, sizeof(cal->ID));
-
- /* total_size */
- memcpy(&cal->total_size,
- str + cal->total_size_offset,
- sizeof(cal->total_size));
-
- /* vcalendar_size */
- memcpy(&cal->vcalendar_size,
- str + cal->vcalendar_size_offset,
- sizeof(cal->vcalendar_size));
-
- if((cal->vcalendar = (char *)malloc(sizeof(char) *
- cal->vcalendar_size))==NULL)
- return 0;
-
- /* vcalendar */
- memcpy(cal->vcalendar,
- (char *)(str + cal->vcalendar_offset),
- cal->vcalendar_size);
-
- cal->title_size_offset = cal->vcalendar_offset + cal->vcalendar_size;
- cal->title_offset = cal->title_size_offset + sizeof(int);
-
- /* title_size */
- memcpy(&cal->title_size,
- str + cal->title_size_offset,
- sizeof(cal->title_size));
-
- if((cal->title = (char *)malloc(sizeof(char) *
- cal->title_size))==NULL)
- return 0;
-
- /* title*/
- memcpy(cal->title,
- (char *)(str + cal->title_offset),
- cal->title_size);
-
- return cal;
-}
-
-int test_dirset()
-{
-
- icalcomponent *c, *gauge;
- icalerrorenum error;
- icalcomponent *itr;
- icalfileset* cluster;
- struct icalperiodtype rtime;
- icaldirset *s = icaldirset_new("store");
- int i;
-
- assert(s != 0);
-
- rtime.start = icaltime_from_timet( time(0),0);
-
- cluster = icalfileset_new(OUTPUT_FILE);
-
- assert(cluster != 0);
-
-#define NUMCOMP 4
-
- /* Duplicate every component in the cluster NUMCOMP times */
-
- icalerror_clear_errno();
-
- for (i = 1; i<NUMCOMP+1; i++){
-
- /*rtime.start.month = i%12;*/
- rtime.start.month = i;
- rtime.end = rtime.start;
- rtime.end.hour++;
-
- for (itr = icalfileset_get_first_component(cluster);
- itr != 0;
- itr = icalfileset_get_next_component(cluster)){
- icalcomponent *clone, *inner;
- icalproperty *p;
-
- inner = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
- if (inner == 0){
- continue;
- }
-
- /* Change the dtstart and dtend times in the component
- pointed to by Itr*/
-
- clone = icalcomponent_new_clone(itr);
- inner = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT);
-
- assert(icalerrno == ICAL_NO_ERROR);
- assert(inner !=0);
-
- /* DTSTART*/
- p = icalcomponent_get_first_property(inner,ICAL_DTSTART_PROPERTY);
- assert(icalerrno == ICAL_NO_ERROR);
-
- if (p == 0){
- p = icalproperty_new_dtstart(rtime.start);
- icalcomponent_add_property(inner,p);
- } else {
- icalproperty_set_dtstart(p,rtime.start);
- }
- assert(icalerrno == ICAL_NO_ERROR);
-
- /* DTEND*/
- p = icalcomponent_get_first_property(inner,ICAL_DTEND_PROPERTY);
- assert(icalerrno == ICAL_NO_ERROR);
-
- if (p == 0){
- p = icalproperty_new_dtstart(rtime.end);
- icalcomponent_add_property(inner,p);
- } else {
- icalproperty_set_dtstart(p,rtime.end);
- }
- assert(icalerrno == ICAL_NO_ERROR);
-
- printf("\n----------\n%s\n---------\n",icalcomponent_as_ical_string(inner));
-
- error = icaldirset_add_component(s,
- icalcomponent_new_clone(itr));
-
- assert(icalerrno == ICAL_NO_ERROR);
-
- }
-
- }
-
- gauge =
- icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_summary(
- "Submit Income Taxes",
- icalparameter_new_xliccomparetype(ICAL_XLICCOMPARETYPE_EQUAL),
- 0),
- 0),
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_summary(
- "Bastille Day Party",
- icalparameter_new_xliccomparetype(ICAL_XLICCOMPARETYPE_EQUAL),
- 0),
- 0),
- 0);
-
-#if 0
-
-
- icaldirset_select(s,gauge);
-
- for(c = icaldirset_first(s); c != 0; c = icaldirset_next(s)){
-
- printf("Got one! (%d)\n", count++);
-
- if (c != 0){
- printf("%s", icalcomponent_as_ical_string(c));;
- if (icaldirset_store(s2,c) == 0){
- printf("Failed to write!\n");
- }
- icalcomponent_free(c);
- } else {
- printf("Failed to get component\n");
- }
- }
-
-
- icalset_free(s2);
-#endif
-
-
- for(c = icaldirset_get_first_component(s);
- c != 0;
- c = icaldirset_get_next_component(s)){
-
- if (c != 0){
- printf("%s", icalcomponent_as_ical_string(c));;
- } else {
- printf("Failed to get component\n");
- }
-
- }
-
- /* Remove all of the components */
- i=0;
- while((c=icaldirset_get_current_component(s)) != 0 ){
- i++;
-
- icaldirset_remove_component(s,c);
- }
-
-
- icalset_free(s);
- return 0;
-}
-
-#if 0
-void test_calendar()
-{
- icalcomponent *comp;
- icalfileset *c;
- icaldirset *s;
- icalcalendar* calendar = icalcalendar_new("calendar");
- icalerrorenum error;
- struct icaltimetype atime = icaltime_null_time();
-
- comp = icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_version("2.0"),
- icalproperty_new_description("This is an event"),
- icalproperty_new_dtstart(atime),
- icalproperty_vanew_comment(
- "Another Comment",
- icalparameter_new_cn("A Common Name 1"),
- icalparameter_new_cn("A Common Name 2"),
- icalparameter_new_cn("A Common Name 3"),
- icalparameter_new_cn("A Common Name 4"),
- 0),
- icalproperty_vanew_xlicerror(
- "This is only a test",
- icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_COMPONENTPARSEERROR),
- 0),
-
- 0);
-
-
- s = icalcalendar_get_booked(calendar);
-
- error = icaldirset_add_component(s,comp);
-
- assert(error == ICAL_NO_ERROR);
-
- c = icalcalendar_get_properties(calendar);
-
- error = icalfileset_add_component(c,icalcomponent_new_clone(comp));
-
- assert(error == ICAL_NO_ERROR);
-
- icalcalendar_free(calendar);
-
-}
-#endif
-
-int main(int argc, char *argv[])
-{
-
- printf("\n------------Test File Set---------------\n");
- test_fileset();
-
- printf("\n------------Test Dir Set---------------\n");
- test_dirset();
-
-#ifdef WITH_BDB4
- printf("\n------------Test BerkeleyDB Set---------------\n");
- test_bdbset();
-#endif
-
-#if 0
- printf("\n------------Test Calendar---------------\n");
- test_calendar();
-#endif
-
- return 0;
-}
-
-
-
diff --git a/libical/src/test/stow.c b/libical/src/test/stow.c
deleted file mode 100644
index 52307420bb..0000000000
--- a/libical/src/test/stow.c
+++ /dev/null
@@ -1,888 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: stow.c
- CREATOR: eric 29 April 2000
-
- $Id$
- $Locker$
-
- (C) COPYRIGHT 2000 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- The Initial Developer of the Original Code is Eric Busboom
-
- ======================================================================*/
-
-
-#include <stdio.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <limits.h> /* for PATH_MAX */
-#include <assert.h>
-#include <stdlib.h>
-#include <sys/utsname.h> /* for uname */
-#include <sys/stat.h> /* for stat */
-#include <unistd.h> /* for stat, getpid, getopt */
-#include <pwd.h> /* For getpwent */
-#include <sys/types.h> /* For getpwent */
-#include <ctype.h> /* for tolower */
-
-#include <libical/ical.h>
-#include <libicalss/icalss.h>
-
-char* program_name;
-#define TMPSIZE 2048
-#define SENDMAIL "/usr/lib/sendmail -t"
-
-void usage(char *message);
-
-#ifndef PATH_MAX
-#define PATH_MAX 256 /* HACK */
-#endif
-
-
-enum options {
- STORE_IN_FILE,
- STORE_IN_DB,
- INPUT_IS_MIME,
- INPUT_IS_ICAL,
- INPUT_FROM_STDIN,
- INPUT_FROM_FILE,
- ERRORS_TO_STDOUT,
- ERRORS_TO_ORGANIZER
-};
-
-struct options_struct
-{
- enum options storage;
- enum options input_type;
- enum options input_source;
- enum options errors;
- char* input_file;
- char* calid;
- char* output_file;
-};
-
-
-enum file_type
-{
- ERROR,
- NO_FILE,
- DIRECTORY,
- REGULAR,
- OTHER
-};
-
-enum file_type test_file(char *path)
-{
- struct stat sbuf;
- enum file_type type;
-
- errno = 0;
-
- /* Check if the path already exists and if it is a directory*/
- if (stat(path,&sbuf) != 0){
-
- /* A file by the given name does not exist, or there was
- another error */
- if(errno == ENOENT)
- {
- type = NO_FILE;
- } else {
- type = ERROR;
- }
-
- } else {
- /* A file by the given name exists, but is it a directory? */
-
- if (S_ISDIR(sbuf.st_mode)){
- type = DIRECTORY;
- } else if(S_ISREG(sbuf.st_mode)){
- type = REGULAR;
- } else {
- type = OTHER;
- }
- }
-
- return type;
-}
-
-char* lowercase(const char* str)
-{
- char* p = 0;
- char* new = strdup(str);
-
- if(str ==0){
- return 0;
- }
-
- for(p = new; *p!=0; p++){
- *p = tolower(*p);
- }
-
- return new;
-}
-
-#if 0
-char* get_local_attendee(struct options_struct *opt)
-{
- char attendee[PATH_MAX];
-
- if(opt->calid){
-
- strncpy(attendee,opt->calid,PATH_MAX);
-
- } else {
-
- char* user = getenv("USER");
- struct utsname uts;
- uname(&utget_option);
- /* HACK nodename may not be a fully qualified domain name */
- snprintf(attendee,PATH_MAX,"%s@%s",user,uts.nodename);
-
- }
-
- return lowercase(attendee);
-}
-#endif
-
-
-icalcomponent* get_first_real_component(icalcomponent *comp)
-{
- icalcomponent *c;
-
- for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT);
- c != 0;
- c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){
- if (icalcomponent_isa(c) == ICAL_VEVENT_COMPONENT ||
- icalcomponent_isa(c) == ICAL_VTODO_COMPONENT ||
- icalcomponent_isa(c) == ICAL_VJOURNAL_COMPONENT )
- {
- return c;
- }
- }
-
- return 0;
-}
-
-
-
-char* make_mime(const char* to, const char* from, const char* subject,
- const char* text_message, const char* method,
- const char* ical_message)
-{
- size_t size = strlen(to)+strlen(from)+strlen(subject)+
- strlen(text_message)+ strlen(ical_message)+TMPSIZE;
-
- char mime_part_1[TMPSIZE];
- char mime_part_2[TMPSIZE];
- char content_id[TMPSIZE];
- char boundary[TMPSIZE];
- struct utsname uts;
- char* m;
-
-
- if ((m = malloc(sizeof(char)*size)) == 0){
- fprintf(stderr,"%s: Can't allocate memory: %s\n",program_name,strerror(errno));
- exit(1);
- }
-
- uname(&uts);
-
- srand(time(0)<<getpid());
- sprintf(content_id,"%d-%d@%s",(int)time(0),rand(),uts.nodename);
- sprintf(boundary,"%d-%d-%s",(int)time(0),rand(),uts.nodename);
-
- sprintf(mime_part_1,"Content-ID: %s\n\
-Content-type: text/plain\n\
-Content-Description: Text description of error message\n\n\
-%s\n\n--%s",
- content_id,text_message,boundary);
-
- if(ical_message != 0 && method != 0){
- sprintf(mime_part_2,"Content-ID: %s\n\
-Content-type: text/calendar; method=%s\n\
-Content-Description: iCal component reply\n\n\
-%s\n\n--%s--",
- content_id,method,ical_message,boundary);
- }
-
- sprintf(m,"To: %s\n\
-From: %s\n\
-Subject: %s\n\
-MIME-Version: 1.0\n\
-Content-ID: %s\n\
-Content-Type: multipart/mixed; boundary=\"%s\"\n\
-\n\
- This is a multimedia message in MIME format\n\
-\n\
---%s\n\
-%s\n\
-",
- to,from,subject,content_id,boundary,boundary,
- mime_part_1);
-
- if(ical_message != 0 && method != 0){
- strcat(m, mime_part_2);
- } else {
- strcat(m,"--\n");
- }
-
- return m;
-}
-
-/* The incoming component had fatal errors */
-void return_failure(icalcomponent* comp, char* message,
- struct options_struct *opt)
-{
- char* local_attendee = opt->calid;
- FILE* p;
- const char *org_addr;
-
- icalcomponent *inner = get_first_real_component(comp);
-
- icalproperty *organizer_prop = icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY);
- const char *organizer = icalproperty_get_organizer(organizer_prop);
-
- org_addr = strchr(organizer,':');
-
- if(org_addr != 0){
- org_addr++; /* Skip the ';' */
- } else {
- org_addr = organizer;
- }
-
- if (opt->errors == ERRORS_TO_ORGANIZER){
- p = popen(SENDMAIL,"w");
- } else {
- p = stdout;
- }
-
- if(p == 0){
- fprintf(stderr,
- "%s: fatal. Could not open pipe to sendmail (\"%s\") \n",
- program_name,SENDMAIL);
- exit(1);
- }
-
- fputs(make_mime(org_addr, local_attendee, "iMIP error",
- message, "reply",
- icalcomponent_as_ical_string(comp)),p);
-
- if (opt->errors == ERRORS_TO_ORGANIZER){
- pclose(p);
- }
-}
-
-/* The program had a fatal error and could not process the incoming component*/
-void return_error(icalcomponent* comp, char* message, struct options_struct *opt)
-{
-
-
- fputs(make_mime("Dest", "Source", "iMIP system failure",
- message, 0,0),stdout);
-
-}
-
-icalcomponent* make_reply(icalcomponent *comp, icalproperty *return_status,
- struct options_struct *opt)
-
-{
- icalcomponent *reply, *rinner;
- icalcomponent *inner = get_first_real_component(comp);
- icalproperty *p=0;
- char* local_attendee = opt->calid;
- char attendee[TMPSIZE];
-
- char prodid[TMPSIZE];
-
- snprintf(attendee,TMPSIZE,"mailto:%s",local_attendee);
-
- snprintf(prodid,TMPSIZE,"-//Softwarestudio.org//%s version %s//EN",PACKAGE,VERSION);
-
- /* Create the base component */
- reply = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalproperty_new_version(strdup("2.0")),
- icalproperty_new_prodid(strdup(prodid)),
- icalproperty_new_method(ICAL_METHOD_REPLY),
- icalcomponent_vanew(
- ICAL_VEVENT_COMPONENT,
- icalproperty_new_clone(
- icalcomponent_get_first_property(inner,ICAL_DTSTAMP_PROPERTY)),
- icalproperty_new_clone(
- icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY)),
- icalproperty_new_clone(
- icalcomponent_get_first_property(inner,ICAL_UID_PROPERTY)),
- icalproperty_new_attendee(attendee),
- 0),
- 0);
-
-
- /* Convert errors into request-status properties and transfers
- them to the reply component */
-
- icalcomponent_convert_errors(comp);
-
- rinner = get_first_real_component(reply);
-
- for(p = icalcomponent_get_first_property(inner,
- ICAL_REQUESTSTATUS_PROPERTY);
- p != 0;
- p = icalcomponent_get_next_property(inner,
- ICAL_REQUESTSTATUS_PROPERTY)){
-
- icalcomponent_add_property(rinner,icalproperty_new_clone(p));
- }
-
- if(return_status != 0){
- icalcomponent_add_property(rinner, return_status);
- }
-
- return reply;
-
-}
-
-int check_attendee(icalproperty *p, struct options_struct *opt){
- const char* s = icalproperty_get_attendee(p);
- char* lower_attendee = lowercase(s);
- char* local_attendee = opt->calid;
-
- /* Check that attendee begins with "mailto:" */
- if (strncmp(lower_attendee,"mailto:",7) == 0){
- /* skip over the mailto: part */
- lower_attendee += 7;
-
- if(strcmp(lower_attendee,local_attendee) == 0){
- return 1;
- }
-
- lower_attendee -= 7;
-
- free(lower_attendee);
- }
-
- return 0;
-}
-
-char static_component_error_str[PATH_MAX];
-char* check_component(icalcomponent* comp, icalproperty **return_status,
- struct options_struct *opt)
-{
- char* component_error_str=0;
- icalcomponent* inner;
- int errors = 0;
- icalproperty *p;
- int found_attendee = 0;
- struct icalreqstattype rs;
-
- rs.code = ICAL_UNKNOWN_STATUS;
- rs.desc = 0;
- rs.debug = 0;
-
- /*{
- icalrequeststatus code;
- const char* desc;
- const char* debug;
- };*/
-
- *return_status = 0;
-
- /* This do/while loop only executes once because it is being used
- to fake exceptions */
-
- do {
-
- /* Check that we actually got a component */
- if(comp == 0){
- strcpy(static_component_error_str,
- "Did not find a component");
- component_error_str = static_component_error_str;
- break;
- }
-
- /* Check that the root component is a VCALENDAR */
- if(icalcomponent_isa(comp) != ICAL_VCALENDAR_COMPONENT){
- strcpy(static_component_error_str,
- "Root component is not a VCALENDAR");
- component_error_str = static_component_error_str;
- rs.code = ICAL_3_11_MISSREQCOMP_STATUS;
-
- break;
- }
-
-
- /* Check that the component has a METHOD */
-
- if (icalcomponent_get_first_property(comp,ICAL_METHOD_PROPERTY) == 0)
- {
- strcpy(static_component_error_str,
- "The component you sent did not have a METHOD property");
- component_error_str = static_component_error_str;
- rs.code = ICAL_3_11_MISSREQCOMP_STATUS;
- break;
- }
-
- inner = get_first_real_component(comp);
-
-
- /* Check that the compopnent has an organizer */
- if(icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY) == 0){
- fprintf(stderr,"%s: fatal. Component does not have an ORGANIZER property\n",program_name);
- rs.code = ICAL_3_11_MISSREQCOMP_STATUS;
- break;
- }
-
-
- /* Check for this user as an attendee or organizer */
-
- for(p = icalcomponent_get_first_property(inner,ICAL_ATTENDEE_PROPERTY);
- p != 0;
- p = icalcomponent_get_next_property(inner,ICAL_ATTENDEE_PROPERTY)){
-
- found_attendee += check_attendee(p,opt);
- }
-
- for(p = icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY);
- p != 0;
- p = icalcomponent_get_next_property(inner,ICAL_ORGANIZER_PROPERTY)){
-
- found_attendee += check_attendee(p,opt);
- }
-
- if (found_attendee == 0){
- struct icalreqstattype rs;
- memset(static_component_error_str,0,PATH_MAX);
-
- snprintf(static_component_error_str,PATH_MAX,
- "This target user (%s) is not listed as an attendee or organizer",
- opt->calid );
- component_error_str = static_component_error_str;
-
- rs.code = ICAL_3_7_INVCU_STATUS;
-
- break;
- }
-
-
-
- /* Check that the component passes iTIP restrictions */
-
- errors = icalcomponent_count_errors(comp);
- icalrestriction_check(comp);
-
- if(errors != icalcomponent_count_errors(comp)){
- snprintf(static_component_error_str,PATH_MAX,
- "The component does not conform to iTIP restrictions.\n Here is the original component; look at the X-LIC-ERROR properties\nfor details\n\n%s",icalcomponent_as_ical_string(comp));
- component_error_str = static_component_error_str;
- break;
- }
-
-
-
- } while(0);
-
- if(rs.code != ICAL_UNKNOWN_STATUS){
- *return_status = icalproperty_new_requeststatus(rs);
- }
-
- return component_error_str;
-}
-
-
-void usage(char *message)
-{
- fprintf(stderr,"Usage: %s [-emdcn] [-i inputfile] [-o outputfile] [-u calid]\n",program_name);
- fprintf(stderr,"-e\tInput data is encapsulated in a MIME Message \n\
--m\tInput is raw iCal \n\
--i\tSpecify input file. Otherwise, input comes from stdin\n\
--o\tSpecify file to save incoming message to\n\
--d\tSpecify database to send data to\n\
--u\tSet the calid to store the data to\n\
--n\tSend errors to stdout instead of organizer\n\
-");
-
-}
-
-
-void get_options(int argc, char* argv[], struct options_struct *opt)
-{
- int c;
- extern char *optarg;
- extern int optind, optopt;
- int errflg=0;
-
- opt->storage = STORE_IN_FILE;
- opt->input_source = INPUT_FROM_STDIN;
- opt->input_type = INPUT_IS_ICAL;
- opt->input_file = 0;
- opt->errors = ERRORS_TO_ORGANIZER;
- opt->calid = 0;
- opt->output_file = 0;
-
-
- while ((c = getopt(argc, argv, "nemu:o:d:b:c:i:")) != -1) {
- switch (c) {
- case 'e': { /* Input data is MIME encapsulated */
- opt->input_type = INPUT_IS_MIME;
- break;
- }
- case 'm': { /* Input is iCal. Default*/
- opt->input_type = INPUT_IS_ICAL;
- break;
- }
- case 'i': { /* Input comes from named file */
- opt->input_source = INPUT_FROM_FILE;
- opt->input_file = strdup(optarg);
- break;
- }
- case 'o': { /* Output goes to named file. Default*/
- opt->output_file = strdup(optarg);
- opt->storage = STORE_IN_FILE;
- break;
- }
- case 'd': { /* Output goes to database */
- fprintf(stderr,"%s: option -d is unimplmented\n",program_name);
- opt->storage = STORE_IN_DB;
- errflg++;
- break;
- }
- case 'c': {
-
- break;
- }
- case 'u': { /* Set the calid for the output database or
- file. Default is user name of user running
- program */
- opt->calid = strdup(optarg);
- break;
- }
-
- case 'n': { /* Dump error to stdout. Default is to
- send error to the organizer specified
- in the iCal data */
- opt->errors = ERRORS_TO_STDOUT;
- break;
- }
-
- case ':': {/* Option given without an operand */
- fprintf(stderr,
- "%s: Option -%c requires an operand\n",
- program_name,optopt);
- errflg++;
- break;
- }
- case '?': {
- errflg++;
- }
-
- }
-
- if (errflg >0){
- usage("");
- exit(1);
- }
- }
-
- if(opt->calid == 0){
- /* If no calid specified, use username */
- char attendee[PATH_MAX];
- char* user = getenv("USER");
- struct utsname uts;
- uname(&uts);
- /* HACK nodename may not be a fully qualified domain name */
- snprintf(attendee,PATH_MAX,"%s@%s",user,uts.nodename);
-
- opt->calid = lowercase(attendee);
- }
-
- if(opt->storage == STORE_IN_FILE &&
- opt->output_file ==0){
- char file[PATH_MAX];
- char* user = getenv("USER");
- struct passwd *pw;
-
- if(!user){
- fprintf(stderr,"%s: Can't get username. Try explicitly specifing the output file with -o", program_name);
- exit(1);
- }
-
- /* Find password entry for user */
- while( (pw = getpwent())!=0){
- if(strcmp(user,pw->pw_name)==0){
- break;
- }
- }
-
- if(pw==0){
- fprintf(stderr,"%s: Can't get get password entry for user \"%s\" Try explicitly specifing the output file with -o",
- program_name,user);
- exit(1);
- }
-
- if(pw->pw_dir==0){
- fprintf(stderr,"%s: User \"%s\" has no home directory. Try explicitly specifing the output file with -o",
- program_name, user);
- exit(1);
- }
-
- snprintf(file,PATH_MAX,"%s/.facs/%s",pw->pw_dir,opt->calid);
-
- opt->output_file = strdup(file);
- }
-
-
- /* Now try to create the calendar directory if it does
- not exist */
-
- if(opt->storage == STORE_IN_FILE ) {
- char * p;
- char* facspath = strdup(opt->output_file);
- enum file_type type;
-
- /* Cut off the last slash to make it just a directoy */
-
- p = strrchr(facspath,'/');
-
- if (p != 0){
- /* Use some other directory */
- *p='\0';
-
- type = test_file(facspath);
-
- errno = 0;
- if (type == NO_FILE){
-
- if(mkdir(facspath,0775) != 0){
- fprintf(stderr,
- "%s: Failed to create calendar directory %s: %s\n",
- program_name,facspath, strerror(errno));
- exit(1);
- } else {
- fprintf(stderr,"%s: Creating calendar directory %s\n",
- program_name,facspath);
- }
-
- } else if(type==REGULAR || type == ERROR){
- fprintf(stderr,"%s: Cannot create calendar directory %s\n",
- program_name,facspath);
- exit(1);
- }
- }
- }
-}
-
-char* check_options(struct options_struct *opt)
-{
- return 0;
-}
-
-void store_component(icalcomponent *comp, struct options_struct *opt)
-{
- icalerrorenum error;
-
-
- if(opt->storage == STORE_IN_FILE){
- icalset *fs = icalfileset_new(opt->output_file);
-
- if (fs == 0){
- fprintf(stderr,
- "%s: Failed to get incoming component directory: %s\n",
- program_name, icalerror_strerror(icalerrno));
- exit(1);
- }
-
-
- error = icalfileset_add_component(fs,comp);
-
- if (error != ICAL_NO_ERROR){
- fprintf(stderr,"%s: Failed to write incoming component: %s\n",
- program_name, icalerror_strerror(icalerrno));
- exit(1);
- }
-
- error = icalfileset_commit(fs);
-
- if (error != ICAL_NO_ERROR){
- fprintf(stderr,"%s: Failed to commit incoming cluster: %s\n",
- program_name, icalerror_strerror(icalerrno));
- exit(1);
- }
-
- icalset_free(fs);
-
- return;
- } else {
- assert(0);
- }
-}
-
-char* read_stream(char *s, size_t size, void *d)
-{
- char *c = fgets(s,size, (FILE*)d);
-
- return c;
-}
-
-icalcomponent* read_nonmime_component(struct options_struct *opt)
-{
- FILE *stream;
- icalcomponent *comp;
- icalparser* parser = icalparser_new();
- icalerrorstate es = icalerror_get_error_state(ICAL_MALFORMEDDATA_ERROR);
- char* line;
-
- if(opt->input_source == INPUT_FROM_FILE){
- stream = fopen(opt->input_file,"r");
-
- if (stream == 0){
- perror("Can't open input file");
- exit(1);
- }
-
- } else {
- stream = stdin;
- }
-
- assert(stream != 0);
- icalparser_set_gen_data(parser,stream);
-
- do {
- line = icalparser_get_line(parser,read_stream);
-
- icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_NONFATAL);
- comp = icalparser_add_line(parser,line);
- icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,es);
-
- if (comp != 0){
- return comp;
- }
-
- } while ( line != 0);
-
- if(opt->input_source == INPUT_FROM_FILE){
- fclose(stream);
- }
-
-
- return comp;
- }
-
-icalcomponent* find_vcalendar(icalcomponent* comp)
-{
- icalcomponent *c,*rtrn;
-
- for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT);
- c != 0;
- c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){
-
- if(icalcomponent_isa(c) == ICAL_VCALENDAR_COMPONENT){
- icalcomponent_remove_component(comp,c);
- return c;
- }
-
- if((rtrn=find_vcalendar(c)) != 0){
- return rtrn;
- }
- }
-
- return 0;
-}
-
-icalcomponent* read_mime_component(struct options_struct *opt)
-{
- icalcomponent *comp,*mimecomp;
- FILE* stream;
-
- if(opt->input_source == INPUT_FROM_FILE){
- stream = fopen(opt->input_file,"r");
-
- if (stream == 0){
- perror("Can't open input file");
- exit(1);
- }
-
- } else {
- stream = stdin;
- }
-
- assert(stream != 0);
-
- mimecomp = icalmime_parse(read_stream,(void*)stream);
-
- /* now find the iCal component embedded within the mime component */
- comp = find_vcalendar(mimecomp);
-
-
- if(comp == 0){
- return 0;
- }
-
- return comp;
-}
-
-icalcomponent* read_component(struct options_struct *opt)
-{
- if(opt->input_type == INPUT_IS_MIME){
- return read_mime_component(opt);
- } else if (opt->input_type == INPUT_IS_ICAL){
- return read_nonmime_component(opt);
- } else {
- fprintf(stderr,"%s: Internal Error; unknown option for input_type\n",
- program_name);
- exit(1);
- }
-}
-
-int main(int argc, char* argv[] )
-{
- char* options_error_str;
- char* component_error_str;
- icalcomponent* comp, *reply;
- struct options_struct opt;
- icalproperty *return_status;
-
- program_name = strrchr(argv[0],'/');
-
- get_options(argc, argv, &opt);
-
- if ( (options_error_str = check_options(&opt)) != 0 ){
- usage(options_error_str);
- exit(1);
- }
-
- comp = read_component(&opt);
-
- /* If the component had any fatal errors, return an error message
- to the organizer */
- if ( (component_error_str =
- check_component(comp,&return_status,&opt)) != 0){
-
- reply = make_reply(comp,return_status,&opt);
-
- return_failure(reply, component_error_str, &opt);
- icalcomponent_free(reply);
- exit(0);
-
- }
-
- store_component(comp,&opt);
-
-
- /* Don't free the component comp, since it is now part of the
- store, and will be freed there */
-
- exit(0);
-}
-
diff --git a/libical/src/test/test_fileset.ics b/libical/src/test/test_fileset.ics
deleted file mode 100644
index 35799e4569..0000000000
--- a/libical/src/test/test_fileset.ics
+++ /dev/null
@@ -1,60 +0,0 @@
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VEVENT
-DTSTART:20000101T120000Z
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VEVENT
-DTSTART:20000102T120000Z
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VEVENT
-DTSTART:20000103T120000Z
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VEVENT
-DTSTART:20000104T120000Z
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VEVENT
-DTSTART:20000105T120000Z
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VEVENT
-DTSTART:20000106T120000Z
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VEVENT
-DTSTART:20000107T120000Z
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VEVENT
-DTSTART:20000108T120000Z
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VEVENT
-DTSTART:20000109T120000Z
-END:VEVENT
-END:VCALENDAR
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VEVENT
-DTSTART:20000110T120000Z
-END:VEVENT
-END:VCALENDAR
diff --git a/libical/src/test/testclassify.c b/libical/src/test/testclassify.c
deleted file mode 100644
index 6e8385cbc4..0000000000
--- a/libical/src/test/testclassify.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: testclassify.c
- CREATOR: eric 11 February 2000
-
- $Id$
- $Locker$
-
- (C) COPYRIGHT 2000 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- The Original Code is eric. The Initial Developer of the Original
- Code is Eric Busboom
-
-
- ======================================================================*/
-
-#include <stdio.h> /* for printf */
-#include <libical/ical.h>
-#include <errno.h>
-#include <string.h> /* For strerror */
-#include <libicalss/icalss.h>
-
-/* Get a note about the purpose of the property*/
-const char* get_note(icalcomponent *c)
-{
- icalproperty *p;
- const char* note = 0;
-
- if(c != 0){
- for(p = icalcomponent_get_first_property(c,ICAL_X_PROPERTY);
- p!= 0;
- p = icalcomponent_get_next_property(c,ICAL_X_PROPERTY)){
- if(strcmp(icalproperty_get_x_name(p),"X-LIC-NOTE")==0){
- note = icalproperty_get_x(p);
- }
- }
- }
-
- if(note == 0){
- note = "None";
- }
-
- return note;
-}
-
-
-int main(int argc, char* argv[])
-{
- icalcomponent *c;
- int i=0;
-
- /* Open up the two storage files, one for the incomming components,
- one for the calendar */
- icalset* incoming = icalset_new_file("../../test-data/incoming.ics");
- icalset* cal = icalset_new_file("../../test-data/calendar.ics");
-
- assert(incoming!= 0);
- assert(cal!=0);
-
- /* Iterate through all of the incoming components */
- for(c=icalset_get_first_component(incoming);c!=0;
- c=icalset_get_next_component(incoming)){
-
- icalproperty_xlicclass class;
- icalcomponent *match = 0;
- const char* this_uid;
-
- i++;
-
- /* Check this component against the restrictions imposed by
- iTIP. An errors will be inserted as X-LIC-ERROR properties
- in the component. The Parser will also insert errors if it
- cannot parse the component */
- icalcomponent_check_restrictions(c);
-
- /* If there are any errors, print out the component */
- if(icalcomponent_count_errors(c) != 0){
- printf("----- Component has errors ------- \n%s-----------------\n",
- icalcomponent_as_ical_string(c));
- }
-
- /* Use one of the icalcomponent convenience routines to get
- the UID. This routine will save you from having to use
- icalcomponent_get_inner(),
- icalcomponent_get_first_property(), checking the return
- value, and then calling icalproperty_get_uid. There are
- several other convenience routines for DTSTART, DTEND,
- DURATION, SUMMARY, METHOD, and COMMENT */
- this_uid = icalcomponent_get_uid(c);
-
- if(this_uid != 0){
- /* Look in the calendar for a component with the same UID
- as the incomming component. We should reall also be
- checking the RECURRENCE-ID. Another way to do this
- operation is to us icalset_find_match(), which does use
- the RECURRENCE-ID. */
- match = icalset_fetch(cal,this_uid);
- }
-
-
- /* Classify the incoming component. The third argument is the
- calid of the user who owns the calendar. In a real program,
- you would probably switch() on the class.*/
- class = icalclassify(c,match,"A@example.com");
-
- printf("Test %d\n\
-Incoming: %s\n\
-Matched: %s\n\
-Classification: %s\n\n",
- i,get_note(c),get_note(match),
- icalproperty_enum_to_string(class));
- }
-
- return 0;
-}
-
-
diff --git a/libical/src/test/testmime.c b/libical/src/test/testmime.c
deleted file mode 100644
index 1fd455a001..0000000000
--- a/libical/src/test/testmime.c
+++ /dev/null
@@ -1,339 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE:
- CREATOR: eric 25 June 2000
-
- $Id$
- $Locker$
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of either:
-
- The LGPL as published by the Free Software Foundation, version
- 2.1, available at: http://www.fsf.org/copyleft/lesser.html
-
- Or:
-
- The Mozilla Public License Version 1.0. You may obtain a copy of
- the License at http://www.mozilla.org/MPL/
-
- The Initial Developer of the Original Code is Eric Busboom
-
- (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
- ======================================================================*/
-
-#include <libical/ical.h>
-
-#include <stdlib.h> /* For rand */
-#include <string.h> /* for strrchr, strdup*/
-#include <unistd.h> /* for getopt */
-
-/*int sspm_parse_mime(struct sspm_part *parts,
- size_t max_parts,
- struct sspm_action_map *actions,
- char* (*get_string)(char *s, size_t size, void* data),
- void *get_string_data,
- struct sspm_header *first_header
- );
-*/
-
-
-
-char* major_type_string[] = {
- "TEXT",
- "IMAGE",
- "AUDIO",
- "VIDEO",
- "APPLICATION",
- "MULTIPART",
- "MESSAGE",
- "UNKNOWN",
- "NO"
-};
-
-char* minor_type_string[] = {
- "ANY",
- "PLAIN",
- "RFC822",
- "DIGEST",
- "CALENDAR",
- "MIXED",
- "RELATED",
- "ALTERNATIVE",
- "PARALLEL",
- "UNKNOWN",
- "NO"
-};
-
-
-char* read_stream(char *s, size_t size, void *d)
-{
- char *c = fgets(s,size, (FILE*)d);
-
- return c;
-
-}
-
-
-int main(int argc, char* argv[]) {
-
- FILE *f;
- int c;
- extern char *optarg;
- extern int optind, optopt;
- int errflg=0;
- char* program_name;
-
- struct options{
- int normal;
- int stress;
- int base64;
- int qp;
- int sleep;
- int count;
- char* input_file;
- } opt;
-
- memset(&opt,0,sizeof(opt));
-
- program_name = (char*)strrchr((char*)argv[0],'/');
- program_name++;
-
- while ((c = getopt(argc, argv, "nsbqi:S:c:")) != -1) {
- switch (c) {
- case 'i': { /* Input comes from named file */
- opt.input_file = strdup(optarg);
- break;
- }
- case 'n':{ /* Normal */
-
- if(opt.stress+opt.base64+opt.qp != 0){
- fprintf(stderr,
- "%s: Use only one of n,s,b and q\n",
- program_name);
- }
- opt.normal = 1;
- break;
- }
- case 's':{ /* Stress-test*/
- if(opt.base64+opt.normal+opt.qp != 0){
- fprintf(stderr,
- "%s: Use only one of n,s,b and q\n",
- program_name);
- }
- opt.stress = 1;
- break;
- }
- case 'b':{ /* test base64 decoding*/
- if(opt.stress+opt.normal+opt.qp != 0){
- fprintf(stderr,
- "%s: Use only one of n,s,b and q\n",
- program_name);
- }
- opt.base64 = 1;
- break;
- }
- case 'q':{ /* test quoted-printable decoding*/
- if(opt.stress+opt.base64+opt.normal != 0){
- fprintf(stderr,
- "%s: Use only one of n,s,b and q\n",
- program_name);
- }
- opt.qp = 1;
- break;
- }
- case 'S':{ /* sleep at end of run */
- opt.sleep = atoi(optarg);
- break;
- }
-
- case 'c':{ /* number of iterations of stress test */
- opt.count = atoi(optarg);
- break;
- }
-
- case ':': {/* Option given without an operand */
- fprintf(stderr,
- "%s: Option -%c requires an operand\n",
- program_name,optopt);
- errflg++;
- break;
- }
- case '?': {
- errflg++;
- }
- }
- }
-
- if (errflg >0){
- fprintf(stderr,"Usage: %s [-n|-s|-b|-q] [-i input_file]\n",
- program_name);
- exit(1);
- }
-
- if(opt.stress+opt.base64+opt.normal+opt.qp == 0){
- fprintf(stderr,
- "%s: Must have one of n,s,b or q\n",
- program_name);
- }
-
- if(opt.input_file){
- f = fopen(opt.input_file,"r");
- if (f == 0){
- fprintf(stderr,"Could not open input file \"%s\"\n",
- opt.input_file);
- exit(1);
- }
- } else {
- f = stdin;
- }
-
-
-
- if(opt.normal == 1){
- icalcomponent *c;
-
- c = icalmime_parse(read_stream,f);
-
- printf("%s\n",icalcomponent_as_ical_string(c));
-
- icalcomponent_free(c);
-
- } else if (opt.stress==1 ){
- /* Read file in by lines, then randomize the lines into a
- string buffer */
-
- char *array[1024];
- char temp[1024];
- char *buf;
- int i,last;
- int size;
- int non_rand;
- int rand_lines;
- int r;
- int j;
- icalcomponent *c;
- struct slg_data {
- char* pos;
- char* str;
- } d;
-
- for(i=0; !feof(f); i++){
- fgets(temp,1024,f);
- array[i] = strdup(temp);
- size += strlen(temp);
- }
- last = i;
-
- buf = malloc(size*2);
- assert(buf != 0);
-
-
- for(j=0; j<opt.count; j++){
-
- srand(j);
- memset(buf,0,size*2);
- /* First insert some non-randomized lines */
- non_rand = ((float)rand()/(float)RAND_MAX) * last;
- for(i=0;i<non_rand;i++){
- strcat(buf,array[i]);
- }
-
- /* Then, insert some lines at random */
-
- rand_lines = last - non_rand;
-
- for(i=0;i<rand_lines;i++){
- srand(i);
- r = ((float)rand()/(float)RAND_MAX) * rand_lines;
- strcat(buf,array[r+non_rand]);
-
- }
-
- d.pos = 0;
- d.str = buf;
-
- c = icalmime_parse(icalparser_string_line_generator,&d);
-
- printf("%s\n",icalcomponent_as_ical_string(c));
-
- icalcomponent_free(c);
-
- }
-
- free(buf);
-
- for(i=0; i<last; i++){
- free(array[i]);
- }
-
- } else if(opt.qp == 1){
- char str[4096];
- char conv[4096];
-
- memset(str,0,4096);
-
- while(!feof(f) && fgets(str,4096,f)!=0){
- size_t size;
-
- size = strlen(str);
- memset(conv,0,4096);
- decode_quoted_printable(conv,str,&size);
-
- conv[size] = '\0';
- printf("%s",conv);
- memset(str,0,4096);
-
- }
- } else if (opt.base64 == 1) {
- char str[4096];
- char conv[4096];
-
- memset(str,0,4096);
-
- while(!feof(f) && fgets(str,4096,f)!=0){
- size_t size;
-
- size = strlen(str);
- memset(conv,0,4096);
- decode_base64(conv,str,&size);
-
- conv[size] = '\0';
- printf("%s",conv);
- memset(str,0,4096);
-
- }
- }
-
- if (opt.sleep != 0){
- sleep(opt.sleep);
- }
-
- if( opt.input_file != 0){
- free(opt.input_file);
- }
-
- icalmemory_free_ring();
-
- return 0;
-
-}
-
-
-
-
-
-
-
-
diff --git a/libical/src/test/testvcal.c b/libical/src/test/testvcal.c
deleted file mode 100644
index 80b227b148..0000000000
--- a/libical/src/test/testvcal.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C -*-
- ======================================================================
- FILE: vcal.c
- CREATOR: eric 26 May 2000
-
- $Id$
- $Locker$
-
- (C) COPYRIGHT 2000 Eric Busboom
- http://www.softwarestudio.org
-
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
-
- The Original Code is eric. The Initial Developer of the Original
- Code is Eric Busboom
-
-
- ======================================================================*/
-
-#include <libicalvcal/icalvcal.h>
-#include <stdio.h>
-
-/* Given a vCal data file as its first argument, this program will
- print out an equivalent iCal component.
-
- For instance:
-
- ./testvcal ../../test-data/user-cal.vcf
-
-*/
-
-int main(int argc, char* argv[])
-{
- VObject *vcal = 0;
- icalcomponent *comp;
- char* file;
-
- if (argc != 2){
- file = "../../test-data/user-cal.vcf";
- } else {
- file = argv[1];
- }
-
-
- vcal = Parse_MIME_FromFileName(file);
-
- assert(vcal != 0);
-
- comp = icalvcal_convert(vcal);
-
- printf("%s\n",icalcomponent_as_ical_string(comp));
-
- return 0;
-}
-
-