diff --git a/core/modules/locale/locale.test b/core/modules/locale/locale.test
index ded11ef68be2419a4a8995a509a1733c3273d6a5..14e3dcb850973429d397296592ae4481aa64bcf3 100644
--- a/core/modules/locale/locale.test
+++ b/core/modules/locale/locale.test
@@ -1890,175 +1890,6 @@ class LocaleBrowserDetectionTest extends DrupalUnitTestCase {
   }
 }
 
-/**
- * Functional tests for a user's ability to change their default language.
- */
-class LocaleUserLanguageFunctionalTest extends DrupalWebTestCase {
-  public static function getInfo() {
-    return array(
-      'name' => 'User language settings',
-      'description' => "Tests user's ability to change their default language.",
-      'group' => 'Locale',
-    );
-  }
-
-  function setUp() {
-    parent::setUp('locale');
-  }
-
-  /**
-   * Test if user can change their default language.
-   */
-  function testUserLanguageConfiguration() {
-    global $base_url;
-
-    // User to add and remove language.
-    $admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages'));
-    // User to change their default language.
-    $web_user = $this->drupalCreateUser();
-
-    // Add custom language.
-    $this->drupalLogin($admin_user);
-    // Code for the language.
-    $langcode = 'xx';
-    // The English name for the language.
-    $name = $this->randomName(16);
-    $edit = array(
-      'predefined_langcode' => 'custom',
-      'langcode' => $langcode,
-      'name' => $name,
-      'direction' => '0',
-    );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
-    $this->drupalLogout();
-
-    // Login as normal user and edit account settings.
-    $this->drupalLogin($web_user);
-    $path = 'user/' . $web_user->uid . '/edit';
-    $this->drupalGet($path);
-    // Ensure language settings fieldset is available.
-    $this->assertText(t('Language'), t('Language selector available.'));
-    // Ensure custom language is present.
-    $this->assertText($name, t('Language present on form.'));
-    // Switch to our custom language.
-    $edit = array(
-      'preferred_langcode' => $langcode,
-    );
-    $this->drupalPost($path, $edit, t('Save'));
-    // Ensure form was submitted successfully.
-    $this->assertText(t('The changes have been saved.'), t('Changes were saved.'));
-    // Check if language was changed.
-    $elements = $this->xpath('//input[@id=:id]', array(':id' => 'edit-preferred-langcode-' . $langcode));
-    $this->assertTrue(isset($elements[0]) && !empty($elements[0]['checked']), t('Default language successfully updated.'));
-
-    $this->drupalLogout();
-  }
-}
-
-/**
- * Functional test for language handling during user creation.
- */
-class LocaleUserCreationTest extends DrupalWebTestCase {
-
-  public static function getInfo() {
-    return array(
-      'name' => 'User creation',
-      'description' => 'Tests whether proper language is stored for new users and access to language selector.',
-      'group' => 'Locale',
-    );
-  }
-
-  function setUp() {
-    parent::setUp('locale');
-    variable_set('user_register', USER_REGISTER_VISITORS);
-  }
-
-  /**
-   * Functional test for language handling during user creation.
-   */
-  function testLocalUserCreation() {
-    // User to add and remove language and create new users.
-    $admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages', 'administer users'));
-    $this->drupalLogin($admin_user);
-
-    // Add predefined language.
-    $langcode = 'fr';
-    $edit = array(
-      'predefined_langcode' => 'fr',
-    );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
-    $this->assertText('French', t('Language added successfully.'));
-    $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), t('Correct page redirection.'));
-
-    // Set language negotiation.
-    $edit = array(
-      'language_interface[enabled][language-url]' => TRUE,
-    );
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
-    $this->assertText(t('Language negotiation configuration saved.'), t('Set language negotiation.'));
-
-    // Check if the language selector is available on admin/people/create and
-    // set to the currently active language.
-    $this->drupalGet($langcode . '/admin/people/create');
-    $this->assertFieldChecked("edit-preferred-langcode-$langcode", t('Global language set in the language selector.'));
-
-    // Create a user with the admin/people/create form and check if the correct
-    // language is set.
-    $username = $this->randomName(10);
-    $edit = array(
-      'name' => $username,
-      'mail' => $this->randomName(4) . '@example.com',
-      'pass[pass1]' => $username,
-      'pass[pass2]' => $username,
-    );
-
-    $this->drupalPost($langcode . '/admin/people/create', $edit, t('Create new account'));
-
-    $user = user_load_by_name($username);
-    $this->assertEqual($user->preferred_langcode, $langcode, t('New user has correct preferred language set.'));
-    $this->assertEqual($user->langcode, $langcode, t('New user has correct profile language set.'));
-
-    // Register a new user and check if the language selector is hidden.
-    $this->drupalLogout();
-
-    $this->drupalGet($langcode . '/user/register');
-    $this->assertNoFieldByName('language[fr]', t('Language selector is not accessible.'));
-
-    $username = $this->randomName(10);
-    $edit = array(
-      'name' => $username,
-      'mail' => $this->randomName(4) . '@example.com',
-    );
-
-    $this->drupalPost($langcode . '/user/register', $edit, t('Create new account'));
-
-    $user = user_load_by_name($username);
-    $this->assertEqual($user->preferred_langcode, $langcode, t('New user has correct preferred language set.'));
-    $this->assertEqual($user->langcode, $langcode, t('New user has correct profile language set.'));
-
-    // Test if the admin can use the language selector and if the
-    // correct language is was saved.
-    $user_edit = $langcode . '/user/' . $user->uid . '/edit';
-
-    $this->drupalLogin($admin_user);
-    $this->drupalGet($user_edit);
-    $this->assertFieldChecked("edit-preferred-langcode-$langcode", t('Language selector is accessible and correct language is selected.'));
-
-    // Set pass_raw so we can login the new user.
-    $user->pass_raw = $this->randomName(10);
-    $edit = array(
-      'pass[pass1]' => $user->pass_raw,
-      'pass[pass2]' => $user->pass_raw,
-    );
-
-    $this->drupalPost($user_edit, $edit, t('Save'));
-
-    $this->drupalLogin($user);
-    $this->drupalGet($user_edit);
-    $this->assertFieldChecked("edit-preferred-langcode-$langcode", t('Language selector is accessible and correct language is selected.'));
-  }
-}
-
 /**
  * Functional tests for configuring a different path alias per language.
  */
diff --git a/core/modules/user/user.test b/core/modules/user/user.test
index a4ebdd8882f3954e9a83d5bc485c6ed141287f73..0ce68708e22d2dd82b2e4e88b0d5a4a8b55b19b7 100644
--- a/core/modules/user/user.test
+++ b/core/modules/user/user.test
@@ -2416,3 +2416,172 @@ class UserEntityCallbacksTestCase extends DrupalWebTestCase {
     $this->assertEqual('user/' . $this->account->uid, $uri['path'], t('Correct user URI.'));
   }
 }
+
+/**
+ * Functional tests for a user's ability to change their default language.
+ */
+class UserLanguageFunctionalTest extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'User language settings',
+      'description' => "Tests user's ability to change their default language.",
+      'group' => 'User',
+    );
+  }
+
+  function setUp() {
+    parent::setUp(array('user', 'language'));
+  }
+
+  /**
+   * Test if user can change their default language.
+   */
+  function testUserLanguageConfiguration() {
+    global $base_url;
+
+    // User to add and remove language.
+    $admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages'));
+    // User to change their default language.
+    $web_user = $this->drupalCreateUser();
+
+    // Add custom language.
+    $this->drupalLogin($admin_user);
+    // Code for the language.
+    $langcode = 'xx';
+    // The English name for the language.
+    $name = $this->randomName(16);
+    $edit = array(
+      'predefined_langcode' => 'custom',
+      'langcode' => $langcode,
+      'name' => $name,
+      'direction' => '0',
+    );
+    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalLogout();
+
+    // Login as normal user and edit account settings.
+    $this->drupalLogin($web_user);
+    $path = 'user/' . $web_user->uid . '/edit';
+    $this->drupalGet($path);
+    // Ensure language settings fieldset is available.
+    $this->assertText(t('Language'), t('Language selector available.'));
+    // Ensure custom language is present.
+    $this->assertText($name, t('Language present on form.'));
+    // Switch to our custom language.
+    $edit = array(
+      'preferred_langcode' => $langcode,
+    );
+    $this->drupalPost($path, $edit, t('Save'));
+    // Ensure form was submitted successfully.
+    $this->assertText(t('The changes have been saved.'), t('Changes were saved.'));
+    // Check if language was changed.
+    $elements = $this->xpath('//input[@id=:id]', array(':id' => 'edit-preferred-langcode-' . $langcode));
+    $this->assertTrue(isset($elements[0]) && !empty($elements[0]['checked']), t('Default language successfully updated.'));
+
+    $this->drupalLogout();
+  }
+}
+
+/**
+ * Functional test for language handling during user creation.
+ */
+class UserLanguageCreationTest extends DrupalWebTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'User language creation',
+      'description' => 'Tests whether proper language is stored for new users and access to language selector.',
+      'group' => 'User',
+    );
+  }
+
+  function setUp() {
+    parent::setUp(array('user', 'language'));
+    variable_set('user_register', USER_REGISTER_VISITORS);
+  }
+
+  /**
+   * Functional test for language handling during user creation.
+   */
+  function testLocalUserCreation() {
+    // User to add and remove language and create new users.
+    $admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages', 'administer users'));
+    $this->drupalLogin($admin_user);
+
+    // Add predefined language.
+    $langcode = 'fr';
+    $edit = array(
+      'predefined_langcode' => 'fr',
+    );
+    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->assertText('French', t('Language added successfully.'));
+    $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), t('Correct page redirection.'));
+
+    // Set language negotiation.
+    $edit = array(
+      'language_interface[enabled][language-url]' => TRUE,
+    );
+    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->assertText(t('Language negotiation configuration saved.'), t('Set language negotiation.'));
+
+    // Check if the language selector is available on admin/people/create and
+    // set to the currently active language.
+    $this->drupalGet($langcode . '/admin/people/create');
+    $this->assertFieldChecked("edit-preferred-langcode-$langcode", t('Global language set in the language selector.'));
+
+    // Create a user with the admin/people/create form and check if the correct
+    // language is set.
+    $username = $this->randomName(10);
+    $edit = array(
+      'name' => $username,
+      'mail' => $this->randomName(4) . '@example.com',
+      'pass[pass1]' => $username,
+      'pass[pass2]' => $username,
+    );
+
+    $this->drupalPost($langcode . '/admin/people/create', $edit, t('Create new account'));
+
+    $user = user_load_by_name($username);
+    $this->assertEqual($user->preferred_langcode, $langcode, t('New user has correct preferred language set.'));
+    $this->assertEqual($user->langcode, $langcode, t('New user has correct profile language set.'));
+
+    // Register a new user and check if the language selector is hidden.
+    $this->drupalLogout();
+
+    $this->drupalGet($langcode . '/user/register');
+    $this->assertNoFieldByName('language[fr]', t('Language selector is not accessible.'));
+
+    $username = $this->randomName(10);
+    $edit = array(
+      'name' => $username,
+      'mail' => $this->randomName(4) . '@example.com',
+    );
+
+    $this->drupalPost($langcode . '/user/register', $edit, t('Create new account'));
+
+    $user = user_load_by_name($username);
+    $this->assertEqual($user->preferred_langcode, $langcode, t('New user has correct preferred language set.'));
+    $this->assertEqual($user->langcode, $langcode, t('New user has correct profile language set.'));
+
+    // Test if the admin can use the language selector and if the
+    // correct language is was saved.
+    $user_edit = $langcode . '/user/' . $user->uid . '/edit';
+
+    $this->drupalLogin($admin_user);
+    $this->drupalGet($user_edit);
+    $this->assertFieldChecked("edit-preferred-langcode-$langcode", t('Language selector is accessible and correct language is selected.'));
+
+    // Set pass_raw so we can login the new user.
+    $user->pass_raw = $this->randomName(10);
+    $edit = array(
+      'pass[pass1]' => $user->pass_raw,
+      'pass[pass2]' => $user->pass_raw,
+    );
+
+    $this->drupalPost($user_edit, $edit, t('Save'));
+
+    $this->drupalLogin($user);
+    $this->drupalGet($user_edit);
+    $this->assertFieldChecked("edit-preferred-langcode-$langcode", t('Language selector is accessible and correct language is selected.'));
+  }
+}