/** * Tests Callback validator. */ public function testCallback() { $good = array(1, '1', '0.1'); $wrong = array(new \stdClass(), false, 'OLOL'); $callbacks = array('is_numeric', create_function('$a', 'return is_numeric($a);'), '\\SomeOtherPrefix\\Some\\Validator::isNumeric', array('\\SomeOtherPrefix\\Some\\Validator', 'isNumeric'), 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(array(), $validator->getAdditionalParams()); } // Test additional parameters $good = array(3, 9, 33); $wrong = array(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(array(3), $validator->getAdditionalParams()); foreach ($good as $value) { $this->assertTrue($validator->isValid($value)); } foreach ($wrong as $value) { $this->assertFalse($validator->isValid($value)); } // Ensure that there is no such function defined $funcName = 'definitelyNonExistentFunction'; if (function_exists($funcName)) { $this->markTestSkipped(sprintf('Function %s exists', $funcName)); } // Test exception on invalid callback definition $invalidCallbacks = array($funcName, true, 1, new \stdClass()); foreach ($invalidCallbacks as $callback) { try { $validator = new Validator\Callback($callback); $this->fail('Expected exception \\Jyxo\\Input\\Validator\\Exception.'); } catch (\PHPUnit_Framework_AssertionFailedError $e) { throw $e; } catch (\Exception $e) { // Correctly thrown exception $this->assertInstanceOf('\\Jyxo\\Input\\Validator\\Exception', $e); } } }
/** * Tests Callback validator. */ 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)); } }