Skip to content

Commit 4fa25c4

Browse files
test remove
1 parent 3fec3fb commit 4fa25c4

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

src/Remove.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ function remove(array &$set, ...$elements): int
2020
foreach ($elements as $element) {
2121
foreach (array_keys($set, $element, true) as $index) {
2222
unset($set[$index]);
23+
$removed++;
2324
}
2425
}
2526

tests/RemoveTest.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace BrenoRoosevelt\Tests;
5+
6+
use function BrenoRoosevelt\contains;
7+
use PHPUnit\Framework\TestCase;
8+
use function BrenoRoosevelt\remove;
9+
10+
class RemoveTest extends TestCase
11+
{
12+
public function removeProvider(): array
13+
{
14+
return [
15+
'case_1' => [
16+
[1, 2, 3],
17+
[1],
18+
1,
19+
[1 => 2, 2 => 3]
20+
],
21+
'case_2' => [
22+
[1, 2, 3],
23+
[1, 2, 2],
24+
2,
25+
[2 => 3]
26+
],
27+
'case_3' => [
28+
[1, 2, 3],
29+
['1'],
30+
0,
31+
[1, 2, 3]
32+
],
33+
'case_4' => [
34+
[null, false, 0],
35+
[0],
36+
1,
37+
[null, false],
38+
],
39+
'case_5' => [
40+
[],
41+
[0],
42+
0,
43+
[],
44+
]
45+
];
46+
}
47+
48+
/**
49+
* @param array $items
50+
* @param array $elements
51+
* @param int $count
52+
* @param array $expected
53+
* @return void
54+
* @dataProvider removeProvider
55+
*/
56+
public function testContainsAll(array $items, array $elements, int $count, array $expected): void
57+
{
58+
$removed = remove($items, ...$elements);
59+
$this->assertEquals($count, $removed);
60+
$this->assertEquals($expected, $items);
61+
}
62+
}

0 commit comments

Comments
 (0)