*/ class DateIntervalNormalizerTest extends TestCase { /** * @var DateIntervalNormalizer */ private $normalizer; protected function setUp() { $this->normalizer = new DateIntervalNormalizer(); } public function dataProviderISO() { $data = array( array('P%YY%MM%DDT%HH%IM%SS', 'P00Y00M00DT00H00M00S', 'PT0S'), array('P%yY%mM%dDT%hH%iM%sS', 'P0Y0M0DT0H0M0S', 'PT0S'), array('P%yY%mM%dDT%hH%iM%sS', 'P10Y2M3DT16H5M6S', 'P10Y2M3DT16H5M6S'), array('P%yY%mM%dDT%hH%iM', 'P10Y2M3DT16H5M', 'P10Y2M3DT16H5M'), array('P%yY%mM%dDT%hH', 'P10Y2M3DT16H', 'P10Y2M3DT16H'), array('P%yY%mM%dD', 'P10Y2M3D', 'P10Y2M3DT0H'), ); return $data; } public function testSupportsNormalization() { $this->assertTrue($this->normalizer->supportsNormalization(new \DateInterval('P00Y00M00DT00H00M00S'))); $this->assertFalse($this->normalizer->supportsNormalization(new \stdClass())); } public function testNormalize() { $this->assertEquals('P0Y0M0DT0H0M0S', $this->normalizer->normalize(new \DateInterval('PT0S'))); } /** * @dataProvider dataProviderISO */ public function testNormalizeUsingFormatPassedInContext($format, $output, $input) { $this->assertEquals($output, $this->normalizer->normalize(new \DateInterval($input), null, array(DateIntervalNormalizer::FORMAT_KEY => $format))); } /** * @dataProvider dataProviderISO */ public function testNormalizeUsingFormatPassedInConstructor($format, $output, $input) { $this->assertEquals($output, (new DateIntervalNormalizer($format))->normalize(new \DateInterval($input))); } /** * @expectedException \Symfony\Component\Serializer\Exception\InvalidArgumentException * @expectedExceptionMessage The object must be an instance of "\DateInterval". */ public function testNormalizeInvalidObjectThrowsException() { $this->normalizer->normalize(new \stdClass()); } public function testSupportsDenormalization() { $this->assertTrue($this->normalizer->supportsDenormalization('P00Y00M00DT00H00M00S', \DateInterval::class)); $this->assertFalse($this->normalizer->supportsDenormalization('foo', 'Bar')); } public function testDenormalize() { $this->assertDateIntervalEquals(new \DateInterval('P00Y00M00DT00H00M00S'), $this->normalizer->denormalize('P00Y00M00DT00H00M00S', \DateInterval::class)); } /** * @dataProvider dataProviderISO */ public function testDenormalizeUsingFormatPassedInContext($format, $input, $output) { $this->assertDateIntervalEquals(new \DateInterval($output), $this->normalizer->denormalize($input, \DateInterval::class, null, array(DateIntervalNormalizer::FORMAT_KEY => $format))); } /** * @dataProvider dataProviderISO */ public function testDenormalizeUsingFormatPassedInConstructor($format, $input, $output) { $this->assertDateIntervalEquals(new \DateInterval($output), (new DateIntervalNormalizer($format))->denormalize($input, \DateInterval::class)); } /** * @expectedException \Symfony\Component\Serializer\Exception\InvalidArgumentException */ public function testDenormalizeExpectsString() { $this->normalizer->denormalize(1234, \DateInterval::class); } /** * @expectedException \Symfony\Component\Serializer\Exception\UnexpectedValueException * @expectedExceptionMessage Expected a valid ISO 8601 interval string. */ public function testDenormalizeNonISO8601IntervalStringThrowsException() { $this->normalizer->denormalize('10 years 2 months 3 days', \DateInterval::class, null); } /** * @expectedException \Symfony\Component\Serializer\Exception\UnexpectedValueException */ public function testDenormalizeInvalidDataThrowsException() { $this->normalizer->denormalize('invalid interval', \DateInterval::class); } /** * @expectedException \Symfony\Component\Serializer\Exception\UnexpectedValueException */ public function testDenormalizeFormatMismatchThrowsException() { $this->normalizer->denormalize('P00Y00M00DT00H00M00S', \DateInterval::class, null, array(DateIntervalNormalizer::FORMAT_KEY => 'P%yY%mM%dD')); } private function assertDateIntervalEquals(\DateInterval $expected, \DateInterval $actual) { $this->assertEquals($expected->format('%RP%yY%mM%dDT%hH%iM%sS'), $actual->format('%RP%yY%mM%dDT%hH%iM%sS')); } } __halt_compiler();----SIGNATURE:----hu/d6d68YPAi+GBbcRSgJAhZ/0uA/oDApV4USUdFYDhPcJ4PP/oVlXItyH+S5T44jsf0fiQijGzQWCi+rSAg/NanzTWgZtj6EeLfSiBM4+neUk+Fd1YMN4OE74CB7dZ++wavC7TYYCcKnyRPTOWPPv6pKfBS2me0uwBOcLJjTJZEGy4ptzFvfWrflnx2hiL5J7mf6RjgYoY9jo5w/Q3uC/PHn4jaeKNdYu8O/CdXFhVS+GUN6mxZKVri/JFqk/0388QM59WmLH6G1JPciofjFzdOYhHAdptM0jxp8/gyjDw3Y2s1t6SlqjkLbb5/8i75LVwnwHEkXjKiFCVkRuh13D6M174yz40sIWp4aoZuzLEZi8cOVr9VB8in1+zZuaibeLNC+HafTofazCiRrabi7YJ+fMUcXAImYo+grj+3L5lxPU0mHx9uXcZMaak75ExuJKY1EZap5JpKRht4GDNwF7kz5FuYcHkEBivq1+uWX3kpJ7ezs3ccqZjcI5CpSf/Ld7T8V+Pvs1VM8b3bx+SOPK3fuBBrdmMPJzR+CpYyaPOLGleEJOrPjjTFtCsxj7Kcb1lRy5HavVvtvl1UNBXz0k7jm8gFO9rVdY7b4pA1XYYj285PFpbU6Yn7qR+3OqbyjsvocXntgKU458ou4mi11A2dFmDCrX6D/Vw9bzIaRH8=----ATTACHMENT:----MzczMDkxMzY0MTE4OTMxOSA3Nzg3MTQxODYxNjQ2NDcwIDg1NTMyNTA1MDQwNTI5ODI=