diff -r 07239de796bb -r e756a8c72c3d cms/drupal/modules/simpletest/tests/unicode.test --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cms/drupal/modules/simpletest/tests/unicode.test Fri Sep 08 12:04:06 2017 +0200 @@ -0,0 +1,305 @@ + 'Unicode handling', + 'description' => 'Tests Drupal Unicode handling.', + 'group' => 'System', + ); + } + + /** + * Test full unicode features implemented using the mbstring extension. + */ + function testMbStringUnicode() { + global $multibyte; + + // mbstring was not detected on this installation, there is no way to test + // multibyte features. Treat that as an exception. + if ($multibyte == UNICODE_SINGLEBYTE) { + $this->error(t('Unable to test Multibyte features: mbstring extension was not detected.')); + } + + $multibyte = UNICODE_MULTIBYTE; + + $this->extendedMode = TRUE; + $this->pass(t('Testing in mbstring mode')); + + $this->helperTestStrToLower(); + $this->helperTestStrToUpper(); + $this->helperTestUcFirst(); + $this->helperTestStrLen(); + $this->helperTestSubStr(); + $this->helperTestTruncate(); + } + + /** + * Test emulated unicode features. + */ + function testEmulatedUnicode() { + global $multibyte; + + $multibyte = UNICODE_SINGLEBYTE; + + $this->extendedMode = FALSE; + + $this->pass(t('Testing in emulated (best-effort) mode')); + + $this->helperTestStrToLower(); + $this->helperTestStrToUpper(); + $this->helperTestUcFirst(); + $this->helperTestStrLen(); + $this->helperTestSubStr(); + $this->helperTestTruncate(); + } + + function helperTestStrToLower() { + $testcase = array( + 'tHe QUIcK bRoWn' => 'the quick brown', + 'FrançAIS is ÜBER-åwesome' => 'français is über-åwesome', + ); + if ($this->extendedMode) { + $testcase['ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΣὨ'] = 'αβγδεζηθικλμνξοσὠ'; + } + + foreach ($testcase as $input => $output) { + $this->assertEqual(drupal_strtolower($input), $output, format_string('%input is lowercased as %output', array('%input' => $input, '%output' => $output))); + } + } + + function helperTestStrToUpper() { + $testcase = array( + 'tHe QUIcK bRoWn' => 'THE QUICK BROWN', + 'FrançAIS is ÜBER-åwesome' => 'FRANÇAIS IS ÜBER-ÅWESOME', + ); + if ($this->extendedMode) { + $testcase['αβγδεζηθικλμνξοσὠ'] = 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΣὨ'; + } + + foreach ($testcase as $input => $output) { + $this->assertEqual(drupal_strtoupper($input), $output, format_string('%input is uppercased as %output', array('%input' => $input, '%output' => $output))); + } + } + + function helperTestUcFirst() { + $testcase = array( + 'tHe QUIcK bRoWn' => 'THe QUIcK bRoWn', + 'françAIS' => 'FrançAIS', + 'über' => 'Über', + 'åwesome' => 'Åwesome' + ); + if ($this->extendedMode) { + $testcase['σion'] = 'Σion'; + } + + foreach ($testcase as $input => $output) { + $this->assertEqual(drupal_ucfirst($input), $output, format_string('%input is ucfirst-ed as %output', array('%input' => $input, '%output' => $output))); + } + } + + function helperTestStrLen() { + $testcase = array( + 'tHe QUIcK bRoWn' => 15, + 'ÜBER-åwesome' => 12, + ); + + foreach ($testcase as $input => $output) { + $this->assertEqual(drupal_strlen($input), $output, format_string('%input length is %output', array('%input' => $input, '%output' => $output))); + } + } + + function helperTestSubStr() { + $testcase = array( + // 012345678901234567890123 + array('frànçAIS is über-åwesome', 0, 0, + ''), + array('frànçAIS is über-åwesome', 0, 1, + 'f'), + array('frànçAIS is über-åwesome', 0, 8, + 'frànçAIS'), + array('frànçAIS is über-åwesome', 0, 23, + 'frànçAIS is über-åwesom'), + array('frànçAIS is über-åwesome', 0, 24, + 'frànçAIS is über-åwesome'), + array('frànçAIS is über-åwesome', 0, 25, + 'frànçAIS is über-åwesome'), + array('frànçAIS is über-åwesome', 0, 100, + 'frànçAIS is über-åwesome'), + array('frànçAIS is über-åwesome', 4, 4, + 'çAIS'), + array('frànçAIS is über-åwesome', 1, 0, + ''), + array('frànçAIS is über-åwesome', 100, 0, + ''), + array('frànçAIS is über-åwesome', -4, 2, + 'so'), + array('frànçAIS is über-åwesome', -4, 3, + 'som'), + array('frànçAIS is über-åwesome', -4, 4, + 'some'), + array('frànçAIS is über-åwesome', -4, 5, + 'some'), + array('frànçAIS is über-åwesome', -7, 10, + 'åwesome'), + array('frànçAIS is über-åwesome', 5, -10, + 'AIS is üb'), + array('frànçAIS is über-åwesome', 0, -10, + 'frànçAIS is üb'), + array('frànçAIS is über-åwesome', 0, -1, + 'frànçAIS is über-åwesom'), + array('frànçAIS is über-åwesome', -7, -2, + 'åweso'), + array('frànçAIS is über-åwesome', -7, -6, + 'å'), + array('frànçAIS is über-åwesome', -7, -7, + ''), + array('frànçAIS is über-åwesome', -7, -8, + ''), + array('...', 0, 2, '..'), + array('以呂波耳・ほへとち。リヌルヲ。', 1, 3, + '呂波耳'), + + ); + + foreach ($testcase as $test) { + list($input, $start, $length, $output) = $test; + $result = drupal_substr($input, $start, $length); + $this->assertEqual($result, $output, format_string('%input substring at offset %offset for %length characters is %output (got %result)', array('%input' => $input, '%offset' => $start, '%length' => $length, '%output' => $output, '%result' => $result))); + } + } + + /** + * Test decode_entities(). + */ + function testDecodeEntities() { + $testcase = array( + 'Drupal' => 'Drupal', + '