--- /dev/null
+--TEST--
+Test setlocale() function : basic functionality - setting system locale to a specific
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN')
+ die('skip Not valid for windows');
+
+if( ini_get("unicode.semantics") == "1")
+ die('skip do not run when unicode on');
+?>
+--FILE--
+<?php
+/* Prototype : string setlocale (int $category , string $locale [,string $..] )
+ : string setlocale(int $category , array $locale);
+ * Description: Sets locale information.Returns the new current locale ,
+ * or FALSE if locale functinality is not implemented in this platform.
+ * Source code: ext/standard/string.c
+*/
+
+/* test setlocale by specifying a specific locale as input */
+
+/* Prototype : array list_system_locales( void )
+ Description: To get the currently installed locle in this platform
+ Arguments : Nil
+ Returns : set of locale as array
+*/
+function list_system_locales() {
+ // start the buffering of next command to internal output buffer
+ ob_start();
+
+ // run the command 'locale -a' to fetch all locales available in the system
+ system('locale -a');
+
+ // get the contents from the internal output buffer
+ $all_locales = ob_get_contents();
+
+ // fflush and end the output buffering to internal output buffer
+ ob_end_clean();
+
+ $system_locales = explode("\n", $all_locales);
+
+ // return all the locale found in the system
+ return $system_locales;
+}
+
+/* Collect existing system locales and set one among them,
+ Check the currency settings in the new locale */
+echo "*** Testing setlocale() : basic functionality - set to a specific locale ***\n";
+
+//set of locales to be used
+$common_locales = array(
+ "english_US"=> "en_US.utf8gfd",
+ "english_AU" => "en_AU.utf8hgg",
+ "korean_KR" => "ko_KR.utf8",
+ "Chinese_zh" => "zh_CN.utf8",
+ "germen_DE" => "de_DE.utf8",
+ "spanish_es" => "es_EC.utf8",
+ "french_FR" => "fr_FR.utf8",
+ "japanees_JP" => "ja_JP.utf8",
+ "greek_GR" => "el_GR.utf8",
+ "dutch_NL" => "nl_NL.utf8"
+);
+
+//set of currency symbol according to above list of locales
+$currency_symbol = array(
+ "en_US.utf8" => "USD",
+ "en_AU.utf8" => "AUD",
+ "ko_KR.utf8" => "KRW",
+ "zh_CN.utf8" => "CNY",
+ "de_DE.utf8" => "EUR",
+ "es_EC.utf8" => "USD",
+ "fr_FR.utf8" => "EUR",
+ "ja_JP.utf8" => "JPY",
+ "el_GR.utf8" => "EUR",
+ "nl_NL.utf8" =>"EUR"
+);
+
+// gather all the locales installed in the system
+$all_system_locales = list_system_locales();
+
+// set the system locale to a locale, choose the right locale by
+// finding a common locale in commonly used locale stored in
+// $common_locales & locales that are available in the system, stored
+// in $all_system_locales.
+echo "Setting system locale(LC_ALL) to ";
+foreach($common_locales as $value) {
+ // check if a commonly used locale is installed in the system
+ if(in_array($value, $all_system_locales)){
+ echo "$value\n"; // print, this is found
+ // set the found locale as current locale
+ var_dump(setlocale(LC_ALL, $value ));
+ // stop here
+ break;
+ }
+ else{
+ // continue to check if next commonly locale is installed in the system
+ continue;
+ }
+}
+
+// check that new locale setting is effective
+// use localeconv() to get the details of currently set locale
+$locale_info = localeconv();
+
+//checking currency settings in the new locale to see if the setlocale() was effective
+$new_currency = trim($locale_info['int_curr_symbol']);
+echo "Checking currency settings in the new locale, expected: ".$currency_symbol[$value].", Found: ".$new_currency."\n";
+echo "Test ";
+if(trim($currency_symbol[$value]) == $new_currency){
+ echo "PASSED.";
+} else {
+ echo "FAILED.";
+}
+
+echo "\nDone\n";
+?>
+--EXPECTF--
+*** Testing setlocale() : basic functionality - set to a specific locale ***
+Setting system locale(LC_ALL) to %s
+string(%d) %s
+Checking currency settings in the new locale, expected: %s, Found: %s
+Test PASSED.
+Done
--- /dev/null
+--TEST--
+Test setlocale() function : basic functionality - set locale using an array
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN')
+ die('skip Not valid for windows');
+if(ini_get("unicode.semantics") == "1")
+ die('skip do not run when unicode on');
+?>
+--FILE--
+<?php
+/* Prototype : string setlocale (int $category , string $locale [,string $..] )
+ : string setlocale(int $category , array $locale);
+ * Description: Sets locale information.Returns the new current locale , or FALSE
+ if locale functinality is not implemented in this platform.
+ * Source code: ext/standard/string.c
+*/
+
+/* Test the setlocale() when an array is provided as input containing list of locales */
+
+/* Prototype : array list_system_locales( void )
+ * Description: To get the currently installed locle in this platform
+ * Arguments : Nil
+ * Returns : set of locale as array
+*/
+function list_system_locales() {
+ // start the buffering of next command to internal output buffer
+ ob_start();
+
+ // run the command 'locale -a' to fetch all locales available in the system
+ system('locale -a');
+
+ // get the contents from the internal output buffer
+ $all_locales = ob_get_contents();
+
+ // fflush and end the output buffering to internal output buffer
+ ob_end_clean();
+
+ $system_locales = explode("\n", $all_locales);
+
+ // return all the locale found in the system
+ return $system_locales;
+}
+
+/* Collect existing system locales and prepare a list of locales that can be used as
+ input to setlocale() */
+
+echo "*** Testing setlocale() with an array containing list of locales ***\n";
+
+//set of locales to be used
+$common_locales = array(
+ "english_US"=> "en_US.utf8",
+ "english_AU" => "en_AU.utf8",
+ "korean_KR" => "ko_KR.utf8",
+ "Chinese_zh" => "zh_CN.utf8",
+ "germen_DE" => "de_DE.utf8",
+ "spanish_es" => "es_EC.utf8",
+ "french_FR" => "fr_FR.utf8",
+ "japanees_JP" => "ja_JP.utf8",
+ "greek_GR" => "el_GR.utf8",
+ "dutch_NL" => "nl_NL.utf8"
+);
+
+//set of currency symbol according to above list of locales
+$currency_symbol = array(
+ "en_US.utf8" => "USD",
+ "en_AU.utf8" => "AUD",
+ "ko_KR.utf8" => "KRW",
+ "zh_CN.utf8" => "CNY",
+ "de_DE.utf8" => "EUR",
+ "es_EC.utf8" => "USD",
+ "fr_FR.utf8" => "EUR",
+ "ja_JP.utf8" => "JPY",
+ "el_GR.utf8" => "EUR",
+ "nl_NL.utf8" =>"EUR"
+);
+
+// gather all the locales installed in the system
+$all_system_locales = list_system_locales();
+
+// prepare the list of locales based on list of locales found in the system
+// and those known to this script ( as stored $common_locales) which can be
+// given as input to setlocale(), later verify the new locale setting by
+// checking the currency setting of the system(use localconv())
+$list_of_locales = array();
+foreach($common_locales as $value) {
+ if( in_array($value, $all_system_locales) ) {
+ $list_of_locales[] = $value;
+ }
+}
+
+// Now $list_of_locales array contains the locales that can be passed to
+// setlocale() function.
+echo "-- Testing setlocale() : 'category' argument as LC_ALL & 'locale' argument as an array --\n";
+if ( count($list_of_locales) > 0 ) {
+ // set locale to $list_of_locales
+ $new_locale = setlocale(LC_ALL, $list_of_locales);
+
+ // dump the current locale
+ var_dump($new_locale);
+
+ // check that new locale setting is effective
+ // use localeconv() to get the details of currently set locale
+ $locale_info = localeconv();
+ $new_currency = trim($locale_info['int_curr_symbol']);
+
+ echo "Checking currency settings in the new locale, expected: ".$currency_symbol[$new_locale].", Found: ".$new_currency."\n";
+ echo "Test ";
+
+ if(trim($currency_symbol[$new_locale]) == $new_currency){
+ echo "PASSED.\n";
+ } else {
+ echo "FAILED.\n";
+ }
+} else {
+ echo "Test FAILED.\n";
+}
+
+echo "Done\n";
+?>
+--EXPECTF--
+*** Testing setlocale() with an array containing list of locales ***
+-- Testing setlocale() : 'category' argument as LC_ALL & 'locale' argument as an array --
+string(%d) "%s"
+Checking currency settings in the new locale, expected: %s, Found: %s
+Test PASSED.
+Done
--- /dev/null
+--TEST--
+Test setlocale() function : basic functionality - passing multiple locales as argument
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN')
+ die('skip Not valid for windows');
+if(ini_get("unicode.semantics") == "1")
+ die('skip do not run when unicode on');
+?>
+--FILE--
+<?php
+/* Prototype : string setlocale (int $category , string $locale [,string $..] )
+ : string setlocale(int $category , array $locale);
+ * Description: Sets locale information.Returns the new current locale , or FALSE
+ if locale functinality is not implemented in this platform.
+ * Source code: ext/standard/string.c
+*/
+
+/* Test the setlocale() when multiple locales are provided as argument */
+
+/* Prototype : array list_system_locales( void )
+ Description: To get the currently installed locle in this platform
+ Arguments : Nil
+ Returns : set of locale as array
+*/
+function list_system_locales() {
+ // start the buffering of next command to internal output buffer
+ ob_start();
+
+ // run the command 'locale -a' to fetch all locales available in the system
+ system('locale -a');
+
+ // get the contents from the internal output buffer
+ $all_locales = ob_get_contents();
+
+ // fflush and end the output buffering to internal output buffer
+ ob_end_clean();
+
+ $system_locales = explode("\n", $all_locales);
+
+ // return all the locale found in the system
+ return $system_locales;
+}
+
+/* Collect existing system locales and get three locales that can be use to
+ pass as argument to setlocale() */
+echo "*** Testing setlocale() by passing multiple locales as argument ***\n";
+
+//set of currency symbol according to above list of locales
+$currency_symbol = array(
+ "en_US.utf8" => "USD",
+ "ko_KR.utf8" => "KRW",
+ "zh_CN.utf8" => "CNY",
+);
+
+// gather all the locales installed in the system
+$all_system_locales = list_system_locales();
+
+// Now check for three locales that is present in the system and use that as argument to setlocale()
+if( in_array("en_US.utf8",$all_system_locales) ||
+ in_array("Ko_KR.utf8",$all_system_locales) ||
+ in_array("zh_CN.utf8",$all_system_locales) ) {
+ echo "-- Testing setlocale() by giving 'category' as LC_ALL & multiple locales(en_US.utf8, Ko_KR.utf8, zh_CN.utf8) --\n";
+
+ // call setlocale()
+ $new_locale = setlocale(LC_ALL, "en_US.utf8", "Ko_KR.utf8", "zh_CN.utf8");
+
+ // dump the name of the new locale set by setlocale()
+ var_dump($new_locale);
+
+ // check that new locale setting is effective
+ // use localeconv() to get the details of currently set locale
+ $locale_info = localeconv();
+ $new_currency = trim($locale_info['int_curr_symbol']);
+
+ echo "Checking currency settings in the new locale, expected: ".$currency_symbol[$new_locale].", Found: ".$new_currency."\n";
+ echo "Test ";
+ if( trim($currency_symbol[$new_locale]) == $new_currency) {
+ echo "PASSED.\n";
+ } else {
+ echo "FAILED.\n";
+ }
+}
+
+echo "Done\n";
+?>
+--EXPECTF--
+*** Testing setlocale() by passing multiple locales as argument ***
+-- Testing setlocale() by giving 'category' as LC_ALL & multiple locales(en_US.utf8, Ko_KR.utf8, zh_CN.utf8) --
+string(%d) "%s"
+Checking currency settings in the new locale, expected: %s, Found: %s
+Test PASSED.
+Done
--- /dev/null
+--TEST--
+Test setlocale() function : error conditions
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN')
+ die('skip Not valid for windows');
+if(ini_get("unicode.semantics") == "1")
+ die('skip do not run when unicode on');
+?>
+--FILE--
+<?php
+/* Prototype : string setlocale (int $category , string $locale [,string $..] )
+ : string setlocale(int $category , array $locale);
+ * Description: Sets locale information.Returns the new current locale , or FALSE if locale functinality is not implemented in this platform.
+ * Source code: ext/standard/string.c
+*/
+
+echo "*** Testing setlocale() : error conditions ***\n";
+
+// Zero argument
+echo "\n-- Testing setlocale() function with Zero arguments --";
+var_dump( setlocale());
+
+// One argument
+echo "\n-- Testing setlocale() function with One argument, 'category' = LC_ALL --";
+var_dump( setlocale(LC_ALL) );
+
+echo "\n-- Testing setlocale() function with invalid locale array, 'category' = LC_ALL --\n";
+//Invalid array of locales
+$invalid_locales = array("en_US.invalid", "en_AU.invalid", "ko_KR.invalid");
+var_dump( setlocale(LC_ALL,$invalid_locales) );
+
+echo "\n-- Testing setlocale() function with invalid multiple locales, 'category' = LC_ALL --\n";
+//Invalid array of locales
+var_dump( setlocale(LC_ALL,"en_US.invalid", "en_AU.invalid", "ko_KR.invalid") );
+
+echo "\n-- Testing setlocale() function with invalid category --\n";
+//invalid $category
+$invalid_category = "TEST";
+var_dump( setlocale($invalid_category,"en_US.utf8") );
+
+echo "\nDone";
+?>
+--EXPECTF--
+
+*** Testing setlocale() : error conditions ***
+
+-- Testing setlocale() function with Zero arguments --
+Warning: Wrong parameter count for setlocale() in %s on line %d
+NULL
+
+-- Testing setlocale() function with One argument, 'category' = LC_ALL --
+Warning: Wrong parameter count for setlocale() in %s on line %d
+NULL
+
+-- Testing setlocale() function with invalid locale array, 'category' = LC_ALL --
+bool(false)
+
+-- Testing setlocale() function with invalid multiple locales, 'category' = LC_ALL --
+bool(false)
+
+-- Testing setlocale() function with invalid category --
+
+Warning: setlocale(): Passing locale category name as string is deprecated. Use the LC_* -constants instead in %s on line %d
+
+Warning: setlocale(): Invalid locale category name TEST, must be one of LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, or LC_TIME in %s on line %d
+bool(false)
+
+Done
--- /dev/null
+--TEST--
+Test setlocale() function : usage variations - passing multiple valid/invlaid locales as argument
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN')
+ die('skip Not valid for windows');
+if(ini_get("unicode.semantics") == "1")
+ die('skip do not run when unicode on');
+?>
+--FILE--
+<?php
+/* Prototype : string setlocale (int $category , string $locale [,string $..] )
+ : string setlocale(int $category , array $locale);
+ * Description: Sets locale information.Returns the new current locale , or FALSE
+ if locale functinality is not implemented in this platform.
+ * Source code: ext/standard/string.c
+*/
+
+/* Test the setlocale() when multiple valid/invalid locales are provided as argument */
+
+/* Prototype : array list_system_locales( void )
+ Description: To get the currently installed locle in this platform
+ Arguments : Nil
+ Returns : set of locale as array
+*/
+function list_system_locales() {
+ // start the buffering of next command to internal output buffer
+ ob_start();
+
+ // run the command 'locale -a' to fetch all locales available in the system
+ system('locale -a');
+
+ // get the contents from the internal output buffer
+ $all_locales = ob_get_contents();
+
+ // fflush and end the output buffering to internal output buffer
+ ob_end_clean();
+
+ $system_locales = explode("\n", $all_locales);
+
+ // return all the locale found in the system
+ return $system_locales;
+}
+
+/* Collect existing system locales and get 2 valid locales that can be use to
+ pass as argument to setlocale(), pass 2 invalid arguments along with two valid argumentsss */
+echo "*** Testing setlocale() by passing multiple valid/invalid locales as argument ***\n";
+
+//set of currency symbol according to above list of locales
+$currency_symbol = array(
+ "en_US.utf8" => "USD",
+ "ko_KR.utf8" => "KRW",
+ "zh_CN.utf8" => "CNY"
+);
+
+// gather all the locales installed in the system
+$all_system_locales = list_system_locales();
+
+// Now check for three locales that is present in the system and use that as argument to setlocale()
+if( in_array("en_US.utf8",$all_system_locales) ||
+ in_array("Ko_KR.utf8",$all_system_locales) ||
+ in_array("zh_CN.utf8",$all_system_locales) ) {
+ echo "-- Testing setlocale() by giving 'category' as LC_ALL & multiple locales(en_US.invalid, en_US.utf8, Ko_KR.utf8, KO_KR.invalid, zh_CN.utf8) --\n";
+
+ // call setlocale()
+ $new_locale = setlocale(LC_ALL, "en_US.invalid", "en_US.utf8", "Ko_KR.utf8", "KO_KR.invalid", "zh_CN.utf8");
+
+ // dump the name of the new locale set by setlocale()
+ var_dump($new_locale);
+
+ // check that new locale setting is effective
+ // use localeconv() to get the details of currently set locale
+ $locale_info = localeconv();
+ $new_currency = trim($locale_info['int_curr_symbol']);
+
+ echo "Checking currency settings in the new locale, expected: ".$currency_symbol[$new_locale].", Found: ".$new_currency."\n";
+ echo "Test ";
+ if( trim($currency_symbol[$new_locale]) == $new_currency) {
+ echo "PASSED.\n";
+ } else {
+ echo "FAILED.\n";
+ }
+}
+
+echo "Done\n";
+?>
+--EXPECTF--
+*** Testing setlocale() by passing multiple valid/invalid locales as argument ***
+-- Testing setlocale() by giving 'category' as LC_ALL & multiple locales(en_US.invalid, en_US.utf8, Ko_KR.utf8, KO_KR.invalid, zh_CN.utf8) --
+string(%d) "%s"
+Checking currency settings in the new locale, expected: %s, Found: %s
+Test PASSED.
+Done
--- /dev/null
+--TEST--
+Test setlocale() function : usage variations - Setting all available locales in the platform
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN')
+ die('skip Not valid for windows');
+if(ini_get("unicode.semantics") == "1")
+ die('skip do not run when unicode on');
+?>
+--FILE--
+<?php
+/* Prototype : string setlocale (int $category , string $locale [,string $..] )
+ : string setlocale(int $category , array $locale);
+ * Description: Sets locale information.Returns the new current locale , or FALSE
+ if locale functinality is not implemented in this platform.
+ * Source code: ext/standard/string.c
+*/
+
+/* setlocale() to set all available locales in the system and check the success count */
+echo "*** Testing setlocale() : usage variations ***\n";
+
+/* Prototype : array list_system_locales( void )
+ * Description: To get the currently installed locle in this platform
+ * Arguments : Nil
+ * Returns : set of locale as array
+*/
+function list_system_locales() {
+ // start the buffering of next command to internal output buffer
+ ob_start();
+
+ // run the command 'locale -a' to fetch all locales available in the system
+ system('locale -a');
+
+ // get the contents from the internal output buffer
+ $all_locales = ob_get_contents();
+
+ // fflush and end the output buffering to internal output buffer
+ ob_end_clean();
+
+ $system_locales = explode("\n", $all_locales);
+
+ // return all the locale found in the system
+ return $system_locales;
+}
+
+// gather all the locales installed in the system
+$all_system_locales = list_system_locales();
+
+//try different locale names
+$failure_locale = array();
+$success_count = 0;
+
+echo "-- Test setlocale() with all available locale in the system --\n";
+// gather all locales installed in the system(stored $all_system_locales),
+// try n set each locale using setlocale() and keep track failures, if any
+foreach($all_system_locales as $value){
+ //set locale to $value, if success, count increments
+ if(setlocale(LC_ALL,$value )){
+ $success_count++;
+ }
+ else{
+ //failure values are put in to an array $failure_locale
+ $failure_locale[] = $value;
+ }
+}
+
+echo "No of locales found on the machine = ".count($all_system_locales)."\n";
+echo "No of setlocale() success = ".$success_count."\n";
+echo "Expected no of failures = 0\n";
+echo "Test ";
+// check if there were any failure of setlocale() function earlier, if any
+// failure then dump the list of failing locales
+if($success_count != count($all_system_locales)){
+ echo "FAILED\n";
+ echo "Names of locale() for which setlocale() failed ...\n";
+ var_dump($failure_locale);
+}
+else{
+ echo "PASSED\n";
+}
+
+echo "Done\n";
+?>
+--EXPECTF--
+*** Testing setlocale() : usage variations ***
+-- Test setlocale() with all available locale in the system --
+No of locales found on the machine = %d
+No of setlocale() success = %d
+Expected no of failures = 0
+Test PASSED
+Done
--- /dev/null
+--TEST--
+Test setlocale() function : usage variations - setting system locale = 0
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN')
+ die('skip Not valid for windows');
+if(ini_get("unicode.semantics") == "1")
+ die('skip do not run when unicode on');
+?>
+--FILE--
+<?php
+/* Prototype : string setlocale (int $category , string $locale [,string $..] )
+ * : string setlocale(int $category , array $locale);
+ * Description: Sets locale information.Returns the new current locale , or FALSE
+ * if locale functinality is not implemented in this platform.
+ * Source code: ext/standard/string.c
+*/
+
+/* If locale is "0", the locale setting is not affected, only the current setting is returned */
+
+echo "*** Testing setlocale() : usage variations - setting system locale = 0 ***\n";
+$locale_info_before = array();
+$locale_info_after = array();
+
+//initially giving the locale
+setlocale(LC_ALL,"en_US.utf8");
+
+echo "Locale info, before setting the locale\n";
+//returns current locale,before executing setlocale().
+$locale_info_before = localeconv();
+
+var_dump($locale_info_before);
+
+//Testing setlocale() by giving locale = 0
+echo "Setting system locale, category = LC_ALL and locale = 0\n";
+setlocale(LC_ALL, 0);
+
+echo "Locale info, after setting the locale\n";
+//returns current locale,after executing setlocale().
+$locale_info_after = localeconv();
+
+var_dump($locale_info_after);
+
+echo "Checking locale in the system, Expected : no change in the existing locale\n";
+echo "Test ";
+if($locale_info_before == $locale_info_after){
+ echo "PASSED.";
+} else {
+ echo "FAILED.";
+}
+
+echo "\nDone\n";
+?>
+--EXPECTF--
+*** Testing setlocale() : usage variations - setting system locale = 0 ***
+Locale info, before setting the locale
+array(18) {
+ ["decimal_point"]=>
+ string(1) "."
+ ["thousands_sep"]=>
+ string(1) ","
+ ["int_curr_symbol"]=>
+ string(4) "USD "
+ ["currency_symbol"]=>
+ string(1) "$"
+ ["mon_decimal_point"]=>
+ string(1) "."
+ ["mon_thousands_sep"]=>
+ string(1) ","
+ ["positive_sign"]=>
+ string(0) ""
+ ["negative_sign"]=>
+ string(1) "-"
+ ["int_frac_digits"]=>
+ int(2)
+ ["frac_digits"]=>
+ int(2)
+ ["p_cs_precedes"]=>
+ int(1)
+ ["p_sep_by_space"]=>
+ int(0)
+ ["n_cs_precedes"]=>
+ int(1)
+ ["n_sep_by_space"]=>
+ int(0)
+ ["p_sign_posn"]=>
+ int(1)
+ ["n_sign_posn"]=>
+ int(1)
+ ["grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+ ["mon_grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+}
+Setting system locale, category = LC_ALL and locale = 0
+Locale info, after setting the locale
+array(18) {
+ ["decimal_point"]=>
+ string(1) "."
+ ["thousands_sep"]=>
+ string(1) ","
+ ["int_curr_symbol"]=>
+ string(4) "USD "
+ ["currency_symbol"]=>
+ string(1) "$"
+ ["mon_decimal_point"]=>
+ string(1) "."
+ ["mon_thousands_sep"]=>
+ string(1) ","
+ ["positive_sign"]=>
+ string(0) ""
+ ["negative_sign"]=>
+ string(1) "-"
+ ["int_frac_digits"]=>
+ int(2)
+ ["frac_digits"]=>
+ int(2)
+ ["p_cs_precedes"]=>
+ int(1)
+ ["p_sep_by_space"]=>
+ int(0)
+ ["n_cs_precedes"]=>
+ int(1)
+ ["n_sep_by_space"]=>
+ int(0)
+ ["p_sign_posn"]=>
+ int(1)
+ ["n_sign_posn"]=>
+ int(1)
+ ["grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+ ["mon_grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+}
+Checking locale in the system, Expected : no change in the existing locale
+Test PASSED.
+Done
--- /dev/null
+--TEST--
+Test setlocale() function : usage variations - setting system locale as null
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN')
+ die('skip Not valid for windows');
+if(ini_get("unicode.semantics") == "1")
+ die('skip do not run when unicode on');
+?>
+--ENV--
+LC_ALL=en_US.utf8;
+--FILE--
+<?php
+/* Prototype : string setlocale (int $category , string $locale [,string $..] )
+ * : string setlocale(int $category , array $locale);
+ * Description: Sets locale information.Returns the new current locale , or FALSE
+ * if locale functinality is not implemented in this platform.
+ * Source code: ext/standard/string.c
+*/
+
+/*If locale is NULL, the locale names will be set from the values of environment variables with the same names as the above ENV settings */
+
+echo "*** Testing setlocale() : usage variations - Setting system locale = null ***\n";
+
+//initially setting the locale
+setlocale(LC_ALL,"en_AU.utf8");
+
+echo "Locale info, before setting the locale\n";
+//returns current locale,before executing setlocale() .
+$locale_info_before = localeconv();
+var_dump($locale_info_before);
+
+//Testing setlocale() by giving locale = null
+echo "Setting system locale, category = LC_ALL and locale = null\n";
+setlocale(LC_ALL, null);
+
+echo "Locale info, after setting the locale\n";
+//Returns Current locale,after executing setlocale().
+$locale_info_after = localeconv();
+var_dump($locale_info_after);
+
+echo "Checking new locale in the system, Expected : the locale names will be set from the values of environment variables\n";
+echo "Test ";
+if($locale_info_before != $locale_info_after){
+ echo "PASSED.";
+} else {
+ echo "FAILED.";
+}
+
+echo "\nDone\n";
+?>
+--EXPECTF--
+*** Testing setlocale() : usage variations - Setting system locale = null ***
+Locale info, before setting the locale
+array(18) {
+ ["decimal_point"]=>
+ string(1) "."
+ ["thousands_sep"]=>
+ string(1) ","
+ ["int_curr_symbol"]=>
+ string(4) "AUD "
+ ["currency_symbol"]=>
+ string(1) "$"
+ ["mon_decimal_point"]=>
+ string(1) "."
+ ["mon_thousands_sep"]=>
+ string(1) ","
+ ["positive_sign"]=>
+ string(0) ""
+ ["negative_sign"]=>
+ string(1) "-"
+ ["int_frac_digits"]=>
+ int(2)
+ ["frac_digits"]=>
+ int(2)
+ ["p_cs_precedes"]=>
+ int(1)
+ ["p_sep_by_space"]=>
+ int(0)
+ ["n_cs_precedes"]=>
+ int(1)
+ ["n_sep_by_space"]=>
+ int(0)
+ ["p_sign_posn"]=>
+ int(1)
+ ["n_sign_posn"]=>
+ int(1)
+ ["grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+ ["mon_grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+}
+Setting system locale, category = LC_ALL and locale = null
+Locale info, after setting the locale
+array(18) {
+ ["decimal_point"]=>
+ string(1) "."
+ ["thousands_sep"]=>
+ string(1) ","
+ ["int_curr_symbol"]=>
+ string(4) "USD "
+ ["currency_symbol"]=>
+ string(1) "$"
+ ["mon_decimal_point"]=>
+ string(1) "."
+ ["mon_thousands_sep"]=>
+ string(1) ","
+ ["positive_sign"]=>
+ string(0) ""
+ ["negative_sign"]=>
+ string(1) "-"
+ ["int_frac_digits"]=>
+ int(2)
+ ["frac_digits"]=>
+ int(2)
+ ["p_cs_precedes"]=>
+ int(1)
+ ["p_sep_by_space"]=>
+ int(0)
+ ["n_cs_precedes"]=>
+ int(1)
+ ["n_sep_by_space"]=>
+ int(0)
+ ["p_sign_posn"]=>
+ int(1)
+ ["n_sign_posn"]=>
+ int(1)
+ ["grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+ ["mon_grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+}
+Checking new locale in the system, Expected : the locale names will be set from the values of environment variables
+Test PASSED.
+Done
--- /dev/null
+--TEST--
+Test setlocale() function : usage variations - Setting system locale as empty string
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN')
+ die('skip Not valid for windows');
+if(ini_get("unicode.semantics") == "1")
+ die('skip do not run when unicode on');
+?>
+--ENV--
+LC_ALL=en_US.utf8;
+--FILE--
+<?php
+/* Prototype : string setlocale (int $category , string $locale [,string $..] )
+ * : string setlocale(int $category , array $locale);
+ * Description: Sets locale information.Returns the new current locale , or FALSE
+ * if locale functinality is not implemented in this platform.
+ * Source code: ext/standard/string.c
+*/
+
+/* If locale is empty string "", the locale names will be set from the values of environment variables with the same names as from ENV */
+
+echo "*** Testing setlocale() : usage variations - setting system locale = \"\" ***\n";
+
+//initially setting the locale
+setlocale(LC_ALL,'en_AU.utf8');
+
+echo "Locale info, before setting the locale\n";
+
+//returns current locale,before executing setlocale() .
+$locale_info_before = localeconv();
+
+var_dump($locale_info_before);
+
+//Testing setlocale() by giving locale = null
+echo "Setting system locale, category = LC_ALL and locale = \"\"\n";
+setlocale(LC_ALL, "");
+
+echo "Locale info, after setting the locale\n";
+
+//Returns Current locale,after executing setlocale().
+$locale_info_after = localeconv();
+
+var_dump($locale_info_after);
+
+echo "Checking new locale in the system, Expected : the locale names will be set from the values of environment variables\n";
+echo "Test ";
+if($locale_info_before != $locale_info_after){
+ echo "PASSED.";
+} else {
+ echo "FAILED.";
+}
+
+echo "\nDone\n";
+?>
+--EXPECTF--
+*** Testing setlocale() : usage variations - setting system locale = "" ***
+Locale info, before setting the locale
+array(18) {
+ ["decimal_point"]=>
+ string(1) "."
+ ["thousands_sep"]=>
+ string(1) ","
+ ["int_curr_symbol"]=>
+ string(4) "AUD "
+ ["currency_symbol"]=>
+ string(1) "$"
+ ["mon_decimal_point"]=>
+ string(1) "."
+ ["mon_thousands_sep"]=>
+ string(1) ","
+ ["positive_sign"]=>
+ string(0) ""
+ ["negative_sign"]=>
+ string(1) "-"
+ ["int_frac_digits"]=>
+ int(2)
+ ["frac_digits"]=>
+ int(2)
+ ["p_cs_precedes"]=>
+ int(1)
+ ["p_sep_by_space"]=>
+ int(0)
+ ["n_cs_precedes"]=>
+ int(1)
+ ["n_sep_by_space"]=>
+ int(0)
+ ["p_sign_posn"]=>
+ int(1)
+ ["n_sign_posn"]=>
+ int(1)
+ ["grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+ ["mon_grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+}
+Setting system locale, category = LC_ALL and locale = ""
+Locale info, after setting the locale
+array(18) {
+ ["decimal_point"]=>
+ string(1) "."
+ ["thousands_sep"]=>
+ string(1) ","
+ ["int_curr_symbol"]=>
+ string(4) "USD "
+ ["currency_symbol"]=>
+ string(1) "$"
+ ["mon_decimal_point"]=>
+ string(1) "."
+ ["mon_thousands_sep"]=>
+ string(1) ","
+ ["positive_sign"]=>
+ string(0) ""
+ ["negative_sign"]=>
+ string(1) "-"
+ ["int_frac_digits"]=>
+ int(2)
+ ["frac_digits"]=>
+ int(2)
+ ["p_cs_precedes"]=>
+ int(1)
+ ["p_sep_by_space"]=>
+ int(0)
+ ["n_cs_precedes"]=>
+ int(1)
+ ["n_sep_by_space"]=>
+ int(0)
+ ["p_sign_posn"]=>
+ int(1)
+ ["n_sign_posn"]=>
+ int(1)
+ ["grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+ ["mon_grouping"]=>
+ array(2) {
+ [0]=>
+ int(3)
+ [1]=>
+ int(3)
+ }
+}
+Checking new locale in the system, Expected : the locale names will be set from the values of environment variables
+Test PASSED.
+Done