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