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