Drupal modules for browsing and managing Fedora-based digital repositories.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

131 lines
3.8 KiB

<?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.');
}
}