public function testMerge() {
$result = Set::merge(array('foo'), array());
$this->assertIdentical($result, array('foo'));
$result = Set::merge((array) 'foo', (array) 'bar');
$this->assertIdentical($result, array('foo', 'bar'));
$result = Set::merge((array) 'foo', array('user' => 'bob', 'no-bar'));
$this->assertIdentical($result, array('foo', 'user' => 'bob', 'no-bar'));
$a = array('foo', 'foo2');
$b = array('bar', 'bar2');
$this->assertIdentical(Set::merge($a, $b), array('foo', 'foo2', 'bar', 'bar2'));
$a = array('foo' => 'bar', 'bar' => 'foo');
$b = array('foo' => 'no-bar', 'bar' => 'no-foo');
$this->assertIdentical(Set::merge($a, $b), array('foo' => 'no-bar', 'bar' => 'no-foo'));
$a = array('users' => array('bob', 'jim'));
$b = array('users' => array('lisa', 'tina'));
$this->assertIdentical(
Set::merge($a, $b), array('users' => array('bob', 'jim', 'lisa', 'tina'))
);
$a = array('users' => array('jim', 'bob'));
$b = array('users' => 'none');
$this->assertIdentical(Set::merge($a, $b), array('users' => 'none'));
$a = array('users' => array('lisa' => array('id' => 5, 'pw' => 'secret')), 'lithium');
$b = array('users' => array('lisa' => array('pw' => 'new-pass', 'age' => 23)), 'ice-cream');
$this->assertIdentical(
Set::merge($a, $b),
array(
'users' => array('lisa' => array('id' => 5, 'pw' => 'new-pass', 'age' => 23)),
'lithium',
'ice-cream'
)
);
$c = array(
'users' => array(
'lisa' => array('pw' => 'you-will-never-guess', 'age' => 25, 'pet' => 'dog')
),
'chocolate'
);
$expected = array(
'users' => array(
'lisa' => array(
'id' => 5, 'pw' => 'you-will-never-guess', 'age' => 25, 'pet' => 'dog'
)
),
'lithium',
'ice-cream',
'chocolate'
);
$this->assertIdentical($expected, Set::merge(Set::merge($a, $b), $c));
$this->assertIdentical($expected, Set::merge(Set::merge($a, $b), Set::merge(array(), $c)));
$result = Set::merge($a, Set::merge($b, $c));
$this->assertIdentical($expected, $result);
$a = array('Tree', 'CounterCache', 'Upload' => array(
'folder' => 'products', 'fields' => array(
'image_1_id', 'image_2_id', 'image_3_id', 'image_4_id', 'image_5_id'
)
));
$b = array(
'Cacheable' => array('enabled' => false),
'Limit', 'Bindable', 'Validator', 'Transactional'
);
$expected = array('Tree', 'CounterCache', 'Upload' => array(
'folder' => 'products', 'fields' => array(
'image_1_id', 'image_2_id', 'image_3_id', 'image_4_id', 'image_5_id'
)),
'Cacheable' => array('enabled' => false),
'Limit',
'Bindable',
'Validator',
'Transactional'
);
$this->assertIdentical(Set::merge($a, $b), $expected);
$expected = array('Tree' => null, 'CounterCache' => null, 'Upload' => array(
'folder' => 'products', 'fields' => array(
'image_1_id', 'image_2_id', 'image_3_id', 'image_4_id', 'image_5_id'
)),
'Cacheable' => array('enabled' => false),
'Limit' => null,
'Bindable' => null,
'Validator' => null,
'Transactional' => null
);
$this->assertIdentical(Set::normalize(Set::merge($a, $b)), $expected);
}