diff --git a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php
index 7abed94..50f400f 100644
--- a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php
@@ -91,4 +91,89 @@ public function testGetNegotiationMethodId() {
     $this->assertSame($method_id, $this->language->getNegotiationMethodId());
   }
 
+  /**
+   * Tests sorting an array of Language objects.
+   *
+   * @dataProvider providerTestSortArrayOfLanguages
+   *
+   * @param \Drupal\Core\Language\Language[] $languages
+   *   An array of \Drupal\Core\Language\Language objects.
+   * @param array $expected
+   *   The expected array of keys.
+   */
+  public function testSortArrayOfLanguages(array $languages, array $expected) {
+    Language::sort($languages);
+    $this->assertSame($expected, array_keys($languages));
+  }
+
+  /**
+   * Provides data for testSortArrayOfLanguages.
+   *
+   * @return array
+   *   An array of test data.
+   */
+  public function providerTestSortArrayOfLanguages() {
+    $language9A = new Language();
+    $language9A->setName('A');
+    $language9A->setWeight(9);
+    $language9A->setId('dd');
+    $language10A = new Language();
+    $language10A->setName('A');
+    $language10A->setWeight(10);
+    $language10A->setId('ee');
+    $language10B = new Language();
+    $language10B->setName('B');
+    $language10B->setWeight(10);
+    $language10B->setId('ff');
+
+    return array(
+      // Set up data set #1, already ordered by weight.
+      array(
+        // Set the data.
+        array(
+          $language9A->getId() => $language9A,
+          $language10B->getId() => $language10B,
+        ),
+        // Set the expected key order.
+        array(
+          $language9A->getId(),
+          $language10B->getId(),
+        ),
+      ),
+      // Set up data set #2, out of order by weight.
+      array(
+        array(
+          $language10B->getId() => $language10B,
+          $language9A->getId() => $language9A,
+        ),
+        array(
+          $language9A->getId(),
+          $language10B->getId(),
+        ),
+      ),
+      // Set up data set #3, tied by weight, already ordered by name.
+      array(
+        array(
+          $language10A->getId() => $language10A,
+          $language10B->getId() => $language10B,
+        ),
+        array(
+          $language10A->getId(),
+          $language10B->getId(),
+        ),
+      ),
+      // Set up data set #4, tied by weight, out of order by name.
+      array(
+        array(
+          $language10B->getId() => $language10B,
+          $language10A->getId() => $language10A,
+        ),
+        array(
+          $language10A->getId(),
+          $language10B->getId(),
+        ),
+      ),
+    );
+  }
+
 }
