Source

						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);
	}