From 9e375ca5443f07d1bab822676623ba0cfb593128 Mon Sep 17 00:00:00 2001 From: Marcin Michalski Date: Sun, 25 Feb 2018 22:56:36 +0100 Subject: [PATCH] Ensure DataTransformer::testSet samples array is not empty (#204) --- src/SupportVectorMachine/DataTransformer.php | 6 ++++++ tests/SupportVectorMachine/DataTransformerTest.php | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/src/SupportVectorMachine/DataTransformer.php b/src/SupportVectorMachine/DataTransformer.php index 0a99aa3..e1aeb7d 100644 --- a/src/SupportVectorMachine/DataTransformer.php +++ b/src/SupportVectorMachine/DataTransformer.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace Phpml\SupportVectorMachine; +use Phpml\Exception\InvalidArgumentException; + class DataTransformer { public static function trainingSet(array $samples, array $labels, bool $targets = false): string @@ -24,6 +26,10 @@ class DataTransformer public static function testSet(array $samples): string { + if (empty($samples)) { + throw InvalidArgumentException::arrayCantBeEmpty(); + } + if (!is_array($samples[0])) { $samples = [$samples]; } diff --git a/tests/SupportVectorMachine/DataTransformerTest.php b/tests/SupportVectorMachine/DataTransformerTest.php index 79dcb49..75c23d6 100644 --- a/tests/SupportVectorMachine/DataTransformerTest.php +++ b/tests/SupportVectorMachine/DataTransformerTest.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace Phpml\Tests\SupportVectorMachine; +use Phpml\Exception\InvalidArgumentException; use Phpml\SupportVectorMachine\DataTransformer; use PHPUnit\Framework\TestCase; @@ -78,4 +79,12 @@ class DataTransformerTest extends TestCase $this->assertEquals($probabilities, DataTransformer::probabilities($rawPredictions, $labels)); } + + public function testThrowExceptionWhenTestSetIsEmpty(): void + { + $this->expectException(InvalidArgumentException::class); + $this->expectExceptionMessage('The array has zero elements'); + + DataTransformer::testSet([]); + } }