xref: /plugin/davcal/vendor/sabre/vobject/tests/VObject/Parser/JsonTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\VObject\Parser;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehleruse
6*a1a3b679SAndreas Boehler    Sabre\VObject;
7*a1a3b679SAndreas Boehler
8*a1a3b679SAndreas Boehlerclass JsonTest extends \PHPUnit_Framework_TestCase {
9*a1a3b679SAndreas Boehler
10*a1a3b679SAndreas Boehler    function testRoundTripJCard() {
11*a1a3b679SAndreas Boehler
12*a1a3b679SAndreas Boehler        $input = array(
13*a1a3b679SAndreas Boehler            "vcard",
14*a1a3b679SAndreas Boehler            array(
15*a1a3b679SAndreas Boehler                array(
16*a1a3b679SAndreas Boehler                    "version",
17*a1a3b679SAndreas Boehler                    new \StdClass(),
18*a1a3b679SAndreas Boehler                    "text",
19*a1a3b679SAndreas Boehler                    "4.0"
20*a1a3b679SAndreas Boehler                ),
21*a1a3b679SAndreas Boehler                array(
22*a1a3b679SAndreas Boehler                    "prodid",
23*a1a3b679SAndreas Boehler                    new \StdClass(),
24*a1a3b679SAndreas Boehler                    "text",
25*a1a3b679SAndreas Boehler                    "-//Sabre//Sabre VObject " . VObject\Version::VERSION . "//EN",
26*a1a3b679SAndreas Boehler                ),
27*a1a3b679SAndreas Boehler                array(
28*a1a3b679SAndreas Boehler                    "uid",
29*a1a3b679SAndreas Boehler                    new \StdClass(),
30*a1a3b679SAndreas Boehler                    "text",
31*a1a3b679SAndreas Boehler                    "foo",
32*a1a3b679SAndreas Boehler                ),
33*a1a3b679SAndreas Boehler                array(
34*a1a3b679SAndreas Boehler                    "bday",
35*a1a3b679SAndreas Boehler                    new \StdClass(),
36*a1a3b679SAndreas Boehler                    "date-and-or-time",
37*a1a3b679SAndreas Boehler                    "1985-04-07",
38*a1a3b679SAndreas Boehler                ),
39*a1a3b679SAndreas Boehler                array(
40*a1a3b679SAndreas Boehler                    "rev",
41*a1a3b679SAndreas Boehler                    new \StdClass(),
42*a1a3b679SAndreas Boehler                    "timestamp",
43*a1a3b679SAndreas Boehler                    "1995-10-31T22:27:10Z",
44*a1a3b679SAndreas Boehler                ),
45*a1a3b679SAndreas Boehler                array(
46*a1a3b679SAndreas Boehler                    "lang",
47*a1a3b679SAndreas Boehler                    new \StdClass(),
48*a1a3b679SAndreas Boehler                    "language-tag",
49*a1a3b679SAndreas Boehler                    "nl",
50*a1a3b679SAndreas Boehler                ),
51*a1a3b679SAndreas Boehler                array(
52*a1a3b679SAndreas Boehler                    "n",
53*a1a3b679SAndreas Boehler                    new \StdClass(),
54*a1a3b679SAndreas Boehler                    "text",
55*a1a3b679SAndreas Boehler                    array("Last", "First", "Middle", "", ""),
56*a1a3b679SAndreas Boehler                ),
57*a1a3b679SAndreas Boehler                array(
58*a1a3b679SAndreas Boehler                    "tel",
59*a1a3b679SAndreas Boehler                    (object)array(
60*a1a3b679SAndreas Boehler                        "group" => "item1",
61*a1a3b679SAndreas Boehler                    ),
62*a1a3b679SAndreas Boehler                    "text",
63*a1a3b679SAndreas Boehler                    "+1 555 123456",
64*a1a3b679SAndreas Boehler                ),
65*a1a3b679SAndreas Boehler                array(
66*a1a3b679SAndreas Boehler                    "x-ab-label",
67*a1a3b679SAndreas Boehler                    (object)array(
68*a1a3b679SAndreas Boehler                        "group" => "item1",
69*a1a3b679SAndreas Boehler                    ),
70*a1a3b679SAndreas Boehler                    "unknown",
71*a1a3b679SAndreas Boehler                    "Walkie Talkie",
72*a1a3b679SAndreas Boehler                ),
73*a1a3b679SAndreas Boehler                array(
74*a1a3b679SAndreas Boehler                    "adr",
75*a1a3b679SAndreas Boehler                    new \StdClass(),
76*a1a3b679SAndreas Boehler                    "text",
77*a1a3b679SAndreas Boehler                        array(
78*a1a3b679SAndreas Boehler                            "",
79*a1a3b679SAndreas Boehler                            "",
80*a1a3b679SAndreas Boehler                            array("My Street", "Left Side", "Second Shack"),
81*a1a3b679SAndreas Boehler                            "Hometown",
82*a1a3b679SAndreas Boehler                            "PA",
83*a1a3b679SAndreas Boehler                            "18252",
84*a1a3b679SAndreas Boehler                            "U.S.A",
85*a1a3b679SAndreas Boehler                        ),
86*a1a3b679SAndreas Boehler                ),
87*a1a3b679SAndreas Boehler                array(
88*a1a3b679SAndreas Boehler                    "bday",
89*a1a3b679SAndreas Boehler                    (object)array(
90*a1a3b679SAndreas Boehler                        'x-param' => array(1,2),
91*a1a3b679SAndreas Boehler                    ),
92*a1a3b679SAndreas Boehler                    "date",
93*a1a3b679SAndreas Boehler                    "1979-12-25",
94*a1a3b679SAndreas Boehler                ),
95*a1a3b679SAndreas Boehler                array(
96*a1a3b679SAndreas Boehler                    "bday",
97*a1a3b679SAndreas Boehler                    new \StdClass(),
98*a1a3b679SAndreas Boehler                    "date-time",
99*a1a3b679SAndreas Boehler                    "1979-12-25T02:00:00",
100*a1a3b679SAndreas Boehler                ),
101*a1a3b679SAndreas Boehler                array(
102*a1a3b679SAndreas Boehler                    "x-truncated",
103*a1a3b679SAndreas Boehler                    new \StdClass(),
104*a1a3b679SAndreas Boehler                    "date",
105*a1a3b679SAndreas Boehler                    "--12-25",
106*a1a3b679SAndreas Boehler                ),
107*a1a3b679SAndreas Boehler                array(
108*a1a3b679SAndreas Boehler                    "x-time-local",
109*a1a3b679SAndreas Boehler                    new \StdClass(),
110*a1a3b679SAndreas Boehler                    "time",
111*a1a3b679SAndreas Boehler                    "12:30:00"
112*a1a3b679SAndreas Boehler                ),
113*a1a3b679SAndreas Boehler                array(
114*a1a3b679SAndreas Boehler                    "x-time-utc",
115*a1a3b679SAndreas Boehler                    new \StdClass(),
116*a1a3b679SAndreas Boehler                    "time",
117*a1a3b679SAndreas Boehler                    "12:30:00Z"
118*a1a3b679SAndreas Boehler                ),
119*a1a3b679SAndreas Boehler                array(
120*a1a3b679SAndreas Boehler                    "x-time-offset",
121*a1a3b679SAndreas Boehler                    new \StdClass(),
122*a1a3b679SAndreas Boehler                    "time",
123*a1a3b679SAndreas Boehler                    "12:30:00-08:00"
124*a1a3b679SAndreas Boehler                ),
125*a1a3b679SAndreas Boehler                array(
126*a1a3b679SAndreas Boehler                    "x-time-reduced",
127*a1a3b679SAndreas Boehler                    new \StdClass(),
128*a1a3b679SAndreas Boehler                    "time",
129*a1a3b679SAndreas Boehler                    "23"
130*a1a3b679SAndreas Boehler                ),
131*a1a3b679SAndreas Boehler                array(
132*a1a3b679SAndreas Boehler                    "x-time-truncated",
133*a1a3b679SAndreas Boehler                    new \StdClass(),
134*a1a3b679SAndreas Boehler                    "time",
135*a1a3b679SAndreas Boehler                    "--30"
136*a1a3b679SAndreas Boehler                ),
137*a1a3b679SAndreas Boehler                array(
138*a1a3b679SAndreas Boehler                    "x-karma-points",
139*a1a3b679SAndreas Boehler                    new \StdClass(),
140*a1a3b679SAndreas Boehler                    "integer",
141*a1a3b679SAndreas Boehler                    42
142*a1a3b679SAndreas Boehler                ),
143*a1a3b679SAndreas Boehler                array(
144*a1a3b679SAndreas Boehler                    "x-grade",
145*a1a3b679SAndreas Boehler                    new \StdClass(),
146*a1a3b679SAndreas Boehler                    "float",
147*a1a3b679SAndreas Boehler                    1.3
148*a1a3b679SAndreas Boehler                ),
149*a1a3b679SAndreas Boehler                array(
150*a1a3b679SAndreas Boehler                    "tz",
151*a1a3b679SAndreas Boehler                    new \StdClass(),
152*a1a3b679SAndreas Boehler                    "utc-offset",
153*a1a3b679SAndreas Boehler                    "-05:00",
154*a1a3b679SAndreas Boehler                ),
155*a1a3b679SAndreas Boehler            ),
156*a1a3b679SAndreas Boehler        );
157*a1a3b679SAndreas Boehler
158*a1a3b679SAndreas Boehler        $parser = new Json(json_encode($input));
159*a1a3b679SAndreas Boehler        $vobj = $parser->parse();
160*a1a3b679SAndreas Boehler
161*a1a3b679SAndreas Boehler        $version = VObject\Version::VERSION;
162*a1a3b679SAndreas Boehler
163*a1a3b679SAndreas Boehler
164*a1a3b679SAndreas Boehler        $result = $vobj->serialize();
165*a1a3b679SAndreas Boehler        $expected = <<<VCF
166*a1a3b679SAndreas BoehlerBEGIN:VCARD
167*a1a3b679SAndreas BoehlerVERSION:4.0
168*a1a3b679SAndreas BoehlerPRODID:-//Sabre//Sabre VObject $version//EN
169*a1a3b679SAndreas BoehlerUID:foo
170*a1a3b679SAndreas BoehlerBDAY:1985-04-07
171*a1a3b679SAndreas BoehlerREV:1995-10-31T22:27:10Z
172*a1a3b679SAndreas BoehlerLANG:nl
173*a1a3b679SAndreas BoehlerN:Last;First;Middle;;
174*a1a3b679SAndreas Boehleritem1.TEL:+1 555 123456
175*a1a3b679SAndreas Boehleritem1.X-AB-LABEL:Walkie Talkie
176*a1a3b679SAndreas BoehlerADR:;;My Street,Left Side,Second Shack;Hometown;PA;18252;U.S.A
177*a1a3b679SAndreas BoehlerBDAY;X-PARAM=1,2;VALUE=DATE:1979-12-25
178*a1a3b679SAndreas BoehlerBDAY;VALUE=DATE-TIME:1979-12-25T02:00:00
179*a1a3b679SAndreas BoehlerX-TRUNCATED;VALUE=DATE:--12-25
180*a1a3b679SAndreas BoehlerX-TIME-LOCAL;VALUE=TIME:12:30:00
181*a1a3b679SAndreas BoehlerX-TIME-UTC;VALUE=TIME:12:30:00Z
182*a1a3b679SAndreas BoehlerX-TIME-OFFSET;VALUE=TIME:12:30:00-08:00
183*a1a3b679SAndreas BoehlerX-TIME-REDUCED;VALUE=TIME:23
184*a1a3b679SAndreas BoehlerX-TIME-TRUNCATED;VALUE=TIME:--30
185*a1a3b679SAndreas BoehlerX-KARMA-POINTS;VALUE=INTEGER:42
186*a1a3b679SAndreas BoehlerX-GRADE;VALUE=FLOAT:1.3
187*a1a3b679SAndreas BoehlerTZ;VALUE=UTC-OFFSET:-05:00
188*a1a3b679SAndreas BoehlerEND:VCARD
189*a1a3b679SAndreas Boehler
190*a1a3b679SAndreas BoehlerVCF;
191*a1a3b679SAndreas Boehler        $this->assertEquals($expected, str_replace("\r", "", $result));
192*a1a3b679SAndreas Boehler
193*a1a3b679SAndreas Boehler        $this->assertEquals(
194*a1a3b679SAndreas Boehler            $input,
195*a1a3b679SAndreas Boehler            $vobj->jsonSerialize()
196*a1a3b679SAndreas Boehler        );
197*a1a3b679SAndreas Boehler
198*a1a3b679SAndreas Boehler    }
199*a1a3b679SAndreas Boehler
200*a1a3b679SAndreas Boehler    function testRoundTripJCal() {
201*a1a3b679SAndreas Boehler
202*a1a3b679SAndreas Boehler        $input = array(
203*a1a3b679SAndreas Boehler            "vcalendar",
204*a1a3b679SAndreas Boehler            array(
205*a1a3b679SAndreas Boehler                array(
206*a1a3b679SAndreas Boehler                    "version",
207*a1a3b679SAndreas Boehler                    new \StdClass(),
208*a1a3b679SAndreas Boehler                    "text",
209*a1a3b679SAndreas Boehler                    "2.0"
210*a1a3b679SAndreas Boehler                ),
211*a1a3b679SAndreas Boehler                array(
212*a1a3b679SAndreas Boehler                    "prodid",
213*a1a3b679SAndreas Boehler                    new \StdClass(),
214*a1a3b679SAndreas Boehler                    "text",
215*a1a3b679SAndreas Boehler                    "-//Sabre//Sabre VObject " . VObject\Version::VERSION . "//EN",
216*a1a3b679SAndreas Boehler                ),
217*a1a3b679SAndreas Boehler                array(
218*a1a3b679SAndreas Boehler                    "calscale",
219*a1a3b679SAndreas Boehler                    new \StdClass(),
220*a1a3b679SAndreas Boehler                    "text",
221*a1a3b679SAndreas Boehler                    "GREGORIAN"
222*a1a3b679SAndreas Boehler                ),
223*a1a3b679SAndreas Boehler            ),
224*a1a3b679SAndreas Boehler            array(
225*a1a3b679SAndreas Boehler                array("vevent",
226*a1a3b679SAndreas Boehler                    array(
227*a1a3b679SAndreas Boehler                        array(
228*a1a3b679SAndreas Boehler                            "uid", new \StdClass(), "text", "foo",
229*a1a3b679SAndreas Boehler                        ),
230*a1a3b679SAndreas Boehler                        array(
231*a1a3b679SAndreas Boehler                            "dtstart", new \StdClass(), "date", "2013-05-26",
232*a1a3b679SAndreas Boehler                        ),
233*a1a3b679SAndreas Boehler                        array(
234*a1a3b679SAndreas Boehler                            "duration", new \StdClass(), "duration", "P1D",
235*a1a3b679SAndreas Boehler                        ),
236*a1a3b679SAndreas Boehler                        array(
237*a1a3b679SAndreas Boehler                            "categories", new \StdClass(), "text", "home", "testing",
238*a1a3b679SAndreas Boehler                        ),
239*a1a3b679SAndreas Boehler                        array(
240*a1a3b679SAndreas Boehler                            "created", new \StdClass(), "date-time", "2013-05-26T18:10:00Z",
241*a1a3b679SAndreas Boehler                        ),
242*a1a3b679SAndreas Boehler                        array(
243*a1a3b679SAndreas Boehler                            "attach", new \StdClass(), "binary", base64_encode('attachment')
244*a1a3b679SAndreas Boehler                        ),
245*a1a3b679SAndreas Boehler                        array(
246*a1a3b679SAndreas Boehler                            "attendee", new \StdClass(), "cal-address", "mailto:armin@example.org",
247*a1a3b679SAndreas Boehler                        ),
248*a1a3b679SAndreas Boehler                        array(
249*a1a3b679SAndreas Boehler                            "geo", new \StdClass(), "float", array(51.96668, 7.61876),
250*a1a3b679SAndreas Boehler                        ),
251*a1a3b679SAndreas Boehler                        array(
252*a1a3b679SAndreas Boehler                            "sequence", new \StdClass(), "integer", 5
253*a1a3b679SAndreas Boehler                        ),
254*a1a3b679SAndreas Boehler                        array(
255*a1a3b679SAndreas Boehler                            "freebusy", new \StdClass(), "period",  array("2013-05-26T21:02:13", "PT1H"), array("2013-06-26T12:00:00", "2013-06-26T13:00:00"),
256*a1a3b679SAndreas Boehler                        ),
257*a1a3b679SAndreas Boehler                        array(
258*a1a3b679SAndreas Boehler                            "url", new \StdClass(), "uri", "http://example.org/",
259*a1a3b679SAndreas Boehler                        ),
260*a1a3b679SAndreas Boehler                        array(
261*a1a3b679SAndreas Boehler                            "tzoffsetfrom", new \StdClass(), "utc-offset", "+05:00",
262*a1a3b679SAndreas Boehler                        ),
263*a1a3b679SAndreas Boehler                        array(
264*a1a3b679SAndreas Boehler                            "rrule", new \StdClass(), "recur", array(
265*a1a3b679SAndreas Boehler                                'freq' => 'WEEKLY',
266*a1a3b679SAndreas Boehler                                'byday' => array('MO', 'TU'),
267*a1a3b679SAndreas Boehler                            ),
268*a1a3b679SAndreas Boehler                        ),
269*a1a3b679SAndreas Boehler                        array(
270*a1a3b679SAndreas Boehler                            "x-bool", new \StdClass(), "boolean", true
271*a1a3b679SAndreas Boehler                        ),
272*a1a3b679SAndreas Boehler                        array(
273*a1a3b679SAndreas Boehler                            "x-time", new \StdClass(), "time", "08:00:00",
274*a1a3b679SAndreas Boehler                        ),
275*a1a3b679SAndreas Boehler                        array(
276*a1a3b679SAndreas Boehler                            "attendee",
277*a1a3b679SAndreas Boehler                            (object)array(
278*a1a3b679SAndreas Boehler                                "cn" => "Dominik",
279*a1a3b679SAndreas Boehler                                "partstat" => "DECLINED",
280*a1a3b679SAndreas Boehler                            ),
281*a1a3b679SAndreas Boehler                            "cal-address",
282*a1a3b679SAndreas Boehler                            "mailto:dominik@example.org"
283*a1a3b679SAndreas Boehler                        ),
284*a1a3b679SAndreas Boehler                        array(
285*a1a3b679SAndreas Boehler                            "request-status",
286*a1a3b679SAndreas Boehler                            new \StdClass(),
287*a1a3b679SAndreas Boehler                            "text",
288*a1a3b679SAndreas Boehler                            array("2.0", "Success"),
289*a1a3b679SAndreas Boehler                        ),
290*a1a3b679SAndreas Boehler                        array(
291*a1a3b679SAndreas Boehler                            "request-status",
292*a1a3b679SAndreas Boehler                            new \StdClass(),
293*a1a3b679SAndreas Boehler                            "text",
294*a1a3b679SAndreas Boehler                            array("3.7", "Invalid Calendar User", "ATTENDEE:mailto:jsmith@example.org"),
295*a1a3b679SAndreas Boehler                        ),
296*a1a3b679SAndreas Boehler                    ),
297*a1a3b679SAndreas Boehler                    array(
298*a1a3b679SAndreas Boehler                        array("valarm",
299*a1a3b679SAndreas Boehler                            array(
300*a1a3b679SAndreas Boehler                                array(
301*a1a3b679SAndreas Boehler                                    "action", new \StdClass(), "text", "DISPLAY",
302*a1a3b679SAndreas Boehler                                ),
303*a1a3b679SAndreas Boehler                            ),
304*a1a3b679SAndreas Boehler                            array(),
305*a1a3b679SAndreas Boehler                        ),
306*a1a3b679SAndreas Boehler                    ),
307*a1a3b679SAndreas Boehler                )
308*a1a3b679SAndreas Boehler            ),
309*a1a3b679SAndreas Boehler        );
310*a1a3b679SAndreas Boehler
311*a1a3b679SAndreas Boehler        $parser = new Json(json_encode($input));
312*a1a3b679SAndreas Boehler        $vobj = $parser->parse();
313*a1a3b679SAndreas Boehler        $result = $vobj->serialize();
314*a1a3b679SAndreas Boehler
315*a1a3b679SAndreas Boehler        $version = VObject\Version::VERSION;
316*a1a3b679SAndreas Boehler
317*a1a3b679SAndreas Boehler        $expected = <<<VCF
318*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
319*a1a3b679SAndreas BoehlerVERSION:2.0
320*a1a3b679SAndreas BoehlerPRODID:-//Sabre//Sabre VObject $version//EN
321*a1a3b679SAndreas BoehlerCALSCALE:GREGORIAN
322*a1a3b679SAndreas BoehlerBEGIN:VEVENT
323*a1a3b679SAndreas BoehlerUID:foo
324*a1a3b679SAndreas BoehlerDTSTART;VALUE=DATE:20130526
325*a1a3b679SAndreas BoehlerDURATION:P1D
326*a1a3b679SAndreas BoehlerCATEGORIES:home,testing
327*a1a3b679SAndreas BoehlerCREATED:20130526T181000Z
328*a1a3b679SAndreas BoehlerATTACH;VALUE=BINARY:YXR0YWNobWVudA==
329*a1a3b679SAndreas BoehlerATTENDEE:mailto:armin@example.org
330*a1a3b679SAndreas BoehlerGEO:51.96668;7.61876
331*a1a3b679SAndreas BoehlerSEQUENCE:5
332*a1a3b679SAndreas BoehlerFREEBUSY:20130526T210213/PT1H,20130626T120000/20130626T130000
333*a1a3b679SAndreas BoehlerURL:http://example.org/
334*a1a3b679SAndreas BoehlerTZOFFSETFROM:+05:00
335*a1a3b679SAndreas BoehlerRRULE:FREQ=WEEKLY;BYDAY=MO,TU
336*a1a3b679SAndreas BoehlerX-BOOL;VALUE=BOOLEAN:TRUE
337*a1a3b679SAndreas BoehlerX-TIME;VALUE=TIME:08:00:00
338*a1a3b679SAndreas BoehlerATTENDEE;CN=Dominik;PARTSTAT=DECLINED:mailto:dominik@example.org
339*a1a3b679SAndreas BoehlerREQUEST-STATUS:2.0;Success
340*a1a3b679SAndreas BoehlerREQUEST-STATUS:3.7;Invalid Calendar User;ATTENDEE:mailto:jsmith@example.org
341*a1a3b679SAndreas BoehlerBEGIN:VALARM
342*a1a3b679SAndreas BoehlerACTION:DISPLAY
343*a1a3b679SAndreas BoehlerEND:VALARM
344*a1a3b679SAndreas BoehlerEND:VEVENT
345*a1a3b679SAndreas BoehlerEND:VCALENDAR
346*a1a3b679SAndreas Boehler
347*a1a3b679SAndreas BoehlerVCF;
348*a1a3b679SAndreas Boehler        $this->assertEquals($expected, str_replace("\r", "", $result));
349*a1a3b679SAndreas Boehler
350*a1a3b679SAndreas Boehler        $this->assertEquals(
351*a1a3b679SAndreas Boehler            $input,
352*a1a3b679SAndreas Boehler            $vobj->jsonSerialize()
353*a1a3b679SAndreas Boehler        );
354*a1a3b679SAndreas Boehler
355*a1a3b679SAndreas Boehler    }
356*a1a3b679SAndreas Boehler
357*a1a3b679SAndreas Boehler    function testParseStreamArg() {
358*a1a3b679SAndreas Boehler
359*a1a3b679SAndreas Boehler        $input = array(
360*a1a3b679SAndreas Boehler            "vcard",
361*a1a3b679SAndreas Boehler            array(
362*a1a3b679SAndreas Boehler                array(
363*a1a3b679SAndreas Boehler                    "FN", new \StdClass(), 'text', "foo",
364*a1a3b679SAndreas Boehler                ),
365*a1a3b679SAndreas Boehler            ),
366*a1a3b679SAndreas Boehler        );
367*a1a3b679SAndreas Boehler
368*a1a3b679SAndreas Boehler        $stream = fopen('php://memory','r+');
369*a1a3b679SAndreas Boehler        fwrite($stream, json_encode($input));
370*a1a3b679SAndreas Boehler        rewind($stream);
371*a1a3b679SAndreas Boehler
372*a1a3b679SAndreas Boehler        $result = VObject\Reader::readJson($stream,0);
373*a1a3b679SAndreas Boehler        $this->assertEquals('foo', $result->FN->getValue());
374*a1a3b679SAndreas Boehler
375*a1a3b679SAndreas Boehler    }
376*a1a3b679SAndreas Boehler
377*a1a3b679SAndreas Boehler    /**
378*a1a3b679SAndreas Boehler     * @expectedException \Sabre\VObject\ParseException
379*a1a3b679SAndreas Boehler     */
380*a1a3b679SAndreas Boehler    function testParseInvalidData() {
381*a1a3b679SAndreas Boehler
382*a1a3b679SAndreas Boehler        $json = new Json();
383*a1a3b679SAndreas Boehler        $input = array(
384*a1a3b679SAndreas Boehler            "vlist",
385*a1a3b679SAndreas Boehler            array(
386*a1a3b679SAndreas Boehler                array(
387*a1a3b679SAndreas Boehler                    "FN", new \StdClass(), 'text', "foo",
388*a1a3b679SAndreas Boehler                ),
389*a1a3b679SAndreas Boehler            ),
390*a1a3b679SAndreas Boehler        );
391*a1a3b679SAndreas Boehler
392*a1a3b679SAndreas Boehler        $json->parse(json_encode($input), 0);
393*a1a3b679SAndreas Boehler
394*a1a3b679SAndreas Boehler    }
395*a1a3b679SAndreas Boehler}
396