Add Cluster tests (#254)

This commit is contained in:
Marcin Michalski 2018-03-04 17:06:46 +01:00 committed by Arkadiusz Kondas
parent 33efab20a5
commit 55749c7c92
2 changed files with 50 additions and 1 deletions

View File

@ -49,7 +49,7 @@ class Cluster extends Point implements IteratorAggregate, Countable
public function attach(Point $point): Point
{
if ($point instanceof self) {
throw new LogicException('cannot attach a cluster to another');
throw new LogicException('Cannot attach a cluster to another');
}
$this->points->attach($point);

View File

@ -0,0 +1,49 @@
<?php
declare(strict_types=1);
namespace Phpml\Tests\Clustering\KMeans;
use LogicException;
use Phpml\Clustering\KMeans\Cluster;
use Phpml\Clustering\KMeans\Point;
use Phpml\Clustering\KMeans\Space;
use PHPUnit\Framework\TestCase;
class ClusterTest extends TestCase
{
public function testThrowExceptionWhenAttachingToCluster(): void
{
$this->expectException(LogicException::class);
$this->expectExceptionMessage('Cannot attach a cluster to another');
$cluster = new Cluster(new Space(1), []);
$cluster->attach(clone $cluster);
}
public function testToArray(): void
{
$cluster = new Cluster(new Space(2), [1, 2]);
$cluster->attach(new Point([1, 1]));
$this->assertSame([
'centroid' => [1, 2],
'points' => [
[1, 1],
],
], $cluster->toArray());
}
public function testDetach(): void
{
$cluster = new Cluster(new Space(2), []);
$cluster->attach(new Point([1, 2]));
$cluster->attach($point = new Point([1, 1]));
$detachedPoint = $cluster->detach($point);
$this->assertSame($detachedPoint, $point);
$this->assertNotContains($point, $cluster->getPoints());
$this->assertCount(1, $cluster);
}
}