1.20.x transliteration.test public TransliterationTest::testMachineNameTransliteration()

Tests machine name transliteration provided by System module.

File

modules/simpletest/tests/transliteration.test, line 67

Class

TransliterationTest
Tests the transliteration class.

Code

public function testMachineNameTransliteration() {
  $unknown_character = html_entity_decode('￱', ENT_NOQUOTES, 'UTF-8');
  $string = "  ä $unknown_character test $unknown_character$unknown_character string - gap -_ ";
  $cases = array(
    // Keys are langcode, replace, maxlength, replace_pattern, input, output.
    array('en', '_', NULL, NULL, $string, 'a_test_string_gap'),
    array('de', '_', NULL, NULL, $string, 'ae_test_string_gap'),
    array('en', '_', NULL, '[^a-zA-Z0-9_-]+', $string, 'a_test_string_-_gap_-'),
    array('en', '', NULL, NULL, $string, 'ateststringgap'),
    array('en', '', 10, NULL, $string, 'ateststrin'),
  );
  include_once BACKDROP_ROOT . '/core/modules/system/system.admin.inc';
  foreach ($cases as $case) {
    list($langcode, $replace, $maxlength, $replace_pattern, $before, $after) = $case;
    $options = array(
      'langcode' => $langcode,
      'replace' => $replace,
      'maxlength' => $maxlength,
      'replace_pattern' => $replace_pattern,
    );
    // Remove NULL options.
    $options = array_filter($options, function($variable) {
      return !is_null($variable);
    });
    $actual = system_transliterate_machine_name($before, $options);
    $this->assertEqual($after, $actual, format_string('@before is correctly transliterated to @after (actual: @actual) in @langcode langcode with options @options.', array('@before' => $before, '@after' => $after, '@actual' => $actual, '@langcode' => $langcode, '@options' => print_r($options, 1))));
  }
}