1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\VObject\Splitter; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\VObject; 6*a1a3b679SAndreas Boehler 7*a1a3b679SAndreas Boehlerclass VCardTest extends \PHPUnit_Framework_TestCase { 8*a1a3b679SAndreas Boehler 9*a1a3b679SAndreas Boehler function createStream($data) { 10*a1a3b679SAndreas Boehler 11*a1a3b679SAndreas Boehler $stream = fopen('php://memory','r+'); 12*a1a3b679SAndreas Boehler fwrite($stream, $data); 13*a1a3b679SAndreas Boehler rewind($stream); 14*a1a3b679SAndreas Boehler return $stream; 15*a1a3b679SAndreas Boehler 16*a1a3b679SAndreas Boehler } 17*a1a3b679SAndreas Boehler 18*a1a3b679SAndreas Boehler function testVCardImportValidVCard() { 19*a1a3b679SAndreas Boehler $data = <<<EOT 20*a1a3b679SAndreas BoehlerBEGIN:VCARD 21*a1a3b679SAndreas BoehlerUID:foo 22*a1a3b679SAndreas BoehlerEND:VCARD 23*a1a3b679SAndreas BoehlerEOT; 24*a1a3b679SAndreas Boehler $tempFile = $this->createStream($data); 25*a1a3b679SAndreas Boehler 26*a1a3b679SAndreas Boehler $objects = new VCard($tempFile); 27*a1a3b679SAndreas Boehler 28*a1a3b679SAndreas Boehler $count = 0; 29*a1a3b679SAndreas Boehler while($objects->getNext()) { 30*a1a3b679SAndreas Boehler $count++; 31*a1a3b679SAndreas Boehler } 32*a1a3b679SAndreas Boehler $this->assertEquals(1, $count); 33*a1a3b679SAndreas Boehler 34*a1a3b679SAndreas Boehler } 35*a1a3b679SAndreas Boehler 36*a1a3b679SAndreas Boehler /** 37*a1a3b679SAndreas Boehler * @expectedException Sabre\VObject\ParseException 38*a1a3b679SAndreas Boehler */ 39*a1a3b679SAndreas Boehler function testVCardImportWrongType() { 40*a1a3b679SAndreas Boehler $event[] = <<<EOT 41*a1a3b679SAndreas BoehlerBEGIN:VEVENT 42*a1a3b679SAndreas BoehlerUID:foo1 43*a1a3b679SAndreas BoehlerDTSTAMP:20140122T233226Z 44*a1a3b679SAndreas BoehlerDTSTART:20140101T050000Z 45*a1a3b679SAndreas BoehlerEND:VEVENT 46*a1a3b679SAndreas BoehlerEOT; 47*a1a3b679SAndreas Boehler 48*a1a3b679SAndreas Boehler$event[] = <<<EOT 49*a1a3b679SAndreas BoehlerBEGIN:VEVENT 50*a1a3b679SAndreas BoehlerUID:foo2 51*a1a3b679SAndreas BoehlerDTSTAMP:20140122T233226Z 52*a1a3b679SAndreas BoehlerDTSTART:20140101T060000Z 53*a1a3b679SAndreas BoehlerEND:VEVENT 54*a1a3b679SAndreas BoehlerEOT; 55*a1a3b679SAndreas Boehler 56*a1a3b679SAndreas Boehler $data = <<<EOT 57*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 58*a1a3b679SAndreas Boehler$event[0] 59*a1a3b679SAndreas Boehler$event[1] 60*a1a3b679SAndreas BoehlerEND:VCALENDAR 61*a1a3b679SAndreas Boehler 62*a1a3b679SAndreas BoehlerEOT; 63*a1a3b679SAndreas Boehler $tempFile = $this->createStream($data); 64*a1a3b679SAndreas Boehler 65*a1a3b679SAndreas Boehler $splitter = new VCard($tempFile); 66*a1a3b679SAndreas Boehler 67*a1a3b679SAndreas Boehler while($object=$splitter->getNext()) { 68*a1a3b679SAndreas Boehler } 69*a1a3b679SAndreas Boehler 70*a1a3b679SAndreas Boehler } 71*a1a3b679SAndreas Boehler 72*a1a3b679SAndreas Boehler function testVCardImportValidVCardsWithCategories() { 73*a1a3b679SAndreas Boehler $data = <<<EOT 74*a1a3b679SAndreas BoehlerBEGIN:VCARD 75*a1a3b679SAndreas BoehlerUID:card-in-foo1-and-foo2 76*a1a3b679SAndreas BoehlerCATEGORIES:foo1,foo2 77*a1a3b679SAndreas BoehlerEND:VCARD 78*a1a3b679SAndreas BoehlerBEGIN:VCARD 79*a1a3b679SAndreas BoehlerUID:card-in-foo1 80*a1a3b679SAndreas BoehlerCATEGORIES:foo1 81*a1a3b679SAndreas BoehlerEND:VCARD 82*a1a3b679SAndreas BoehlerBEGIN:VCARD 83*a1a3b679SAndreas BoehlerUID:card-in-foo3 84*a1a3b679SAndreas BoehlerCATEGORIES:foo3 85*a1a3b679SAndreas BoehlerEND:VCARD 86*a1a3b679SAndreas BoehlerBEGIN:VCARD 87*a1a3b679SAndreas BoehlerUID:card-in-foo1-and-foo3 88*a1a3b679SAndreas BoehlerCATEGORIES:foo1\,foo3 89*a1a3b679SAndreas BoehlerEND:VCARD 90*a1a3b679SAndreas BoehlerEOT; 91*a1a3b679SAndreas Boehler $tempFile = $this->createStream($data); 92*a1a3b679SAndreas Boehler 93*a1a3b679SAndreas Boehler $splitter = new VCard($tempFile); 94*a1a3b679SAndreas Boehler 95*a1a3b679SAndreas Boehler $count = 0; 96*a1a3b679SAndreas Boehler while($object=$splitter->getNext()) { 97*a1a3b679SAndreas Boehler $count++; 98*a1a3b679SAndreas Boehler } 99*a1a3b679SAndreas Boehler $this->assertEquals(4, $count); 100*a1a3b679SAndreas Boehler 101*a1a3b679SAndreas Boehler } 102*a1a3b679SAndreas Boehler 103*a1a3b679SAndreas Boehler function testVCardImportEndOfData() { 104*a1a3b679SAndreas Boehler $data = <<<EOT 105*a1a3b679SAndreas BoehlerBEGIN:VCARD 106*a1a3b679SAndreas BoehlerUID:foo 107*a1a3b679SAndreas BoehlerEND:VCARD 108*a1a3b679SAndreas BoehlerEOT; 109*a1a3b679SAndreas Boehler $tempFile = $this->createStream($data); 110*a1a3b679SAndreas Boehler 111*a1a3b679SAndreas Boehler $objects = new VCard($tempFile); 112*a1a3b679SAndreas Boehler $object=$objects->getNext(); 113*a1a3b679SAndreas Boehler 114*a1a3b679SAndreas Boehler $this->assertNull($objects->getNext()); 115*a1a3b679SAndreas Boehler 116*a1a3b679SAndreas Boehler 117*a1a3b679SAndreas Boehler } 118*a1a3b679SAndreas Boehler 119*a1a3b679SAndreas Boehler /** 120*a1a3b679SAndreas Boehler * @expectedException \Sabre\VObject\ParseException 121*a1a3b679SAndreas Boehler */ 122*a1a3b679SAndreas Boehler function testVCardImportCheckInvalidArgumentException() { 123*a1a3b679SAndreas Boehler $data = <<<EOT 124*a1a3b679SAndreas BoehlerBEGIN:FOO 125*a1a3b679SAndreas BoehlerEND:FOO 126*a1a3b679SAndreas BoehlerEOT; 127*a1a3b679SAndreas Boehler $tempFile = $this->createStream($data); 128*a1a3b679SAndreas Boehler 129*a1a3b679SAndreas Boehler $objects = new VCard($tempFile); 130*a1a3b679SAndreas Boehler while($objects->getNext()) { } 131*a1a3b679SAndreas Boehler 132*a1a3b679SAndreas Boehler } 133*a1a3b679SAndreas Boehler 134*a1a3b679SAndreas Boehler function testVCardImportMultipleValidVCards() { 135*a1a3b679SAndreas Boehler $data = <<<EOT 136*a1a3b679SAndreas BoehlerBEGIN:VCARD 137*a1a3b679SAndreas BoehlerUID:foo 138*a1a3b679SAndreas BoehlerEND:VCARD 139*a1a3b679SAndreas BoehlerBEGIN:VCARD 140*a1a3b679SAndreas BoehlerUID:foo 141*a1a3b679SAndreas BoehlerEND:VCARD 142*a1a3b679SAndreas BoehlerEOT; 143*a1a3b679SAndreas Boehler $tempFile = $this->createStream($data); 144*a1a3b679SAndreas Boehler 145*a1a3b679SAndreas Boehler $objects = new VCard($tempFile); 146*a1a3b679SAndreas Boehler 147*a1a3b679SAndreas Boehler $count = 0; 148*a1a3b679SAndreas Boehler while($objects->getNext()) { 149*a1a3b679SAndreas Boehler $count++; 150*a1a3b679SAndreas Boehler } 151*a1a3b679SAndreas Boehler $this->assertEquals(2, $count); 152*a1a3b679SAndreas Boehler 153*a1a3b679SAndreas Boehler } 154*a1a3b679SAndreas Boehler 155*a1a3b679SAndreas Boehler function testImportMultipleSeparatedWithNewLines() { 156*a1a3b679SAndreas Boehler $data = <<<EOT 157*a1a3b679SAndreas BoehlerBEGIN:VCARD 158*a1a3b679SAndreas BoehlerUID:foo 159*a1a3b679SAndreas BoehlerEND:VCARD 160*a1a3b679SAndreas Boehler 161*a1a3b679SAndreas Boehler 162*a1a3b679SAndreas BoehlerBEGIN:VCARD 163*a1a3b679SAndreas BoehlerUID:foo 164*a1a3b679SAndreas BoehlerEND:VCARD 165*a1a3b679SAndreas Boehler 166*a1a3b679SAndreas Boehler 167*a1a3b679SAndreas BoehlerEOT; 168*a1a3b679SAndreas Boehler $tempFile = $this->createStream($data); 169*a1a3b679SAndreas Boehler $objects = new VCard($tempFile); 170*a1a3b679SAndreas Boehler 171*a1a3b679SAndreas Boehler $count = 0; 172*a1a3b679SAndreas Boehler while ($objects->getNext()) { 173*a1a3b679SAndreas Boehler $count++; 174*a1a3b679SAndreas Boehler } 175*a1a3b679SAndreas Boehler $this->assertEquals(2, $count); 176*a1a3b679SAndreas Boehler } 177*a1a3b679SAndreas Boehler 178*a1a3b679SAndreas Boehler function testVCardImportVCardWithoutUID() { 179*a1a3b679SAndreas Boehler $data = <<<EOT 180*a1a3b679SAndreas BoehlerBEGIN:VCARD 181*a1a3b679SAndreas BoehlerEND:VCARD 182*a1a3b679SAndreas BoehlerEOT; 183*a1a3b679SAndreas Boehler $tempFile = $this->createStream($data); 184*a1a3b679SAndreas Boehler 185*a1a3b679SAndreas Boehler $objects = new VCard($tempFile); 186*a1a3b679SAndreas Boehler 187*a1a3b679SAndreas Boehler $count = 0; 188*a1a3b679SAndreas Boehler while($objects->getNext()) { 189*a1a3b679SAndreas Boehler $count++; 190*a1a3b679SAndreas Boehler } 191*a1a3b679SAndreas Boehler 192*a1a3b679SAndreas Boehler $this->assertEquals(1, $count); 193*a1a3b679SAndreas Boehler } 194*a1a3b679SAndreas Boehler 195*a1a3b679SAndreas Boehler} 196