c++/lib

Thomas Brüderli bruederli at kolabsys.com
Wed Mar 14 10:40:16 CET 2012


 c++/lib/php/test.php |  129 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 119 insertions(+), 10 deletions(-)

New commits:
commit 19b3d7616aaf104f4ddfe1e8cead10c276e64a85
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed Mar 14 10:40:05 2012 +0100

    Add some test cases for PHP bindings (to be continued...)

diff --git a/c++/lib/php/test.php b/c++/lib/php/test.php
index f3f514e..ff4aae8 100644
--- a/c++/lib/php/test.php
+++ b/c++/lib/php/test.php
@@ -1,13 +1,52 @@
+<?php
 //run using "php -d enable_dl=On -d extension=./kolabformat.so  test.php"
 
-<?php
 include("kolabformat.php");
 
+function assertequal($got, $expect, $name) {
+	if ($got == $expect) {
+		print "OK - $name\n";
+		return true;
+	}
+	else {
+		print "FAIL - $name\n";
+		print "-- Expected " . var_export($expect, true) . ", got " . var_export($got, true) . " --\n";
+		return false;
+	}
+}
+
+function assertcontains($haystack, $needle, $name) {
+	// remove whitespace
+	$haystack = preg_replace('/\s/ims', '', $haystack);
+	$needle = preg_replace('/\s/ims', '', $needle);
+	return assertequal(substr(strstr($haystack, $needle), 0, strlen($needle)), $needle, $name);
+}
+
+function asserttrue($arg, $name) {
+	return assertequal($arg, true, $name);
+}
+
+function assertfalse($arg, $name) {
+	return assertequal($arg, false, $name);
+}
+
+function array2vector($arr) {
+	$vec = new vectors;
+	foreach ((array)$arr as $val)
+		$vec->push($val);
+	return $vec;
+}
+
+
+/////// Test Event
+
 $e = new Event();
-$d = new c_DateTime(2009,10,12);
-print $e->exceptionDates()->size();
+$e->setCreated(new cDateTime(2012,3,14, 9,5,30));
+$e->setStart(new cDateTime(2012,7,31));
+$d = new cDateTime(2009,10,12);
+assertequal($e->exceptionDates()->size(), 0, "Event::exceptionDates()");
 $e->addExceptionDate($d);
-print $e->exceptionDates()->size();
+assertequal($e->exceptionDates()->size(), 1, "Event::addExceptionDate()");
 
 $r = new RecurrenceRule();
 $r->setFrequency(RecurrenceRule::Minutely);
@@ -19,13 +58,83 @@ $bysec->push(3);
 $r->setBySecond($bysec);
 $e->setRecurrenceRule($r);
 
-$string = writeEvent($e);
-print $string;
-$e1 = readEvent($string, false);
-$string = writeEvent($e1);
-print $string;
-?>
+$xml = kolabformat::writeEvent($e);
+#print $xml;
+assertcontains($xml, '<dtstart><date>2012-07-31</date></dtstart>', "Event::setStart() with date only");
+assertcontains($xml, '<created><date-time>2012-03-14T09:05:30Z</date-time></created>', "Event::setCreated() with date-time");
+assertcontains($xml, '<rrule><recur><freq>MINUTELY</freq>', "RecurrenceRule::setFrequency()");
+assertcontains($xml, '<rrule><recur><freq>MINUTELY</freq><bysecond>1</bysecond><bysecond>3</bysecond></recur></rrule>', "RecurrenceRule::setBySecond()");
+assertcontains($xml, '<exdate><date>2009-10-12</date></exdate>', "Event Recurrence Exceptions");
+
+$e1 = kolabformat::readEvent($xml, false);
+assertequal($xml, kolabformat::writeEvent($e1), "kolabformat::readEvent() => kolabformat::writeEvent()");
+
+$s = $e1->start();
+assertequal(sprintf('%d-%d-%d', $s->year(), $s->month(), $s->day()), '2012-7-31', "Event::start()");
+
+$r = $e1->recurrenceRule();
+assertequal($r->frequency(), RecurrenceRule::Minutely, "RecurrenceRule::frequency()");
+assertequal($r->bysecond()->size(), 2, "RecurrenceRule::bysecond()");
+assertequal($e1->exceptionDates()->size(), 1, "Read Event::exceptionDates()");
+
+
+/////// Test Contact
 
+$c = new Contact;
+$c->setName("Contact-FN");
+
+$nc = new NameComponents;
+$nc->setSurnames(array2vector("Surname"));
+$nc->setGiven(array2vector("Given"));
+$nc->setAdditional(array2vector(array("Middle1", "Middle2")));
+$nc->setPrefixes(array2vector("Prefix"));
+#$nc->setSuffixes(new vectors);
+
+assertcontains($nc->surnames()->size(),    1, "NameComponents::setSurnames()");
+assertcontains($nc->given()->size(),       1, "NameComponents::setGiven()");
+assertcontains($nc->additional()->size(),  2, "NameComponents::setAdditional()");
+assertcontains($nc->prefixes()->size(),    1, "NameComponents::setPrefixes()");
+assertcontains($nc->suffixes()->size(),    0, "NameComponents::suffixes()");
+
+$c->setNameComponents($nc);
+
+$xml = kolabformat::writeContact($c);
+#print $xml;
+assertcontains($xml, "<uid><uri>urn:uuid:", "Generate Contact UID as urn::uuid");
+assertcontains($xml, "<n><surname>Surname</surname><given>Given</given><additional>Middle1</additional><additional>Middle2</additional><prefix>Prefix</prefix></n>", "Contact::setNameComponents()");
+
+$c1 = kolabformat::readContact($xml, false);
+assertequal($xml, kolabformat::writeContact($c1), "kolabformat::readContact() => kolabformat::writeContact()");
+
+
+/////// Test DistList
+
+$dl = new DistList;
+$dl->setName("DalistÄÖŸ");
+
+$m = new vectormember;
+$a = new Member;
+$a->setName("Member-A");
+$a->setEmail("a at localhost");
+$a->setUid("x-mem-a");
+$m->push($a);
+
+$b = new Member;
+$b->setName("Member-B");
+$b->setEmail("b at localhost");
+$b->setUid("x-mem-b");
+$m->push($b);
+
+assertequal($m->size(), 2, "vectormember::size()");
+$dl->setMembers($m);
+
+$xml = kolabformat::writeDistlist($dl);
+#print $xml;
+assertcontains($xml, '<fn><text>DalistÄÖŸ</text></fn>', "kolabformat::writeDistlist(): FN");
+assertcontains($xml, '<uri>mailto:Member%2DB%3Cb%40localhost%3E</uri>', "kolabformat::writeDistlist(): mailto uri");
+assertcontains($xml, '<member><parameters><x-uid><uri>x-mem-b</uri></x-uid></parameters>', "kolabformat::writeDistlist(): member x-uid");
+
+?>
 
 
 





More information about the commits mailing list