15 $property = $cal->createProperty(
'propname',
'propvalue');
16 $this->assertEquals(
'PROPNAME', $property->name);
17 $this->assertEquals(
'propvalue', $property->__toString());
18 $this->assertEquals(
'propvalue', (
string)$property);
19 $this->assertEquals(
'propvalue', $property->getValue());
32 $property = $cal->createProperty(
'propname',
'propvalue',
$params);
34 $this->assertEquals(
'value1', $property[
'param1']->getValue());
35 $this->assertEquals(
'value2', $property[
'param2']->getValue());
43 $property = $cal->createProperty(
'propname',
'propvalue');
44 $property->setValue(
'value2');
46 $this->assertEquals(
'PROPNAME', $property->name);
47 $this->assertEquals(
'value2', $property->__toString());
54 $property = $cal->createProperty(
'propname',
'propvalue');
55 $property[
'paramname'] =
'paramvalue';
57 $this->assertTrue(isset($property[
'PARAMNAME']));
58 $this->assertTrue(isset($property[
'paramname']));
59 $this->assertFalse(isset($property[
'foo']));
66 $property = $cal->createProperty(
'propname',
'propvalue');
67 $property[
'paramname'] =
'paramvalue';
69 $this->assertInstanceOf(
'Sabre\\VObject\\Parameter', $property[
'paramname']);
76 $property = $cal->createProperty(
'propname',
'propvalue');
77 $property[
'paramname'] =
'paramvalue';
79 $this->assertInternalType(
'null', $property[
'foo']);
86 $property = $cal->createProperty(
'propname',
'propvalue');
87 $property[
'paramname'] =
'paramvalue';
88 $property->add(
'paramname',
'paramvalue');
90 $this->assertInstanceOf(
'Sabre\\VObject\\Parameter', $property[
'paramname']);
91 $this->assertEquals(2, count($property[
'paramname']->getParts()));
98 $property = $cal->createProperty(
'propname',
'propvalue');
99 $property[
'paramname'] =
'paramvalue';
101 $this->assertEquals(1, count($property->parameters()));
102 $this->assertInstanceOf(
'Sabre\\VObject\\Parameter', $property->parameters[
'PARAMNAME']);
103 $this->assertEquals(
'PARAMNAME', $property->parameters[
'PARAMNAME']->name);
104 $this->assertEquals(
'paramvalue', $property->parameters[
'PARAMNAME']->getValue());
111 $property = $cal->createProperty(
'propname',
'propvalue');
112 $property[
'paramname'] =
'paramvalue';
114 unset($property[
'PARAMNAME']);
115 $this->assertEquals(0, count($property->parameters()));
122 $property = $cal->createProperty(
'propname',
'propvalue');
124 $this->assertEquals(
"PROPNAME:propvalue\r\n", $property->serialize());
131 $property = $cal->createProperty(
'propname',
'propvalue', [
132 'paramname' =>
'paramvalue',
133 'paramname2' =>
'paramvalue2',
136 $this->assertEquals(
"PROPNAME;PARAMNAME=paramvalue;PARAMNAME2=paramvalue2:propvalue\r\n", $property->serialize());
143 $property = $cal->createProperty(
'SUMMARY',
"line1\nline2");
145 $this->assertEquals(
"SUMMARY:line1\\nline2\r\n", $property->serialize());
152 $value = str_repeat(
'!', 200);
153 $property = $cal->createProperty(
'propname', $value);
155 $expected =
"PROPNAME:" . str_repeat(
'!', 66) .
"\r\n " . str_repeat(
'!', 74) .
"\r\n " . str_repeat(
'!', 60) .
"\r\n";
157 $this->assertEquals($expected, $property->serialize());
164 $value = str_repeat(
'!', 65) .
"\xc3\xa4bla" . str_repeat(
'!', 142) .
"\xc3\xa4foo";
165 $property = $cal->createProperty(
'propname', $value);
171 $expected =
"PROPNAME:" . str_repeat(
'!', 65) .
"\r\n \xc3\xa4bla" . str_repeat(
'!', 69) .
"\r\n " . str_repeat(
'!', 73) .
"\r\n \xc3\xa4foo\r\n";
172 $this->assertEquals($expected, $property->serialize());
180 $property = $cal->createProperty(
'propname',
'propvalue');
181 $property->setIterator($it);
182 $this->assertEquals($it, $property->getIterator());
190 $property = $cal->createProperty(
'propname',
'propvalue');
191 $it = $property->getIterator();
193 $this->assertEquals(1, count($it));
200 $property = $cal->createProperty(
'EMAIL');
202 $property->add(
'myparam',
'value');
204 $this->assertEquals(1, count($property->parameters()));
206 $this->assertTrue($property->parameters[
'MYPARAM'] instanceof
Parameter);
207 $this->assertEquals(
'MYPARAM', $property->parameters[
'MYPARAM']->name);
208 $this->assertEquals(
'value', $property->parameters[
'MYPARAM']->getValue());
215 $prop = $cal->createProperty(
'EMAIL');
217 $prop->add(
'MYPARAM',
'value');
219 $this->assertEquals(1, count($prop->parameters()));
220 $this->assertEquals(
'MYPARAM', $prop[
'myparam']->name);
227 $prop = $cal->createProperty(
'EMAIL');
229 $prop->add(
'MYPARAM',
'value1');
230 $prop->add(
'MYPARAM',
'value2');
232 $this->assertEquals(1, count($prop->parameters));
233 $this->assertEquals(2, count($prop->parameters[
'MYPARAM']->getParts()));
235 $this->assertEquals(
'MYPARAM', $prop[
'MYPARAM']->name);
243 $property = $cal->createProperty(
'EMAIL',
'value');
244 $property[
'FOO'] =
'BAR';
246 $property2 = clone $property;
248 $property[
'FOO'] =
'BAZ';
249 $this->assertEquals(
'BAR', (
string)$property2[
'FOO']);
256 $property = $cal->createProperty(
'X-PROP',
'value', [
257 'param1' =>
'value1',
258 'param2' => [
'value2',
'value3']
261 $this->assertEquals(1, count($property[
'PARAM1']->getParts()));
262 $this->assertEquals(2, count($property[
'PARAM2']->getParts()));
269 $property =
$calendar->createProperty(
'X-PROP',
"Bla\x00");
272 $this->assertEquals(
'Property contained a control character (0x00)',
$result[0][
'message']);
273 $this->assertEquals(
'Bla', $property->getValue());
281 0x7F, 0x5E, 0x5C, 0x3B, 0x3A, 0x2C, 0x22, 0x20,
282 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19, 0x18,
283 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10,
284 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08,
285 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
287 $s .= sprintf(
'%02X(%c)', $c, $c);
292 $property =
$calendar->createProperty(
'X-PROP',
$s);
295 $this->assertEquals(
'Property contained a control character (0x7f)',
$result[0][
'message']);
296 $this->assertEquals(
"chars[7F()5E(^)5C(\\\\)3B(\\;)3A(:)2C(\\,)22(\")20( )1F()1E()1D()1C()1B()1A()19()18()17()16()15()14()13()12()11()10()0F()0E()0D()0C()0B()0A(\\n)09(\t)08()07()06()05()04()03()02()01()00()]end", $property->getRawMimeDirValue());
303 $property =
$calendar->createProperty(
"X_*&PROP*",
"Bla");
306 $this->assertEquals(
$result[0][
'message'],
'The propertyname: X_*&PROP* contains invalid characters. Only A-Z, 0-9 and - are allowed');
307 $this->assertEquals(
'X-PROP', $property->name);
314 $property =
$calendar->createProperty(
"SUMMARY", null);
315 $this->assertEquals([], $property->getParts());
316 $this->assertNull($property->getValue());
318 $property->setValue([]);
319 $this->assertEquals([], $property->getParts());
320 $this->assertNull($property->getValue());
322 $property->setValue([1]);
323 $this->assertEquals([1], $property->getParts());
324 $this->assertEquals(1, $property->getValue());
326 $property->setValue([1, 2]);
327 $this->assertEquals([1, 2], $property->getParts());
328 $this->assertEquals(
'1,2', $property->getValue());
330 $property->setValue(
'str');
331 $this->assertEquals([
'str'], $property->getParts());
332 $this->assertEquals(
'str', $property->getValue());
343 $property =
$calendar->createProperty(
"X-PROP", null);
358 $property =
$calendar->createProperty(
"X-PROP", null);
368 $property = $document->add(
'X-FOO',
'value');
369 $property[
'ENCODING'] =
'invalid';
371 $result = $property->validate();
373 $this->assertEquals(
'ENCODING=INVALID is not valid for this document type.',
$result[0][
'message']);
374 $this->assertEquals(3,
$result[0][
'level']);
380 $document =
new VCard([
'VERSION' =>
'4.0']);
381 $property = $document->add(
'X-FOO',
'value');
382 $property[
'ENCODING'] =
'BASE64';
384 $result = $property->validate();
386 $this->assertEquals(
'ENCODING parameter is not valid in vCard 4.',
$result[0][
'message']);
387 $this->assertEquals(3,
$result[0][
'level']);
393 $document =
new VCard([
'VERSION' =>
'3.0']);
394 $property = $document->add(
'X-FOO',
'value');
395 $property[
'ENCODING'] =
'BASE64';
397 $result = $property->validate();
399 $this->assertEquals(
'ENCODING=BASE64 is not valid for this document type.',
$result[0][
'message']);
400 $this->assertEquals(3,
$result[0][
'level']);
406 $document =
new VCard([
'VERSION' =>
'2.1']);
407 $property = $document->add(
'X-FOO',
'value');
408 $property[
'ENCODING'] =
'B';
410 $result = $property->validate();
412 $this->assertEquals(
'ENCODING=B is not valid for this document type.',
$result[0][
'message']);
413 $this->assertEquals(3,
$result[0][
'level']);
testValidateBadEncodingVCard21()
testArrayAccessUnsetInt()
ElementList should reject this.
testSerializeUTF8LineFold()
testValidateBadPropertyName()
testValidateBadEncodingVCard3()
testValidateBadEncoding()
testValidateBadEncodingVCard4()
const REPAIR
The following constants are used by the validate() method.
testValidateControlChars()
testSetParameterAsString()
testArrayAccessSetInt()
ElementList should reject this.