294 lines
7.8 KiB
PHP
294 lines
7.8 KiB
PHP
<?php
|
|
|
|
namespace Sabre\VObject;
|
|
|
|
class PropertyTest extends \PHPUnit_Framework_TestCase {
|
|
|
|
public function testToString() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$this->assertEquals('PROPNAME', $property->name);
|
|
$this->assertEquals('propvalue', $property->value);
|
|
$this->assertEquals('propvalue', $property->__toString());
|
|
$this->assertEquals('propvalue', (string)$property);
|
|
|
|
}
|
|
|
|
public function testParameterExists() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$property->parameters[] = new Parameter('paramname','paramvalue');
|
|
|
|
$this->assertTrue(isset($property['PARAMNAME']));
|
|
$this->assertTrue(isset($property['paramname']));
|
|
$this->assertFalse(isset($property['foo']));
|
|
|
|
}
|
|
|
|
public function testParameterGet() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$property->parameters[] = new Parameter('paramname','paramvalue');
|
|
|
|
$this->assertInstanceOf('Sabre\\VObject\\Parameter',$property['paramname']);
|
|
|
|
}
|
|
|
|
public function testParameterNotExists() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$property->parameters[] = new Parameter('paramname','paramvalue');
|
|
|
|
$this->assertInternalType('null',$property['foo']);
|
|
|
|
}
|
|
|
|
public function testParameterMultiple() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$property->parameters[] = new Parameter('paramname','paramvalue');
|
|
$property->parameters[] = new Parameter('paramname','paramvalue');
|
|
|
|
$this->assertInstanceOf('Sabre\\VObject\\Parameter',$property['paramname']);
|
|
$this->assertEquals(2,count($property['paramname']));
|
|
|
|
}
|
|
|
|
public function testSetParameterAsString() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$property['paramname'] = 'paramvalue';
|
|
|
|
$this->assertEquals(1,count($property->parameters));
|
|
$this->assertInstanceOf('Sabre\\VObject\\Parameter', $property->parameters[0]);
|
|
$this->assertEquals('PARAMNAME',$property->parameters[0]->name);
|
|
$this->assertEquals('paramvalue',$property->parameters[0]->value);
|
|
|
|
}
|
|
|
|
/**
|
|
* @expectedException InvalidArgumentException
|
|
*/
|
|
public function testSetParameterAsStringNoKey() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$property[] = 'paramvalue';
|
|
|
|
}
|
|
|
|
public function testSetParameterObject() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$param = new Parameter('paramname','paramvalue');
|
|
|
|
$property[] = $param;
|
|
|
|
$this->assertEquals(1,count($property->parameters));
|
|
$this->assertEquals($param, $property->parameters[0]);
|
|
|
|
}
|
|
|
|
/**
|
|
* @expectedException InvalidArgumentException
|
|
*/
|
|
public function testSetParameterObjectWithKey() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$param = new Parameter('paramname','paramvalue');
|
|
|
|
$property['key'] = $param;
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @expectedException InvalidArgumentException
|
|
*/
|
|
public function testSetParameterObjectRandomObject() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$property[] = new \StdClass();
|
|
|
|
}
|
|
|
|
public function testUnsetParameter() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$param = new Parameter('paramname','paramvalue');
|
|
$property->parameters[] = $param;
|
|
|
|
unset($property['PARAMNAME']);
|
|
$this->assertEquals(0,count($property->parameters));
|
|
|
|
}
|
|
|
|
public function testParamCount() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$param = new Parameter('paramname','paramvalue');
|
|
$property->parameters[] = $param;
|
|
$property->parameters[] = clone $param;
|
|
|
|
$this->assertEquals(2,count($property->parameters));
|
|
|
|
}
|
|
|
|
public function testSerialize() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
|
|
$this->assertEquals("PROPNAME:propvalue\r\n",$property->serialize());
|
|
|
|
}
|
|
|
|
public function testSerializeParam() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$property->parameters[] = new Parameter('paramname','paramvalue');
|
|
$property->parameters[] = new Parameter('paramname2','paramvalue2');
|
|
|
|
$this->assertEquals("PROPNAME;PARAMNAME=paramvalue;PARAMNAME2=paramvalue2:propvalue\r\n",$property->serialize());
|
|
|
|
}
|
|
|
|
public function testSerializeNewLine() {
|
|
|
|
$property = new Property('propname',"line1\nline2");
|
|
|
|
$this->assertEquals("PROPNAME:line1\\nline2\r\n",$property->serialize());
|
|
|
|
}
|
|
|
|
public function testSerializeLongLine() {
|
|
|
|
$value = str_repeat('!',200);
|
|
$property = new Property('propname',$value);
|
|
|
|
$expected = "PROPNAME:" . str_repeat('!',66) . "\r\n " . str_repeat('!',74) . "\r\n " . str_repeat('!',60) . "\r\n";
|
|
|
|
$this->assertEquals($expected,$property->serialize());
|
|
|
|
}
|
|
|
|
public function testSerializeUTF8LineFold() {
|
|
|
|
$value = str_repeat('!',65) . "\xc3\xa4bla"; // inserted umlaut-a
|
|
$property = new Property('propname', $value);
|
|
$expected = "PROPNAME:" . str_repeat('!',65) . "\r\n \xc3\xa4bla\r\n";
|
|
$this->assertEquals($expected, $property->serialize());
|
|
|
|
}
|
|
|
|
public function testGetIterator() {
|
|
|
|
$it = new ElementList(array());
|
|
$property = new Property('propname','propvalue');
|
|
$property->setIterator($it);
|
|
$this->assertEquals($it,$property->getIterator());
|
|
|
|
}
|
|
|
|
|
|
public function testGetIteratorDefault() {
|
|
|
|
$property = new Property('propname','propvalue');
|
|
$it = $property->getIterator();
|
|
$this->assertTrue($it instanceof ElementList);
|
|
$this->assertEquals(1,count($it));
|
|
|
|
}
|
|
|
|
function testAddScalar() {
|
|
|
|
$property = new Property('EMAIL');
|
|
|
|
$property->add('myparam','value');
|
|
|
|
$this->assertEquals(1, count($property->parameters));
|
|
|
|
$this->assertTrue($property->parameters[0] instanceof Parameter);
|
|
$this->assertEquals('MYPARAM',$property->parameters[0]->name);
|
|
$this->assertEquals('value',$property->parameters[0]->value);
|
|
|
|
}
|
|
|
|
function testAddParameter() {
|
|
|
|
$prop = new Property('EMAIL');
|
|
|
|
$prop->add(new Parameter('MYPARAM','value'));
|
|
|
|
$this->assertEquals(1, count($prop->parameters));
|
|
$this->assertEquals('MYPARAM',$prop['myparam']->name);
|
|
|
|
}
|
|
|
|
function testAddParameterTwice() {
|
|
|
|
$prop = new Property('EMAIL');
|
|
|
|
$prop->add(new Parameter('MYPARAM', 'value1'));
|
|
$prop->add(new Parameter('MYPARAM', 'value2'));
|
|
|
|
$this->assertEquals(2, count($prop->parameters));
|
|
|
|
$this->assertEquals('MYPARAM',$prop['MYPARAM']->name);
|
|
|
|
}
|
|
|
|
/**
|
|
* @expectedException InvalidArgumentException
|
|
*/
|
|
function testAddArgFail() {
|
|
|
|
$prop = new Property('EMAIL');
|
|
$prop->add(new Parameter('MPARAM'),'hello');
|
|
|
|
}
|
|
|
|
/**
|
|
* @expectedException InvalidArgumentException
|
|
*/
|
|
function testAddArgFail2() {
|
|
|
|
$property = new Property('EMAIL','value');
|
|
$property->add(array());
|
|
|
|
}
|
|
|
|
/**
|
|
* @expectedException InvalidArgumentException
|
|
*/
|
|
function testAddArgFail3() {
|
|
|
|
$property = new Property('EMAIL','value');
|
|
$property->add('hello',array());
|
|
|
|
}
|
|
|
|
function testClone() {
|
|
|
|
$property = new Property('EMAIL','value');
|
|
$property['FOO'] = 'BAR';
|
|
|
|
$property2 = clone $property;
|
|
|
|
$property['FOO'] = 'BAZ';
|
|
$this->assertEquals('BAR', (string)$property2['FOO']);
|
|
|
|
}
|
|
|
|
function testCreateParams() {
|
|
|
|
$property = Property::create('X-PROP', 'value', array(
|
|
'param1' => 'value1',
|
|
'param2' => array('value2', 'value3')
|
|
));
|
|
|
|
$this->assertEquals(1, count($property['PARAM1']));
|
|
$this->assertEquals(2, count($property['PARAM2']));
|
|
|
|
}
|
|
|
|
}
|