public function testMagicGet()
{
// Basic types
$timeZone = new \DateTimeZone('Etc/GMT-7');
$time = new Time('2009-10-10', $timeZone);
$this->assertEquals('2009-10-10T00:00:00+0700', $time->sql);
$this->assertEquals('Sat, 10 Oct 09 00:00:00 +0700', $time->email);
$this->assertEquals('2009-10-10T00:00:00+07:00', $time->web);
$this->assertEquals('Saturday, 10-Oct-2009 00:00:00 GMT-7', $time->cookie);
$this->assertEquals('Sat, 10 Oct 2009 00:00:00 +0700', $time->rss);
$this->assertEquals('1255107600', $time->unix);
$this->assertEquals('Fri, 09 Oct 2009 17:00:00 GMT', $time->http);
$this->assertEquals(sprintf('10. %s 2009 v 0:00', mb_strtolower(_('October#~Genitive'), 'utf-8')), $time->extended);
$this->assertEquals(sprintf('10. %s 2009 v 0:00', mb_strtolower(_('October#~Genitive'), 'utf-8')), $time->full);
// Interval
$this->assertEquals(sprintf(ngettext('Day ago', '%s days ago', 5), 5), Time::get('-5 day')->interval);
$this->assertEquals(sprintf(ngettext('In day', 'In %s days', 5), 5), Time::get('+5 day')->interval);
// Full
$this->assertEquals(sprintf(ngettext('Minute ago', '%s minutes ago', 59), 59), Time::get('-59 minutes')->full);
$this->assertNotEquals(sprintf(ngettext('Minute ago', '%s minutes ago', 60), 60), Time::get('-60 minutes')->full);
$this->assertEquals(sprintf(ngettext('In minute', 'In %s minutes', 59), 59), Time::get('+59 minutes')->full);
$this->assertNotEquals(sprintf(ngettext('In minute', 'In %s minutes', 60), 60), Time::get('+60 minutes')->full);
// Result rounding
$this->assertEquals(sprintf(ngettext('Minute ago', '%s minutes ago', 1), 1), Time::get('-89 seconds')->full);
$this->assertEquals(sprintf(ngettext('Minute ago', '%s minutes ago', 2), 2), Time::get('-90 seconds')->full);
$this->assertEquals(sprintf(ngettext('In minute', 'In %s minutes', 2), 2), Time::get('+149 seconds')->full);
$this->assertEquals(sprintf(ngettext('In minute', 'In %s minutes', 3), 3), Time::get('+150 seconds')->full);
// Unknown type
try {
$this->assertEquals('', $time->unknown);
$this->fail(sprintf('Expected exception %s.', \InvalidArgumentException::class));
} catch (\PHPUnit_Framework_AssertionFailedError $e) {
throw $e;
} catch (\Exception $e) {
// Correctly thrown exception
$this->assertInstanceOf(\InvalidArgumentException::class, $e);
}
}