Skip to content

Commit 4b30152

Browse files
test pull
1 parent 2eb8ddc commit 4b30152

File tree

4 files changed

+45
-8
lines changed

4 files changed

+45
-8
lines changed

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"src/DotNotation.php",
3939
"src/Remove.php",
4040
"src/RemoveKey.php",
41+
"src/Pull.php",
4142
"src/array_functions.php"
4243
]
4344
},

src/Pull.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace BrenoRoosevelt;
5+
6+
/**
7+
* Pulls and returns an element by key
8+
*
9+
* @param array $set The array containing the elements/keys
10+
* @param string|int $key The key to be pulled
11+
* @param mixed $default default value that will be returned if the key does not exist
12+
* @return mixed|null pulled element or `default` parameter
13+
*/
14+
function pull(array &$set, $key, $default = null)
15+
{
16+
$value = $set[$key] ?? $default;
17+
unset($set[$key]);
18+
19+
return $value;
20+
}

src/array_functions.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,6 @@
33

44
namespace BrenoRoosevelt;
55

6-
function pull(array &$set, $key, $default = null)
7-
{
8-
$value = $set[$key] ?? $default;
9-
unset($set[$key]);
10-
11-
return $value;
12-
}
13-
146
function reindex(array &$items): void
157
{
168
$items = array_values($items);

tests/PullTest.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace BrenoRoosevelt\Tests;
5+
6+
use PHPUnit\Framework\TestCase;
7+
use function BrenoRoosevelt\pull;
8+
9+
class PullTest extends TestCase
10+
{
11+
public function testPullKey()
12+
{
13+
$elements = [1, 'a' => 2, 'b' => 3];
14+
$this->assertEquals(1, pull($elements, 0));
15+
$this->assertEquals(['a' => 2, 'b' => 3], $elements);
16+
}
17+
18+
public function testPullRetunsDefault()
19+
{
20+
$elements = [1, 'a' => 2, 'b' => 3];
21+
$this->assertEquals('k', pull($elements, 1, 'k'));
22+
$this->assertEquals([1, 'a' => 2, 'b' => 3], $elements);
23+
}
24+
}

0 commit comments

Comments
 (0)