* @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:----aD0nN7MlLn9DVfWNkYjNMOyIKcHLFew/HDqSoUlS6nIloXX1UpMvaFZCi0NJq8SGHX0f+2Ee3ZX+zVtIzLpUWkcgw+HFrdunQyH8GMAvvL+HfFce4zFi+LAE9Ii1fjzBF1Ch9iJbqnWdyG1iY5LueCDRHSPLddzNQfGvyH7Yk01v9/Hl811WYxEvKFGDNNj5MaJ80g+Mp1YgqmOy4FxPZQ6jJ3zWxC5RpAmNg6COx9P7YVtMZAnBcBZaAKwTKP0UWcCXFEgU8fvY9MWguGrsG02F6+Evu/V43izRtvXzFsjaQdeKnUa5yLj08HZLjQzrL1k7pEL6L9hprZS9gQy/rFvM5+bt9EvPVYg0csu9ZJPhnkFpIjrICGr7BH0AwWyejwYK6XzAdWfRydzEZiZhD5LOSbpSAP+ajLg/DxjAYK2XxMZFxJoch1rzbVqf4KkF+I0iFZjEPZwXLkrAhd2Oajs2aSqLl3VyyLdtkTZTXZ/2iRxAjr5wy67hCgHga1P0xFy3bGk1BVg6YJ6C38lW5QHGBFTheYybMfeuMUVCx6wtPB8CN+ieLdeOCVnT6nGSYPzEuSSU5FOXaoiqoY7NW95uWpmIdfS1wbY/N6wox3acP6dIU2PfyBOI4Rpg73nFas/FT7AQ6JNI6mXZxrW6U3n7N2c5ZT3tQtT7xDPjC10=----ATTACHMENT:----MzM0NDc2MTEwNTIxNTczIDI4ODQ2NjcxMTg1MzY2ODkgODM4MTUzMjI4NjE5MjA2OA==