Skip to content

Commit 27f12cd

Browse files
authored
Merge pull request php#5 from mtraver/intl-tests
Apply ext/intl test changes from github.com/php/php-src to bring ICU compat up to 64
2 parents 8719117 + edf62a7 commit 27f12cd

File tree

46 files changed

+953
-54
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+953
-54
lines changed

ext/intl/tests/breakiter_getLocale_basic2.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ IntlBreakIterator::getLocale(): basic test
33
--SKIPIF--
44
<?php if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
55
<?php if (version_compare(INTL_ICU_VERSION, '53.1') < 0) die('skip for ICU >= 53.1'); ?>
6+
<?php if (version_compare(INTL_ICU_VERSION, '64.0') >= 0) die('skip for ICU < 64.0'); ?>
67
--FILE--
78
<?php
89
ini_set("intl.error_level", E_WARNING);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--TEST--
2+
IntlBreakIterator::getLocale(): basic test
3+
--SKIPIF--
4+
<?php if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
5+
<?php if (version_compare(INTL_ICU_VERSION, '64.0') < 0) die('skip for ICU >= 64.0'); ?>
6+
--FILE--
7+
<?php
8+
ini_set("intl.error_level", E_WARNING);
9+
ini_set("intl.default_locale", "pt_PT");
10+
11+
$bi = IntlBreakIterator::createSentenceInstance('pt');
12+
13+
var_dump($bi->getLocale(0));
14+
var_dump($bi->getLocale(1));
15+
?>
16+
==DONE==
17+
--EXPECT--
18+
string(0) ""
19+
string(2) "pt"
20+
==DONE==

ext/intl/tests/breakiter_getPartsIterator_basic.phpt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
--TEST--
2-
IntlBreakIterator::getPartsIterator(): basic test
2+
IntlBreakIterator::getPartsIterator(): basic test, ICU <= 57.1
33
--SKIPIF--
44
<?php
55
if (!extension_loaded('intl'))
66
die('skip intl extension not enabled');
7+
if (version_compare(INTL_ICU_VERSION, '57.1') > 0) die('skip for ICU <= 57.1');
8+
?>
79
--FILE--
810
<?php
911
ini_set("intl.error_level", E_WARNING);
@@ -34,4 +36,4 @@ Array
3436
[2] => bar
3537
)
3638
int(0)
37-
==DONE==
39+
==DONE==
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
--TEST--
2+
IntlBreakIterator::getPartsIterator(): basic test, ICU >= 58.1
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('intl'))
6+
die('skip intl extension not enabled');
7+
if (version_compare(INTL_ICU_VERSION, '57.1') <= 0) die('skip for ICU >= 58.1');
8+
?>
9+
--FILE--
10+
<?php
11+
ini_set("intl.error_level", E_WARNING);
12+
ini_set("intl.default_locale", "pt_PT");
13+
14+
$bi = IntlBreakIterator::createWordInstance('pt');
15+
$pi = $bi->getPartsIterator();
16+
var_dump(get_class($pi));
17+
print_r(iterator_to_array($pi));
18+
19+
$bi->setText("foo bar");
20+
$pi = $bi->getPartsIterator();
21+
var_dump(get_class($pi->getBreakIterator()));
22+
print_r(iterator_to_array($pi));
23+
var_dump($pi->getRuleStatus());
24+
?>
25+
==DONE==
26+
--EXPECTF--
27+
string(17) "IntlPartsIterator"
28+
Array
29+
(
30+
)
31+
string(26) "IntlRuleBasedBreakIterator"
32+
Array
33+
(
34+
[0] => foo
35+
[1] =>
36+
[2] => bar
37+
)
38+
int(%d)
39+
==DONE==

ext/intl/tests/breakiter_preceding_basic.phpt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
--TEST--
2-
IntlBreakIterator::preceding(): basic test
2+
IntlBreakIterator::preceding(): basic test, ICU <= 57.1
33
--SKIPIF--
44
<?php
55
if (!extension_loaded('intl'))
66
die('skip intl extension not enabled');
7+
if (version_compare(INTL_ICU_VERSION, '57.1') > 0) die('skip for ICU <= 57.1');
8+
?>
79
--FILE--
810
<?php
911
ini_set("intl.error_level", E_WARNING);
@@ -21,4 +23,4 @@ var_dump($bi->preceding(-1));
2123
int(4)
2224
int(21)
2325
int(0)
24-
==DONE==
26+
==DONE==
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
--TEST--
2+
IntlBreakIterator::preceding(): basic test, ICU >= 58.1
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('intl'))
6+
die('skip intl extension not enabled');
7+
if (version_compare(INTL_ICU_VERSION, '57.1') <= 0) die('skip for ICU >= 58.1');
8+
--FILE--
9+
<?php
10+
ini_set("intl.error_level", E_WARNING);
11+
ini_set("intl.default_locale", "pt_PT");
12+
13+
$bi = IntlBreakIterator::createWordInstance('pt');
14+
$bi->setText('foo bar trans zoo bee');
15+
16+
var_dump($bi->preceding(5));
17+
var_dump($bi->preceding(50));
18+
var_dump($bi->preceding(-1));
19+
?>
20+
==DONE==
21+
--EXPECTF--
22+
int(4)
23+
int(21)
24+
int(%i)
25+
==DONE==

ext/intl/tests/bug71020.phpt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--TEST--
2+
Bug #71020 (Use after free in Collator::sortWithSortKeys)
3+
--SKIPIF--
4+
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
5+
--FILE--
6+
<?php
7+
8+
$var_3=new Collator("Whatever");
9+
for($x=0;$x<0xbb;$x++)
10+
$myarray[substr(md5(microtime()),rand(0,26),9) . strval($x)]= substr(md5(microtime()),rand(0,26),9) . strval($x);
11+
$var_3->sortWithSortKeys($myarray);
12+
?>
13+
okey
14+
--EXPECT--
15+
okey

ext/intl/tests/dateformat_create_cal_arg_variant4.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ IntlDateFormatter: several forms of the calendar arg
44
<?php
55
if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
66
<?php if (version_compare(INTL_ICU_VERSION, '54.1') < 0) die('skip for ICU >= 54.1'); ?>
7+
<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
78
--FILE--
89
<?php
910
ini_set("intl.error_level", E_WARNING);
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
--TEST--
2+
IntlDateFormatter: several forms of the calendar arg
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
6+
<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
7+
--FILE--
8+
<?php
9+
ini_set("intl.error_level", E_WARNING);
10+
ini_set("intl.default_locale", "pt_PT");
11+
ini_set("date.timezone", 'Atlantic/Azores');
12+
13+
$ts = strtotime('2012-01-01 00:00:00 UTC');
14+
15+
$cal = new IntlGregorianCalendar('UTC', NULL);
16+
$df = new IntlDateFormatter('es_ES', 0, 0, NULL, $cal);
17+
echo $df->format($ts), "\n";
18+
19+
$cal = IntlCalendar::createInstance('UTC', 'en@calendar=islamic');
20+
$df = new IntlDateFormatter('es_ES', 0, 0, NULL, $cal);
21+
echo $df->format($ts), "\n";
22+
23+
//override calendar's timezone
24+
$cal = new IntlGregorianCalendar('UTC', NULL);
25+
$df = new IntlDateFormatter('es_ES', 0, 0, 'Europe/Madrid', $cal);
26+
echo $df->format($ts), "\n";
27+
28+
//default calendar is gregorian
29+
$df = new IntlDateFormatter('es_ES@calendar=islamic', 0, 0);
30+
echo $df->format($ts), "\n";
31+
32+
//try now with traditional
33+
$df = new IntlDateFormatter('es_ES@calendar=islamic', 0, 0, NULL, IntlDateFormatter::TRADITIONAL);
34+
echo $df->format($ts), "\n";
35+
36+
//the timezone can be overridden when not specifying a calendar
37+
$df = new IntlDateFormatter('es_ES@calendar=islamic', 0, 0, 'UTC', IntlDateFormatter::TRADITIONAL);
38+
echo $df->format($ts), "\n";
39+
40+
$df = new IntlDateFormatter('es_ES', 0, 0, 'UTC', 0);
41+
echo $df->format($ts), "\n";
42+
43+
?>
44+
==DONE==
45+
--EXPECTF--
46+
domingo%S 1 de enero de 2012, 0:00:00 (%siempo %sniversal %sordinado)
47+
domingo%S 8 de %safar de 1433, 0:00:00 (%siempo %sniversal %sordinado)
48+
domingo, 1 de enero de 2012, 1:00:00 (hora estándar de Europa central)
49+
sábado, 31 de diciembre de 2011 d. C., 23:00:00 (hora estándar de las Azores)
50+
sábado, 7 de %safar de 1433 AH, 23:00:00 (hora estándar de las Azores)
51+
domingo%S 8 de %safar de 1433 AH, 0:00:00 (%siempo %sniversal %sordinado)
52+
domingo%S 1 de enero de 2012, 0:00:00 (%siempo %sniversal %sordinado)
53+
==DONE==

ext/intl/tests/dateformat_get_set_calendar_variant4.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ IntlDateFormatter: setCalendar()/getCalendar()/getCalendarObject()
44
<?php
55
if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
66
<?php if (version_compare(INTL_ICU_VERSION, '54.1') < 0) die('skip for ICU >= 54.1'); ?>
7+
<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
78
--FILE--
89
<?php
910
ini_set("intl.error_level", E_WARNING);
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
--TEST--
2+
IntlDateFormatter: setCalendar()/getCalendar()/getCalendarObject()
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
6+
<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
7+
--FILE--
8+
<?php
9+
ini_set("intl.error_level", E_WARNING);
10+
ini_set("intl.default_locale", "pt_PT");
11+
ini_set("date.timezone", 'Atlantic/Azores');
12+
13+
$ts = strtotime('2012-01-01 00:00:00 UTC');
14+
15+
function d(IntlDateFormatter $df) {
16+
global $ts;
17+
echo $df->format($ts), "\n";
18+
var_dump($df->getCalendar(),
19+
$df->getCalendarObject()->getType(),
20+
$df->getCalendarObject()->getTimeZone()->getId());
21+
echo "\n";
22+
}
23+
24+
$df = new IntlDateFormatter('fr@calendar=islamic', 0, 0, 'Europe/Minsk');
25+
d($df);
26+
27+
28+
//changing the calendar with a cal type should not change tz
29+
$df->setCalendar(IntlDateFormatter::TRADITIONAL);
30+
d($df);
31+
32+
//but changing with an actual calendar should
33+
$cal = IntlCalendar::createInstance("UTC");
34+
$df->setCalendar($cal);
35+
d($df);
36+
37+
?>
38+
==DONE==
39+
--EXPECT--
40+
dimanche 1 janvier 2012 ap. J.-C. à 03:00:00 heure de Kaliningrad
41+
int(1)
42+
string(9) "gregorian"
43+
string(12) "Europe/Minsk"
44+
45+
dimanche 8 safar 1433 AH à 03:00:00 heure de Kaliningrad
46+
int(0)
47+
string(7) "islamic"
48+
string(12) "Europe/Minsk"
49+
50+
dimanche 1 janvier 2012 ap. J.-C. à 00:00:00 Temps universel coordonné
51+
bool(false)
52+
string(9) "gregorian"
53+
string(3) "UTC"
54+
55+
==DONE==

ext/intl/tests/dateformat_set_timezone_id2.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ datefmt_set_timezone_id_code() icu >= 4.8
44
date.timezone=Atlantic/Azores
55
--SKIPIF--
66
<?php if( !extension_loaded( 'intl' ) ) print 'skip intl extension not loaded'; ?>
7-
<?php if(version_compare(INTL_ICU_VERSION, '4.8') < 0) print 'skip for ICU > 4.8'; ?>
7+
<?php if(version_compare(INTL_ICU_VERSION, '4.8') < 0) print 'skip for ICU >= 4.8'; ?>
88
<?php if (version_compare(INTL_ICU_VERSION, '50.1.2') >= 0) die('skip for ICU < 50.1.2'); ?>
99
--FILE--
1010
<?php

ext/intl/tests/formatter_format2.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
numfmt_format() icu >= 4.8
33
--SKIPIF--
44
<?php if( !extension_loaded( 'intl' ) ) print 'skip intl extension not loaded'; ?>
5-
<?php if(version_compare(INTL_ICU_VERSION, '4.8') < 0) print 'skip for ICU > 4.8'; ?>
5+
<?php if(version_compare(INTL_ICU_VERSION, '4.8') < 0) print 'skip for ICU >= 4.8'; ?>
66
<?php if (version_compare(INTL_ICU_VERSION, '52.1') >= 0) die('skip for ICU <= 52.1'); ?>
77
--FILE--
88
<?php

ext/intl/tests/formatter_format6.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
--TEST--
2-
numfmt_format() icu >= 56.1
2+
numfmt_format() icu >= 56.1 && icu < 61.1
33
--SKIPIF--
44
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
5+
<?php if (version_compare(INTL_ICU_VERSION, '61.1') >= 0) die('skip for ICU < 61.1'); ?>
56
<?php if (version_compare(INTL_ICU_VERSION, '56.1') < 0) die('skip for ICU >= 56.1'); ?>
67
--FILE--
78
<?php

0 commit comments

Comments
 (0)