Skip to content

Commit 00470cc

Browse files
authored
Modified locale tests for issue 1063 (#1363)
1 parent fe3c6ee commit 00470cc

2 files changed

Lines changed: 36 additions & 28 deletions

File tree

test/functional/pdo_sqlsrv/pdo_1063_test_locale.php

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,30 +48,34 @@ function printCal($date)
4848

4949
echo "**Begin**" . PHP_EOL;
5050

51-
// Assuming LC_ALL is 'en_US.UTF-8', so is LC_CTYPE, except in PHP 8 (TODO)
52-
// But default LC_MONETARY varies
53-
$ctype = (PHP_MAJOR_VERSION == 8 && $setLocaleInfo == 0) ? 'C' : 'en_US.UTF-8';
51+
// Assuming LC_ALL is 'en_US.UTF-8', but default LC_CTYPE and LC_MONETARY vary in various
52+
// platforms and PHP versions, so only check when $setLocaleInfo is 2
5453
switch ($setLocaleInfo) {
5554
case 0:
5655
case 1:
57-
$m = 'C'; $symbol = ''; $sep = '';
56+
$symbol = ''; $sep = '';
5857
break;
5958
case 2:
60-
$m = 'en_US.UTF-8'; $symbol = '$'; $sep = ',';
59+
$symbol = '$'; $sep = ',';
6160
break;
6261
default:
6362
die("Unexpected $setLocaleInfo\n");
6463
break;
6564
}
6665

67-
$m1 = setlocale(LC_MONETARY, 0);
68-
if ($m !== $m1) {
69-
echo "Unexpected LC_MONETARY: $m1" . PHP_EOL;
70-
}
71-
$c1 = setlocale(LC_CTYPE, 0);
72-
if ($ctype !== $c1) {
73-
echo "Unexpected LC_CTYPE: $c1" . PHP_EOL;
74-
echo "LC_NUMERIC for $setLocaleInfo: " . setlocale(LC_NUMERIC, 0) . PHP_EOL;
66+
if ($setLocaleInfo == 2) {
67+
$ctype = 'en_US.UTF-8';
68+
$m = 'en_US.UTF-8';
69+
70+
$m1 = setlocale(LC_MONETARY, 0);
71+
if ($m !== $m1) {
72+
echo "Unexpected LC_MONETARY: $m1" . PHP_EOL;
73+
}
74+
$c1 = setlocale(LC_CTYPE, 0);
75+
if ($ctype !== $c1) {
76+
echo "Unexpected LC_CTYPE: $c1" . PHP_EOL;
77+
echo "LC_NUMERIC for $setLocaleInfo: " . setlocale(LC_NUMERIC, 0) . PHP_EOL;
78+
}
7579
}
7680

7781
// Set a different locale, if the input is not empty

test/functional/sqlsrv/srv_1063_test_locale.php

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ function fatalError($message)
1313
die($message);
1414
}
1515

16-
function printMoney($amt, $info)
16+
function printMoney($amt, $info)
1717
{
1818
// The money_format() function is deprecated in PHP 7.4, so use intl NumberFormatter
1919
$loc = setlocale(LC_MONETARY, 0);
@@ -53,30 +53,34 @@ function printCal($date)
5353

5454
echo "**Begin**" . PHP_EOL;
5555

56-
// Assuming LC_ALL is 'en_US.UTF-8', so is LC_CTYPE, except in PHP 8 (TODO)
57-
// But default LC_MONETARY varies
58-
$ctype = (PHP_MAJOR_VERSION == 8 && $setLocaleInfo == 0) ? 'C' : 'en_US.UTF-8';
56+
// Assuming LC_ALL is 'en_US.UTF-8', but default LC_CTYPE and LC_MONETARY vary in various
57+
// platforms and PHP versions, so only check when $setLocaleInfo is 2
5958
switch ($setLocaleInfo) {
6059
case 0:
6160
case 1:
62-
$m = 'C'; $symbol = ''; $sep = '';
61+
$symbol = ''; $sep = '';
6362
break;
6463
case 2:
65-
$m = 'en_US.UTF-8'; $symbol = '$'; $sep = ',';
64+
$symbol = '$'; $sep = ',';
6665
break;
6766
default:
6867
fatalError("Unexpected $setLocaleInfo\n");
6968
break;
7069
}
7170

72-
$m1 = setlocale(LC_MONETARY, 0);
73-
if ($m !== $m1) {
74-
echo "Unexpected LC_MONETARY: $m1" . PHP_EOL;
75-
}
76-
$c1 = setlocale(LC_CTYPE, 0);
77-
if ($ctype !== $c1) {
78-
echo "Unexpected LC_CTYPE: $c1" . PHP_EOL;
79-
echo "LC_NUMERIC for $setLocaleInfo: " . setlocale(LC_NUMERIC, 0) . PHP_EOL;
71+
if ($setLocaleInfo == 2) {
72+
$ctype = 'en_US.UTF-8';
73+
$m = 'en_US.UTF-8';
74+
75+
$m1 = setlocale(LC_MONETARY, 0);
76+
if ($m !== $m1) {
77+
echo "Unexpected LC_MONETARY: $m1" . PHP_EOL;
78+
}
79+
$c1 = setlocale(LC_CTYPE, 0);
80+
if ($ctype !== $c1) {
81+
echo "Unexpected LC_CTYPE: $c1" . PHP_EOL;
82+
echo "LC_NUMERIC for $setLocaleInfo: " . setlocale(LC_NUMERIC, 0) . PHP_EOL;
83+
}
8084
}
8185

8286
// Set a different locale, if the input is not empty
@@ -86,7 +90,7 @@ function printCal($date)
8690
if ($loc !== $locale) {
8791
echo "Unexpected $loc for LC_ALL " . PHP_EOL;
8892
}
89-
93+
9094
// Currency symbol and thousands separator in Linux and macOS may be different
9195
if ($loc === 'de_DE.UTF-8') {
9296
$symbol = strtoupper(PHP_OS) === 'LINUX' ? '' : 'Eu';

0 commit comments

Comments
 (0)