Files
PhpSpreadsheet/tests/PhpSpreadsheetTests/Style/NumberFormat/Wizard/NumberTest.php
T
oleibman 684c677937 Document NumberFormat Wizard Dependency on Intl Extension
Intl is only a "suggested" extension. A lot of the NumberFormat Wizard code depends on it. That's insufficient reason to make it required, but the suggestion text now mentions this dependency explicitly. Also clean up the Wizard documentation to reflect some changes since PhpSpreadsheet 1.28.
2025-09-17 23:04:31 -07:00

75 lines
2.2 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpOffice\PhpSpreadsheetTests\Style\NumberFormat\Wizard;
use NumberFormatter;
use PhpOffice\PhpSpreadsheet\Exception;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat\Wizard\Number;
use PHPUnit\Framework\TestCase;
class NumberTest extends TestCase
{
#[\PHPUnit\Framework\Attributes\DataProvider('providerNumber')]
public function testNumber(string $expectedResult, int $decimals, bool $thousandsSeparator): void
{
$wizard = new Number($decimals, $thousandsSeparator);
self::assertSame($expectedResult, (string) $wizard);
}
public static function providerNumber(): array
{
return [
['0', 0, Number::WITHOUT_THOUSANDS_SEPARATOR],
['#,##0', 0, Number::WITH_THOUSANDS_SEPARATOR],
['0.0', 1, Number::WITHOUT_THOUSANDS_SEPARATOR],
['#,##0.0', 1, Number::WITH_THOUSANDS_SEPARATOR],
['0.00', 2, Number::WITHOUT_THOUSANDS_SEPARATOR],
['#,##0.00', 2, Number::WITH_THOUSANDS_SEPARATOR],
];
}
#[\PHPUnit\Framework\Attributes\DataProvider('providerNumberLocale')]
public function testNumberLocale(
string $expectedResult,
string $locale
): void {
if (class_exists(NumberFormatter::class) === false) {
self::markTestSkipped('Intl extension is not available');
}
$wizard = new Number(2);
$wizard->setLocale($locale);
self::assertSame($expectedResult, (string) $wizard);
}
public static function providerNumberLocale(): array
{
return [
['#,##0.00', 'en-us'],
];
}
public function testNumberLocaleInvalidFormat(): void
{
if (class_exists(NumberFormatter::class) === false) {
self::markTestSkipped('Intl extension is not available');
}
$locale = 'en-usa';
$this->expectException(Exception::class);
$this->expectExceptionMessage("Invalid locale code '{$locale}'");
$wizard = new Number(2);
$wizard->setLocale($locale);
}
public function testNonOverriddenFormat(): void
{
$wizard = new NumberBase2();
self::assertSame('General', $wizard->format());
}
}