Page MenuHomePhorge

test.php
No OneTemporary

Authored By
Unknown
Size
5 KB
Referenced Files
None
Subscribers
None

test.php

<?php
//run using "php -d enable_dl=On -d extension=./kolabformat.so test.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();
$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);
assertequal($e->exceptionDates()->size(), 1, "Event::addExceptionDate()");
$r = new RecurrenceRule();
$r->setFrequency(RecurrenceRule::Minutely);
$bysec = new vectori();
$bysec->push(1);
$bysec->push(3);
$r->setBySecond($bysec);
$e->setRecurrenceRule($r);
$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);
$pic = "R0lGODlhEgASAIAAAMDAwAAAACH5BAEAAAAALAAAAAASABIAQAIPhI+py+0Po5y02ouz3pwXADs=";
$c->setPhoto(base64_decode($pic), 'image/gif');
$c->setGPSpos(array2vector("geo:46.952585,7.43766"));
$bd = new cDateTime(1980,8,1);
$c->setBDay($bd);
$vcs = new vectorcs;
$vcs->push(new CustomProperty("initials", "KF"));
$c->setCustomProperties($vcs);
$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()");
assertcontains($xml, "<photo><uri>data:image/gif;base64,$pic</uri></photo>", "Contact::setPhoto()");
assertcontains($xml, "<bday><date>19800801</date></bday>", "Contact::setBDay()");
assertcontains($xml, "<geo><uri>geo:46.952585,7.43766</uri></geo>", "Contact::setGPSpos()");
$c1 = kolabformat::readContact($xml, false);
assertequal($xml, kolabformat::writeContact($c1), "kolabformat::readContact() => kolabformat::writeContact()");
assertequal($c1->photoMimetype(), "image/gif", "Contact::photoMimetype()");
assertequal($c1->uid(), kolabformat::getSerializedUID(), "kolabformat::getSerializedUID()");
$c1->setBDay(new cDateTime);
$xml = kolabformat::writeContact($c);
assertfalse(strpos($xml, '<bday><date>'), "Unset BDay with empty cDateTime");
/////// Test DistList
$dl = new DistList;
$dl->setName("DalistÄÖŸ");
$m = new vectormember;
$a = new Member;
$a->setName("Member-A");
$a->setEmail("a@localhost");
$a->setUid("x-mem-a");
$m->push($a);
$b = new Member;
$b->setName("Member-B");
$b->setEmail("b@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 (UTF-8)");
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");
?>

File Metadata

Mime Type
text/x-php
Expires
Sun, Apr 5, 11:22 PM (1 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18823748
Default Alt Text
test.php (5 KB)

Event Timeline