diff --git a/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php b/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php
index 271de1b..6608ec7 100644
--- a/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php
@@ -310,6 +310,158 @@ public function providerSortByTitleProperty() {
   }
 
   /**
+   * Tests SortArray::suasort() array keys against expected order.
+   *
+   * @dataProvider providersuasort
+   * @covers ::sortByWeightProperty
+   * @covers ::sortByTitleProperty
+   *
+   * @param array $array
+   *   Array to sort.
+   * @param string|array $cmp_function
+   *   Callable comparison function.
+   * @param array $expected
+   *   Expected order of array keys.
+   */
+  public function testsuasort($array, $cmp_function, $expected) {
+    // SortArray::suasort substituted for uasort() to demonstrate bug exists
+    // in PHP and has been overlooked. This should fail some of the tests.
+    uasort($array, $cmp_function);
+    $this->assertTrue(array_keys($array) == $expected);
+  }
+
+  /**
+   * Data provider for SortArray::suasort().
+   *
+   * @return array
+   *   An array of tests.
+   *
+   * @see \Drupal\Tests\Component\Utility\SortArrayTest::testsuasort()
+   */
+  public function providersuasort() {
+    $tests = array();
+
+    $test_array_1 = array(
+      0 => array(
+        '#type' => 'checkbox',
+        '#title' => 'A',
+      ),
+      1 => array(
+        '#type' => 'checkbox',
+        '#title' => 'B',
+      ),
+      2 => array(
+        '#type' => 'checkbox',
+        '#title' => 'C',
+        '#weight' => -1000
+      ),
+    );
+
+    $test_array_2 = array(
+      0 => array(
+        '#type' => 'checkbox',
+        '#title' => 'F',
+      ),
+      1 => array(
+        '#type' => 'checkbox',
+        '#title' => 'E',
+        '#weight' => -500,
+      ),
+      2 => array(
+        '#type' => 'checkbox',
+        '#title' => 'D',
+        '#weight' => -1000
+      ),
+    );
+
+    $test_array_3 = array(
+      0 => array(
+        '#type' => 'checkbox',
+        '#title' => 'H',
+        '#weight' => -1000,
+      ),
+      1 => array(
+        '#type' => 'checkbox',
+        '#title' => 'I',
+        '#weight' => 500,
+      ),
+      2 => array(
+        '#type' => 'checkbox',
+        '#title' => 'G',
+        '#weight' => -500
+      ),
+    );
+
+    $test_array_4 = array(
+      0 => array(
+        '#type' => 'checkbox',
+        '#title' => 'A',
+        '#weight' => 0,
+      ),
+      1 => array(
+        '#type' => 'checkbox',
+        '#title' => 'A',
+        '#weight' => 0,
+      ),
+      2 => array(
+        '#type' => 'checkbox',
+        '#title' => 'A',
+        '#weight' => 0
+      ),
+    );
+
+    $tests[] = array(
+      $test_array_1,
+      array('Drupal\Component\Utility\SortArray', 'sortByWeightProperty'),
+      array(2, 0, 1),
+    );
+
+    $tests[] = array(
+      $test_array_1,
+      array('Drupal\Component\Utility\SortArray', 'sortByTitleProperty'),
+      array(0, 1, 2),
+    );
+
+    $tests[] = array(
+      $test_array_2,
+      array('Drupal\Component\Utility\SortArray', 'sortByWeightProperty'),
+      array(2, 1, 0),
+    );
+
+    $tests[] = array(
+      $test_array_2,
+      array('Drupal\Component\Utility\SortArray', 'sortByTitleProperty'),
+      array(2, 1, 0),
+    );
+
+    $tests[] = array(
+      $test_array_3,
+      array('Drupal\Component\Utility\SortArray', 'sortByWeightProperty'),
+      array(0, 2, 1),
+    );
+
+    $tests[] = array(
+      $test_array_3,
+      array('Drupal\Component\Utility\SortArray', 'sortByTitleProperty'),
+      array(2, 0, 1),
+    );
+
+    $tests[] = array(
+      $test_array_4,
+      array('Drupal\Component\Utility\SortArray', 'sortByWeightProperty'),
+      array(0, 1, 2),
+    );
+
+    $tests[] = array(
+      $test_array_4,
+      array('Drupal\Component\Utility\SortArray', 'sortByTitleProperty'),
+      array(0, 1, 2),
+    );
+
+    return $tests;
+  }
+
+  /**
    * Asserts that numbers are either both negative, both positive or both zero.
    *
    * The exact values returned by comparison functions differ between PHP
