1<?php 2 3namespace Sabre\VObject; 4 5class ParameterTest extends \PHPUnit_Framework_TestCase { 6 7 function testSetup() { 8 9 $cal = new Component\VCalendar(); 10 11 $param = new Parameter($cal, 'name', 'value'); 12 $this->assertEquals('NAME', $param->name); 13 $this->assertEquals('value', $param->getValue()); 14 15 } 16 17 function testSetupNameLess() { 18 19 $card = new Component\VCard(); 20 21 $param = new Parameter($card, null, 'URL'); 22 $this->assertEquals('VALUE', $param->name); 23 $this->assertEquals('URL', $param->getValue()); 24 $this->assertTrue($param->noName); 25 26 } 27 28 function testModify() { 29 30 $cal = new Component\VCalendar(); 31 32 $param = new Parameter($cal, 'name', null); 33 $param->addValue(1); 34 $this->assertEquals([1], $param->getParts()); 35 36 $param->setParts([1, 2]); 37 $this->assertEquals([1, 2], $param->getParts()); 38 39 $param->addValue(3); 40 $this->assertEquals([1, 2, 3], $param->getParts()); 41 42 $param->setValue(4); 43 $param->addValue(5); 44 $this->assertEquals([4, 5], $param->getParts()); 45 46 } 47 48 function testCastToString() { 49 50 $cal = new Component\VCalendar(); 51 $param = new Parameter($cal, 'name', 'value'); 52 $this->assertEquals('value', $param->__toString()); 53 $this->assertEquals('value', (string)$param); 54 55 } 56 57 function testCastNullToString() { 58 59 $cal = new Component\VCalendar(); 60 $param = new Parameter($cal, 'name', null); 61 $this->assertEquals('', $param->__toString()); 62 $this->assertEquals('', (string)$param); 63 64 } 65 66 function testSerialize() { 67 68 $cal = new Component\VCalendar(); 69 $param = new Parameter($cal, 'name', 'value'); 70 $this->assertEquals('NAME=value', $param->serialize()); 71 72 } 73 74 function testSerializeEmpty() { 75 76 $cal = new Component\VCalendar(); 77 $param = new Parameter($cal, 'name', null); 78 $this->assertEquals('NAME=', $param->serialize()); 79 80 } 81 82 function testSerializeComplex() { 83 84 $cal = new Component\VCalendar(); 85 $param = new Parameter($cal, 'name', ["val1", "val2;", "val3^", "val4\n", "val5\""]); 86 $this->assertEquals('NAME=val1,"val2;","val3^^","val4^n","val5^\'"', $param->serialize()); 87 88 } 89 90 /** 91 * iCal 7.0 (OSX 10.9) has major issues with the EMAIL property, when the 92 * value contains a plus sign, and it's not quoted. 93 * 94 * So we specifically added support for that. 95 */ 96 function testSerializePlusSign() { 97 98 $cal = new Component\VCalendar(); 99 $param = new Parameter($cal, 'EMAIL', "user+something@example.org"); 100 $this->assertEquals('EMAIL="user+something@example.org"', $param->serialize()); 101 102 } 103 104 function testIterate() { 105 106 $cal = new Component\VCalendar(); 107 108 $param = new Parameter($cal, 'name', [1, 2, 3, 4]); 109 $result = []; 110 111 foreach ($param as $value) { 112 $result[] = $value; 113 } 114 115 $this->assertEquals([1, 2, 3, 4], $result); 116 117 } 118 119 function testSerializeColon() { 120 121 $cal = new Component\VCalendar(); 122 $param = new Parameter($cal, 'name', 'va:lue'); 123 $this->assertEquals('NAME="va:lue"', $param->serialize()); 124 125 } 126 127 function testSerializeSemiColon() { 128 129 $cal = new Component\VCalendar(); 130 $param = new Parameter($cal, 'name', 'va;lue'); 131 $this->assertEquals('NAME="va;lue"', $param->serialize()); 132 133 } 134 135} 136