public function testTimelineCustomTimezone()
{
$tz = date_default_timezone_get();
date_default_timezone_set('Europe/Paris');
$business = new Business([new Day(Days::MONDAY, [['09:00', '13:00'], ['14:00', '17:00']]), new SpecialDay(Days::FRIDAY, function (\DateTime $date) {
return [['10:00', '13:00'], ['14:00', '17:00']];
})]);
// Monday "2015-05-25 10:00:00" in Europe/Paris
$start = new \DateTime('2015-05-24 22:00', new \DateTimeZone('Pacific/Tahiti'));
$end = new \DateTime('2015-05-25 17:00');
$dates = $business->timeline($start, $end, new \DateInterval('PT1H'));
$this->assertEquals('2015-05-25 10:00', $dates[0]->format('Y-m-d H:i'));
$this->assertEquals('2015-05-25 11:00', $dates[1]->format('Y-m-d H:i'));
$this->assertEquals('2015-05-25 12:00', $dates[2]->format('Y-m-d H:i'));
$this->assertEquals('2015-05-25 13:00', $dates[3]->format('Y-m-d H:i'));
$this->assertEquals('2015-05-25 14:00', $dates[4]->format('Y-m-d H:i'));
$this->assertEquals('2015-05-25 15:00', $dates[5]->format('Y-m-d H:i'));
$this->assertEquals('2015-05-25 16:00', $dates[6]->format('Y-m-d H:i'));
$this->assertEquals('2015-05-25 17:00', $dates[7]->format('Y-m-d H:i'));
date_default_timezone_set($tz);
}