123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531 |
- <?php
- namespace Sabre\VObject;
- class VCardConverterTest extends TestCase {
- function testConvert30to40() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:3.0
- PRODID:foo
- FN;CHARSET=UTF-8:Steve
- TEL;TYPE=PREF,HOME:+1 555 666 777
- ITEM1.TEL:+1 444 555 666
- ITEM1.X-ABLABEL:CustomLabel
- PHOTO;ENCODING=b;TYPE=JPEG,HOME:Zm9v
- PHOTO;ENCODING=b;TYPE=GIF:Zm9v
- PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
- PHOTO;VALUE=URI:http://example.org/foo.png
- X-ABShowAs:COMPANY
- END:VCARD
- IN;
- $output = <<<OUT
- BEGIN:VCARD
- VERSION:4.0
- FN:Steve
- TEL;PREF=1;TYPE=HOME:+1 555 666 777
- ITEM1.TEL:+1 444 555 666
- ITEM1.X-ABLABEL:CustomLabel
- PHOTO;TYPE=HOME:data:image/jpeg;base64,Zm9v
- PHOTO:data:image/gif;base64,Zm9v
- PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
- PHOTO:http://example.org/foo.png
- KIND:ORG
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD40);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- }
- function testConvert40to40() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:4.0
- FN:Steve
- TEL;PREF=1;TYPE=HOME:+1 555 666 777
- PHOTO:data:image/jpeg;base64,Zm9v
- PHOTO:data:image/gif;base64,Zm9v
- PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
- PHOTO:http://example.org/foo.png
- END:VCARD
- IN;
- $output = <<<OUT
- BEGIN:VCARD
- VERSION:4.0
- FN:Steve
- TEL;PREF=1;TYPE=HOME:+1 555 666 777
- PHOTO:data:image/jpeg;base64,Zm9v
- PHOTO:data:image/gif;base64,Zm9v
- PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
- PHOTO:http://example.org/foo.png
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD40);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- }
- function testConvert21to40() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:2.1
- N:Family;Johnson
- FN:Johnson Family
- TEL;HOME;VOICE:555-12345-345
- ADR;HOME:;;100 Street Lane;Saubel Beach;ON;H0H0H0
- LABEL;HOME;ENCODING=QUOTED-PRINTABLE:100 Street Lane=0D=0ASaubel Beach,
- ON H0H0H0
- REV:20110731T040251Z
- UID:12345678
- END:VCARD
- IN;
- $output = <<<OUT
- BEGIN:VCARD
- VERSION:4.0
- N:Family;Johnson;;;
- FN:Johnson Family
- TEL;TYPE=HOME,VOICE:555-12345-345
- ADR;TYPE=HOME:;;100 Street Lane;Saubel Beach;ON;H0H0H0;
- REV:20110731T040251Z
- UID:12345678
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD40);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- }
- function testConvert30to30() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:3.0
- PRODID:foo
- FN;CHARSET=UTF-8:Steve
- TEL;TYPE=PREF,HOME:+1 555 666 777
- PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
- PHOTO;ENCODING=b;TYPE=GIF:Zm9v
- PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
- PHOTO;VALUE=URI:http://example.org/foo.png
- END:VCARD
- IN;
- $output = <<<OUT
- BEGIN:VCARD
- VERSION:3.0
- PRODID:foo
- FN;CHARSET=UTF-8:Steve
- TEL;TYPE=PREF,HOME:+1 555 666 777
- PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
- PHOTO;ENCODING=b;TYPE=GIF:Zm9v
- PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
- PHOTO;VALUE=URI:http://example.org/foo.png
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD30);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- }
- function testConvert40to30() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:4.0
- PRODID:foo
- FN:Steve
- TEL;PREF=1;TYPE=HOME:+1 555 666 777
- PHOTO:data:image/jpeg;base64,Zm9v
- PHOTO:data:image/gif,foo
- PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
- PHOTO:http://example.org/foo.png
- KIND:ORG
- END:VCARD
- IN;
- $output = <<<OUT
- BEGIN:VCARD
- VERSION:3.0
- FN:Steve
- TEL;TYPE=PREF,HOME:+1 555 666 777
- PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
- PHOTO;ENCODING=b;TYPE=GIF:Zm9v
- PHOTO;ENCODING=b;TYPE=PNG;X-PARAM=FOO:Zm9v
- PHOTO;VALUE=URI:http://example.org/foo.png
- X-ABSHOWAS:COMPANY
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD30);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- }
- function testConvertGroupCard() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:3.0
- PRODID:foo
- X-ADDRESSBOOKSERVER-KIND:GROUP
- END:VCARD
- IN;
- $output = <<<OUT
- BEGIN:VCARD
- VERSION:4.0
- KIND:GROUP
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD40);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- $input = $output;
- $output = <<<OUT
- BEGIN:VCARD
- VERSION:3.0
- X-ADDRESSBOOKSERVER-KIND:GROUP
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD30);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- }
- function testBDAYConversion() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:3.0
- PRODID:foo
- BDAY;X-APPLE-OMIT-YEAR=1604:1604-04-16
- END:VCARD
- IN;
- $output = <<<OUT
- BEGIN:VCARD
- VERSION:4.0
- BDAY:--04-16
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD40);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- $input = $output;
- $output = <<<OUT
- BEGIN:VCARD
- VERSION:3.0
- BDAY;X-APPLE-OMIT-YEAR=1604:1604-04-16
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD30);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- }
- /**
- * @expectedException InvalidArgumentException
- */
- function testUnknownSourceVCardVersion() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:4.2
- PRODID:foo
- FN;CHARSET=UTF-8:Steve
- TEL;TYPE=PREF,HOME:+1 555 666 777
- ITEM1.TEL:+1 444 555 666
- ITEM1.X-ABLABEL:CustomLabel
- PHOTO;ENCODING=b;TYPE=JPEG,HOME:Zm9v
- PHOTO;ENCODING=b;TYPE=GIF:Zm9v
- PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
- PHOTO;VALUE=URI:http://example.org/foo.png
- X-ABShowAs:COMPANY
- END:VCARD
- IN;
- $vcard = Reader::read($input);
- $vcard->convert(Document::VCARD40);
- }
- /**
- * @expectedException InvalidArgumentException
- */
- function testUnknownTargetVCardVersion() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:3.0
- PRODID:foo
- END:VCARD
- IN;
- $vcard = Reader::read($input);
- $vcard->convert(Document::VCARD21);
- }
- function testConvertIndividualCard() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:4.0
- PRODID:foo
- KIND:INDIVIDUAL
- END:VCARD
- IN;
- $output = <<<OUT
- BEGIN:VCARD
- VERSION:3.0
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD30);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- $input = $output;
- $output = <<<OUT
- BEGIN:VCARD
- VERSION:4.0
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD40);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- }
- function testAnniversary() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:4.0
- ITEM1.ANNIVERSARY:20081210
- END:VCARD
- IN;
- $output = <<<'OUT'
- BEGIN:VCARD
- VERSION:3.0
- ITEM1.X-ABDATE;VALUE=DATE-AND-OR-TIME:20081210
- ITEM1.X-ABLABEL:_$!<Anniversary>!$_
- ITEM1.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20081210
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD30);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- // Swapping input and output
- list(
- $input,
- $output
- ) = array(
- $output,
- $input
- );
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD40);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- }
- function testMultipleAnniversaries() {
- $input = <<<IN
- BEGIN:VCARD
- VERSION:4.0
- ITEM1.ANNIVERSARY:20081210
- ITEM2.ANNIVERSARY:20091210
- ITEM3.ANNIVERSARY:20101210
- END:VCARD
- IN;
- $output = <<<'OUT'
- BEGIN:VCARD
- VERSION:3.0
- ITEM1.X-ABDATE;VALUE=DATE-AND-OR-TIME:20081210
- ITEM1.X-ABLABEL:_$!<Anniversary>!$_
- ITEM1.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20081210
- ITEM2.X-ABDATE;VALUE=DATE-AND-OR-TIME:20091210
- ITEM2.X-ABLABEL:_$!<Anniversary>!$_
- ITEM2.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20091210
- ITEM3.X-ABDATE;VALUE=DATE-AND-OR-TIME:20101210
- ITEM3.X-ABLABEL:_$!<Anniversary>!$_
- ITEM3.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20101210
- END:VCARD
- OUT;
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD30);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- // Swapping input and output
- list(
- $input,
- $output
- ) = array(
- $output,
- $input
- );
- $vcard = Reader::read($input);
- $vcard = $vcard->convert(Document::VCARD40);
- $this->assertVObjEquals(
- $output,
- $vcard
- );
- }
- function testNoLabel() {
- $input = <<<VCF
- BEGIN:VCARD
- VERSION:3.0
- UID:foo
- N:Doe;John;;;
- FN:John Doe
- item1.X-ABDATE;type=pref:2008-12-11
- END:VCARD
- VCF;
- $vcard = Reader::read($input);
- $this->assertInstanceOf('Sabre\\VObject\\Component\\VCard', $vcard);
- $vcard = $vcard->convert(Document::VCARD40);
- $vcard = $vcard->serialize();
- $converted = Reader::read($vcard);
- $converted->validate();
- $version = Version::VERSION;
- $expected = <<<VCF
- BEGIN:VCARD
- VERSION:4.0
- PRODID:-//Sabre//Sabre VObject $version//EN
- UID:foo
- N:Doe;John;;;
- FN:John Doe
- ITEM1.X-ABDATE;PREF=1:2008-12-11
- END:VCARD
- VCF;
- $this->assertEquals($expected, str_replace("\r","", $vcard));
- }
- }
|