* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class DurationTest extends TestCase { public function testDuration() { $duration = new Duration('P2015Y4M25DT19H35M20S'); $this->assertEquals(2015, $duration->getYear()); $this->assertEquals(4, $duration->getMonth()); $this->assertEquals(25, $duration->getDay()); $this->assertEquals(19, $duration->getHour()); $this->assertEquals(35, $duration->getMinute()); $this->assertEquals(20, $duration->getSecond()); $this->assertEquals('P2015Y4M25DT19H35M20S', $duration->toString()); $this->assertEquals('"P2015Y4M25DT19H35M20S"', \json_encode($duration)); } public function testDurationYear() { $duration = new Duration('P2015Y'); $this->assertEquals(2015, $duration->getYear()); $this->assertEquals(0, $duration->getMonth()); $this->assertEquals(0, $duration->getDay()); $this->assertEquals(0, $duration->getHour()); $this->assertEquals(0, $duration->getMinute()); $this->assertEquals(0, $duration->getSecond()); $this->assertEquals('P2015Y', $duration->toString()); } public function testDurationMonth() { $duration = new Duration('P4M'); $this->assertEquals(0, $duration->getYear()); $this->assertEquals(4, $duration->getMonth()); $this->assertEquals(0, $duration->getDay()); $this->assertEquals(0, $duration->getHour()); $this->assertEquals(0, $duration->getMinute()); $this->assertEquals(0, $duration->getSecond()); $this->assertEquals('P4M', $duration->toString()); } public function testDurationDay() { $duration = new Duration('P25D'); $this->assertEquals(0, $duration->getYear()); $this->assertEquals(0, $duration->getMonth()); $this->assertEquals(25, $duration->getDay()); $this->assertEquals(0, $duration->getHour()); $this->assertEquals(0, $duration->getMinute()); $this->assertEquals(0, $duration->getSecond()); $this->assertEquals('P25D', $duration->toString()); } public function testDurationHour() { $duration = new Duration('PT19H'); $this->assertEquals(0, $duration->getYear()); $this->assertEquals(0, $duration->getMonth()); $this->assertEquals(0, $duration->getDay()); $this->assertEquals(19, $duration->getHour()); $this->assertEquals(0, $duration->getMinute()); $this->assertEquals(0, $duration->getSecond()); $this->assertEquals('PT19H', $duration->toString()); } public function testDurationMinute() { $duration = new Duration('PT35M'); $this->assertEquals(0, $duration->getYear()); $this->assertEquals(0, $duration->getMonth()); $this->assertEquals(0, $duration->getDay()); $this->assertEquals(0, $duration->getHour()); $this->assertEquals(35, $duration->getMinute()); $this->assertEquals(0, $duration->getSecond()); $this->assertEquals('PT35M', $duration->toString()); } public function testDurationSecond() { $duration = new Duration('PT20S'); $this->assertEquals(0, $duration->getYear()); $this->assertEquals(0, $duration->getMonth()); $this->assertEquals(0, $duration->getDay()); $this->assertEquals(0, $duration->getHour()); $this->assertEquals(0, $duration->getMinute()); $this->assertEquals(20, $duration->getSecond()); $this->assertEquals('PT20S', $duration->toString()); } public function testConstructorFull() { $duration = new Duration(1, 1, 1, 1, 1, 1); $this->assertEquals('P1Y1M1DT1H1M1S', $duration->toString()); $this->assertEquals('1.1.1.1.1.1', $duration->format('%y.%m.%d.%h.%i.%s')); } public function testToString() { $duration = new Duration(1, 1, 1, 1, 1, 1); $this->assertEquals('P1Y1M1DT1H1M1S', (string) $duration); } /** * @expectedException \InvalidArgumentException */ public function testDurationEmpty() { new Duration(''); } /** * @expectedException \InvalidArgumentException */ public function testDurationInvalid() { new Duration('foo'); } public function testGetSecondsFromInterval() { $this->assertEquals(1, Duration::getSecondsFromInterval(new DateInterval('PT1S'))); $this->assertEquals(60, Duration::getSecondsFromInterval(new DateInterval('PT60S'))); $this->assertEquals(60, Duration::getSecondsFromInterval(new DateInterval('PT1M'))); $this->assertEquals(3600, Duration::getSecondsFromInterval(new DateInterval('PT60M'))); $this->assertEquals(3600, Duration::getSecondsFromInterval(new DateInterval('PT1H'))); $this->assertEquals(86400, Duration::getSecondsFromInterval(new DateInterval('PT24H'))); $this->assertEquals(86400, Duration::getSecondsFromInterval(new DateInterval('P1D'))); $this->assertEquals(2592000, Duration::getSecondsFromInterval(new DateInterval('P30D'))); $this->assertEquals(2592000, Duration::getSecondsFromInterval(new DateInterval('P1M'))); $this->assertEquals(31104000, Duration::getSecondsFromInterval(new DateInterval('P12M'))); $this->assertEquals(31536000, Duration::getSecondsFromInterval(new DateInterval('P1Y'))); } public function testFromDateInterval() { $this->assertEquals('P2015Y4M25DT19H35M20S', Duration::fromDateInterval(new DateInterval('P2015Y4M25DT19H35M20S'))->toString()); $this->assertEquals('PT60S', Duration::fromDateInterval(new DateInterval('PT60S'))->toString()); } } __halt_compiler();----SIGNATURE:----leJ/G4Hk3VMcNiY+s4t03lZf88otOi75xEs01eUfymmsw7R0Ghon8kL0Ghos+34w3bM9/MVdQA7Y1xHBztG0d+JDLCV2PaEjedUAfXNAvgu9dtw/fA3U0PxDlUMelt+V4tRaiXcIVJTX2cDwJ40vEc3YOrFXd/yPU2y5WK5aFtviepusR8WHUCLYhcJbaBkKohPb6WXhe8T1Z1iYVg0Uw8jzAx0jCwCdB3/2jQoc27g62rmgttyiBxysgge3CYlFXy8R8lJnlk7AqlFDIXtG+M/0w/M4nlr8EnA/HBnROiS56watiNS31AksG+X556R+Krj2Y97s8ebNT8NdUFlNdDpDy6WxgmgCU4zsGzEhCw5/QpFV89p6IUQxC1H6YIv9lsdDs6Mh8zHdRLcKndxkcgx2/OUQSpxdAaFtI4GOGO7o4hBh2f+V6hXn5oO+ykcZuxwjOoZVJ7jScVJaB0zaV0Uoq/4HQhAfAU6oIKsn9WaIfN2berFtdLfoXSHmdUYhbhZTBJiQSIu5cdhq1sYExtnJFkiLka98g72H7e7pzyhwEak25QYRz8SDavzcspGOS++2XmZxOKqFe8m6cK9GBbNPyjG9GKuXlMu6LA9yzoQguuOMR9bnGKjFNUZD8lnFb0yyK5X3XokREG5MljYHB4YKXmn3LUj2zPZa8DgVj2E=----ATTACHMENT:----OTQxMTMzNTkxODAwMDgzIDc5NzAxOTc2MDExOTM3NzUgNTk2NDQzOTI4Mjc2NDQ1OQ==