1
0
Fork 0

Merge pull request #682 from ktomk/patch-1

Cont. code simplification & better tests.
pull/685/merge
Jordi Boggiano 2012-05-13 13:32:09 -07:00
commit cd4cceaf7b
2 changed files with 21 additions and 7 deletions

View File

@ -40,18 +40,19 @@ class SpdxLicenseIdentifier
public function validate($license) public function validate($license)
{ {
if (is_array($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)) { if (!is_string($license)) {
throw new \InvalidArgumentException(sprintf( throw new \InvalidArgumentException(sprintf(
'Array or String expected, %s given.', gettype($license) '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( return array(
array(""), array(""),
array(array()),
array("The system pwns you"), array("The system pwns you"),
array("()"), array("()"),
array("(MIT)"), 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 * @dataProvider provideValidLicenses
* @param $license * @param $license
@ -71,11 +83,12 @@ class SpdxLicenseIdentifierTest extends TestCase
} }
/** /**
* @dataProvider provideInvalidArgument
* @expectedException InvalidArgumentException * @expectedException InvalidArgumentException
*/ */
public function testInvalidArgument() public function testInvalidArgument($invalidArgument)
{ {
$validator = new SpdxLicenseIdentifier(); $validator = new SpdxLicenseIdentifier();
$validator->validate(null); $validator->validate($invalidArgument);
} }
} }