mirror of
https://github.com/Llewellynvdm/php-ml.git
synced 2024-06-11 12:52:20 +00:00
Add Cluster tests (#254)
This commit is contained in:
parent
33efab20a5
commit
55749c7c92
|
@ -49,7 +49,7 @@ class Cluster extends Point implements IteratorAggregate, Countable
|
||||||
public function attach(Point $point): Point
|
public function attach(Point $point): Point
|
||||||
{
|
{
|
||||||
if ($point instanceof self) {
|
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);
|
$this->points->attach($point);
|
||||||
|
|
49
tests/Clustering/KMeans/ClusterTest.php
Normal file
49
tests/Clustering/KMeans/ClusterTest.php
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user