5 changed files with 172 additions and 4 deletions
@ -0,0 +1,131 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/** |
||||||
|
* @file |
||||||
|
* Unit tests for the functions in the includes/utilities.inc file. |
||||||
|
*/ |
||||||
|
|
||||||
|
/** |
||||||
|
* Tests for drupal_sort_weight_ordered(). |
||||||
|
*/ |
||||||
|
class IslandoraSortOrderedTestCase extends DrupalUnitTestCase { |
||||||
|
|
||||||
|
/** |
||||||
|
* Return info about the tests. |
||||||
|
*/ |
||||||
|
public static function getInfo() { |
||||||
|
return array( |
||||||
|
'name' => 'islandora_sort_ordered()', |
||||||
|
'description' => 'Performs unit tests on islandora_sort_ordered().', |
||||||
|
'group' => 'Islandora', |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Test sort order when sorting by weight. |
||||||
|
*/ |
||||||
|
public function testIslandoraSortOrderedSorting() { |
||||||
|
module_load_include('inc', 'islandora', 'includes/utilities'); |
||||||
|
|
||||||
|
// The order of children with same weight should be preserved. |
||||||
|
$element_mixed_weight = array( |
||||||
|
'child5' => array('weight' => 10), |
||||||
|
'child3' => array('weight' => -10), |
||||||
|
'child1' => array(), |
||||||
|
'child4' => array('weight' => 10), |
||||||
|
'child2' => array(), |
||||||
|
'child6' => array('weight' => 10), |
||||||
|
'child9' => array(), |
||||||
|
'child8' => array('weight' => 10), |
||||||
|
'child7' => array(), |
||||||
|
); |
||||||
|
|
||||||
|
$expected = array( |
||||||
|
'child3' => array('weight' => -10), |
||||||
|
'child1' => array(), |
||||||
|
'child2' => array(), |
||||||
|
'child9' => array(), |
||||||
|
'child7' => array(), |
||||||
|
'child5' => array('weight' => 10), |
||||||
|
'child4' => array('weight' => 10), |
||||||
|
'child6' => array('weight' => 10), |
||||||
|
'child8' => array('weight' => 10), |
||||||
|
); |
||||||
|
|
||||||
|
islandora_sort_ordered($element_mixed_weight, array('weight')); |
||||||
|
|
||||||
|
$this->assertEqual($expected, $element_mixed_weight, 'Order of elements with the same weight is preserved.'); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Make sure numeric keys are preserved. |
||||||
|
*/ |
||||||
|
public function testIslandoraSortPreserveNumeric() { |
||||||
|
module_load_include('inc', 'islandora', 'includes/utilities'); |
||||||
|
|
||||||
|
// The order of children with same weight should be preserved. |
||||||
|
$element_mixed_weight = array( |
||||||
|
5 => array('weight' => 10), |
||||||
|
3 => array('weight' => -10), |
||||||
|
1 => array(), |
||||||
|
4 => array('weight' => 10), |
||||||
|
2 => array(), |
||||||
|
6 => array('weight' => 10), |
||||||
|
9 => array(), |
||||||
|
8 => array('weight' => 10), |
||||||
|
7 => array(), |
||||||
|
); |
||||||
|
|
||||||
|
$expected = array( |
||||||
|
3 => array('weight' => -10), |
||||||
|
1 => array(), |
||||||
|
2 => array(), |
||||||
|
9 => array(), |
||||||
|
7 => array(), |
||||||
|
5 => array('weight' => 10), |
||||||
|
4 => array('weight' => 10), |
||||||
|
6 => array('weight' => 10), |
||||||
|
8 => array('weight' => 10), |
||||||
|
); |
||||||
|
|
||||||
|
islandora_sort_ordered($element_mixed_weight, array('weight')); |
||||||
|
|
||||||
|
$this->assertEqual($expected, $element_mixed_weight, 'Numeric keys are preserved while sorting.'); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Test sort order when sorting by a key in a multidimensional array. |
||||||
|
*/ |
||||||
|
public function testIslandoraSortOrderedMulti() { |
||||||
|
module_load_include('inc', 'islandora', 'includes/utilities'); |
||||||
|
|
||||||
|
// The order of children with same weight should be preserved. |
||||||
|
$element_mixed_weight = array( |
||||||
|
'child5' => array('foo' => array('bar' => 10)), |
||||||
|
'child3' => array('foo' => array('bar' => -10)), |
||||||
|
'child1' => array('foo' => 6), |
||||||
|
'child4' => array('foo' => array('bar' => 10)), |
||||||
|
'child2' => array(), |
||||||
|
'child6' => array('foo' => array('bar' => 10)), |
||||||
|
'child9' => array(array('woot')), |
||||||
|
'child8' => array('foo' => array('bar' => 10)), |
||||||
|
'child7' => array(), |
||||||
|
); |
||||||
|
|
||||||
|
$expected = array( |
||||||
|
'child3' => array('foo' => array('bar' => -10)), |
||||||
|
'child1' => array('foo' => 6), |
||||||
|
'child2' => array(), |
||||||
|
'child9' => array(array('woot')), |
||||||
|
'child7' => array(), |
||||||
|
'child5' => array('foo' => array('bar' => 10)), |
||||||
|
'child4' => array('foo' => array('bar' => 10)), |
||||||
|
'child6' => array('foo' => array('bar' => 10)), |
||||||
|
'child8' => array('foo' => array('bar' => 10)), |
||||||
|
); |
||||||
|
|
||||||
|
islandora_sort_ordered($element_mixed_weight, array('foo', 'bar')); |
||||||
|
|
||||||
|
$this->assertEqual($expected, $element_mixed_weight, 'Sorting by multidimensional array works.'); |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue