You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cacert-testmgr/external/ZendFramework-1.9.5/tests/Zend/LocaleTest.php

849 lines
34 KiB
PHP

<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Locale
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
if (!defined('PHPUnit_MAIN_METHOD')) {
define('PHPUnit_MAIN_METHOD', 'Zend_LocaleTest::main');
}
require_once dirname(__FILE__) . '/../TestHelper.php';
// define('TESTS_ZEND_LOCALE_BCMATH_ENABLED', false); // uncomment to disable use of bcmath extension by Zend_Date
/**
* Zend_Locale
*/
require_once 'Zend/Locale.php';
require_once 'Zend/Cache.php';
/**
* @category Zend
* @package Zend_Locale
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_LocaleTest extends PHPUnit_Framework_TestCase
{
/**
* Runs the test methods of this class.
*
* @return void
*/
public static function main()
{
$suite = new PHPUnit_Framework_TestSuite("Zend_LocaleTest");
$result = PHPUnit_TextUI_TestRunner::run($suite);
}
private $_cache = null;
private $_locale = null;
public function setUp()
{
$this->_locale = setlocale(LC_ALL, 0);
setlocale(LC_ALL, 'de');
require_once 'Zend/Cache.php';
$this->_cache = Zend_Cache::factory('Core', 'File',
array('lifetime' => 120, 'automatic_serialization' => true),
array('cache_dir' => dirname(__FILE__) . '/_files/'));
Zend_LocaleTestHelper::resetObject();
Zend_LocaleTestHelper::setCache($this->_cache);
// compatibilityMode is true until 1.8 therefor we have to change it
Zend_LocaleTestHelper::$compatibilityMode = false;
putenv("HTTP_ACCEPT_LANGUAGE=,de,en-UK-US;q=0.5,fr_FR;q=0.2");
}
public function tearDown()
{
$this->_cache->clean(Zend_Cache::CLEANING_MODE_ALL);
if (is_string($this->_locale) && strpos($this->_locale, ';')) {
$locales = array();
foreach (explode(';', $this->_locale) as $l) {
$tmp = explode('=', $l);
$locales[$tmp[0]] = $tmp[1];
}
setlocale(LC_ALL, $locales);
return;
}
setlocale(LC_ALL, $this->_locale);
}
/**
* test for object creation
* expected object instance
*/
public function testObjectCreation()
{
$this->assertTrue(Zend_LocaleTestHelper::isLocale('de'));
$this->assertTrue(new Zend_LocaleTestHelper() instanceof Zend_Locale);
$this->assertTrue(new Zend_LocaleTestHelper('root') instanceof Zend_Locale);
try {
$locale = new Zend_LocaleTestHelper(Zend_Locale::ENVIRONMENT);
$this->assertTrue($locale instanceof Zend_Locale);
} catch (Zend_Locale_Exception $e) {
// ignore environments where the locale can not be detected
$this->assertContains('Autodetection', $e->getMessage());
}
try {
$this->assertTrue(new Zend_LocaleTestHelper(Zend_Locale::BROWSER) instanceof Zend_Locale);
} catch (Zend_Locale_Exception $e) {
// ignore environments where the locale can not be detected
$this->assertContains('Autodetection', $e->getMessage());
}
$locale = new Zend_LocaleTestHelper('de');
$this->assertTrue(new Zend_LocaleTestHelper($locale) instanceof Zend_Locale);
$locale = new Zend_LocaleTestHelper('auto');
$this->assertTrue(new Zend_LocaleTestHelper($locale) instanceof Zend_Locale);
// compatibility tests
set_error_handler(array($this, 'errorHandlerIgnore'));
Zend_LocaleTestHelper::$compatibilityMode = true;
$this->assertEquals('de', Zend_LocaleTestHelper::isLocale('de'));
restore_error_handler();
}
/**
* test for serialization
* expected string
*/
public function testSerialize()
{
$value = new Zend_LocaleTestHelper('de_DE');
$serial = $value->serialize();
$this->assertTrue(!empty($serial));
$newvalue = unserialize($serial);
$this->assertTrue($value->equals($newvalue));
}
/**
* test toString
* expected string
*/
public function testToString()
{
$value = new Zend_LocaleTestHelper('de_DE');
$this->assertEquals('de_DE', $value->toString());
$this->assertEquals('de_DE', $value->__toString());
}
/**
* test getOrder
* expected true
*/
public function testgetOrder()
{
Zend_LocaleTestHelper::setDefault('de');
$value = new Zend_LocaleTestHelper();
$default = $value->getOrder();
$this->assertTrue(array_key_exists('de', $default));
$default = $value->getOrder(Zend_Locale::BROWSER);
$this->assertTrue(is_array($default));
$default = $value->getOrder(Zend_Locale::ENVIRONMENT);
$this->assertTrue(is_array($default));
$default = $value->getOrder(Zend_Locale::ZFDEFAULT);
$this->assertTrue(is_array($default));
}
/**
* test getEnvironment
* expected true
*/
public function testLocaleDetail()
{
$value = new Zend_LocaleTestHelper('de_AT');
$this->assertEquals('de', $value->getLanguage());
$this->assertEquals('AT', $value->getRegion());
$value = new Zend_LocaleTestHelper('en_US');
$this->assertEquals('en', $value->getLanguage());
$this->assertEquals('US', $value->getRegion());
$value = new Zend_LocaleTestHelper('en');
$this->assertEquals('en', $value->getLanguage());
$this->assertFalse($value->getRegion());
}
/**
* test getEnvironment
* expected true
*/
public function testEnvironment()
{
$value = new Zend_LocaleTestHelper();
$default = $value->getEnvironment();
$this->assertTrue(is_array($default));
}
/**
* test getBrowser
* expected true
*/
public function testBrowser()
{
$value = new Zend_LocaleTestHelper();
$default = $value->getBrowser();
$this->assertTrue(is_array($default));
}
/**
* test clone
* expected true
*/
public function testCloning()
{
$value = new Zend_LocaleTestHelper('de_DE');
$newvalue = clone $value;
$this->assertEquals($value->toString(), $newvalue->toString());
}
/**
* test setLocale
* expected true
*/
public function testsetLocale()
{
$value = new Zend_LocaleTestHelper('de_DE');
$value->setLocale('en_US');
$this->assertEquals('en_US', $value->toString());
$value->setLocale('en_AA');
$this->assertEquals('en', $value->toString());
$value->setLocale('xx_AA');
$this->assertEquals('root', $value->toString());
$value->setLocale('auto');
$this->assertTrue(is_string($value->toString()));
try {
$value->setLocale('browser');
$this->assertTrue(is_string($value->toString()));
} catch (Zend_Locale_Exception $e) {
// ignore environments where the locale can not be detected
$this->assertContains('Autodetection', $e->getMessage());
}
try {
$value->setLocale('environment');
$this->assertTrue(is_string($value->toString()));
} catch (Zend_Locale_Exception $e) {
// ignore environments where the locale can not be detected
$this->assertContains('Autodetection', $e->getMessage());
}
}
/**
* test getLanguageTranslationList
* expected true
*/
public function testgetLanguageTranslationList()
{
set_error_handler(array($this, 'errorHandlerIgnore'));
$list = Zend_LocaleTestHelper::getLanguageTranslationList();
$this->assertTrue(is_array($list));
$list = Zend_LocaleTestHelper::getLanguageTranslationList('de');
$this->assertTrue(is_array($list));
restore_error_handler();
}
/**
* test getLanguageTranslation
* expected true
*/
public function testgetLanguageTranslation()
{
set_error_handler(array($this, 'errorHandlerIgnore'));
$this->assertEquals('Deutsch', Zend_LocaleTestHelper::getLanguageTranslation('de', 'de_AT'));
$this->assertEquals('German', Zend_LocaleTestHelper::getLanguageTranslation('de', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getLanguageTranslation('xyz'));
$this->assertTrue(is_string(Zend_LocaleTestHelper::getLanguageTranslation('de', 'auto')));
restore_error_handler();
}
/**
* test getScriptTranslationList
* expected true
*/
public function testgetScriptTranslationList()
{
set_error_handler(array($this, 'errorHandlerIgnore'));
$list = Zend_LocaleTestHelper::getScriptTranslationList();
$this->assertTrue(is_array($list));
$list = Zend_LocaleTestHelper::getScriptTranslationList('de');
$this->assertTrue(is_array($list));
restore_error_handler();
}
/**
* test getScriptTranslationList
* expected true
*/
public function testgetScriptTranslation()
{
set_error_handler(array($this, 'errorHandlerIgnore'));
$this->assertEquals('Arabisch', Zend_LocaleTestHelper::getScriptTranslation('Arab', 'de_AT'));
$this->assertEquals('Arabic', Zend_LocaleTestHelper::getScriptTranslation('Arab', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getScriptTranslation('xyz'));
restore_error_handler();
}
/**
* test getCountryTranslationList
* expected true
*/
public function testgetCountryTranslationList()
{
set_error_handler(array($this, 'errorHandlerIgnore'));
$list = Zend_LocaleTestHelper::getCountryTranslationList();
$this->assertTrue(is_array($list));
$list = Zend_LocaleTestHelper::getCountryTranslationList('de');
$this->assertEquals("Vereinigte Staaten", $list['US']);
restore_error_handler();
}
/**
* test getCountryTranslation
* expected true
*/
public function testgetCountryTranslation()
{
set_error_handler(array($this, 'errorHandlerIgnore'));
$this->assertEquals('Deutschland', Zend_LocaleTestHelper::getCountryTranslation('DE', 'de_DE'));
$this->assertEquals('Germany', Zend_LocaleTestHelper::getCountryTranslation('DE', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getCountryTranslation('xyz'));
restore_error_handler();
}
/**
* test getTerritoryTranslationList
* expected true
*/
public function testgetTerritoryTranslationList()
{
set_error_handler(array($this, 'errorHandlerIgnore'));
$list = Zend_LocaleTestHelper::getTerritoryTranslationList();
$this->assertTrue(is_array($list));
$list = Zend_LocaleTestHelper::getTerritoryTranslationList('de');
$this->assertTrue(is_array($list));
restore_error_handler();
}
/**
* test getTerritoryTranslation
* expected true
*/
public function testgetTerritoryTranslation()
{
set_error_handler(array($this, 'errorHandlerIgnore'));
$this->assertEquals('Afrika', Zend_LocaleTestHelper::getTerritoryTranslation('002', 'de_AT'));
$this->assertEquals('Africa', Zend_LocaleTestHelper::getTerritoryTranslation('002', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTerritoryTranslation('xyz'));
$this->assertTrue(is_string(Zend_LocaleTestHelper::getTerritoryTranslation('002', 'auto')));
restore_error_handler();
}
/**
* test getTranslation
* expected true
*/
public function testgetTranslation()
{
try {
$temp = Zend_LocaleTestHelper::getTranslation('xx');
$this->fail();
} catch (Zend_Locale_Exception $e) {
$this->assertContains('Unknown detail (', $e->getMessage());
}
$this->assertEquals('Deutsch', Zend_LocaleTestHelper::getTranslation('de', 'language', 'de_DE'));
$this->assertEquals('German', Zend_LocaleTestHelper::getTranslation('de', 'language', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xx', 'language'));
$this->assertEquals('Lateinisch', Zend_LocaleTestHelper::getTranslation('Latn', 'script', 'de_DE'));
$this->assertEquals('Latin', Zend_LocaleTestHelper::getTranslation('Latn', 'script', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xyxy', 'script'));
$this->assertEquals('Österreich', Zend_LocaleTestHelper::getTranslation('AT', 'country', 'de_DE'));
$this->assertEquals('Austria', Zend_LocaleTestHelper::getTranslation('AT', 'country', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xx', 'country'));
$this->assertEquals('Afrika', Zend_LocaleTestHelper::getTranslation('002', 'territory', 'de_DE'));
$this->assertEquals('Africa', Zend_LocaleTestHelper::getTranslation('002', 'territory', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xxx', 'territory'));
$this->assertEquals('Januar', Zend_LocaleTestHelper::getTranslation('1', 'month', 'de_DE'));
$this->assertEquals('January', Zend_LocaleTestHelper::getTranslation('1', 'month', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('x', 'month'));
$this->assertEquals('Jan', Zend_LocaleTestHelper::getTranslation(array('gregorian', 'format', 'abbreviated', '1'), 'month', 'de_DE'));
$this->assertEquals('Jan', Zend_LocaleTestHelper::getTranslation(array('gregorian', 'format', 'abbreviated', '1'), 'month', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation(array('gregorian', 'format', 'abbreviated', 'x'), 'month'));
$this->assertEquals('J', Zend_LocaleTestHelper::getTranslation(array('gregorian', 'stand-alone', 'narrow', '1'), 'month', 'de_DE'));
$this->assertEquals('J', Zend_LocaleTestHelper::getTranslation(array('gregorian', 'stand-alone', 'narrow', '1'), 'month', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation(array('gregorian', 'stand-alone', 'narrow', 'x'), 'month'));
$this->assertEquals('Sonntag', Zend_LocaleTestHelper::getTranslation('sun', 'day', 'de_DE'));
$this->assertEquals('Sunday', Zend_LocaleTestHelper::getTranslation('sun', 'day', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xxx', 'day'));
$this->assertEquals('So.', Zend_LocaleTestHelper::getTranslation(array('gregorian', 'format', 'abbreviated', 'sun'), 'day', 'de_DE'));
$this->assertEquals('Sun', Zend_LocaleTestHelper::getTranslation(array('gregorian', 'format', 'abbreviated', 'sun'), 'day', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation(array('gregorian', 'format', 'abbreviated', 'xxx'), 'day'));
$this->assertEquals('S', Zend_LocaleTestHelper::getTranslation(array('gregorian', 'stand-alone', 'narrow', 'sun'), 'day', 'de_DE'));
$this->assertEquals('S', Zend_LocaleTestHelper::getTranslation(array('gregorian', 'stand-alone', 'narrow', 'sun'), 'day', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation(array('gregorian', 'stand-alone', 'narrow', 'xxx'), 'day'));
$this->assertEquals('EEEE, d. MMMM y', Zend_LocaleTestHelper::getTranslation('full', 'date', 'de_DE'));
$this->assertEquals('EEEE, MMMM d, y', Zend_LocaleTestHelper::getTranslation('full', 'date', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xxxx', 'date'));
$this->assertEquals("HH:mm:ss zzzz", Zend_LocaleTestHelper::getTranslation('full', 'time', 'de_DE'));
$this->assertEquals('h:mm:ss a zzzz', Zend_LocaleTestHelper::getTranslation('full', 'time', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xxxx', 'time'));
$this->assertEquals('Wien', Zend_LocaleTestHelper::getTranslation('Europe/Vienna', 'citytotimezone', 'de_DE'));
$this->assertEquals("St. John's", Zend_LocaleTestHelper::getTranslation('America/St_Johns', 'citytotimezone', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xxxx', 'citytotimezone'));
$this->assertEquals('Euro', Zend_LocaleTestHelper::getTranslation('EUR', 'nametocurrency', 'de_DE'));
$this->assertEquals('Euro', Zend_LocaleTestHelper::getTranslation('EUR', 'nametocurrency', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xxx', 'nametocurrency'));
$this->assertEquals('EUR', Zend_LocaleTestHelper::getTranslation('Euro', 'currencytoname', 'de_DE'));
$this->assertEquals('EUR', Zend_LocaleTestHelper::getTranslation('Euro', 'currencytoname', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xxx', 'currencytoname'));
$this->assertEquals('Fr.', Zend_LocaleTestHelper::getTranslation('CHF', 'currencysymbol', 'de_DE'));
$this->assertEquals('Fr.', Zend_LocaleTestHelper::getTranslation('CHF', 'currencysymbol', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xxx', 'currencysymbol'));
$this->assertEquals('EUR', Zend_LocaleTestHelper::getTranslation('AT', 'currencytoregion', 'de_DE'));
$this->assertEquals('EUR', Zend_LocaleTestHelper::getTranslation('AT', 'currencytoregion', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xxx', 'currencytoregion'));
$this->assertEquals('011 014 015 017 018', Zend_LocaleTestHelper::getTranslation('002', 'regiontoterritory', 'de_DE'));
$this->assertEquals('011 014 015 017 018', Zend_LocaleTestHelper::getTranslation('002', 'regiontoterritory', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xxx', 'regiontoterritory'));
$this->assertEquals('AT BE CH DE LI LU', Zend_LocaleTestHelper::getTranslation('de', 'territorytolanguage', 'de_DE'));
$this->assertEquals('AT BE CH DE LI LU', Zend_LocaleTestHelper::getTranslation('de', 'territorytolanguage', 'en'));
$this->assertFalse(Zend_LocaleTestHelper::getTranslation('xxx', 'territorytolanguage'));
}
/**
* test getTranslationList
* expected true
*/
public function testgetTranslationList()
{
try {
$temp = Zend_LocaleTestHelper::getTranslationList();
$this->fail();
} catch (Zend_Locale_Exception $e) {
$this->assertContains('Unknown list (', $e->getMessage());
}
$this->assertTrue(in_array('Deutsch', Zend_LocaleTestHelper::getTranslationList('language', 'de_DE')));
$this->assertTrue(in_array('German', Zend_LocaleTestHelper::getTranslationList('language', 'en')));
$this->assertTrue(in_array('Lateinisch', Zend_LocaleTestHelper::getTranslationList('script', 'de_DE')));
$this->assertTrue(in_array('Latin', Zend_LocaleTestHelper::getTranslationList('script', 'en')));
$this->assertTrue(in_array('Afrika', Zend_LocaleTestHelper::getTranslationList('territory', 'de_DE')));
$this->assertTrue(in_array('Africa', Zend_LocaleTestHelper::getTranslationList('territory', 'en')));
$this->assertTrue(in_array('Chinesischer Kalender', Zend_LocaleTestHelper::getTranslationList('type', 'de_DE', 'calendar')));
$this->assertTrue(in_array('Chinese Calendar', Zend_LocaleTestHelper::getTranslationList('type', 'en', 'calendar')));
$this->assertTrue(in_array('Januar', Zend_LocaleTestHelper::getTranslationList('month', 'de_DE')));
$this->assertTrue(in_array('January', Zend_LocaleTestHelper::getTranslationList('month', 'en')));
$this->assertTrue(in_array('Jan', Zend_LocaleTestHelper::getTranslationList('month', 'de_DE', array('gregorian', 'format', 'abbreviated'))));
$this->assertTrue(in_array('Jan', Zend_LocaleTestHelper::getTranslationList('month', 'en', array('gregorian', 'format', 'abbreviated'))));
$this->assertTrue(in_array('J', Zend_LocaleTestHelper::getTranslationList('month', 'de_DE', array('gregorian', 'stand-alone', 'narrow'))));
$this->assertTrue(in_array('J', Zend_LocaleTestHelper::getTranslationList('month', 'en', array('gregorian', 'stand-alone', 'narrow'))));
$this->assertTrue(in_array('Sonntag', Zend_LocaleTestHelper::getTranslationList('day', 'de_DE')));
$this->assertTrue(in_array('Sunday', Zend_LocaleTestHelper::getTranslationList('day', 'en')));
$this->assertTrue(in_array('So.', Zend_LocaleTestHelper::getTranslationList('day', 'de_DE', array('gregorian', 'format', 'abbreviated'))));
$this->assertTrue(in_array('Sun', Zend_LocaleTestHelper::getTranslationList('day', 'en', array('gregorian', 'format', 'abbreviated'))));
$this->assertTrue(in_array('S', Zend_LocaleTestHelper::getTranslationList('day', 'de_DE', array('gregorian', 'stand-alone', 'narrow'))));
$this->assertTrue(in_array('S', Zend_LocaleTestHelper::getTranslationList('day', 'en', array('gregorian', 'stand-alone', 'narrow'))));
$this->assertTrue(in_array('EEEE, d. MMMM y', Zend_LocaleTestHelper::getTranslationList('date', 'de_DE')));
$this->assertTrue(in_array('EEEE, MMMM d, y', Zend_LocaleTestHelper::getTranslationList('date', 'en')));
$this->assertTrue(in_array("HH:mm:ss zzzz", Zend_LocaleTestHelper::getTranslationList('time', 'de_DE')));
$this->assertTrue(in_array("h:mm:ss a z", Zend_LocaleTestHelper::getTranslationList('time', 'en')));
$this->assertTrue(in_array('Wien', Zend_LocaleTestHelper::getTranslationList('citytotimezone', 'de_DE')));
$this->assertTrue(in_array("St. John's", Zend_LocaleTestHelper::getTranslationList('citytotimezone', 'en')));
$this->assertTrue(in_array('Euro', Zend_LocaleTestHelper::getTranslationList('nametocurrency', 'de_DE')));
$this->assertTrue(in_array('Euro', Zend_LocaleTestHelper::getTranslationList('nametocurrency', 'en')));
$this->assertTrue(in_array('EUR', Zend_LocaleTestHelper::getTranslationList('currencytoname', 'de_DE')));
$this->assertTrue(in_array('EUR', Zend_LocaleTestHelper::getTranslationList('currencytoname', 'en')));
$this->assertTrue(in_array('Fr.', Zend_LocaleTestHelper::getTranslationList('currencysymbol', 'de_DE')));
$this->assertTrue(in_array('Fr.', Zend_LocaleTestHelper::getTranslationList('currencysymbol', 'en')));
$this->assertTrue(in_array('EUR', Zend_LocaleTestHelper::getTranslationList('currencytoregion', 'de_DE')));
$this->assertTrue(in_array('EUR', Zend_LocaleTestHelper::getTranslationList('currencytoregion', 'en')));
$this->assertTrue(in_array('AU NF NZ', Zend_LocaleTestHelper::getTranslationList('regiontoterritory', 'de_DE')));
$this->assertTrue(in_array('AU NF NZ', Zend_LocaleTestHelper::getTranslationList('regiontoterritory', 'en')));
$this->assertTrue(in_array('CZ', Zend_LocaleTestHelper::getTranslationList('territorytolanguage', 'de_DE')));
$this->assertTrue(in_array('CZ', Zend_LocaleTestHelper::getTranslationList('territorytolanguage', 'en')));
$char = Zend_LocaleTestHelper::getTranslationList('characters', 'de_DE');
$this->assertEquals("[a ä b-o ö p-s ß t u ü v-z]", $char['characters']);
$this->assertEquals("[á à ă â å ä ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ß ú ù ŭ û ü ū ÿ]", $char['auxiliary']);
$this->assertEquals("[a-z]", $char['currencySymbol']);
$char = Zend_LocaleTestHelper::getTranslationList('characters', 'en');
$this->assertEquals("[a-z]", $char['characters']);
$this->assertEquals("[á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ß ú ù ŭ û ü ū ÿ]", $char['auxiliary']);
$this->assertEquals("[a-c č d-l ł m-z]", $char['currencySymbol']);
}
/**
* test for equality
* expected string
*/
public function testEquals()
{
$value = new Zend_LocaleTestHelper('de_DE');
$serial = new Zend_LocaleTestHelper('de_DE');
$serial2 = new Zend_LocaleTestHelper('de_AT');
$this->assertTrue($value->equals($serial));
$this->assertFalse($value->equals($serial2));
}
/**
* test getQuestion
* expected true
*/
public function testgetQuestion()
{
$list = Zend_LocaleTestHelper::getQuestion();
$this->assertTrue(isset($list['yes']));
$list = Zend_LocaleTestHelper::getQuestion('de');
$this->assertEquals('ja', $list['yes']);
$this->assertTrue(is_array(Zend_LocaleTestHelper::getQuestion('auto')));
try {
$this->assertTrue(is_array(Zend_LocaleTestHelper::getQuestion('browser')));
} catch (Zend_Locale_Exception $e) {
$this->assertContains('Autodetection', $e->getMessage());
}
try {
$this->assertTrue(is_array(Zend_LocaleTestHelper::getQuestion('environment')));
} catch (Zend_Locale_Exception $e) {
$this->assertContains('Autodetection', $e->getMessage());
}
}
/**
* test getBrowser
* expected true
*/
public function testgetBrowser()
{
Zend_LocaleTestHelper::resetObject();
$value = new Zend_LocaleTestHelper();
$list = $value->getBrowser();
if (empty($list)) {
$this->markTestSkipped('Browser autodetection not possible in current environment');
}
$this->assertTrue(isset($list['de']));
$this->assertEquals(array('de' => 1, 'en_UK' => 0.5, 'en_US' => 0.5,
'en' => 0.5, 'fr_FR' => 0.2, 'fr' => 0.2), $list);
Zend_LocaleTestHelper::resetObject();
putenv("HTTP_ACCEPT_LANGUAGE=");
$value = new Zend_LocaleTestHelper();
$list = $value->getBrowser();
$this->assertEquals(array(), $list);
}
/**
* test getHttpCharset
* expected true
*/
public function testgetHttpCharset()
{
Zend_LocaleTestHelper::resetObject();
putenv("HTTP_ACCEPT_CHARSET=");
$value = new Zend_LocaleTestHelper();
$list = $value->getHttpCharset();
$this->assertTrue(empty($list));
Zend_LocaleTestHelper::resetObject();
putenv("HTTP_ACCEPT_CHARSET=,iso-8859-1, utf-8, utf-16, *;q=0.1");
$value = new Zend_LocaleTestHelper();
$list = $value->getHttpCharset();
$this->assertTrue(isset($list['utf-8']));
}
/**
* test isLocale
* expected boolean
*/
public function testIsLocale()
{
$locale = new Zend_LocaleTestHelper('ar');
$this->assertTrue(Zend_LocaleTestHelper::isLocale($locale));
$this->assertTrue(Zend_LocaleTestHelper::isLocale('de'));
$this->assertTrue(Zend_LocaleTestHelper::isLocale('de_AT'));
$this->assertTrue(Zend_LocaleTestHelper::isLocale('de_xx'));
$this->assertFalse(Zend_LocaleTestHelper::isLocale('yy'));
$this->assertFalse(Zend_LocaleTestHelper::isLocale(1234));
$this->assertFalse(Zend_LocaleTestHelper::isLocale('', true));
$this->assertFalse(Zend_LocaleTestHelper::isLocale('', false));
$this->assertTrue(Zend_LocaleTestHelper::isLocale('auto'));
$this->assertTrue(Zend_LocaleTestHelper::isLocale('browser'));
if (count(Zend_Locale::getEnvironment()) != 0) {
$this->assertTrue(Zend_LocaleTestHelper::isLocale('environment'));
}
set_error_handler(array($this, 'errorHandlerIgnore'));
Zend_LocaleTestHelper::$compatibilityMode = true;
$this->assertEquals('ar', Zend_LocaleTestHelper::isLocale($locale));
$this->assertEquals('de', Zend_LocaleTestHelper::isLocale('de'));
$this->assertEquals('de_AT', Zend_LocaleTestHelper::isLocale('de_AT'));
$this->assertEquals('de', Zend_LocaleTestHelper::isLocale('de_xx'));
$this->assertFalse(Zend_LocaleTestHelper::isLocale('yy'));
$this->assertFalse(Zend_LocaleTestHelper::isLocale(1234));
$this->assertFalse(Zend_LocaleTestHelper::isLocale('', true));
$this->assertFalse(Zend_LocaleTestHelper::isLocale('', false));
$this->assertTrue(is_string(Zend_LocaleTestHelper::isLocale('auto')));
$this->assertTrue(is_string(Zend_LocaleTestHelper::isLocale('browser')));
if (count(Zend_Locale::getEnvironment()) != 0) {
$this->assertTrue(is_string(Zend_LocaleTestHelper::isLocale('environment')));
}
restore_error_handler();
}
/**
* test isLocale
* expected boolean
*/
public function testGetLocaleList()
{
$this->assertTrue(is_array(Zend_LocaleTestHelper::getLocaleList()));
}
/**
* test setDefault
* expected true
*/
public function testsetDefault()
{
try {
Zend_LocaleTestHelper::setDefault('auto');
$this->fail();
} catch (Zend_Locale_Exception $e) {
$this->assertContains("full qualified locale", $e->getMessage());
}
try {
Zend_LocaleTestHelper::setDefault('de_XX');
$locale = new Zend_LocaleTestHelper();
$this->assertTrue($locale instanceof Zend_Locale); // should defer to 'de' or any other standard locale
} catch (Zend_Locale_Exception $e) {
$this->fail(); // de_XX should automatically degrade to 'de'
}
try {
Zend_LocaleTestHelper::setDefault('xy_ZZ');
$this->fail();
} catch (Zend_Locale_Exception $e) {
$this->assertContains("Unknown locale", $e->getMessage());
}
try {
Zend_LocaleTestHelper::setDefault('de', 101);
$this->fail();
} catch (Zend_Locale_Exception $e) {
$this->assertContains("Quality must be between", $e->getMessage());
}
try {
Zend_LocaleTestHelper::setDefault('de', 90);
$locale = new Zend_LocaleTestHelper();
$this->assertTrue($locale instanceof Zend_Locale); // should defer to 'de' or any other standard locale
} catch (Zend_Locale_Exception $e) {
$this->fail();
}
try {
Zend_LocaleTestHelper::setDefault('de-AT', 90);
$locale = new Zend_LocaleTestHelper();
$this->assertTrue($locale instanceof Zend_Locale);
} catch (Zend_Locale_Exception $e) {
$this->fail();
}
}
/**
* Test getDefault
*/
public function testgetDefault() {
Zend_LocaleTestHelper::setDefault('de');
$this->assertTrue(array_key_exists('de', Zend_LocaleTestHelper::getDefault()));
// compatibility tests
set_error_handler(array($this, 'errorHandlerIgnore'));
Zend_LocaleTestHelper::$compatibilityMode = true;
$this->assertTrue(array_key_exists('de', Zend_LocaleTestHelper::getDefault(Zend_Locale::BROWSER)));
restore_error_handler();
}
/**
* Caching method tests
*/
public function testCaching()
{
$cache = Zend_LocaleTestHelper::getCache();
$this->assertTrue($cache instanceof Zend_Cache_Core);
$this->assertTrue(Zend_LocaleTestHelper::hasCache());
Zend_LocaleTestHelper::clearCache();
$this->assertTrue(Zend_LocaleTestHelper::hasCache());
Zend_LocaleTestHelper::removeCache();
$this->assertFalse(Zend_LocaleTestHelper::hasCache());
}
/**
* Caching method tests
*/
public function testFindingTheProperLocale()
{
$this->assertTrue(is_string(Zend_LocaleTestHelper::findLocale()));
$this->assertEquals('de', Zend_LocaleTestHelper::findLocale('de'));
$this->assertEquals('de', Zend_LocaleTestHelper::findLocale('de_XX'));
try {
$locale = Zend_LocaleTestHelper::findLocale('xx_YY');
$this->fail();
} catch (Zend_Locale_Exception $e) {
$this->assertContains('is no known locale', $e->getMessage());
}
Zend_Registry::set('Zend_Locale', 'de');
$this->assertEquals('de', Zend_LocaleTestHelper::findLocale());
}
/**
* test isLocale
* expected boolean
*/
public function testZF3617() {
$value = new Zend_LocaleTestHelper('en-US');
$this->assertEquals('en_US', $value->toString());
}
/**
* @ZF4963
*/
public function testZF4963() {
$value = new Zend_LocaleTestHelper();
$locale = $value->toString();
$this->assertTrue(!empty($locale));
$this->assertTrue(Zend_LocaleTestHelper::isLocale(null));
$value = new Zend_LocaleTestHelper(0);
$value = $value->toString();
$this->assertTrue(!empty($value));
$this->assertFalse(Zend_LocaleTestHelper::isLocale(0));
}
/**
* test MultiPartLocales
* expected boolean
*/
public function testLongLocale()
{
$locale = new Zend_LocaleTestHelper('de_Latn_DE');
$this->assertEquals('de_DE', $locale->toString());
$this->assertTrue(Zend_LocaleTestHelper::isLocale('de_Latn_CAR_DE_sup3_win'));
$locale = new Zend_LocaleTestHelper('de_Latn_DE');
$this->assertEquals('de_DE', $locale->toString());
}
/**
* Ignores a raised PHP error when in effect, but throws a flag to indicate an error occurred
*
* @param integer $errno
* @param string $errstr
* @param string $errfile
* @param integer $errline
* @param array $errcontext
* @return void
*/
public function errorHandlerIgnore($errno, $errstr, $errfile, $errline, array $errcontext)
{
$this->_errorOccurred = true;
}
}
class Zend_LocaleTestHelper extends Zend_Locale
{
public static function resetObject()
{
self::$_auto = null;
self::$_environment = null;
self::$_browser = null;
}
}
// Call Zend_LocaleTest::main() if this source file is executed directly.
if (PHPUnit_MAIN_METHOD == "Zend_LocaleTest::main") {
Zend_LocaleTest::main();
}