diff --git a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php index 2a27c72..aee28e4 100644 --- a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php +++ b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php @@ -93,36 +93,82 @@ public function testGetNegotiationMethodId() { /** * Tests sorting an array of Language objects. + * + * @dataProvider providerTestSortArrayOfLanguages + * + * @param array $languages + * An array of \Drupal\Core\Language\Language objects. + * @param array $expected + * The expected sorted array of languages. + */ + public function testSortArrayOfLanguages(array $languages, array $expected) { + Language::sort($languages); + $this->assertEquals($expected, $languages); + } + + /** + * Provides data for testSortArrayOfLanguages. + * + * @return array + * An array of test data. */ - public function testArrayOfLanguages() { + public function providerTestSortArrayOfLanguages() { $language9A = new Language(); $language9A->setName('A'); $language9A->setWeight(9); - $language10B = new Language(); - $language10B->setName('B'); - $language10B->setWeight(10); $language10A = new Language(); $language10A->setName('A'); $language10A->setWeight(10); - $language11A = new Language(); - $language11A->setName('A'); - $language11A->setWeight(11); - - $languages = array(); - $languages[0] = $language9A; - $languages[1] = $language10B; - $languages[2] = $language10A; - $languages[3] = $language11A; - - $expected = array(); - $expected[0] = $language9A; - $expected[1] = $language10A; - $expected[2] = $language10B; - $expected[3] = $language11A; - - Language::sort($languages); + $language10B = new Language(); + $language10B->setName('B'); + $language10B->setWeight(10); - $this->assertEquals($expected, $languages); + return array( + // Set up data, already ordered by weight. + array( + array( + $language9A, + $language10B, + ), + array( + $language9A, + $language10B, + ), + ), + // Set up data, out of order by weight. + array( + array( + $language10B, + $language9A, + ), + array( + $language10B, + $language9A, + ), + ), + // Set up data, tied by weight, already ordered by name. + array( + array( + $language10A, + $language10B, + ), + array( + $language10A, + $language10B, + ), + ), + // Set up data, tied by weight, out of order by name. + array( + array( + $language10B, + $language10A, + ), + array( + $language10A, + $language10B, + ), + ), + ); } }