Index: modules/simpletest/tests/menu.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu.test,v
retrieving revision 1.9
diff -u -p -r1.9 menu.test
--- modules/simpletest/tests/menu.test	13 Apr 2009 12:18:52 -0000	1.9
+++ modules/simpletest/tests/menu.test	26 Apr 2009 19:33:09 -0000
@@ -105,6 +105,39 @@ class MenuIncTestCase extends DrupalWebT
     $this->assertEqual($child_link['plid'], $parent_link['mlid'], t('The parent of a directly attached child is correct.'));
     $this->assertEqual($unattached_child_link['plid'], $parent_link['mlid'], t('The parent of a non-directly attached child is correct.'));
   }
+
+  /**
+   * Tests the possible ways to set the title for menu items.
+   * Also tests that menu item titles work with string overrides.
+   */
+  function testMenuItemTitlesCases() {
+
+    // Build array with string overrides
+    $test_data = array(
+      1 => array('Example title - Case 1' => 'Alternative example title - Case 1'),
+      2 => array('Example @sub1 - Case @op2' => 'Alternative example @sub1 - Case @op2'),
+      3 => array('Example title' => 'Alternative example title'),
+      4 => array('Example title' => 'Alternative example title'),
+    );
+
+    foreach ($test_data as $case_no => $override) {
+      $this->menuItemTitlesCasesHelper($case_no);
+      variable_set('locale_custom_strings_en', $override);
+      $this->menuItemTitlesCasesHelper($case_no, TRUE);
+      variable_set('locale_custom_strings_en', array());
+    }
+  }
+
+  /**
+   * Get a url and assert the title given a case number. If override is true,
+   * the title is asserted to begin with "Alternative"
+   */
+  private function menuItemTitlesCasesHelper($case_no, $override = FALSE) {
+    $this->drupalGet('menu_title_test/case' . $case_no);
+    $this->assertResponse(200);
+    $asserted_title = $override ? 'Alternative example title - Case ' . $case_no : 'Example title - Case ' . $case_no;
+    $this->assertTitle($asserted_title . ' | Drupal', t('Menu title is') . ': ' . $asserted_title, 'Menu');
+  }
 }
 
 /**
Index: modules/simpletest/tests/menu_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu_test.module,v
retrieving revision 1.4
diff -u -p -r1.4 menu_test.module
--- modules/simpletest/tests/menu_test.module	13 Apr 2009 12:18:52 -0000	1.4
+++ modules/simpletest/tests/menu_test.module	26 Apr 2009 19:33:09 -0000
@@ -44,6 +44,35 @@ function menu_test_menu() {
     'title' => 'Unattached subchild router',
     'page callback' => 'node_page_default',
   );
+
+  $items['menu_title_test/case1'] = array(
+    'title' => 'Example title - Case 1',
+    'access callback' => TRUE,
+    'page callback' => 'user_page',
+  );
+  $items['menu_title_test/case2'] = array(
+    'title' => 'Example @sub1 - Case @op2',
+    // If '2' is not in quotes, the argument becomes arg(2)
+    'title arguments' => array('@sub1' => 'title', '@op2' => '2'),
+    'access callback' => TRUE,
+    'page callback' => 'user_page',
+  );
+  $items['menu_title_test/case3'] = array(
+    'title' => 'Example title',
+    'title callback' => 'menu_test_title_callback',
+    'access callback' => TRUE,
+    'page callback' => 'user_page',
+  );
+  $items['menu_title_test/case4'] = array(
+    // Title gets completely ignored. Good thing, too.
+    'title' => 'Bike sheds full of blue smurfs',
+    'title callback' => 'menu_test_title_callback',
+    // If '4' is not in quotes, the argument becomes arg(4)
+    'title arguments' => array('Example title', '4'),
+    'access callback' => TRUE,
+    'page callback' => 'user_page',
+  );
+
   return $items;
 }
 
@@ -56,3 +85,13 @@ function menu_test_menu() {
 function menu_test_callback() {
   return $this->randomName();
 }
+
+/**
+ * Concatenates a string, by using the t() function and a case number.
+ *
+ * @param $title Title string.
+ * @param $case_number The current case number which is tests (defaults to 3)
+ */
+function menu_test_title_callback($title, $case_no = 3) {
+  return t($title) . ' - Case ' . $case_no;
+}
