Actualización

This commit is contained in:
Xes
2025-04-10 12:24:57 +02:00
parent 8969cc929d
commit 45420b6f0d
39760 changed files with 4303286 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,219 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Intl\Tests\DateFormatter;
use Symfony\Component\Intl\DateFormatter\IntlDateFormatter;
use Symfony\Component\Intl\Globals\IntlGlobals;
class IntlDateFormatterTest extends AbstractIntlDateFormatterTest
{
public function testConstructor()
{
$formatter = new IntlDateFormatter('en', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT, 'UTC', IntlDateFormatter::GREGORIAN, 'y-M-d');
$this->assertEquals('y-M-d', $formatter->getPattern());
}
public function testConstructorWithoutLocale()
{
$formatter = new IntlDateFormatter(null, IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT, 'UTC', IntlDateFormatter::GREGORIAN, 'y-M-d');
$this->assertEquals('y-M-d', $formatter->getPattern());
}
public function testConstructorWithoutCalendar()
{
$formatter = new IntlDateFormatter('en', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT, 'UTC', null, 'y-M-d');
$this->assertEquals('y-M-d', $formatter->getPattern());
}
public function testConstructorWithUnsupportedLocale()
{
$this->expectException('Symfony\Component\Intl\Exception\MethodArgumentValueNotImplementedException');
new IntlDateFormatter('pt_BR', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT);
}
public function testStaticCreate()
{
$formatter = IntlDateFormatter::create('en', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT);
$this->assertInstanceOf('\Symfony\Component\Intl\DateFormatter\IntlDateFormatter', $formatter);
}
public function testFormatWithUnsupportedTimestampArgument()
{
$formatter = $this->getDefaultDateFormatter();
$localtime = [
'tm_sec' => 59,
'tm_min' => 3,
'tm_hour' => 15,
'tm_mday' => 15,
'tm_mon' => 3,
'tm_year' => 112,
'tm_wday' => 0,
'tm_yday' => 105,
'tm_isdst' => 0,
];
try {
$formatter->format($localtime);
} catch (\Exception $e) {
$this->assertInstanceOf('Symfony\Component\Intl\Exception\MethodArgumentValueNotImplementedException', $e);
$this->assertStringEndsWith('Only integer Unix timestamps and DateTime objects are supported. Please install the "intl" extension for full localization capabilities.', $e->getMessage());
}
}
public function testFormatWithUnimplementedChars()
{
$this->expectException('Symfony\Component\Intl\Exception\NotImplementedException');
$pattern = 'Y';
$formatter = new IntlDateFormatter('en', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT, 'UTC', IntlDateFormatter::GREGORIAN, $pattern);
$formatter->format(0);
}
public function testFormatWithNonIntegerTimestamp()
{
$this->expectException('Symfony\Component\Intl\Exception\NotImplementedException');
$formatter = $this->getDefaultDateFormatter();
$formatter->format([]);
}
public function testGetErrorCode()
{
$formatter = $this->getDefaultDateFormatter();
$this->assertEquals(IntlGlobals::getErrorCode(), $formatter->getErrorCode());
}
public function testGetErrorMessage()
{
$formatter = $this->getDefaultDateFormatter();
$this->assertEquals(IntlGlobals::getErrorMessage(), $formatter->getErrorMessage());
}
public function testIsLenient()
{
$formatter = $this->getDefaultDateFormatter();
$this->assertFalse($formatter->isLenient());
}
public function testLocaltime()
{
$this->expectException('Symfony\Component\Intl\Exception\MethodNotImplementedException');
$formatter = $this->getDefaultDateFormatter();
$formatter->localtime('Wednesday, December 31, 1969 4:00:00 PM PT');
}
public function testParseWithNotNullPositionValue()
{
$this->expectException('Symfony\Component\Intl\Exception\MethodArgumentNotImplementedException');
$position = 0;
$formatter = $this->getDefaultDateFormatter('y');
$this->assertSame(0, $formatter->parse('1970', $position));
}
public function testSetCalendar()
{
$this->expectException('Symfony\Component\Intl\Exception\MethodNotImplementedException');
$formatter = $this->getDefaultDateFormatter();
$formatter->setCalendar(IntlDateFormatter::GREGORIAN);
}
public function testSetLenient()
{
$this->expectException('Symfony\Component\Intl\Exception\MethodArgumentValueNotImplementedException');
$formatter = $this->getDefaultDateFormatter();
$formatter->setLenient(true);
}
public function testFormatWithGmtTimeZoneAndMinutesOffset()
{
$this->expectException('Symfony\Component\Intl\Exception\NotImplementedException');
parent::testFormatWithGmtTimeZoneAndMinutesOffset();
}
public function testFormatWithNonStandardTimezone()
{
$this->expectException('Symfony\Component\Intl\Exception\NotImplementedException');
parent::testFormatWithNonStandardTimezone();
}
public function parseStandaloneAmPmProvider()
{
return $this->notImplemented(parent::parseStandaloneAmPmProvider());
}
public function parseDayOfWeekProvider()
{
return $this->notImplemented(parent::parseDayOfWeekProvider());
}
public function parseDayOfYearProvider()
{
return $this->notImplemented(parent::parseDayOfYearProvider());
}
public function parseQuarterProvider()
{
return $this->notImplemented(parent::parseQuarterProvider());
}
public function testParseThreeDigitsYears()
{
if (\PHP_INT_SIZE < 8) {
$this->markTestSkipped('Parsing three digits years requires a 64bit PHP.');
}
$formatter = $this->getDefaultDateFormatter('yyyy-M-d');
$this->assertSame(-32157648000, $formatter->parse('950-12-19'));
$this->assertIsIntlSuccess($formatter, 'U_ZERO_ERROR', IntlGlobals::U_ZERO_ERROR);
}
protected function getDateFormatter($locale, $datetype, $timetype, $timezone = null, $calendar = IntlDateFormatter::GREGORIAN, $pattern = null)
{
return new IntlDateFormatter($locale, $datetype, $timetype, $timezone, $calendar, $pattern);
}
protected function getIntlErrorMessage()
{
return IntlGlobals::getErrorMessage();
}
protected function getIntlErrorCode()
{
return IntlGlobals::getErrorCode();
}
protected function isIntlFailure($errorCode)
{
return IntlGlobals::isFailure($errorCode);
}
/**
* Just to document the differences between the stub and the intl
* implementations. The intl can parse any of the tested formats alone. The
* stub does not implement them as it would be needed to add more
* abstraction, passing more context to the transformers objects. Any of the
* formats are ignored alone or with date/time data (years, months, days,
* hours, minutes and seconds).
*
* Also in intl, format like 'ss E' for '10 2' (2nd day of year
* + 10 seconds) are added, then we have 86,400 seconds (24h * 60min * 60s)
* + 10 seconds
*
* @return array
*/
private function notImplemented(array $dataSets)
{
return array_map(function ($row) {
return [$row[0], $row[1], 0];
}, $dataSets);
}
}

View File

@@ -0,0 +1,85 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Intl\Tests\DateFormatter\Verification;
use Symfony\Component\Intl\DateFormatter\IntlDateFormatter;
use Symfony\Component\Intl\Tests\DateFormatter\AbstractIntlDateFormatterTest;
use Symfony\Component\Intl\Util\IntlTestHelper;
/**
* Verifies that {@link AbstractIntlDateFormatterTest} matches the behavior of
* the {@link \IntlDateFormatter} class in a specific version of ICU.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
class IntlDateFormatterTest extends AbstractIntlDateFormatterTest
{
protected function setUp()
{
IntlTestHelper::requireFullIntl($this, false);
parent::setUp();
}
/**
* @dataProvider formatTimezoneProvider
*/
public function testFormatTimezone($pattern, $timezone, $expected)
{
IntlTestHelper::requireFullIntl($this, '59.1');
parent::testFormatTimezone($pattern, $timezone, $expected);
}
public function testFormatUtcAndGmtAreSplit()
{
IntlTestHelper::requireFullIntl($this, '59.1');
parent::testFormatUtcAndGmtAreSplit();
}
/**
* @dataProvider dateAndTimeTypeProvider
*/
public function testDateAndTimeType($timestamp, $datetype, $timetype, $expected)
{
IntlTestHelper::requireFullIntl($this, '59.1');
parent::testDateAndTimeType($timestamp, $datetype, $timetype, $expected);
}
protected function getDateFormatter($locale, $datetype, $timetype, $timezone = null, $calendar = IntlDateFormatter::GREGORIAN, $pattern = null)
{
IntlTestHelper::requireFullIntl($this, '55.1');
if (!$formatter = new \IntlDateFormatter($locale, $datetype, $timetype, $timezone, $calendar, $pattern)) {
throw new \InvalidArgumentException(intl_get_error_message());
}
return $formatter;
}
protected function getIntlErrorMessage()
{
return intl_get_error_message();
}
protected function getIntlErrorCode()
{
return intl_get_error_code();
}
protected function isIntlFailure($errorCode)
{
return intl_is_failure($errorCode);
}
}