3 class Sabre_VObject_PropertyTest extends PHPUnit_Framework_TestCase {
5 public function testToString() {
7 $property = new Sabre_VObject_Property('propname','propvalue');
8 $this->assertEquals('PROPNAME', $property->name);
9 $this->assertEquals('propvalue', $property->value);
10 $this->assertEquals('propvalue', $property->__toString());
11 $this->assertEquals('propvalue', (string)$property);
15 public function testParameterExists() {
17 $property = new Sabre_VObject_Property('propname','propvalue');
18 $property->parameters[] = new Sabre_VObject_Parameter('paramname','paramvalue');
20 $this->assertTrue(isset($property['PARAMNAME']));
21 $this->assertTrue(isset($property['paramname']));
22 $this->assertFalse(isset($property['foo']));
26 public function testParameterGet() {
28 $property = new Sabre_VObject_Property('propname','propvalue');
29 $property->parameters[] = new Sabre_VObject_Parameter('paramname','paramvalue');
31 $this->assertInstanceOf('Sabre_VObject_Parameter',$property['paramname']);
35 public function testParameterNotExists() {
37 $property = new Sabre_VObject_Property('propname','propvalue');
38 $property->parameters[] = new Sabre_VObject_Parameter('paramname','paramvalue');
40 $this->assertInternalType('null',$property['foo']);
44 public function testParameterMultiple() {
46 $property = new Sabre_VObject_Property('propname','propvalue');
47 $property->parameters[] = new Sabre_VObject_Parameter('paramname','paramvalue');
48 $property->parameters[] = new Sabre_VObject_Parameter('paramname','paramvalue');
50 $this->assertInstanceOf('Sabre_VObject_Parameter',$property['paramname']);
51 $this->assertEquals(2,count($property['paramname']));
55 public function testSetParameterAsString() {
57 $property = new Sabre_VObject_Property('propname','propvalue');
58 $property['paramname'] = 'paramvalue';
60 $this->assertEquals(1,count($property->parameters));
61 $this->assertInstanceOf('Sabre_VObject_Parameter', $property->parameters[0]);
62 $this->assertEquals('PARAMNAME',$property->parameters[0]->name);
63 $this->assertEquals('paramvalue',$property->parameters[0]->value);
68 * @expectedException InvalidArgumentException
70 public function testSetParameterAsStringNoKey() {
72 $property = new Sabre_VObject_Property('propname','propvalue');
73 $property[] = 'paramvalue';
77 public function testSetParameterObject() {
79 $property = new Sabre_VObject_Property('propname','propvalue');
80 $param = new Sabre_VObject_Parameter('paramname','paramvalue');
84 $this->assertEquals(1,count($property->parameters));
85 $this->assertEquals($param, $property->parameters[0]);
90 * @expectedException InvalidArgumentException
92 public function testSetParameterObjectWithKey() {
94 $property = new Sabre_VObject_Property('propname','propvalue');
95 $param = new Sabre_VObject_Parameter('paramname','paramvalue');
97 $property['key'] = $param;
103 * @expectedException InvalidArgumentException
105 public function testSetParameterObjectRandomObject() {
107 $property = new Sabre_VObject_Property('propname','propvalue');
108 $property[] = new StdClass();
112 public function testUnsetParameter() {
114 $property = new Sabre_VObject_Property('propname','propvalue');
115 $param = new Sabre_VObject_Parameter('paramname','paramvalue');
116 $property->parameters[] = $param;
118 unset($property['PARAMNAME']);
119 $this->assertEquals(0,count($property->parameters));
123 public function testParamCount() {
125 $property = new Sabre_VObject_Property('propname','propvalue');
126 $param = new Sabre_VObject_Parameter('paramname','paramvalue');
127 $property->parameters[] = $param;
128 $property->parameters[] = clone $param;
130 $this->assertEquals(2,count($property->parameters));
134 public function testSerialize() {
136 $property = new Sabre_VObject_Property('propname','propvalue');
138 $this->assertEquals("PROPNAME:propvalue\r\n",$property->serialize());
142 public function testSerializeParam() {
144 $property = new Sabre_VObject_Property('propname','propvalue');
145 $property->parameters[] = new Sabre_VObject_Parameter('paramname','paramvalue');
146 $property->parameters[] = new Sabre_VObject_Parameter('paramname2','paramvalue2');
148 $this->assertEquals("PROPNAME;PARAMNAME=paramvalue;PARAMNAME2=paramvalue2:propvalue\r\n",$property->serialize());
152 public function testSerializeNewLine() {
154 $property = new Sabre_VObject_Property('propname',"line1\nline2");
156 $this->assertEquals("PROPNAME:line1\\nline2\r\n",$property->serialize());
160 public function testSerializeLongLine() {
162 $value = str_repeat('!',200);
163 $property = new Sabre_VObject_Property('propname',$value);
165 $expected = "PROPNAME:" . str_repeat('!',66) . "\r\n " . str_repeat('!',74) . "\r\n " . str_repeat('!',60) . "\r\n";
167 $this->assertEquals($expected,$property->serialize());
171 public function testSerializeUTF8LineFold() {
173 $value = str_repeat('!',65) . "\xc3\xa4bla"; // inserted umlaut-a
174 $property = new Sabre_VObject_Property('propname', $value);
175 $expected = "PROPNAME:" . str_repeat('!',65) . "\r\n \xc3\xa4bla\r\n";
176 $this->assertEquals($expected, $property->serialize());
180 public function testGetIterator() {
182 $it = new Sabre_VObject_ElementList(array());
183 $property = new Sabre_VObject_Property('propname','propvalue', $it);
184 $this->assertEquals($it,$property->getIterator());
189 public function testGetIteratorDefault() {
191 $property = new Sabre_VObject_Property('propname','propvalue');
192 $it = $property->getIterator();
193 $this->assertTrue($it instanceof Sabre_VObject_ElementList);
194 $this->assertEquals(1,count($it));
198 function testAddScalar() {
200 $property = new Sabre_VObject_Property('EMAIL');
202 $property->add('myparam','value');
204 $this->assertEquals(1, count($property->parameters));
206 $this->assertTrue($property->parameters[0] instanceof Sabre_VObject_Parameter);
207 $this->assertEquals('MYPARAM',$property->parameters[0]->name);
208 $this->assertEquals('value',$property->parameters[0]->value);
212 function testAddParameter() {
214 $prop = new Sabre_VObject_Property('EMAIL');
216 $prop->add(new Sabre_VObject_Parameter('MYPARAM','value'));
218 $this->assertEquals(1, count($prop->parameters));
219 $this->assertEquals('MYPARAM',$prop['myparam']->name);
223 function testAddParameterTwice() {
225 $prop = new Sabre_VObject_Property('EMAIL');
227 $prop->add(new Sabre_VObject_Parameter('MYPARAM', 'value1'));
228 $prop->add(new Sabre_VObject_Parameter('MYPARAM', 'value2'));
230 $this->assertEquals(2, count($prop->parameters));
232 $this->assertEquals('MYPARAM',$prop['MYPARAM']->name);
237 * @expectedException InvalidArgumentException
239 function testAddArgFail() {
241 $prop = new Sabre_VObject_Property('EMAIL');
242 $prop->add(new Sabre_VObject_Parameter('MPARAM'),'hello');
247 * @expectedException InvalidArgumentException
249 function testAddArgFail2() {
251 $property = new Sabre_VObject_Property('EMAIL','value');
252 $property->add(array());
257 * @expectedException InvalidArgumentException
259 function testAddArgFail3() {
261 $property = new Sabre_VObject_Property('EMAIL','value');
262 $property->add('hello',array());
266 function testClone() {
268 $property = new Sabre_VObject_Property('EMAIL','value');
269 $property['FOO'] = 'BAR';
271 $property2 = clone $property;
273 $property['FOO'] = 'BAZ';
274 $this->assertEquals('BAR', (string)$property2['FOO']);