php-src/ext/intl/tests/formatter_format.phpt

131 lines
3.2 KiB
Plaintext
Raw Normal View History

2008-07-07 22:51:04 +00:00
--TEST--
numfmt_format() icu <= 4.2
2008-07-07 22:51:04 +00:00
--SKIPIF--
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
<?php if(version_compare(INTL_ICU_VERSION, '4.3', '<') != 1) print 'skip'; ?>
2008-07-07 22:51:04 +00:00
--FILE--
<?php
/*
* Format a number using misc locales/patterns.
*/
/*
2008-09-04 19:59:37 +00:00
* TODO: doesn't pass on ICU 3.6 because 'ru' and 'de' locales changed
* currency and percent formatting.
*/
2008-07-07 22:51:04 +00:00
function ut_main()
{
$styles = array(
NumberFormatter::PATTERN_DECIMAL => '##.#####################',
NumberFormatter::DECIMAL => '',
NumberFormatter::CURRENCY => '',
NumberFormatter::PERCENT => '',
NumberFormatter::SCIENTIFIC => '',
NumberFormatter::SPELLOUT => '@@@@@@@',
NumberFormatter::ORDINAL => '',
NumberFormatter::DURATION => '',
NumberFormatter::PATTERN_RULEBASED => '#####.###',
1234999, // bad one
);
2008-09-04 19:59:37 +00:00
$integer = array(
NumberFormatter::ORDINAL => '',
NumberFormatter::DURATION => '',
);
2008-07-07 22:51:04 +00:00
$locales = array(
'en_US',
'ru_UA',
'de',
2008-09-04 19:59:37 +00:00
'fr',
2008-07-07 22:51:04 +00:00
'en_UK'
);
$str_res = '';
$number = 1234567.891234567890000;
foreach( $locales as $locale )
{
2008-09-04 19:59:37 +00:00
$str_res .= "\nLocale is: $locale\n";
2008-07-07 22:51:04 +00:00
foreach( $styles as $style => $pattern )
{
$fmt = ut_nfmt_create( $locale, $style, $pattern );
2008-07-07 22:51:04 +00:00
if(!$fmt) {
$str_res .= "Bad formatter!\n";
continue;
}
2008-09-04 19:59:37 +00:00
$str_res .= dump( isset($integer[$style])?ut_nfmt_format( $fmt, $number, NumberFormatter::TYPE_INT32):ut_nfmt_format( $fmt, $number ) ) . "\n";
2008-07-07 22:51:04 +00:00
}
}
return $str_res;
}
include_once( 'ut_common.inc' );
// Run the test
ut_run();
?>
--EXPECTREGEX--
2008-07-07 22:51:04 +00:00
Locale is: en_US
'1234567.89123457'
'1,234,567.891'
'\$1,234,567.89'
2008-07-07 22:51:04 +00:00
'123,456,789%'
'1.23456789123457E6'
'one million,? two hundred (and )?thirty-four thousand,? five hundred (and )?sixty-seven point eight nine one two three four five seven'
'1,234,567(th|ᵗʰ)'
2008-09-04 19:59:37 +00:00
'342:56:07'
2008-07-07 22:51:04 +00:00
'#####.###'
Bad formatter!
2008-09-04 19:59:37 +00:00
Locale is: ru_UA
2008-07-07 22:51:04 +00:00
'1234567,89123457'
'1 234 567,891'
'1 234 567,89 ?(грн\.|₴)'
'123 456 789 ?%'
2008-07-07 22:51:04 +00:00
'1,23456789123457E6'
'один миллион двасти тридцать четыре тысяч пятьсот шестьдесят семь запятая восемь девять один два три четыре пять семь'
'1 234 567.?'
2008-09-04 19:59:37 +00:00
'1 234 567'
2008-07-07 22:51:04 +00:00
'#####.###'
Bad formatter!
2008-09-04 19:59:37 +00:00
Locale is: de
2008-07-07 22:51:04 +00:00
'1234567,89123457'
'1.234.567,891'
'(¤ )?1.234.567,89( ¤)?'
'123\.456\.789 %'
2008-07-07 22:51:04 +00:00
'1,23456789123457E6'
'eine Million zwei­hundert­vier­und­dreißig­tausend­fünf­hundert­sieben­und­sechzig Komma acht neun eins zwei drei vier fünf sieben'
'1.234.567.?'
2008-09-04 19:59:37 +00:00
'1.234.567'
'#####.###'
Bad formatter!
Locale is: fr
'1234567,89123457'
'1 234 567,891'
'1 234 567,89 ¤'
'123 456 789 ?%'
2008-09-04 19:59:37 +00:00
'1,23456789123457E6'
'un million deux-cent-trente-quatre-mille-cinq-cent-soixante-sept virgule huit neuf un deux trois quatre cinq sept'
'1 234 567ᵉ?'
2008-09-04 19:59:37 +00:00
'1 234 567'
2008-07-07 22:51:04 +00:00
'#####.###'
Bad formatter!
2008-09-04 19:59:37 +00:00
Locale is: en_UK
2008-07-07 22:51:04 +00:00
'1234567.89123457'
'1,234,567.891'
'¤1,234,567.89'
'123,456,789%'
'1.23456789123457E6'
'one million,? two hundred (and )?thirty-four thousand,? five hundred (and )?sixty-seven point eight nine one two three four five seven'
'1,234,567(th|ᵗʰ)'
2008-09-04 19:59:37 +00:00
'342:56:07'
2008-07-07 22:51:04 +00:00
'#####.###'
Bad formatter!