class SortArrayTest in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php \Drupal\Tests\Component\Utility\SortArrayTest
Tests the SortArray component.
@group Utility
@coversDefaultClass \Drupal\Component\Utility\SortArray
Hierarchy
- class \Drupal\Tests\UnitTestCase extends \Drupal\Tests\PHPUnit_Framework_TestCase
- class \Drupal\Tests\Component\Utility\SortArrayTest
Expanded class hierarchy of SortArrayTest
File
- core/
tests/ Drupal/ Tests/ Component/ Utility/ SortArrayTest.php, line 20 - Contains \Drupal\Tests\Component\Utility\SortArrayTest.
Namespace
Drupal\Tests\Component\UtilityView source
class SortArrayTest extends UnitTestCase {
/**
* Tests SortArray::sortByWeightElement() input against expected output.
*
* @dataProvider providerSortByWeightElement
* @covers ::sortByWeightElement
* @covers ::sortByKeyInt
*
* @param array $a
* The first input array for the SortArray::sortByWeightElement() method.
* @param array $b
* The second input array for the SortArray::sortByWeightElement().
* @param integer $expected
* The expected output from calling the method.
*/
public function testSortByWeightElement($a, $b, $expected) {
$result = SortArray::sortByWeightElement($a, $b);
$this
->assertBothNegativePositiveOrZero($expected, $result);
}
/**
* Data provider for SortArray::sortByWeightElement().
*
* @return array
* An array of tests, matching the parameter inputs for
* testSortByWeightElement.
*
* @see \Drupal\Tests\Component\Utility\SortArrayTest::testSortByWeightElement()
*/
public function providerSortByWeightElement() {
$tests = array();
// Weights set and equal.
$tests[] = array(
array(
'weight' => 1,
),
array(
'weight' => 1,
),
0,
);
// Weights set and $a is less (lighter) than $b.
$tests[] = array(
array(
'weight' => 1,
),
array(
'weight' => 2,
),
-1,
);
// Weights set and $a is greater (heavier) than $b.
$tests[] = array(
array(
'weight' => 2,
),
array(
'weight' => 1,
),
1,
);
// Weights not set.
$tests[] = array(
array(),
array(),
0,
);
// Weights for $b not set.
$tests[] = array(
array(
'weight' => 1,
),
array(),
1,
);
// Weights for $a not set.
$tests[] = array(
array(),
array(
'weight' => 1,
),
-1,
);
return $tests;
}
/**
* Tests SortArray::sortByWeightProperty() input against expected output.
*
* @dataProvider providerSortByWeightProperty
* @covers ::sortByWeightProperty
* @covers ::sortByKeyInt
*
* @param array $a
* The first input array for the SortArray::sortByWeightProperty() method.
* @param array $b
* The second input array for the SortArray::sortByWeightProperty().
* @param integer $expected
* The expected output from calling the method.
*/
public function testSortByWeightProperty($a, $b, $expected) {
$result = SortArray::sortByWeightProperty($a, $b);
$this
->assertBothNegativePositiveOrZero($expected, $result);
}
/**
* Data provider for SortArray::sortByWeightProperty().
*
* @return array
* An array of tests, matching the parameter inputs for
* testSortByWeightProperty.
*
* @see \Drupal\Tests\Component\Utility\SortArrayTest::testSortByWeightProperty()
*/
public function providerSortByWeightProperty() {
$tests = array();
// Weights set and equal.
$tests[] = array(
array(
'#weight' => 1,
),
array(
'#weight' => 1,
),
0,
);
// Weights set and $a is less (lighter) than $b.
$tests[] = array(
array(
'#weight' => 1,
),
array(
'#weight' => 2,
),
-1,
);
// Weights set and $a is greater (heavier) than $b.
$tests[] = array(
array(
'#weight' => 2,
),
array(
'#weight' => 1,
),
1,
);
// Weights not set.
$tests[] = array(
array(),
array(),
0,
);
// Weights for $b not set.
$tests[] = array(
array(
'#weight' => 1,
),
array(),
1,
);
// Weights for $a not set.
$tests[] = array(
array(),
array(
'#weight' => 1,
),
-1,
);
return $tests;
}
/**
* Tests SortArray::sortByTitleElement() input against expected output.
*
* @dataProvider providerSortByTitleElement
* @covers ::sortByTitleElement
* @covers ::sortByKeyString
*
* @param array $a
* The first input item for comparison.
* @param array $b
* The second item for comparison.
* @param integer $expected
* The expected output from calling the method.
*/
public function testSortByTitleElement($a, $b, $expected) {
$result = SortArray::sortByTitleElement($a, $b);
$this
->assertBothNegativePositiveOrZero($expected, $result);
}
/**
* Data provider for SortArray::sortByTitleElement().
*
* @return array
* An array of tests, matching the parameter inputs for
* testSortByTitleElement.
*
* @see \Drupal\Tests\Component\Utility\SortArrayTest::testSortByTitleElement()
*/
public function providerSortByTitleElement() {
$tests = array();
// Titles set and equal.
$tests[] = array(
array(
'title' => 'test',
),
array(
'title' => 'test',
),
0,
);
// Title $a not set.
$tests[] = array(
array(),
array(
'title' => 'test',
),
-4,
);
// Title $b not set.
$tests[] = array(
array(
'title' => 'test',
),
array(),
4,
);
// Titles set but not equal.
$tests[] = array(
array(
'title' => 'test',
),
array(
'title' => 'testing',
),
-1,
);
// Titles set but not equal.
$tests[] = array(
array(
'title' => 'testing',
),
array(
'title' => 'test',
),
1,
);
return $tests;
}
/**
* Tests SortArray::sortByTitleProperty() input against expected output.
*
* @dataProvider providerSortByTitleProperty
* @covers ::sortByTitleProperty
* @covers ::sortByKeyString
*
* @param array $a
* The first input item for comparison.
* @param array $b
* The second item for comparison.
* @param integer $expected
* The expected output from calling the method.
*/
public function testSortByTitleProperty($a, $b, $expected) {
$result = SortArray::sortByTitleProperty($a, $b);
$this
->assertBothNegativePositiveOrZero($expected, $result);
}
/**
* Data provider for SortArray::sortByTitleProperty().
*
* @return array
* An array of tests, matching the parameter inputs for
* testSortByTitleProperty.
*
* @see \Drupal\Tests\Component\Utility\SortArrayTest::testSortByTitleProperty()
*/
public function providerSortByTitleProperty() {
$tests = array();
// Titles set and equal.
$tests[] = array(
array(
'#title' => 'test',
),
array(
'#title' => 'test',
),
0,
);
// Title $a not set.
$tests[] = array(
array(),
array(
'#title' => 'test',
),
-4,
);
// Title $b not set.
$tests[] = array(
array(
'#title' => 'test',
),
array(),
4,
);
// Titles set but not equal.
$tests[] = array(
array(
'#title' => 'test',
),
array(
'#title' => 'testing',
),
-1,
);
// Titles set but not equal.
$tests[] = array(
array(
'#title' => 'testing',
),
array(
'#title' => 'test',
),
1,
);
return $tests;
}
/**
* Asserts that numbers are either both negative, both positive or both zero.
*
* The exact values returned by comparison functions differ between PHP
* versions and are considered an "implementation detail".
*
* @param int $expected
* Expected comparison function return value.
* @param int $result
* Actual comparison function return value.
*/
protected function assertBothNegativePositiveOrZero($expected, $result) {
$this
->assertTrue(is_numeric($expected) && is_numeric($result), 'Parameters are numeric.');
$this
->assertTrue($expected < 0 && $result < 0 || $expected > 0 && $result > 0 || $expected === 0 && $result === 0, 'Numbers are either both negative, both positive or both zero.');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
SortArrayTest:: |
protected | function | Asserts that numbers are either both negative, both positive or both zero. | |
SortArrayTest:: |
public | function | Data provider for SortArray::sortByTitleElement(). | |
SortArrayTest:: |
public | function | Data provider for SortArray::sortByTitleProperty(). | |
SortArrayTest:: |
public | function | Data provider for SortArray::sortByWeightElement(). | |
SortArrayTest:: |
public | function | Data provider for SortArray::sortByWeightProperty(). | |
SortArrayTest:: |
public | function | Tests SortArray::sortByTitleElement() input against expected output. | |
SortArrayTest:: |
public | function | Tests SortArray::sortByTitleProperty() input against expected output. | |
SortArrayTest:: |
public | function | Tests SortArray::sortByWeightElement() input against expected output. | |
SortArrayTest:: |
public | function | Tests SortArray::sortByWeightProperty() input against expected output. | |
UnitTestCase:: |
protected | property | The random generator. | |
UnitTestCase:: |
protected | property | The app root. | |
UnitTestCase:: |
protected | function | Asserts if two arrays are equal by sorting them first. | |
UnitTestCase:: |
protected | function | Mocks a block with a block plugin. | |
UnitTestCase:: |
protected | function | Returns a stub class resolver. | |
UnitTestCase:: |
public | function | Returns a stub config factory that behaves according to the passed in array. | |
UnitTestCase:: |
public | function | Returns a stub config storage that returns the supplied configuration. | |
UnitTestCase:: |
protected | function | Sets up a container with a cache tags invalidator. | |
UnitTestCase:: |
protected | function | Gets the random generator for the utility methods. | |
UnitTestCase:: |
public | function | Returns a stub translation manager that just returns the passed string. | |
UnitTestCase:: |
public | function | Generates a unique random string containing letters and numbers. | |
UnitTestCase:: |
protected | function | 259 |