1--TEST-- 2locale_filter_matches.phpt() ICU >= 51.2 && ICU < 67.1 3--SKIPIF-- 4<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?> 5<?php if (version_compare(INTL_ICU_VERSION, '67.1') >= 0) die('skip for ICU < 67.1'); ?> 6--FILE-- 7<?php 8 9/* 10 * Try parsing different Locales 11 * with Procedural and Object methods. 12 */ 13 14function ut_main() 15{ 16 $loc_ranges = array( 17 'de-de', 18 'sl_IT', 19 'sl_IT_Nedis', 20 'jbo', 21 'art-lojban', 22 'sl_IT' 23 ); 24 25 $lang_tags = array( 26 'de-DEVA', 27 'de-DE-1996', 28 'de-DE', 29 'zh_Hans', 30 'de-CH-1996', 31 'sl_IT', 32 'sl_IT_nedis-a-kirti-x-xyz', 33 'sl_IT_rozaj', 34 'sl_IT_NEDIS_ROJAZ_1901', 35 'i-enochian', 36 'sgn-CH-de', 37 'art-lojban', 38 'i-lux', 39 'art-lojban', 40 'jbo', 41 'en_sl_IT' 42 ); 43 44 $res_str = ''; 45 $isCanonical = false; 46 foreach($loc_ranges as $loc_range){ 47 foreach($lang_tags as $lang_tag){ 48 $res_str .="--------------\n"; 49 $result= ut_loc_locale_filter_matches( $lang_tag , $loc_range , $isCanonical); 50 $res_str .= "loc_range:$loc_range matches lang_tag $lang_tag ? "; 51 if( $result){ 52 $res_str .= "YES\n"; 53 }else{ 54 $res_str .= "NO\n"; 55 } 56//canonicalized version 57 $result= ut_loc_locale_filter_matches( $lang_tag , $loc_range , !($isCanonical)); 58 $can_loc_range = ut_loc_canonicalize($loc_range); 59 $can_lang_tag = ut_loc_canonicalize($lang_tag); 60 $res_str .= "loc_range:$can_loc_range canonically matches lang_tag $can_lang_tag ? "; 61 if( $result){ 62 $res_str .= "YES\n"; 63 }else{ 64 $res_str .= "NO\n"; 65 } 66 } 67 } 68 69 $res_str .= "\n"; 70 return $res_str; 71 72} 73 74include_once( 'ut_common.inc' ); 75ut_run(); 76 77?> 78--EXPECT-- 79-------------- 80loc_range:de-de matches lang_tag de-DEVA ? NO 81loc_range:de_DE canonically matches lang_tag de_Deva ? NO 82-------------- 83loc_range:de-de matches lang_tag de-DE-1996 ? YES 84loc_range:de_DE canonically matches lang_tag de_DE_1996 ? YES 85-------------- 86loc_range:de-de matches lang_tag de-DE ? YES 87loc_range:de_DE canonically matches lang_tag de_DE ? YES 88-------------- 89loc_range:de-de matches lang_tag zh_Hans ? NO 90loc_range:de_DE canonically matches lang_tag zh_Hans ? NO 91-------------- 92loc_range:de-de matches lang_tag de-CH-1996 ? NO 93loc_range:de_DE canonically matches lang_tag de_CH_1996 ? NO 94-------------- 95loc_range:de-de matches lang_tag sl_IT ? NO 96loc_range:de_DE canonically matches lang_tag sl_IT ? NO 97-------------- 98loc_range:de-de matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? NO 99loc_range:de_DE canonically matches lang_tag sl_IT_NEDIS_A_KIRTI_X_XYZ ? NO 100-------------- 101loc_range:de-de matches lang_tag sl_IT_rozaj ? NO 102loc_range:de_DE canonically matches lang_tag sl_IT_ROZAJ ? NO 103-------------- 104loc_range:de-de matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO 105loc_range:de_DE canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO 106-------------- 107loc_range:de-de matches lang_tag i-enochian ? NO 108loc_range:de_DE canonically matches lang_tag @x=i-enochian ? NO 109-------------- 110loc_range:de-de matches lang_tag sgn-CH-de ? NO 111loc_range:de_DE canonically matches lang_tag sgn_CH_DE ? NO 112-------------- 113loc_range:de-de matches lang_tag art-lojban ? NO 114loc_range:de_DE canonically matches lang_tag art__LOJBAN ? NO 115-------------- 116loc_range:de-de matches lang_tag i-lux ? NO 117loc_range:de_DE canonically matches lang_tag lb ? NO 118-------------- 119loc_range:de-de matches lang_tag art-lojban ? NO 120loc_range:de_DE canonically matches lang_tag art__LOJBAN ? NO 121-------------- 122loc_range:de-de matches lang_tag jbo ? NO 123loc_range:de_DE canonically matches lang_tag jbo ? NO 124-------------- 125loc_range:de-de matches lang_tag en_sl_IT ? NO 126loc_range:de_DE canonically matches lang_tag en_SL_IT ? NO 127-------------- 128loc_range:sl_IT matches lang_tag de-DEVA ? NO 129loc_range:sl_IT canonically matches lang_tag de_Deva ? NO 130-------------- 131loc_range:sl_IT matches lang_tag de-DE-1996 ? NO 132loc_range:sl_IT canonically matches lang_tag de_DE_1996 ? NO 133-------------- 134loc_range:sl_IT matches lang_tag de-DE ? NO 135loc_range:sl_IT canonically matches lang_tag de_DE ? NO 136-------------- 137loc_range:sl_IT matches lang_tag zh_Hans ? NO 138loc_range:sl_IT canonically matches lang_tag zh_Hans ? NO 139-------------- 140loc_range:sl_IT matches lang_tag de-CH-1996 ? NO 141loc_range:sl_IT canonically matches lang_tag de_CH_1996 ? NO 142-------------- 143loc_range:sl_IT matches lang_tag sl_IT ? YES 144loc_range:sl_IT canonically matches lang_tag sl_IT ? YES 145-------------- 146loc_range:sl_IT matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? YES 147loc_range:sl_IT canonically matches lang_tag sl_IT_NEDIS_A_KIRTI_X_XYZ ? YES 148-------------- 149loc_range:sl_IT matches lang_tag sl_IT_rozaj ? YES 150loc_range:sl_IT canonically matches lang_tag sl_IT_ROZAJ ? YES 151-------------- 152loc_range:sl_IT matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES 153loc_range:sl_IT canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES 154-------------- 155loc_range:sl_IT matches lang_tag i-enochian ? NO 156loc_range:sl_IT canonically matches lang_tag @x=i-enochian ? NO 157-------------- 158loc_range:sl_IT matches lang_tag sgn-CH-de ? NO 159loc_range:sl_IT canonically matches lang_tag sgn_CH_DE ? NO 160-------------- 161loc_range:sl_IT matches lang_tag art-lojban ? NO 162loc_range:sl_IT canonically matches lang_tag art__LOJBAN ? NO 163-------------- 164loc_range:sl_IT matches lang_tag i-lux ? NO 165loc_range:sl_IT canonically matches lang_tag lb ? NO 166-------------- 167loc_range:sl_IT matches lang_tag art-lojban ? NO 168loc_range:sl_IT canonically matches lang_tag art__LOJBAN ? NO 169-------------- 170loc_range:sl_IT matches lang_tag jbo ? NO 171loc_range:sl_IT canonically matches lang_tag jbo ? NO 172-------------- 173loc_range:sl_IT matches lang_tag en_sl_IT ? NO 174loc_range:sl_IT canonically matches lang_tag en_SL_IT ? NO 175-------------- 176loc_range:sl_IT_Nedis matches lang_tag de-DEVA ? NO 177loc_range:sl_IT_NEDIS canonically matches lang_tag de_Deva ? NO 178-------------- 179loc_range:sl_IT_Nedis matches lang_tag de-DE-1996 ? NO 180loc_range:sl_IT_NEDIS canonically matches lang_tag de_DE_1996 ? NO 181-------------- 182loc_range:sl_IT_Nedis matches lang_tag de-DE ? NO 183loc_range:sl_IT_NEDIS canonically matches lang_tag de_DE ? NO 184-------------- 185loc_range:sl_IT_Nedis matches lang_tag zh_Hans ? NO 186loc_range:sl_IT_NEDIS canonically matches lang_tag zh_Hans ? NO 187-------------- 188loc_range:sl_IT_Nedis matches lang_tag de-CH-1996 ? NO 189loc_range:sl_IT_NEDIS canonically matches lang_tag de_CH_1996 ? NO 190-------------- 191loc_range:sl_IT_Nedis matches lang_tag sl_IT ? NO 192loc_range:sl_IT_NEDIS canonically matches lang_tag sl_IT ? NO 193-------------- 194loc_range:sl_IT_Nedis matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? YES 195loc_range:sl_IT_NEDIS canonically matches lang_tag sl_IT_NEDIS_A_KIRTI_X_XYZ ? YES 196-------------- 197loc_range:sl_IT_Nedis matches lang_tag sl_IT_rozaj ? NO 198loc_range:sl_IT_NEDIS canonically matches lang_tag sl_IT_ROZAJ ? NO 199-------------- 200loc_range:sl_IT_Nedis matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES 201loc_range:sl_IT_NEDIS canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES 202-------------- 203loc_range:sl_IT_Nedis matches lang_tag i-enochian ? NO 204loc_range:sl_IT_NEDIS canonically matches lang_tag @x=i-enochian ? NO 205-------------- 206loc_range:sl_IT_Nedis matches lang_tag sgn-CH-de ? NO 207loc_range:sl_IT_NEDIS canonically matches lang_tag sgn_CH_DE ? NO 208-------------- 209loc_range:sl_IT_Nedis matches lang_tag art-lojban ? NO 210loc_range:sl_IT_NEDIS canonically matches lang_tag art__LOJBAN ? NO 211-------------- 212loc_range:sl_IT_Nedis matches lang_tag i-lux ? NO 213loc_range:sl_IT_NEDIS canonically matches lang_tag lb ? NO 214-------------- 215loc_range:sl_IT_Nedis matches lang_tag art-lojban ? NO 216loc_range:sl_IT_NEDIS canonically matches lang_tag art__LOJBAN ? NO 217-------------- 218loc_range:sl_IT_Nedis matches lang_tag jbo ? NO 219loc_range:sl_IT_NEDIS canonically matches lang_tag jbo ? NO 220-------------- 221loc_range:sl_IT_Nedis matches lang_tag en_sl_IT ? NO 222loc_range:sl_IT_NEDIS canonically matches lang_tag en_SL_IT ? NO 223-------------- 224loc_range:jbo matches lang_tag de-DEVA ? NO 225loc_range:jbo canonically matches lang_tag de_Deva ? NO 226-------------- 227loc_range:jbo matches lang_tag de-DE-1996 ? NO 228loc_range:jbo canonically matches lang_tag de_DE_1996 ? NO 229-------------- 230loc_range:jbo matches lang_tag de-DE ? NO 231loc_range:jbo canonically matches lang_tag de_DE ? NO 232-------------- 233loc_range:jbo matches lang_tag zh_Hans ? NO 234loc_range:jbo canonically matches lang_tag zh_Hans ? NO 235-------------- 236loc_range:jbo matches lang_tag de-CH-1996 ? NO 237loc_range:jbo canonically matches lang_tag de_CH_1996 ? NO 238-------------- 239loc_range:jbo matches lang_tag sl_IT ? NO 240loc_range:jbo canonically matches lang_tag sl_IT ? NO 241-------------- 242loc_range:jbo matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? NO 243loc_range:jbo canonically matches lang_tag sl_IT_NEDIS_A_KIRTI_X_XYZ ? NO 244-------------- 245loc_range:jbo matches lang_tag sl_IT_rozaj ? NO 246loc_range:jbo canonically matches lang_tag sl_IT_ROZAJ ? NO 247-------------- 248loc_range:jbo matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO 249loc_range:jbo canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO 250-------------- 251loc_range:jbo matches lang_tag i-enochian ? NO 252loc_range:jbo canonically matches lang_tag @x=i-enochian ? NO 253-------------- 254loc_range:jbo matches lang_tag sgn-CH-de ? NO 255loc_range:jbo canonically matches lang_tag sgn_CH_DE ? NO 256-------------- 257loc_range:jbo matches lang_tag art-lojban ? NO 258loc_range:jbo canonically matches lang_tag art__LOJBAN ? NO 259-------------- 260loc_range:jbo matches lang_tag i-lux ? NO 261loc_range:jbo canonically matches lang_tag lb ? NO 262-------------- 263loc_range:jbo matches lang_tag art-lojban ? NO 264loc_range:jbo canonically matches lang_tag art__LOJBAN ? NO 265-------------- 266loc_range:jbo matches lang_tag jbo ? YES 267loc_range:jbo canonically matches lang_tag jbo ? YES 268-------------- 269loc_range:jbo matches lang_tag en_sl_IT ? NO 270loc_range:jbo canonically matches lang_tag en_SL_IT ? NO 271-------------- 272loc_range:art-lojban matches lang_tag de-DEVA ? NO 273loc_range:art__LOJBAN canonically matches lang_tag de_Deva ? NO 274-------------- 275loc_range:art-lojban matches lang_tag de-DE-1996 ? NO 276loc_range:art__LOJBAN canonically matches lang_tag de_DE_1996 ? NO 277-------------- 278loc_range:art-lojban matches lang_tag de-DE ? NO 279loc_range:art__LOJBAN canonically matches lang_tag de_DE ? NO 280-------------- 281loc_range:art-lojban matches lang_tag zh_Hans ? NO 282loc_range:art__LOJBAN canonically matches lang_tag zh_Hans ? NO 283-------------- 284loc_range:art-lojban matches lang_tag de-CH-1996 ? NO 285loc_range:art__LOJBAN canonically matches lang_tag de_CH_1996 ? NO 286-------------- 287loc_range:art-lojban matches lang_tag sl_IT ? NO 288loc_range:art__LOJBAN canonically matches lang_tag sl_IT ? NO 289-------------- 290loc_range:art-lojban matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? NO 291loc_range:art__LOJBAN canonically matches lang_tag sl_IT_NEDIS_A_KIRTI_X_XYZ ? NO 292-------------- 293loc_range:art-lojban matches lang_tag sl_IT_rozaj ? NO 294loc_range:art__LOJBAN canonically matches lang_tag sl_IT_ROZAJ ? NO 295-------------- 296loc_range:art-lojban matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO 297loc_range:art__LOJBAN canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO 298-------------- 299loc_range:art-lojban matches lang_tag i-enochian ? NO 300loc_range:art__LOJBAN canonically matches lang_tag @x=i-enochian ? NO 301-------------- 302loc_range:art-lojban matches lang_tag sgn-CH-de ? NO 303loc_range:art__LOJBAN canonically matches lang_tag sgn_CH_DE ? NO 304-------------- 305loc_range:art-lojban matches lang_tag art-lojban ? YES 306loc_range:art__LOJBAN canonically matches lang_tag art__LOJBAN ? YES 307-------------- 308loc_range:art-lojban matches lang_tag i-lux ? NO 309loc_range:art__LOJBAN canonically matches lang_tag lb ? NO 310-------------- 311loc_range:art-lojban matches lang_tag art-lojban ? YES 312loc_range:art__LOJBAN canonically matches lang_tag art__LOJBAN ? YES 313-------------- 314loc_range:art-lojban matches lang_tag jbo ? NO 315loc_range:art__LOJBAN canonically matches lang_tag jbo ? NO 316-------------- 317loc_range:art-lojban matches lang_tag en_sl_IT ? NO 318loc_range:art__LOJBAN canonically matches lang_tag en_SL_IT ? NO 319-------------- 320loc_range:sl_IT matches lang_tag de-DEVA ? NO 321loc_range:sl_IT canonically matches lang_tag de_Deva ? NO 322-------------- 323loc_range:sl_IT matches lang_tag de-DE-1996 ? NO 324loc_range:sl_IT canonically matches lang_tag de_DE_1996 ? NO 325-------------- 326loc_range:sl_IT matches lang_tag de-DE ? NO 327loc_range:sl_IT canonically matches lang_tag de_DE ? NO 328-------------- 329loc_range:sl_IT matches lang_tag zh_Hans ? NO 330loc_range:sl_IT canonically matches lang_tag zh_Hans ? NO 331-------------- 332loc_range:sl_IT matches lang_tag de-CH-1996 ? NO 333loc_range:sl_IT canonically matches lang_tag de_CH_1996 ? NO 334-------------- 335loc_range:sl_IT matches lang_tag sl_IT ? YES 336loc_range:sl_IT canonically matches lang_tag sl_IT ? YES 337-------------- 338loc_range:sl_IT matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? YES 339loc_range:sl_IT canonically matches lang_tag sl_IT_NEDIS_A_KIRTI_X_XYZ ? YES 340-------------- 341loc_range:sl_IT matches lang_tag sl_IT_rozaj ? YES 342loc_range:sl_IT canonically matches lang_tag sl_IT_ROZAJ ? YES 343-------------- 344loc_range:sl_IT matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES 345loc_range:sl_IT canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES 346-------------- 347loc_range:sl_IT matches lang_tag i-enochian ? NO 348loc_range:sl_IT canonically matches lang_tag @x=i-enochian ? NO 349-------------- 350loc_range:sl_IT matches lang_tag sgn-CH-de ? NO 351loc_range:sl_IT canonically matches lang_tag sgn_CH_DE ? NO 352-------------- 353loc_range:sl_IT matches lang_tag art-lojban ? NO 354loc_range:sl_IT canonically matches lang_tag art__LOJBAN ? NO 355-------------- 356loc_range:sl_IT matches lang_tag i-lux ? NO 357loc_range:sl_IT canonically matches lang_tag lb ? NO 358-------------- 359loc_range:sl_IT matches lang_tag art-lojban ? NO 360loc_range:sl_IT canonically matches lang_tag art__LOJBAN ? NO 361-------------- 362loc_range:sl_IT matches lang_tag jbo ? NO 363loc_range:sl_IT canonically matches lang_tag jbo ? NO 364-------------- 365loc_range:sl_IT matches lang_tag en_sl_IT ? NO 366loc_range:sl_IT canonically matches lang_tag en_SL_IT ? NO 367