calendaring/php
Thomas Brüderli
bruederli at kolabsys.com
Wed Jan 30 16:41:06 CET 2013
calendaring/php/test.php | 136 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 136 insertions(+)
New commits:
commit a3272dd37bd5606d930116eae27a5e6dafd1b551
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Wed Jan 30 16:40:58 2013 +0100
Add basic unit tests for calendaring PHP bindings
diff --git a/calendaring/php/test.php b/calendaring/php/test.php
new file mode 100644
index 0000000..5582f88
--- /dev/null
+++ b/calendaring/php/test.php
@@ -0,0 +1,136 @@
+<?php
+//run using "php -d enable_dl=On extension=./kolabcalendaring.so test.php [--verbose]"
+
+include("kolabformat.php");
+include("kolabcalendaring.php");
+
+/////// Basic unit test facilities
+
+$errors = 0;
+$verbose = preg_match('/\s(--verbose|-v)\b/', join(' ', $_SERVER['argv']));
+
+function assertequal($got, $expect, $name) {
+ global $verbose, $errors;
+
+ if ($got == $expect) {
+ if ($verbose)
+ print "OK - $name\n";
+ return true;
+ }
+ else {
+ $errors++;
+ print "FAIL - $name\n";
+ print "-- Expected " . var_export($expect, true) . ", got " . var_export($got, true) . " --\n";
+ return false;
+ }
+}
+
+function asserttrue($arg, $name) {
+ return assertequal($arg, true, $name);
+}
+
+function assertfalse($arg, $name) {
+ return assertequal($arg, false, $name);
+}
+
+
+/////// Test EventCal recurrence
+
+$xml = <<<EOF
+<icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
+ <vcalendar>
+ <properties>
+ <prodid>
+ <text>Libkolab-0.4 Libkolabxml-0.9</text>
+ </prodid>
+ <version>
+ <text>2.0</text>
+ </version>
+ <x-kolab-version>
+ <text>3.0dev1</text>
+ </x-kolab-version>
+ </properties>
+ <components>
+ <vevent>
+ <properties>
+ <uid>
+ <text>DDDEBE616DB7480A003725D1D7C4C2FE-8C02E7EEB49870A2</text>
+ </uid>
+ <created><date-time>2012-10-23T11:04:53Z</date-time></created>
+ <dtstamp><date-time>2012-10-23T13:04:53Z</date-time></dtstamp>
+ <sequence>
+ <integer>0</integer>
+ </sequence>
+ <class>
+ <text>PUBLIC</text>
+ </class>
+ <dtstart>
+ <parameters>
+ <tzid>
+ <text>/kolab.org/Europe/Paris</text>
+ </tzid>
+ </parameters>
+ <date-time>2012-10-23T14:00:00</date-time>
+ </dtstart>
+ <dtend>
+ <parameters>
+ <tzid>
+ <text>/kolab.org/Europe/Paris</text>
+ </tzid>
+ </parameters>
+ <date-time>2012-10-23T15:30:00</date-time>
+ </dtend>
+ <rrule>
+ <recur>
+ <freq>DAILY</freq>
+ <count>4</count>
+ <interval>2</interval>
+ </recur>
+ </rrule>
+ <summary>
+ <text>Recurring with libkolab</text>
+ </summary>
+ </properties>
+ </vevent>
+ </components>
+ </vcalendar>
+</icalendar>
+EOF;
+
+$e = kolabformat::readEvent($xml, false);
+$ec = new EventCal($e);
+
+$rstart = new cDateTime(2012,8,1, 0,0,0);
+# asserttrue($ec->getNextOccurence($rstart) instanceof cDateTime, "EventCal::getNextOccurence() returning cDateTime instance");
+
+$next = new cDateTime($ec->getNextOccurence($rstart));
+assertequal(
+ sprintf("%d-%d-%d %02d:%02d:%02d", $next->year(), $next->month(), $next->day(), $next->hour(), $next->minute(), $next->second()),
+ "2012-10-23 14:00:00",
+ "EventCal first recurrence"
+);
+
+$next = new cDateTime($ec->getNextOccurence($next));
+assertequal(
+ sprintf("%d-%d-%d %02d:%02d:%02d", $next->year(), $next->month(), $next->day(), $next->hour(), $next->minute(), $next->second()),
+ "2012-10-25 14:00:00",
+ "EventCal second recurrence"
+);
+
+$end = new cDateTime($ec->getOccurenceEndDate($next));
+assertequal(
+ sprintf("%d-%d-%d %02d:%02d:%02d", $end->year(), $end->month(), $end->day(), $end->hour(), $end->minute(), $end->second()),
+ "2012-10-25 15:30:00",
+ "EventCal::getOccurenceEndDate"
+);
+
+$last = new cDateTime($ec->getLastOccurrence());
+assertequal(
+ sprintf("%d-%d-%d %02d:%02d:%02d", $last->year(), $last->month(), $last->day(), $last->hour(), $last->minute(), $last->second()),
+ "2012-10-29 14:00:00",
+ "EventCal::getLastOccurence"
+);
+
+
+// terminate with error status
+exit($errors);
More information about the commits
mailing list