<?php
/**
 * Turkish locale tests
 * Copyright (c) 2007 Tomas Kuliavas <tokul@users.sourceforge.net>
 */

/**
 * Sample function. Function name is used for testing
 */
function testIcase() {
    
// test function
}

/**
 * Sample class. Class name used for testing
 */
class TestIt {
}

/**
 * Second sample class. Used in method tests.
 */
class testclass2 {
    
/**
     * Sample method. Name is used in tests.
     *
     * @return boolean true
     */
    
function TestItToo() {
       return 
true;
    }
}

/**
 * Variable used in tests
 */
$testIvar true;

header('Content-Type: text/plain; charset=iso-8859-9');
ini_set('html_errors',0);
/**
 * Must test UTF-8 and ISO-8859-9 based Turkish locales. date_default_timezone_get()
 * fails only on UTF-8 locale. Azerbaijani and Kurdish locales use Turkish locale rules.
 */
echo "Setting locale (test SHOULD NOT return false or six text values delimited with '/'\n";
if (
function_exists('locale_set_default')) {
    
// PHP6.
    
var_dump(locale_set_default('tr_TR.UTF-8'));
    
var_dump(locale_get_default());
    echo 
"WARNING: PHP6 locale tests are unstable\n";
} else {
    
//var_dump(setlocale(LC_ALL,'tr_TR.UTF-8'));
    
var_dump(setlocale(LC_ALL,'tr_TR.ISO-8859-9'));
    
//var_dump(setlocale(LC_ALL,'C'));
}
//putenv('TZ=Europe/Helsinki');
echo "\n";

?>
--------------
Function tests
--------------
If functions are locale aware, results don't match expected values on
Azerbaijani, Kurdish and Turkish locales. If some string values are expected,
compare expected and resulting values of latin small letter i and latin capital
letter i. Pay close attention to dot above i and expected letter case.

Tests show possible I18N programming mistakes.

<?php

echo "strcasecmp test. Expected int(0)\n";
var_dump(strcasecmp('inbox','INBOX'));
echo 
"\n";

echo 
"strnatcasecmp test. Expected int(0)\n";
var_dump(strnatcasecmp('inbox','INBOX'));
echo 
"\n";

echo 
"strtolower test. Expected string(5) \"inbox\"\n";
var_dump(strtolower('INBOX'));
echo 
"\n";

echo 
"strtoupper test. Expected string(5) \"INBOX\"\n";
var_dump(strtoupper('inbox'));
echo 
"\n";

echo 
"stristr test. Expected string(5) \"inbox\", bool(false) on failure\n";
var_dump(stristr('inbox','INBOX'));
echo 
"\n";

echo 
"str_ireplace tests. strings start with #\n";
var_dump(str_ireplace('i','#','INBOX'));
var_dump(str_ireplace(array('i'),array('#'),'INBOX'));
var_dump(str_ireplace('I','#','inbox'));
var_dump(str_ireplace(array('I'),array('#'),'inbox'));
echo 
"\n";

echo 
"stripos tests. Expected four int(0)\n";
var_dump(stripos('inboxINBOX','i'));
var_dump(stripos('INBOXinbox','i'));
var_dump(stripos('inboxINBOX','I'));
var_dump(stripos('INBOXinbox','I'));
echo 
"\n";

echo 
"strripos tests. Expected four int(5)\n";
var_dump(strripos('inboxINBOX','i'));
var_dump(strripos('INBOXinbox','i'));
var_dump(strripos('inboxINBOX','I'));
var_dump(strripos('INBOXinbox','I'));
echo 
"\n";

echo 
"ucfirst test. Expected - first I in upper case\n";
var_dump(ucfirst('inbox'));
echo 
"\n";

echo 
"ucwords test.Expected - first Is in upper case\n";
var_dump(ucwords('inbox inbox inbox'));
echo 
"\n";
?>

----------------------
Case sensitivity tests
----------------------

<?php

/** */
echo "Case sensitive variable names. true expected\n";
var_dump(isset($testIvar));
echo 
"\n";

/** */
echo "Case insensitive variable names. false expected\n";
var_dump(isset($testivar));
echo 
"\n";

?>

----------------
Regression tests
----------------

<?php

/** Regression test: bug 16865 */
echo "Function names. Regression test for PHP bug 16865. true expected\n";
var_dump(function_exists('testicase'));
echo 
"\n";

/** Regression test: bugs 18556, 35050 */
echo "Class names. Regression test for PHP bugs 18556, 35050. true expected\n";
/**
 * Disabled wide test from bug tracker
foreach(get_declared_classes() as $class) {
    if(!class_exists($class)) {
        echo "Error: $class test failed!\n";
    }
}
*/
var_dump(class_exists('TestIt'));
echo 
"\n";

/** Regression test: bug 40086 */
echo "Method names. Regression test for PHP bug 40086.\n";
$TestObj = new testclass2();
var_dump(method_exists($TestObj,'TestItToo'));
echo 
"\n";

/**
 * Regression test: bug 39993. Must be last test. Function can fail with fatal
 * error
 */
if (function_exists('date_default_timezone_get')) {
    echo 
"Timezones. Regression test for PHP Bug 39993. timezone string expected. fatal\nerror on failure\n";
    
var_dump(date_default_timezone_get());
    echo 
"\n";
}