1--TEST-- 2numfmt_format() icu >= 56.1 && icu < 61.1 3--EXTENSIONS-- 4intl 5--SKIPIF-- 6<?php if (version_compare(INTL_ICU_VERSION, '56.1') < 0) die('skip for ICU >= 56.1'); ?> 7<?php if (version_compare(INTL_ICU_VERSION, '61.1') >= 0) die('skip for ICU < 61.1'); ?> 8--FILE-- 9<?php 10 11/* 12 * Format a number using misc locales/patterns. 13 */ 14 15/* 16 * TODO: doesn't pass on ICU 3.6 because 'ru' and 'de' locales changed 17 * currency and percent formatting. 18 */ 19 20function ut_main() 21{ 22 $styles = array( 23 NumberFormatter::PATTERN_DECIMAL => '##.#####################', 24 NumberFormatter::DECIMAL => '', 25 NumberFormatter::CURRENCY => '', 26 NumberFormatter::PERCENT => '', 27 NumberFormatter::SCIENTIFIC => '', 28 NumberFormatter::SPELLOUT => '@@@@@@@', 29 NumberFormatter::ORDINAL => '', 30 NumberFormatter::DURATION => '', 31 NumberFormatter::PATTERN_RULEBASED => '#####.###', 32 1234999, // bad one 33 ); 34 35 $integer = array( 36 NumberFormatter::ORDINAL => '', 37 NumberFormatter::DURATION => '', 38 ); 39 $locales = array( 40 'en_US', 41 'ru_UA', 42 'de', 43 'fr', 44 'en_UK' 45 ); 46 47 $str_res = ''; 48 $number = 1234567.891234567890000; 49 50 foreach( $locales as $locale ) 51 { 52 $str_res .= "\nLocale is: $locale\n"; 53 foreach( $styles as $style => $pattern ) 54 { 55 $fmt = ut_nfmt_create( $locale, $style, $pattern ); 56 57 if(!$fmt) { 58 $str_res .= "Bad formatter!\n"; 59 continue; 60 } 61 $str_res .= dump( isset($integer[$style])?ut_nfmt_format( $fmt, $number, NumberFormatter::TYPE_INT32):ut_nfmt_format( $fmt, $number ) ) . "\n"; 62 } 63 } 64 return $str_res; 65} 66 67include_once( 'ut_common.inc' ); 68 69// Run the test 70ut_run(); 71 72?> 73--EXPECTREGEX-- 74Locale is: en_US 75'1234567.89123457' 76'1,234,567.891' 77'\$1,234,567.89' 78'123,456,789%' 79'1.23456789123457E6' 80'one million,? two hundred (and )?thirty-four thousand,? five hundred (and )?sixty-seven point eight nine one two three four five seven' 81'1,234,567(th|ᵗʰ)' 82'342:56:07' 83'#####.###' 84'USD1,234,567.89' 85 86Locale is: ru_UA 87'1234567,89123457' 88'1 234 567,891' 89'1 234 567,89 ?(грн\.|₴)' 90'123 456 789 ?%' 91'1,23456789123457E6' 92'один миллион двести тридцать четыре тысячи пятьсот шестьдесят семь целых восемьдесят девять миллионов сто двадцать три тысячи четыреста пятьдесят семь стомиллионных' 93'1 234 567.?' 94'1 234 567' 95'#####.###' 96'1 234 567,89 UAH' 97 98Locale is: de 99'1234567,89123457' 100'1.234.567,891' 101'(¤ )?1.234.567,89( ¤)?' 102'123\.456\.789 %' 103'1,23456789123457E6' 104'eine Million zweihundertvierunddreißigtausendfünfhundertsiebenundsechzig Komma acht neun eins zwei drei vier fünf sieben' 105'1.234.567.?' 106'1.234.567' 107'#####.###' 108'1.234.567,89 ¤¤' 109 110Locale is: fr 111'1234567,89123457' 112'1 234 567,891' 113'1 234 567,89 ¤' 114'123 456 789 ?%' 115'1,23456789123457E6' 116'un million deux cent trente-quatre mille cinq cent soixante-sept virgule huit neuf un deux trois quatre cinq sept' 117'1 234 567e' 118'1 234 567' 119'#####.###' 120'1 234 567,89 ¤¤' 121 122Locale is: en_UK 123'1234567.89123457' 124'1,234,567.891' 125'¤1,234,567.89' 126'123,456,789%' 127'1.23456789123457E6' 128'one million,? two hundred (and )?thirty-four thousand,? five hundred (and )?sixty-seven point eight nine one two three four five seven' 129'1,234,567(th|ᵗʰ)' 130'342:56:07' 131'#####.###' 132'¤¤1,234,567.89' 133