1 transliteration.test | public TransliterationTest::testTransliteration() |
Tests transliteration API.
File
- core/
modules/ simpletest/ tests/ transliteration.test, line 9
Class
- TransliterationTest
- Tests the transliteration class.
Code
public function testTransliteration() {
$random = $this->randomName(10);
// Make some strings with two, three, and four-byte characters for testing.
// Note that the 3-byte character is overridden by the 'kg' language.
// cspell:disable-next-line
$two_byte = 'Ä Ö Ü Å Ø äöüåøhello';
// This is a Cyrillic character that looks something like a u. See
// http://www.unicode.org/charts/PDF/U0400.pdf
$three_byte = html_entity_decode('ц', ENT_NOQUOTES, 'UTF-8');
// This is a Canadian Aboriginal character like a triangle. See
// http://www.unicode.org/charts/PDF/U1400.pdf
$four_byte = html_entity_decode('ᐑ', ENT_NOQUOTES, 'UTF-8');
// A character that doesn't have a replacement value.
$unknown_character = html_entity_decode('￱', ENT_NOQUOTES, 'UTF-8');
$cases = array(
// Each test case is (language code, input, output).
// Test ASCII in English.
array('en', $random, $random),
// Test ASCII in some other language with no overrides.
array('fr', $random, $random),
// Test 3 and 4-byte characters in a language without overrides.
// Note: if the data tables change, these will need to change too! They
// are set up to test that data table loading works, so values come
// directly from the data files.
array('fr', $three_byte, 'c'),
array('fr', $four_byte, 'wii'),
// Test a language with no overrides.
// cspell:disable-next-line
array('en', $two_byte, 'A O U A O aouaohello'),
// Test language overrides provided by core.
// cspell:disable-next-line
array('de', $two_byte, 'Ae Oe Ue A O aeoeueaohello'),
array('de', $random, $random),
// cspell:disable-next-line
array('da', $two_byte, 'A O U Aa Oe aouaaoehello'),
array('da', $random, $random),
array('kg', $three_byte, 'ts'),
// Unknown characters.
array('en', 'foo' . $unknown_character . 'foo', 'foo?foo'),
array('en', 'foo' . $unknown_character . $unknown_character . $unknown_character . 'foo', 'foo???foo'),
// Chinese characters.
// cspell:disable-next-line
array('en', '一個簡單的句子', 'yigejiandandejuzi'),
// Bulgarian characters.
// cspell:disable-next-line
array('bg', 'първа статия', 'parva statiya'),
);
include_once BACKDROP_ROOT . '/core/includes/transliteration.inc';
foreach ($cases as $case) {
list($langcode, $before, $after) = $case;
$actual = transliteration_get($before, '?', $langcode);
$this->assertEqual($after, $actual, format_string('@before is correctly transliterated to @after (actual: @actual) in @langcode langcode.', array('@before' => $before, '@after' => $after, '@actual' => $actual, '@langcode' => $langcode)));
}
}