utility.collection/tests/CollectionTest.php
2025-04-09 02:45:41 +01:00

72 lines
No EOL
2 KiB
PHP

<?php
declare(strict_types=1);
namespace Loom\Utility\Collection\Tests;
use Loom\Utility\Collection\Collection;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
class CollectionTest extends TestCase
{
#[DataProvider('addDataProvider')]
public function testAdd(array $startingItems, mixed $itemToAdd, array $expectedResult): void
{
$collection = new Collection($startingItems);
$collection->add($itemToAdd);
$this->assertEquals($expectedResult, $collection->toArray());
}
#[DataProvider('removeDataProvider')]
public function testRemove(array $startingArray, mixed $itemToRemove, array $expectedResult): void
{
$collection = new Collection($startingArray);
$collection->remove($itemToRemove);
$this->assertEquals($expectedResult, $collection->toArray());
}
public static function addDataProvider(): array
{
return [
[
'startingItems' => ['A', 'B', 'C'],
'itemToAdd' => 'D',
'expectedResult' => ['A', 'B', 'C', 'D'],
],
[
'startingItems' => [],
'itemToAdd' => 1,
'expectedResult' => [1],
],
[
'startingItems' => [],
'itemToAdd' => null,
'expectedResult' => [],
],
];
}
public static function removeDataProvider(): array
{
return [
[
'startingArray' => ['A', 'B', 'C'],
'itemToRemove' => 'B',
'expectedResult' => ['A', 'C'],
],
[
'startingArray' => ['A', 'B', 'C'],
'itemToRemove' => 'orange',
'expectedResult' => ['A', 'B', 'C'],
],
[
'startingArray' => [],
'itemToRemove' => 'A',
'expectedResult' => [],
],
];
}
}