]> git.mxchange.org Git - friendica-addons.git/blob - dav/sabre-vobject/tests/Sabre/VObject/PropertyTest.php
Second part of refactoring; should be runnable again, yet not thoroughly tested
[friendica-addons.git] / dav / sabre-vobject / tests / Sabre / VObject / PropertyTest.php
1 <?php
2
3 namespace Sabre\VObject;
4
5 class PropertyTest extends \PHPUnit_Framework_TestCase {
6
7     public function testToString() {
8
9         $property = new Property('propname','propvalue');
10         $this->assertEquals('PROPNAME', $property->name);
11         $this->assertEquals('propvalue', $property->value);
12         $this->assertEquals('propvalue', $property->__toString());
13         $this->assertEquals('propvalue', (string)$property);
14
15     }
16
17     public function testParameterExists() {
18
19         $property = new Property('propname','propvalue');
20         $property->parameters[] = new Parameter('paramname','paramvalue');
21
22         $this->assertTrue(isset($property['PARAMNAME']));
23         $this->assertTrue(isset($property['paramname']));
24         $this->assertFalse(isset($property['foo']));
25
26     }
27
28     public function testParameterGet() {
29
30         $property = new Property('propname','propvalue');
31         $property->parameters[] = new Parameter('paramname','paramvalue');
32
33         $this->assertInstanceOf('Sabre\\VObject\\Parameter',$property['paramname']);
34
35     }
36
37     public function testParameterNotExists() {
38
39         $property = new Property('propname','propvalue');
40         $property->parameters[] = new Parameter('paramname','paramvalue');
41
42         $this->assertInternalType('null',$property['foo']);
43
44     }
45
46     public function testParameterMultiple() {
47
48         $property = new Property('propname','propvalue');
49         $property->parameters[] = new Parameter('paramname','paramvalue');
50         $property->parameters[] = new Parameter('paramname','paramvalue');
51
52         $this->assertInstanceOf('Sabre\\VObject\\Parameter',$property['paramname']);
53         $this->assertEquals(2,count($property['paramname']));
54
55     }
56
57     public function testSetParameterAsString() {
58
59         $property = new Property('propname','propvalue');
60         $property['paramname'] = 'paramvalue';
61
62         $this->assertEquals(1,count($property->parameters));
63         $this->assertInstanceOf('Sabre\\VObject\\Parameter', $property->parameters[0]);
64         $this->assertEquals('PARAMNAME',$property->parameters[0]->name);
65         $this->assertEquals('paramvalue',$property->parameters[0]->value);
66
67     }
68
69     /**
70      * @expectedException InvalidArgumentException
71      */
72     public function testSetParameterAsStringNoKey() {
73
74         $property = new Property('propname','propvalue');
75         $property[] = 'paramvalue';
76
77     }
78
79     public function testSetParameterObject() {
80
81         $property = new Property('propname','propvalue');
82         $param = new Parameter('paramname','paramvalue');
83
84         $property[] = $param;
85
86         $this->assertEquals(1,count($property->parameters));
87         $this->assertEquals($param, $property->parameters[0]);
88
89     }
90
91     /**
92      * @expectedException InvalidArgumentException
93      */
94     public function testSetParameterObjectWithKey() {
95
96         $property = new Property('propname','propvalue');
97         $param = new Parameter('paramname','paramvalue');
98
99         $property['key'] = $param;
100
101     }
102
103
104     /**
105      * @expectedException InvalidArgumentException
106      */
107     public function testSetParameterObjectRandomObject() {
108
109         $property = new Property('propname','propvalue');
110         $property[] = new \StdClass();
111
112     }
113
114     public function testUnsetParameter() {
115
116         $property = new Property('propname','propvalue');
117         $param = new Parameter('paramname','paramvalue');
118         $property->parameters[] = $param;
119
120         unset($property['PARAMNAME']);
121         $this->assertEquals(0,count($property->parameters));
122
123     }
124
125     public function testParamCount() {
126
127         $property = new Property('propname','propvalue');
128         $param = new Parameter('paramname','paramvalue');
129         $property->parameters[] = $param;
130         $property->parameters[] = clone $param;
131
132         $this->assertEquals(2,count($property->parameters));
133
134     }
135
136     public function testSerialize() {
137
138         $property = new Property('propname','propvalue');
139
140         $this->assertEquals("PROPNAME:propvalue\r\n",$property->serialize());
141
142     }
143
144     public function testSerializeParam() {
145
146         $property = new Property('propname','propvalue');
147         $property->parameters[] = new Parameter('paramname','paramvalue');
148         $property->parameters[] = new Parameter('paramname2','paramvalue2');
149
150         $this->assertEquals("PROPNAME;PARAMNAME=paramvalue;PARAMNAME2=paramvalue2:propvalue\r\n",$property->serialize());
151
152     }
153
154     public function testSerializeNewLine() {
155
156         $property = new Property('propname',"line1\nline2");
157
158         $this->assertEquals("PROPNAME:line1\\nline2\r\n",$property->serialize());
159
160     }
161
162     public function testSerializeLongLine() {
163
164         $value = str_repeat('!',200);
165         $property = new Property('propname',$value);
166
167         $expected = "PROPNAME:" . str_repeat('!',66) . "\r\n " . str_repeat('!',74) . "\r\n " . str_repeat('!',60) . "\r\n";
168
169         $this->assertEquals($expected,$property->serialize());
170
171     }
172
173     public function testSerializeUTF8LineFold() {
174
175         $value = str_repeat('!',65) . "\xc3\xa4bla"; // inserted umlaut-a
176         $property = new Property('propname', $value);
177         $expected = "PROPNAME:" . str_repeat('!',65) . "\r\n \xc3\xa4bla\r\n";
178         $this->assertEquals($expected, $property->serialize());
179
180     }
181
182     public function testGetIterator() {
183
184         $it = new ElementList(array());
185         $property = new Property('propname','propvalue');
186         $property->setIterator($it);
187         $this->assertEquals($it,$property->getIterator());
188
189     }
190
191
192     public function testGetIteratorDefault() {
193
194         $property = new Property('propname','propvalue');
195         $it = $property->getIterator();
196         $this->assertTrue($it instanceof ElementList);
197         $this->assertEquals(1,count($it));
198
199     }
200
201     function testAddScalar() {
202
203         $property = new Property('EMAIL');
204
205         $property->add('myparam','value');
206
207         $this->assertEquals(1, count($property->parameters));
208
209         $this->assertTrue($property->parameters[0] instanceof Parameter);
210         $this->assertEquals('MYPARAM',$property->parameters[0]->name);
211         $this->assertEquals('value',$property->parameters[0]->value);
212
213     }
214
215     function testAddParameter() {
216
217         $prop = new Property('EMAIL');
218
219         $prop->add(new Parameter('MYPARAM','value'));
220
221         $this->assertEquals(1, count($prop->parameters));
222         $this->assertEquals('MYPARAM',$prop['myparam']->name);
223
224     }
225
226     function testAddParameterTwice() {
227
228         $prop = new Property('EMAIL');
229
230         $prop->add(new Parameter('MYPARAM', 'value1'));
231         $prop->add(new Parameter('MYPARAM', 'value2'));
232
233         $this->assertEquals(2, count($prop->parameters));
234
235         $this->assertEquals('MYPARAM',$prop['MYPARAM']->name);
236
237     }
238
239     /**
240      * @expectedException InvalidArgumentException
241      */
242     function testAddArgFail() {
243
244         $prop = new Property('EMAIL');
245         $prop->add(new Parameter('MPARAM'),'hello');
246
247     }
248
249     /**
250      * @expectedException InvalidArgumentException
251      */
252     function testAddArgFail2() {
253
254         $property = new Property('EMAIL','value');
255         $property->add(array());
256
257     }
258
259     /**
260      * @expectedException InvalidArgumentException
261      */
262     function testAddArgFail3() {
263
264         $property = new Property('EMAIL','value');
265         $property->add('hello',array());
266
267     }
268
269     function testClone() {
270
271         $property = new Property('EMAIL','value');
272         $property['FOO'] = 'BAR';
273
274         $property2 = clone $property;
275         
276         $property['FOO'] = 'BAZ';
277         $this->assertEquals('BAR', (string)$property2['FOO']);
278
279     }
280
281     function testCreateParams() {
282
283         $property = Property::create('X-PROP', 'value', array(
284             'param1' => 'value1',
285             'param2' => array('value2', 'value3')
286         ));
287
288         $this->assertEquals(1, count($property['PARAM1']));
289         $this->assertEquals(2, count($property['PARAM2']));
290
291     }
292
293 }