mirror of
https://github.com/rlanvin/php-rrule.git
synced 2024-12-01 08:24:10 +01:00
97 lines
2.4 KiB
PHP
Executable File
97 lines
2.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace RRule\Tests;
|
|
|
|
use RRule\RfcParser;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class RfcParserTest extends TestCase
|
|
{
|
|
public function rfcLines()
|
|
{
|
|
// line, default, expected
|
|
return [
|
|
[
|
|
'RDATE;TZID=America/New_York:19970714T083000',
|
|
[],
|
|
['name' => 'RDATE', 'params' => ['TZID' => 'America/New_York'], 'value' => '19970714T083000']
|
|
],
|
|
[
|
|
'RRULE:FREQ=YEARLY;UNTIL=20170202',
|
|
[],
|
|
['name' => 'RRULE', 'params' => [], 'value' => 'FREQ=YEARLY;UNTIL=20170202']
|
|
],
|
|
[
|
|
'DTSTART=20160202T000000Z;FREQ=DAILY;UNTIL=20160205T000000Z',
|
|
['name' => 'RRULE'],
|
|
['name' => 'RRULE', 'params' => [], 'value' => 'DTSTART=20160202T000000Z;FREQ=DAILY;UNTIL=20160205T000000Z']
|
|
]
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @dataProvider rfcLines
|
|
*/
|
|
public function testParseLine($line, $default, $expected)
|
|
{
|
|
$this->assertEquals($expected, RfcParser::parseLine($line, $default));
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// RDATE
|
|
|
|
public function rdateLines()
|
|
{
|
|
return array(
|
|
array('RDATE:19970714T123000Z',
|
|
array(date_create('19970714T123000Z'))
|
|
),
|
|
array('RDATE;TZID=America/New_York:19970714T083000',
|
|
array(date_create('19970714T083000',new \DateTimeZone('America/New_York')))
|
|
),
|
|
// array('RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z,19960404T010000Z/PT3H',
|
|
// array()
|
|
// ),
|
|
array('RDATE;VALUE=DATE:19970101,19970120',
|
|
array(date_create('19970101'),date_create('19970120'))
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider rdateLines
|
|
*/
|
|
public function testParseRDate($string, $expected)
|
|
{
|
|
$dates = RfcParser::parseRDate($string);
|
|
$this->assertEquals($dates, $expected);
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// EXDATE
|
|
|
|
public function exdateLines()
|
|
{
|
|
return array(
|
|
array('EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z',
|
|
array(date_create('19960402T010000Z'),date_create('19960403T010000Z'),date_create('19960404T010000Z'))
|
|
),
|
|
array('EXDATE;TZID=America/New_York:19970714T083000',
|
|
array(date_create('19970714T083000',new \DateTimeZone('America/New_York')))
|
|
),
|
|
array('EXDATE;TZID=W. Europe Standard Time:20230915T222222',
|
|
array(date_create('20230915T222222',new \DateTimeZone('Europe/Berlin')))
|
|
),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider exdateLines
|
|
*/
|
|
public function testParseExDate($string, $expected)
|
|
{
|
|
$dates = RfcParser::parseExDate($string);
|
|
$this->assertEquals($dates, $expected);
|
|
}
|
|
}
|