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