Skip to content

Commit 1d6f36d

Browse files
author
Mark Baker
authored
Initial Formula Translation tests (#1886)
* Initial Formula Translation tests
1 parent ee969fd commit 1d6f36d

File tree

3 files changed

+103
-0
lines changed

3 files changed

+103
-0
lines changed

samples/Basic/43_Merge_workbooks.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818

1919
foreach ($spreadsheet2->getSheetNames() as $sheetName) {
2020
$sheet = $spreadsheet2->getSheetByName($sheetName);
21+
if ($sheet === null) {
22+
continue;
23+
}
24+
2125
$sheet->setTitle($sheet->getTitle() . ' copied');
2226
$spreadsheet1->addExternalSheet($sheet);
2327
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
4+
5+
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
6+
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
7+
use PhpOffice\PhpSpreadsheet\Settings;
8+
use PHPUnit\Framework\TestCase;
9+
10+
class TranslationTest extends TestCase
11+
{
12+
private $compatibilityMode;
13+
14+
private $returnDate;
15+
16+
protected function setUp(): void
17+
{
18+
$this->compatibilityMode = Functions::getCompatibilityMode();
19+
$this->returnDate = Functions::getReturnDateType();
20+
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
21+
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
22+
}
23+
24+
protected function tearDown(): void
25+
{
26+
Functions::setCompatibilityMode($this->compatibilityMode);
27+
Functions::setReturnDateType($this->returnDate);
28+
}
29+
30+
/**
31+
* @dataProvider providerTranslations
32+
*/
33+
public function testTranslation(string $expectedResult, string $locale, string $formula): void
34+
{
35+
$validLocale = Settings::setLocale($locale);
36+
if (!$validLocale) {
37+
self::markTestSkipped("Unable to set locale to {$locale}");
38+
}
39+
40+
$translatedFormula = Calculation::getInstance()->_translateFormulaToLocale($formula);
41+
self::assertSame($expectedResult, $translatedFormula);
42+
43+
$restoredFormula = Calculation::getInstance()->_translateFormulaToEnglish($translatedFormula);
44+
self::assertSame($formula, $restoredFormula);
45+
}
46+
47+
public function providerTranslations()
48+
{
49+
return require 'tests/data/Calculation/Translations.php';
50+
}
51+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
return [
4+
[
5+
'=DAGEN360(DATUM(2010;2;5);DATUM(2010;12;31);WAAR)',
6+
'nl',
7+
'=DAYS360(DATE(2010,2,5),DATE(2010,12,31),TRUE)',
8+
],
9+
[
10+
'=DIAS360(DATA(2010;2;5);DATA(2010;12;31);VERDADEIRO)',
11+
'pt_br',
12+
'=DAYS360(DATE(2010,2,5),DATE(2010,12,31),TRUE)',
13+
],
14+
[
15+
'=ДНЕЙ360(ДАТА(2010;2;5);ДАТА(2010;12;31);ИСТИНА)',
16+
'ru',
17+
'=DAYS360(DATE(2010,2,5),DATE(2010,12,31),TRUE)',
18+
],
19+
[
20+
'=TEKST.SAMENVOEGEN(A1; " "; B1)',
21+
'nl',
22+
'=CONCATENATE(A1, " ", B1)',
23+
],
24+
[
25+
'=TEKST.SAMENVOEGEN("""Hello "; B1; ""","; " I said.")',
26+
'nl',
27+
'=CONCATENATE("""Hello ", B1, """,", " I said.")',
28+
],
29+
[
30+
'=TEKST.SAMENVOEGEN(JAAR(VANDAAG());
31+
" is ";
32+
ALS(
33+
DAYS(DATUM(JAAR(VANDAAG())+1; 1; 1); DATUM(JAAR(VANDAAG()); 1; 1)) = 365;
34+
"NOT a Leap Year";
35+
"a Leap Year"
36+
)
37+
)',
38+
'nl',
39+
'=CONCATENATE(YEAR(TODAY()),
40+
" is ",
41+
IF(
42+
DAYS(DATE(YEAR(TODAY())+1, 1, 1), DATE(YEAR(TODAY()), 1, 1)) = 365,
43+
"NOT a Leap Year",
44+
"a Leap Year"
45+
)
46+
)',
47+
],
48+
];

0 commit comments

Comments
 (0)