1
0
Fork 0

Cont. code simplification & better tests.

pull/682/head
Tom Klingenberg 2012-05-13 00:41:15 +02:00
parent ce16575adb
commit 58a8ff80e3
2 changed files with 21 additions and 7 deletions

View File

@ -40,18 +40,19 @@ class SpdxLicenseIdentifier
public function validate($license)
{
if (is_array($license)) {
$license = count($license) > 1 ? '('.implode(' or ', $license).')' : reset($license);
$count = count($license);
if ($count !== count(array_filter($license, 'is_string'))) {
throw new \InvalidArgumentException('Array of strings expected.');
}
$license = $count > 1 ? '('.implode(' or ', $license).')' : (string) reset($license);
}
if (!is_string($license)) {
throw new \InvalidArgumentException(sprintf(
'Array or String expected, %s given.', gettype($license)
));
}
if (!$this->isValidLicenseString($license)) {
return false;
}
return true;
return $this->isValidLicenseString($license);
}
/**

View File

@ -32,6 +32,7 @@ class SpdxLicenseIdentifierTest extends TestCase
{
return array(
array(""),
array(array()),
array("The system pwns you"),
array("()"),
array("(MIT)"),
@ -50,6 +51,17 @@ class SpdxLicenseIdentifierTest extends TestCase
);
}
public static function provideInvalidArgument()
{
return array(
array(null),
array(new \stdClass),
array(array(new \stdClass)),
array(array("mixed", new \stdClass)),
array(array(new \stdClass, new \stdClass)),
);
}
/**
* @dataProvider provideValidLicenses
* @param $license
@ -71,11 +83,12 @@ class SpdxLicenseIdentifierTest extends TestCase
}
/**
* @dataProvider provideInvalidArgument
* @expectedException InvalidArgumentException
*/
public function testInvalidArgument()
public function testInvalidArgument($invalidArgument)
{
$validator = new SpdxLicenseIdentifier();
$validator->validate(null);
$validator->validate($invalidArgument);
}
}