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);
}