| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- <?php
- namespace PhpOffice\PhpSpreadsheetTests\Shared;
- use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
- use PHPUnit\Framework\TestCase;
- class StringHelperTest extends TestCase
- {
- /**
- * @var string
- */
- private $currencyCode;
- /**
- * @var string
- */
- private $decimalSeparator;
- /**
- * @var string
- */
- private $thousandsSeparator;
- protected function setUp(): void
- {
- parent::setUp();
- $this->currencyCode = StringHelper::getCurrencyCode();
- $this->decimalSeparator = StringHelper::getDecimalSeparator();
- $this->thousandsSeparator = StringHelper::getThousandsSeparator();
- }
- protected function tearDown(): void
- {
- StringHelper::setCurrencyCode($this->currencyCode);
- StringHelper::setDecimalSeparator($this->decimalSeparator);
- StringHelper::setThousandsSeparator($this->thousandsSeparator);
- }
- public function testGetIsIconvEnabled(): void
- {
- $result = StringHelper::getIsIconvEnabled();
- self::assertTrue($result);
- }
- public function testGetDecimalSeparator(): void
- {
- $localeconv = localeconv();
- $expectedResult = (!empty($localeconv['decimal_point'])) ? $localeconv['decimal_point'] : ',';
- $result = StringHelper::getDecimalSeparator();
- self::assertEquals($expectedResult, $result);
- }
- public function testSetDecimalSeparator(): void
- {
- $expectedResult = ',';
- StringHelper::setDecimalSeparator($expectedResult);
- $result = StringHelper::getDecimalSeparator();
- self::assertEquals($expectedResult, $result);
- }
- public function testGetThousandsSeparator(): void
- {
- $localeconv = localeconv();
- $expectedResult = (!empty($localeconv['thousands_sep'])) ? $localeconv['thousands_sep'] : ',';
- $result = StringHelper::getThousandsSeparator();
- self::assertEquals($expectedResult, $result);
- }
- public function testSetThousandsSeparator(): void
- {
- $expectedResult = ' ';
- StringHelper::setThousandsSeparator($expectedResult);
- $result = StringHelper::getThousandsSeparator();
- self::assertEquals($expectedResult, $result);
- }
- public function testGetCurrencyCode(): void
- {
- $localeconv = localeconv();
- $expectedResult = (!empty($localeconv['currency_symbol']) ? $localeconv['currency_symbol'] : (!empty($localeconv['int_curr_symbol']) ? $localeconv['int_curr_symbol'] : '$'));
- $result = StringHelper::getCurrencyCode();
- self::assertEquals($expectedResult, $result);
- }
- public function testSetCurrencyCode(): void
- {
- $expectedResult = '£';
- StringHelper::setCurrencyCode($expectedResult);
- $result = StringHelper::getCurrencyCode();
- self::assertEquals($expectedResult, $result);
- }
- public function testControlCharacterPHP2OOXML(): void
- {
- $expectedResult = 'foo_x000B_bar';
- $result = StringHelper::controlCharacterPHP2OOXML('foo' . chr(11) . 'bar');
- self::assertEquals($expectedResult, $result);
- }
- public function testControlCharacterOOXML2PHP(): void
- {
- $expectedResult = 'foo' . chr(11) . 'bar';
- $result = StringHelper::controlCharacterOOXML2PHP('foo_x000B_bar');
- self::assertEquals($expectedResult, $result);
- }
- public function testSYLKtoUTF8(): void
- {
- $expectedResult = 'foo' . chr(11) . 'bar';
- $result = StringHelper::SYLKtoUTF8("foo\x1B ;bar");
- self::assertEquals($expectedResult, $result);
- }
- /**
- * @dataProvider providerFractions
- */
- public function testFraction(string $expected, string $value): void
- {
- $originalValue = $value;
- $result = StringHelper::convertToNumberIfFraction($value);
- if ($result === false) {
- self::assertSame($expected, $originalValue);
- self::assertSame($expected, $value);
- } else {
- self::assertSame($expected, (string) $value);
- self::assertNotEquals($value, $originalValue);
- }
- }
- public function providerFractions(): array
- {
- return [
- 'non-fraction' => ['1', '1'],
- 'common fraction' => ['1.5', '1 1/2'],
- 'fraction between -1 and 0' => ['-0.5', '-1/2'],
- 'fraction between -1 and 0 with space' => ['-0.5', ' - 1/2'],
- 'fraction between 0 and 1' => ['0.75', '3/4 '],
- 'fraction between 0 and 1 with space' => ['0.75', ' 3/4'],
- 'improper fraction' => ['1.75', '7/4'],
- ];
- }
- }
|