ParameterTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. namespace Sabre\VObject;
  3. class ParameterTest extends \PHPUnit_Framework_TestCase {
  4. function testSetup() {
  5. $cal = new Component\VCalendar();
  6. $param = new Parameter($cal, 'name','value');
  7. $this->assertEquals('NAME',$param->name);
  8. $this->assertEquals('value',$param->getValue());
  9. }
  10. function testSetupNameLess() {
  11. $card = new Component\VCard();
  12. $param = new Parameter($card, null,'URL');
  13. $this->assertEquals('VALUE',$param->name);
  14. $this->assertEquals('URL',$param->getValue());
  15. $this->assertTrue($param->noName);
  16. }
  17. function testModify() {
  18. $cal = new Component\VCalendar();
  19. $param = new Parameter($cal, 'name', null);
  20. $param->addValue(1);
  21. $this->assertEquals(array(1), $param->getParts());
  22. $param->setParts(array(1,2));
  23. $this->assertEquals(array(1,2), $param->getParts());
  24. $param->addValue(3);
  25. $this->assertEquals(array(1,2,3), $param->getParts());
  26. $param->setValue(4);
  27. $param->addValue(5);
  28. $this->assertEquals(array(4,5), $param->getParts());
  29. }
  30. function testCastToString() {
  31. $cal = new Component\VCalendar();
  32. $param = new Parameter($cal, 'name', 'value');
  33. $this->assertEquals('value',$param->__toString());
  34. $this->assertEquals('value',(string)$param);
  35. }
  36. function testCastNullToString() {
  37. $cal = new Component\VCalendar();
  38. $param = new Parameter($cal, 'name', null);
  39. $this->assertEquals('',$param->__toString());
  40. $this->assertEquals('',(string)$param);
  41. }
  42. function testSerialize() {
  43. $cal = new Component\VCalendar();
  44. $param = new Parameter($cal, 'name', 'value');
  45. $this->assertEquals('NAME=value',$param->serialize());
  46. }
  47. function testSerializeEmpty() {
  48. $cal = new Component\VCalendar();
  49. $param = new Parameter($cal, 'name', null);
  50. $this->assertEquals('NAME=',$param->serialize());
  51. }
  52. function testSerializeComplex() {
  53. $cal = new Component\VCalendar();
  54. $param = new Parameter($cal, 'name',array("val1", "val2;", "val3^", "val4\n", "val5\""));
  55. $this->assertEquals('NAME=val1,"val2;","val3^^","val4^n","val5^\'"',$param->serialize());
  56. }
  57. /**
  58. * iCal 7.0 (OSX 10.9) has major issues with the EMAIL property, when the
  59. * value contains a plus sign, and it's not quoted.
  60. *
  61. * So we specifically added support for that.
  62. */
  63. function testSerializePlusSign() {
  64. $cal = new Component\VCalendar();
  65. $param = new Parameter($cal, 'EMAIL',"user+something@example.org");
  66. $this->assertEquals('EMAIL="user+something@example.org"',$param->serialize());
  67. }
  68. function testIterate() {
  69. $cal = new Component\VCalendar();
  70. $param = new Parameter($cal, 'name', array(1,2,3,4));
  71. $result = array();
  72. foreach($param as $value) {
  73. $result[] = $value;
  74. }
  75. $this->assertEquals(array(1,2,3,4), $result);
  76. }
  77. function testSerializeColon() {
  78. $cal = new Component\VCalendar();
  79. $param = new Parameter($cal, 'name','va:lue');
  80. $this->assertEquals('NAME="va:lue"',$param->serialize());
  81. }
  82. function testSerializeSemiColon() {
  83. $cal = new Component\VCalendar();
  84. $param = new Parameter($cal, 'name','va;lue');
  85. $this->assertEquals('NAME="va;lue"',$param->serialize());
  86. }
  87. }