1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\VObject; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehlerclass JCardTest extends \PHPUnit_Framework_TestCase { 6*a1a3b679SAndreas Boehler 7*a1a3b679SAndreas Boehler function testToJCard() { 8*a1a3b679SAndreas Boehler 9*a1a3b679SAndreas Boehler $card = new Component\VCard(array( 10*a1a3b679SAndreas Boehler "VERSION" => "4.0", 11*a1a3b679SAndreas Boehler "UID" => "foo", 12*a1a3b679SAndreas Boehler "BDAY" => "19850407", 13*a1a3b679SAndreas Boehler "REV" => "19951031T222710Z", 14*a1a3b679SAndreas Boehler "LANG" => "nl", 15*a1a3b679SAndreas Boehler "N" => array("Last", "First", "Middle", "", ""), 16*a1a3b679SAndreas Boehler "item1.TEL" => "+1 555 123456", 17*a1a3b679SAndreas Boehler "item1.X-AB-LABEL" => "Walkie Talkie", 18*a1a3b679SAndreas Boehler "ADR" => array( 19*a1a3b679SAndreas Boehler "", 20*a1a3b679SAndreas Boehler "", 21*a1a3b679SAndreas Boehler array("My Street", "Left Side", "Second Shack"), 22*a1a3b679SAndreas Boehler "Hometown", 23*a1a3b679SAndreas Boehler "PA", 24*a1a3b679SAndreas Boehler "18252", 25*a1a3b679SAndreas Boehler "U.S.A", 26*a1a3b679SAndreas Boehler ), 27*a1a3b679SAndreas Boehler )); 28*a1a3b679SAndreas Boehler 29*a1a3b679SAndreas Boehler $card->add('BDAY', '1979-12-25', array('VALUE' => 'DATE', 'X-PARAM' => array(1,2))); 30*a1a3b679SAndreas Boehler $card->add('BDAY', '1979-12-25T02:00:00', array('VALUE' => 'DATE-TIME')); 31*a1a3b679SAndreas Boehler 32*a1a3b679SAndreas Boehler 33*a1a3b679SAndreas Boehler $card->add('X-TRUNCATED', '--1225', array('VALUE' => 'DATE')); 34*a1a3b679SAndreas Boehler $card->add('X-TIME-LOCAL', '123000', array('VALUE' => 'TIME')); 35*a1a3b679SAndreas Boehler $card->add('X-TIME-UTC', '12:30:00Z', array('VALUE' => 'TIME')); 36*a1a3b679SAndreas Boehler $card->add('X-TIME-OFFSET', '12:30:00-08:00', array('VALUE' => 'TIME')); 37*a1a3b679SAndreas Boehler $card->add('X-TIME-REDUCED', '23', array('VALUE' => 'TIME')); 38*a1a3b679SAndreas Boehler $card->add('X-TIME-TRUNCATED', '--30', array('VALUE' => 'TIME')); 39*a1a3b679SAndreas Boehler 40*a1a3b679SAndreas Boehler $card->add('X-KARMA-POINTS', '42', array('VALUE' => 'INTEGER')); 41*a1a3b679SAndreas Boehler $card->add('X-GRADE', '1.3', array('VALUE' => 'FLOAT')); 42*a1a3b679SAndreas Boehler 43*a1a3b679SAndreas Boehler $card->add('TZ', '-05:00', array('VALUE' => 'UTC-OFFSET')); 44*a1a3b679SAndreas Boehler 45*a1a3b679SAndreas Boehler $expected = array( 46*a1a3b679SAndreas Boehler "vcard", 47*a1a3b679SAndreas Boehler array( 48*a1a3b679SAndreas Boehler array( 49*a1a3b679SAndreas Boehler "version", 50*a1a3b679SAndreas Boehler new \StdClass(), 51*a1a3b679SAndreas Boehler "text", 52*a1a3b679SAndreas Boehler "4.0" 53*a1a3b679SAndreas Boehler ), 54*a1a3b679SAndreas Boehler array( 55*a1a3b679SAndreas Boehler "prodid", 56*a1a3b679SAndreas Boehler new \StdClass(), 57*a1a3b679SAndreas Boehler "text", 58*a1a3b679SAndreas Boehler "-//Sabre//Sabre VObject " . Version::VERSION . "//EN", 59*a1a3b679SAndreas Boehler ), 60*a1a3b679SAndreas Boehler array( 61*a1a3b679SAndreas Boehler "uid", 62*a1a3b679SAndreas Boehler new \StdClass(), 63*a1a3b679SAndreas Boehler "text", 64*a1a3b679SAndreas Boehler "foo", 65*a1a3b679SAndreas Boehler ), 66*a1a3b679SAndreas Boehler array( 67*a1a3b679SAndreas Boehler "bday", 68*a1a3b679SAndreas Boehler new \StdClass(), 69*a1a3b679SAndreas Boehler "date-and-or-time", 70*a1a3b679SAndreas Boehler "1985-04-07", 71*a1a3b679SAndreas Boehler ), 72*a1a3b679SAndreas Boehler array( 73*a1a3b679SAndreas Boehler "rev", 74*a1a3b679SAndreas Boehler new \StdClass(), 75*a1a3b679SAndreas Boehler "timestamp", 76*a1a3b679SAndreas Boehler "1995-10-31T22:27:10Z", 77*a1a3b679SAndreas Boehler ), 78*a1a3b679SAndreas Boehler array( 79*a1a3b679SAndreas Boehler "lang", 80*a1a3b679SAndreas Boehler new \StdClass(), 81*a1a3b679SAndreas Boehler "language-tag", 82*a1a3b679SAndreas Boehler "nl", 83*a1a3b679SAndreas Boehler ), 84*a1a3b679SAndreas Boehler array( 85*a1a3b679SAndreas Boehler "n", 86*a1a3b679SAndreas Boehler new \StdClass(), 87*a1a3b679SAndreas Boehler "text", 88*a1a3b679SAndreas Boehler array("Last", "First", "Middle", "", ""), 89*a1a3b679SAndreas Boehler ), 90*a1a3b679SAndreas Boehler array( 91*a1a3b679SAndreas Boehler "tel", 92*a1a3b679SAndreas Boehler (object)array( 93*a1a3b679SAndreas Boehler "group" => "item1", 94*a1a3b679SAndreas Boehler ), 95*a1a3b679SAndreas Boehler "text", 96*a1a3b679SAndreas Boehler "+1 555 123456", 97*a1a3b679SAndreas Boehler ), 98*a1a3b679SAndreas Boehler array( 99*a1a3b679SAndreas Boehler "x-ab-label", 100*a1a3b679SAndreas Boehler (object)array( 101*a1a3b679SAndreas Boehler "group" => "item1", 102*a1a3b679SAndreas Boehler ), 103*a1a3b679SAndreas Boehler "unknown", 104*a1a3b679SAndreas Boehler "Walkie Talkie", 105*a1a3b679SAndreas Boehler ), 106*a1a3b679SAndreas Boehler array( 107*a1a3b679SAndreas Boehler "adr", 108*a1a3b679SAndreas Boehler new \StdClass(), 109*a1a3b679SAndreas Boehler "text", 110*a1a3b679SAndreas Boehler array( 111*a1a3b679SAndreas Boehler "", 112*a1a3b679SAndreas Boehler "", 113*a1a3b679SAndreas Boehler array("My Street", "Left Side", "Second Shack"), 114*a1a3b679SAndreas Boehler "Hometown", 115*a1a3b679SAndreas Boehler "PA", 116*a1a3b679SAndreas Boehler "18252", 117*a1a3b679SAndreas Boehler "U.S.A", 118*a1a3b679SAndreas Boehler ), 119*a1a3b679SAndreas Boehler ), 120*a1a3b679SAndreas Boehler array( 121*a1a3b679SAndreas Boehler "bday", 122*a1a3b679SAndreas Boehler (object)array( 123*a1a3b679SAndreas Boehler 'x-param' => array(1,2), 124*a1a3b679SAndreas Boehler ), 125*a1a3b679SAndreas Boehler "date", 126*a1a3b679SAndreas Boehler "1979-12-25", 127*a1a3b679SAndreas Boehler ), 128*a1a3b679SAndreas Boehler array( 129*a1a3b679SAndreas Boehler "bday", 130*a1a3b679SAndreas Boehler new \StdClass(), 131*a1a3b679SAndreas Boehler "date-time", 132*a1a3b679SAndreas Boehler "1979-12-25T02:00:00", 133*a1a3b679SAndreas Boehler ), 134*a1a3b679SAndreas Boehler array( 135*a1a3b679SAndreas Boehler "x-truncated", 136*a1a3b679SAndreas Boehler new \StdClass(), 137*a1a3b679SAndreas Boehler "date", 138*a1a3b679SAndreas Boehler "--12-25", 139*a1a3b679SAndreas Boehler ), 140*a1a3b679SAndreas Boehler array( 141*a1a3b679SAndreas Boehler "x-time-local", 142*a1a3b679SAndreas Boehler new \StdClass(), 143*a1a3b679SAndreas Boehler "time", 144*a1a3b679SAndreas Boehler "12:30:00" 145*a1a3b679SAndreas Boehler ), 146*a1a3b679SAndreas Boehler array( 147*a1a3b679SAndreas Boehler "x-time-utc", 148*a1a3b679SAndreas Boehler new \StdClass(), 149*a1a3b679SAndreas Boehler "time", 150*a1a3b679SAndreas Boehler "12:30:00Z" 151*a1a3b679SAndreas Boehler ), 152*a1a3b679SAndreas Boehler array( 153*a1a3b679SAndreas Boehler "x-time-offset", 154*a1a3b679SAndreas Boehler new \StdClass(), 155*a1a3b679SAndreas Boehler "time", 156*a1a3b679SAndreas Boehler "12:30:00-08:00" 157*a1a3b679SAndreas Boehler ), 158*a1a3b679SAndreas Boehler array( 159*a1a3b679SAndreas Boehler "x-time-reduced", 160*a1a3b679SAndreas Boehler new \StdClass(), 161*a1a3b679SAndreas Boehler "time", 162*a1a3b679SAndreas Boehler "23" 163*a1a3b679SAndreas Boehler ), 164*a1a3b679SAndreas Boehler array( 165*a1a3b679SAndreas Boehler "x-time-truncated", 166*a1a3b679SAndreas Boehler new \StdClass(), 167*a1a3b679SAndreas Boehler "time", 168*a1a3b679SAndreas Boehler "--30" 169*a1a3b679SAndreas Boehler ), 170*a1a3b679SAndreas Boehler array( 171*a1a3b679SAndreas Boehler "x-karma-points", 172*a1a3b679SAndreas Boehler new \StdClass(), 173*a1a3b679SAndreas Boehler "integer", 174*a1a3b679SAndreas Boehler 42 175*a1a3b679SAndreas Boehler ), 176*a1a3b679SAndreas Boehler array( 177*a1a3b679SAndreas Boehler "x-grade", 178*a1a3b679SAndreas Boehler new \StdClass(), 179*a1a3b679SAndreas Boehler "float", 180*a1a3b679SAndreas Boehler 1.3 181*a1a3b679SAndreas Boehler ), 182*a1a3b679SAndreas Boehler array( 183*a1a3b679SAndreas Boehler "tz", 184*a1a3b679SAndreas Boehler new \StdClass(), 185*a1a3b679SAndreas Boehler "utc-offset", 186*a1a3b679SAndreas Boehler "-05:00", 187*a1a3b679SAndreas Boehler ), 188*a1a3b679SAndreas Boehler ), 189*a1a3b679SAndreas Boehler ); 190*a1a3b679SAndreas Boehler 191*a1a3b679SAndreas Boehler $this->assertEquals($expected, $card->jsonSerialize()); 192*a1a3b679SAndreas Boehler 193*a1a3b679SAndreas Boehler } 194*a1a3b679SAndreas Boehler 195*a1a3b679SAndreas Boehler} 196