public function executeTests($tests, $type, $propertyValue, $addl)
{
$valueType = gettype($propertyValue);
// Ensure all of the things in our policy are true
foreach ($tests as $test) {
// First check for a custom "tester"
$typeNs = __NAMESPACE__ . '\\Test\\Test' . ucwords(strtolower($type));
if (!class_exists($typeNs)) {
$typeNs = __NAMESPACE__ . '\\Test\\Test' . ucwords(strtolower($valueType));
}
if (class_exists($typeNs)) {
$testInstance = new $typeNs($test, $addl);
if ($testInstance->evaluate($propertyValue) === false) {
return false;
}
} else {
throw new \InvalidArgumentException('Test type "' . $valueType . '" does not exist.');
}
}
return true;
}