Initial Formula Translation tests (#1886)

* Initial Formula Translation tests
This commit is contained in:
Mark Baker 2021-02-28 13:18:51 +01:00 committed by GitHub
parent ee969fdcfe
commit 1d6f36d8df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 103 additions and 0 deletions

View File

@ -18,6 +18,10 @@ $helper->logRead('Xlsx', $filename2, $callStartTime);
foreach ($spreadsheet2->getSheetNames() as $sheetName) { foreach ($spreadsheet2->getSheetNames() as $sheetName) {
$sheet = $spreadsheet2->getSheetByName($sheetName); $sheet = $spreadsheet2->getSheetByName($sheetName);
if ($sheet === null) {
continue;
}
$sheet->setTitle($sheet->getTitle() . ' copied'); $sheet->setTitle($sheet->getTitle() . ' copied');
$spreadsheet1->addExternalSheet($sheet); $spreadsheet1->addExternalSheet($sheet);
} }

View File

@ -0,0 +1,51 @@
<?php
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
use PhpOffice\PhpSpreadsheet\Settings;
use PHPUnit\Framework\TestCase;
class TranslationTest extends TestCase
{
private $compatibilityMode;
private $returnDate;
protected function setUp(): void
{
$this->compatibilityMode = Functions::getCompatibilityMode();
$this->returnDate = Functions::getReturnDateType();
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
}
protected function tearDown(): void
{
Functions::setCompatibilityMode($this->compatibilityMode);
Functions::setReturnDateType($this->returnDate);
}
/**
* @dataProvider providerTranslations
*/
public function testTranslation(string $expectedResult, string $locale, string $formula): void
{
$validLocale = Settings::setLocale($locale);
if (!$validLocale) {
self::markTestSkipped("Unable to set locale to {$locale}");
}
$translatedFormula = Calculation::getInstance()->_translateFormulaToLocale($formula);
self::assertSame($expectedResult, $translatedFormula);
$restoredFormula = Calculation::getInstance()->_translateFormulaToEnglish($translatedFormula);
self::assertSame($formula, $restoredFormula);
}
public function providerTranslations()
{
return require 'tests/data/Calculation/Translations.php';
}
}

View File

@ -0,0 +1,48 @@
<?php
return [
[
'=DAGEN360(DATUM(2010;2;5);DATUM(2010;12;31);WAAR)',
'nl',
'=DAYS360(DATE(2010,2,5),DATE(2010,12,31),TRUE)',
],
[
'=DIAS360(DATA(2010;2;5);DATA(2010;12;31);VERDADEIRO)',
'pt_br',
'=DAYS360(DATE(2010,2,5),DATE(2010,12,31),TRUE)',
],
[
'=ДНЕЙ360(ДАТА(2010;2;5);ДАТА(2010;12;31);ИСТИНА)',
'ru',
'=DAYS360(DATE(2010,2,5),DATE(2010,12,31),TRUE)',
],
[
'=TEKST.SAMENVOEGEN(A1; " "; B1)',
'nl',
'=CONCATENATE(A1, " ", B1)',
],
[
'=TEKST.SAMENVOEGEN("""Hello "; B1; ""","; " I said.")',
'nl',
'=CONCATENATE("""Hello ", B1, """,", " I said.")',
],
[
'=TEKST.SAMENVOEGEN(JAAR(VANDAAG());
" is ";
ALS(
DAYS(DATUM(JAAR(VANDAAG())+1; 1; 1); DATUM(JAAR(VANDAAG()); 1; 1)) = 365;
"NOT a Leap Year";
"a Leap Year"
)
)',
'nl',
'=CONCATENATE(YEAR(TODAY()),
" is ",
IF(
DAYS(DATE(YEAR(TODAY())+1, 1, 1), DATE(YEAR(TODAY()), 1, 1)) = 365,
"NOT a Leap Year",
"a Leap Year"
)
)',
],
];