/**
  * Merge arrays
  * 
  * @param ArrayObjectA $Array
  * @return \ArrayObjectA
  */
 public function merge(ArrayObjectA $Array)
 {
     $this->exchangeArray(array_merge($this->getArrayCopy(), $Array->getArrayCopy()));
     return $this;
 }
 /**
  * Test arraySort integrity
  */
 public function testMultisort()
 {
     $expected = array('item1' => array('weight' => 4, 'diff' => array(1 => 10, 7 => -5, 30 => 0)), 'item2' => array('weight' => 3, 'diff' => array(1 => 10, 7 => -5, 30 => 0)), 'item3' => array('weight' => 3, 'diff' => array(1 => 8, 7 => -5, 30 => 0)), 'item4' => array('weight' => 3, 'diff' => array(1 => 8, 7 => -10, 30 => 0)), 'item5' => array('weight' => 3, 'diff' => array(1 => 8, 7 => -10, 30 => -1)), 'item6' => array('weight' => 2, 'diff' => array(1 => 3, 7 => 4, 30 => 5)), 'item7' => array('weight' => 1, 'diff' => array(1 => 30, 7 => 40, 30 => 50)), 'item8' => array('weight' => 1, 'diff' => array(1 => false, 7 => false, 30 => false)));
     $test = $expected;
     $ashuffle = function (&$array) {
         $keys = array_keys($array);
         shuffle($keys);
         $array = array_merge(array_flip($keys), $array);
         return true;
     };
     $ashuffle($test);
     $Test = new ArrayObjectA($test);
     $params = array('weight' => 'desc', 'diff.1' => 'desc', 'diff.7' => 'desc', 'diff.30' => 'desc');
     $this->assertNotSame($expected, $Test->getArrayCopy());
     $this->assertSame($expected, $Test->multisort($params)->getArrayCopy());
     $expected = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
     $test = $expected;
     shuffle($test);
     $Test = new ArrayObjectA($test);
     $params = 'asc';
     $this->assertNotSame($expected, $Test->getArrayCopy());
     $this->assertSame($expected, $Test->multisort($params)->getArrayCopy());
     $expected = array('item1' => 1, 'item2' => 2, 'item3' => 3, 'item4' => 4, 'item5' => 5);
     $test = $expected;
     $ashuffle($test);
     if ($test === $expected) {
         $ashuffle($test);
     }
     $Test = new ArrayObjectA($test);
     $params = 'asc';
     $this->assertNotSame($expected, $Test->getArrayCopy());
     $this->assertSame($expected, $Test->multisort($params)->getArrayCopy());
 }