Merge pull request #935 from bar/master-hash-flatten

Set::flatten() fails to generate keys when 'tip' value is an empty array.
This commit is contained in:
Mark Story 2012-11-02 15:45:52 -07:00
commit 4c6c3b0554
3 changed files with 32 additions and 2 deletions

View file

@ -298,7 +298,6 @@ class HashTest extends CakeTestCase {
'Author' => array('id' => '3', 'user' => 'larry', 'password' => null),
)
);
$result = Hash::flatten($data);
$expected = array(
'0.Post.id' => '1',
@ -317,6 +316,21 @@ class HashTest extends CakeTestCase {
);
$this->assertEquals($expected, $result);
$data = array(
array(
'Post' => array('id' => '1', 'author_id' => null, 'title' => 'First Post'),
'Author' => array(),
)
);
$result = Hash::flatten($data);
$expected = array(
'0.Post.id' => '1',
'0.Post.author_id' => null,
'0.Post.title' => 'First Post',
'0.Author' => array()
);
$this->assertEquals($expected, $result);
$data = array(
array('Post' => array('id' => 1)),
array('Post' => array('id' => 2)),

View file

@ -3054,6 +3054,7 @@ class SetTest extends CakeTestCase {
/**
* Tests Set::flatten
*
* @see Hash test cases, as Set::flatten() is just a proxy.
* @return void
*/
public function testFlatten() {
@ -3064,6 +3065,21 @@ class SetTest extends CakeTestCase {
$data[9] = 'Shemp';
$result = Set::flatten($data);
$this->assertEquals($data, $result);
$data = array(
array(
'Post' => array('id' => '1', 'author_id' => null, 'title' => 'First Post'),
'Author' => array(),
)
);
$result = Set::flatten($data);
$expected = array(
'0.Post.id' => '1',
'0.Post.author_id' => null,
'0.Post.title' => 'First Post',
'0.Author' => array()
);
$this->assertEquals($expected, $result);
}
/**

View file

@ -527,7 +527,7 @@ class Hash {
$element = $data[$key];
unset($data[$key]);
if (is_array($element)) {
if (is_array($element) && !empty($element)) {
if (!empty($data)) {
$stack[] = array($data, $path);
}