public function testPreferredAvailableNegotiation()
{
$result = Locale::preferred(array('nl_NL', 'nl_BE', 'nl', 'en_US', 'en'), array('en', 'en_US', 'nl_BE'));
$this->assertEqual('nl_BE', $result);
$result = Locale::preferred(array('da', 'en_GB', 'en'), array('da', 'en_GB', 'en'));
$this->assertEqual('da', $result);
$result = Locale::preferred(array('da', 'en_GB', 'en'), array('en', 'en_GB', 'da'));
$this->assertEqual('da', $result);
$result = Locale::preferred(array('da', 'en_GB', 'en'), array('en_GB', 'en'));
$this->assertEqual('en_GB', $result);
$result = Locale::preferred(array('da_DK', 'en_GB', 'en'), array('da', 'en_GB', 'en'));
$this->assertEqual('da', $result);
$result = Locale::preferred(array('zh_Hans_REVISED', 'zh_Hans_HK', 'zh', 'en'), array('zh_Hans_HK_REVISED', 'zh_Hans_HK', 'zh', 'en'));
$this->assertEqual('zh', $result);
$result = Locale::preferred(array('es_ES', 'en'), array('da', 'en_GB', 'en', 'es_AR'));
$this->assertEqual('es_AR', $result);
}