1--TEST--
2locale_compose_locale()
3--SKIPIF--
4<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
5--FILE--
6<?php
7
8/*
9 * Try parsing different Locales
10 * with Procedural and Object methods.
11 */
12
13function ut_main()
14{
15    $loc_parts_arr1 = array(
16        Locale::LANG_TAG =>'sl' ,
17        Locale::SCRIPT_TAG =>'Latn' ,
18        Locale::REGION_TAG =>'IT'
19    );
20    $loc_parts_arr2 = array(
21        Locale::LANG_TAG =>'de' ,
22        Locale::REGION_TAG =>'DE'
23    );
24    $loc_parts_arr3 = array(
25        Locale::LANG_TAG =>'hi'
26    );
27    $loc_parts_arr4 = array(
28        Locale::LANG_TAG =>'zh' ,
29        Locale::SCRIPT_TAG =>'Hans' ,
30        Locale::REGION_TAG =>'CN'
31    );
32    $loc_parts_arr5 = array(
33        Locale::LANG_TAG =>'es' ,
34        Locale::SCRIPT_TAG =>'Hans' ,
35        Locale::REGION_TAG =>'CN'
36    );
37    $loc_parts_arr6 = array(
38        Locale::LANG_TAG =>'en' ,
39        Locale::SCRIPT_TAG =>'Hans' ,
40        Locale::REGION_TAG =>'CN',
41        Locale::VARIANT_TAG.'14' =>'rozaj' ,
42        'variant1'=>'nedis'
43    );
44    $loc_parts_arr7 = array(
45        Locale::LANG_TAG =>'en' ,
46        Locale::SCRIPT_TAG =>'Hans' ,
47        Locale::REGION_TAG =>'CN',
48        'variant14'=>'rozaj' ,
49        'variant1'=>'nedis' ,
50        'extlang0'=>'lng' ,
51        'extlang1'=>'ing'
52    );
53    $loc_parts_arr8 = array(
54        Locale::LANG_TAG =>'en' ,
55        Locale::SCRIPT_TAG =>'Hans' ,
56        Locale::REGION_TAG =>'CN',
57        'variant14'=>'rozaj' ,
58        'variant1'=>'nedis' ,
59        'extlang0'=>'lng' ,
60        'extlang1'=>'ing',
61        'private7'=>'prv1' ,
62        'private9'=>'prv2'
63    );
64    $loc_parts_arr9 = array(
65        Locale::REGION_TAG =>'DE'
66    );
67    $loc_parts_arr10 = array(
68        Locale::LANG_TAG => 45,
69        Locale::REGION_TAG => false,
70        Locale::SCRIPT_TAG => 15
71    );
72    $loc_parts_arr11 = array(
73        Locale::LANG_TAG =>'de'  ,
74        Locale::REGION_TAG =>'DE',
75        'private0' => 13,
76        'variant1' => array(),
77        'extlang2' => false
78    );
79        $loc_parts_arr12 = array(
80                Locale::LANG_TAG =>'en' ,
81                Locale::SCRIPT_TAG =>'Hans' ,
82                Locale::REGION_TAG =>'CN',
83                Locale::VARIANT_TAG => array('nedis', 'rozaj'),
84        Locale::PRIVATE_TAG => array('prv1', 'prv2'),
85        Locale::EXTLANG_TAG => array('lng', 'ing')
86        );
87
88
89    $loc_parts_arr = array(
90        'loc1' => $loc_parts_arr1	,
91        'loc2' => $loc_parts_arr2	,
92        'loc3' => $loc_parts_arr3	,
93        'loc4' => $loc_parts_arr4	,
94        'loc5' => $loc_parts_arr5	,
95        'loc6' => $loc_parts_arr6	,
96        'loc7' => $loc_parts_arr7	,
97        'loc8' => $loc_parts_arr8	,
98        'loc9' => $loc_parts_arr9	,
99        'loc10' => $loc_parts_arr10	,
100        'loc11' => $loc_parts_arr11	,
101        'loc12' => $loc_parts_arr12
102    );
103
104    error_reporting( E_ERROR );
105
106    $cnt  = 0;
107    $res_str = '';
108    foreach($loc_parts_arr as $key => $value ){
109        $res_str .= "\n------------";
110        $res_str .= "\nInput Array name is : loc".(++$cnt) ;
111/*
112        foreach($value as $valKey => $valValue ){
113            $res_str .=  $valKey ."->".$valValue."  " ;
114        }
115*/
116        try {
117            $locale = ut_loc_locale_compose( $value);
118            $res_str .= "\n\nComposed Locale: ";
119            if( $locale){
120                $res_str .= "$locale";
121            }else{
122                $res_str .= "No values found from Locale compose due to the following error:\n";
123                $res_str .= intl_get_error_message() ;
124            }
125        } catch (ValueError $exception) {
126            echo $exception->getMessage() . "\n";
127        }
128    }
129
130    $res_str .= "\n------------";
131    $res_str .= "\n";
132    return $res_str;
133
134}
135
136include_once( 'ut_common.inc' );
137ut_run();
138
139?>
140--EXPECT--
141Locale::composeLocale(): Argument #1 ($subtags) must contain a "language" key
142locale_compose(): Argument #1 ($subtags) must contain a "language" key
143
144------------
145Input Array name is : loc1
146
147Composed Locale: sl_Latn_IT
148------------
149Input Array name is : loc2
150
151Composed Locale: de_DE
152------------
153Input Array name is : loc3
154
155Composed Locale: hi
156------------
157Input Array name is : loc4
158
159Composed Locale: zh_Hans_CN
160------------
161Input Array name is : loc5
162
163Composed Locale: es_Hans_CN
164------------
165Input Array name is : loc6
166
167Composed Locale: en_Hans_CN_nedis_rozaj
168------------
169Input Array name is : loc7
170
171Composed Locale: en_lng_ing_Hans_CN_nedis_rozaj
172------------
173Input Array name is : loc8
174
175Composed Locale: en_lng_ing_Hans_CN_nedis_rozaj_x_prv1_prv2
176------------
177Input Array name is : loc9
178------------
179Input Array name is : loc10
180
181Composed Locale: No values found from Locale compose due to the following error:
182locale_compose: parameter array element is not a string: U_ILLEGAL_ARGUMENT_ERROR
183------------
184Input Array name is : loc11
185
186Composed Locale: No values found from Locale compose due to the following error:
187locale_compose: parameter array element is not a string: U_ILLEGAL_ARGUMENT_ERROR
188------------
189Input Array name is : loc12
190
191Composed Locale: en_lng_ing_Hans_CN_nedis_rozaj_x_prv1_prv2
192------------
193