Mercurial > hg > rc1
comparison vendor/sabre/vobject/tests/VObject/Component/VAlarmTest.php @ 7:430dbd5346f7
vendor sabre as distributed
| author | Charlie Root |
|---|---|
| date | Sat, 13 Jan 2018 09:06:10 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 6:cec75ba50afc | 7:430dbd5346f7 |
|---|---|
| 1 <?php | |
| 2 | |
| 3 namespace Sabre\VObject\Component; | |
| 4 | |
| 5 use Sabre\VObject\Component; | |
| 6 use DateTime; | |
| 7 use Sabre\VObject\Reader; | |
| 8 | |
| 9 class VAlarmTest extends \PHPUnit_Framework_TestCase { | |
| 10 | |
| 11 /** | |
| 12 * @dataProvider timeRangeTestData | |
| 13 */ | |
| 14 public function testInTimeRange(VAlarm $valarm,$start,$end,$outcome) { | |
| 15 | |
| 16 $this->assertEquals($outcome, $valarm->isInTimeRange($start, $end)); | |
| 17 | |
| 18 } | |
| 19 | |
| 20 public function timeRangeTestData() { | |
| 21 | |
| 22 $tests = array(); | |
| 23 | |
| 24 $calendar = new VCalendar(); | |
| 25 | |
| 26 // Hard date and time | |
| 27 $valarm1 = $calendar->createComponent('VALARM'); | |
| 28 $valarm1->add( | |
| 29 $calendar->createProperty('TRIGGER', '20120312T130000Z', array('VALUE' => 'DATE-TIME')) | |
| 30 ); | |
| 31 | |
| 32 $tests[] = array($valarm1, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true); | |
| 33 $tests[] = array($valarm1, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false); | |
| 34 | |
| 35 // Relation to start time of event | |
| 36 $valarm2 = $calendar->createComponent('VALARM'); | |
| 37 $valarm2->add( | |
| 38 $calendar->createProperty('TRIGGER', '-P1D', array('VALUE' => 'DURATION')) | |
| 39 ); | |
| 40 | |
| 41 $vevent2 = $calendar->createComponent('VEVENT'); | |
| 42 $vevent2->DTSTART = '20120313T130000Z'; | |
| 43 $vevent2->add($valarm2); | |
| 44 | |
| 45 $tests[] = array($valarm2, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true); | |
| 46 $tests[] = array($valarm2, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false); | |
| 47 | |
| 48 // Relation to end time of event | |
| 49 $valarm3 = $calendar->createComponent('VALARM'); | |
| 50 $valarm3->add( $calendar->createProperty('TRIGGER', '-P1D', array('VALUE'=>'DURATION', 'RELATED' => 'END')) ); | |
| 51 | |
| 52 $vevent3 = $calendar->createComponent('VEVENT'); | |
| 53 $vevent3->DTSTART = '20120301T130000Z'; | |
| 54 $vevent3->DTEND = '20120401T130000Z'; | |
| 55 $vevent3->add($valarm3); | |
| 56 | |
| 57 $tests[] = array($valarm3, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false); | |
| 58 $tests[] = array($valarm3, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true); | |
| 59 | |
| 60 // Relation to end time of todo | |
| 61 $valarm4 = $calendar->createComponent('VALARM'); | |
| 62 $valarm4->TRIGGER = '-P1D'; | |
| 63 $valarm4->TRIGGER['VALUE'] = 'DURATION'; | |
| 64 $valarm4->TRIGGER['RELATED']= 'END'; | |
| 65 | |
| 66 $vtodo4 = $calendar->createComponent('VTODO'); | |
| 67 $vtodo4->DTSTART = '20120301T130000Z'; | |
| 68 $vtodo4->DUE = '20120401T130000Z'; | |
| 69 $vtodo4->add($valarm4); | |
| 70 | |
| 71 $tests[] = array($valarm4, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false); | |
| 72 $tests[] = array($valarm4, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true); | |
| 73 | |
| 74 // Relation to start time of event + repeat | |
| 75 $valarm5 = $calendar->createComponent('VALARM'); | |
| 76 $valarm5->TRIGGER = '-P1D'; | |
| 77 $valarm5->TRIGGER['VALUE'] = 'DURATION'; | |
| 78 $valarm5->REPEAT = 10; | |
| 79 $valarm5->DURATION = 'P1D'; | |
| 80 | |
| 81 $vevent5 = $calendar->createComponent('VEVENT'); | |
| 82 $vevent5->DTSTART = '20120301T130000Z'; | |
| 83 $vevent5->add($valarm5); | |
| 84 | |
| 85 $tests[] = array($valarm5, new DateTime('2012-03-09 01:00:00'), new DateTime('2012-03-10 01:00:00'), true); | |
| 86 | |
| 87 // Relation to start time of event + duration, but no repeat | |
| 88 $valarm6 = $calendar->createComponent('VALARM'); | |
| 89 $valarm6->TRIGGER = '-P1D'; | |
| 90 $valarm6->TRIGGER['VALUE'] = 'DURATION'; | |
| 91 $valarm6->DURATION = 'P1D'; | |
| 92 | |
| 93 $vevent6 = $calendar->createComponent('VEVENT'); | |
| 94 $vevent6->DTSTART = '20120313T130000Z'; | |
| 95 $vevent6->add($valarm6); | |
| 96 | |
| 97 $tests[] = array($valarm6, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true); | |
| 98 $tests[] = array($valarm6, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false); | |
| 99 | |
| 100 | |
| 101 // Relation to end time of event (DURATION instead of DTEND) | |
| 102 $valarm7 = $calendar->createComponent('VALARM'); | |
| 103 $valarm7->TRIGGER = '-P1D'; | |
| 104 $valarm7->TRIGGER['VALUE'] = 'DURATION'; | |
| 105 $valarm7->TRIGGER['RELATED']= 'END'; | |
| 106 | |
| 107 $vevent7 = $calendar->createComponent('VEVENT'); | |
| 108 $vevent7->DTSTART = '20120301T130000Z'; | |
| 109 $vevent7->DURATION = 'P30D'; | |
| 110 $vevent7->add($valarm7); | |
| 111 | |
| 112 $tests[] = array($valarm7, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false); | |
| 113 $tests[] = array($valarm7, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true); | |
| 114 | |
| 115 // Relation to end time of event (No DTEND or DURATION) | |
| 116 $valarm7 = $calendar->createComponent('VALARM'); | |
| 117 $valarm7->TRIGGER = '-P1D'; | |
| 118 $valarm7->TRIGGER['VALUE'] = 'DURATION'; | |
| 119 $valarm7->TRIGGER['RELATED']= 'END'; | |
| 120 | |
| 121 $vevent7 = $calendar->createComponent('VEVENT'); | |
| 122 $vevent7->DTSTART = '20120301T130000Z'; | |
| 123 $vevent7->add($valarm7); | |
| 124 | |
| 125 $tests[] = array($valarm7, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), true); | |
| 126 $tests[] = array($valarm7, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), false); | |
| 127 | |
| 128 | |
| 129 return $tests; | |
| 130 } | |
| 131 | |
| 132 /** | |
| 133 * @expectedException LogicException | |
| 134 */ | |
| 135 public function testInTimeRangeInvalidComponent() { | |
| 136 | |
| 137 $calendar = new VCalendar(); | |
| 138 $valarm = $calendar->createComponent('VALARM'); | |
| 139 $valarm->TRIGGER = '-P1D'; | |
| 140 $valarm->TRIGGER['RELATED'] = 'END'; | |
| 141 | |
| 142 $vjournal = $calendar->createComponent('VJOURNAL'); | |
| 143 $vjournal->add($valarm); | |
| 144 | |
| 145 $valarm->isInTimeRange(new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00')); | |
| 146 | |
| 147 } | |
| 148 | |
| 149 /** | |
| 150 * This bug was found and reported on the mailing list. | |
| 151 */ | |
| 152 public function testInTimeRangeBuggy() { | |
| 153 | |
| 154 $input = <<<BLA | |
| 155 BEGIN:VCALENDAR | |
| 156 BEGIN:VTODO | |
| 157 DTSTAMP:20121003T064931Z | |
| 158 UID:b848cb9a7bb16e464a06c222ca1f8102@examle.com | |
| 159 STATUS:NEEDS-ACTION | |
| 160 DUE:20121005T000000Z | |
| 161 SUMMARY:Task 1 | |
| 162 CATEGORIES:AlarmCategory | |
| 163 BEGIN:VALARM | |
| 164 TRIGGER:-PT10M | |
| 165 ACTION:DISPLAY | |
| 166 DESCRIPTION:Task 1 | |
| 167 END:VALARM | |
| 168 END:VTODO | |
| 169 END:VCALENDAR | |
| 170 BLA; | |
| 171 | |
| 172 $vobj = Reader::read($input); | |
| 173 | |
| 174 $this->assertTrue($vobj->VTODO->VALARM->isInTimeRange(new \DateTime('2012-10-01 00:00:00'), new \DateTime('2012-11-01 00:00:00'))); | |
| 175 | |
| 176 } | |
| 177 | |
| 178 } | |
| 179 |
