public function testCallback()
{
$good = [1, '1', '0.1'];
$wrong = [new \stdClass(), false, 'OLOL'];
$callbacks = [function ($a) {
return is_numeric($a);
}];
foreach ($callbacks as $callback) {
$validator = new Validator\Callback($callback);
foreach ($good as $value) {
$this->assertTrue($validator->isValid($value));
}
foreach ($wrong as $value) {
$this->assertFalse($validator->isValid($value));
}
$this->assertSame($callback, $validator->getCallback());
$this->assertSame([], $validator->getAdditionalParams());
}
// Test additional parameters
$good = [3, 9, 33];
$wrong = [2, 100, true, new \stdClass(), 'OHAI'];
$callback = function ($value, $divisor) {
return is_numeric($value) && 0 === $value % $divisor;
};
$validator = new Validator\Callback($callback, 3);
$this->assertSame([3], $validator->getAdditionalParams());
foreach ($good as $value) {
$this->assertTrue($validator->isValid($value));
}
foreach ($wrong as $value) {
$this->assertFalse($validator->isValid($value));
}
}