/**
  * Implements corresponding isValidXX logic.
  *
  * @param string $context   Please see corresponding isValidXX description.
  * @param string $input     Please see corresponding isValidXX description.
  * @param bool   $allowNull Please see corresponding isValidXX description.
  *
  * @return does not return a value.
  * @throws ValidationException thrown if input is invalid.
  * @throws IntrusionException thrown if intrusion is detected.
  */
 private function _assertValidCreditCard($context, $input, $allowNull)
 {
     $ccvr = new CreditCardValidationRule('CreditCard', $this->_encoder);
     $ccvr->setAllowNull($allowNull);
     $ccvr->assertValid($context, $input);
     return null;
 }
 /**
  * getValid does not treat '0' as empty. disallows empty values when
  * allowNull is false.
  */
 function testCCVR_getValid_Empty()
 {
     $ccr = new StringValidationRule('CreditCardValidator', null, '^[0-9]*$');
     $ccr->setMaximumLength(1);
     $ccvr = new CreditCardValidationRule('CreditCardValidatorLuhn', null, $ccr);
     $this->assertTrue($ccvr->isValid('testCCVR_getValid_Empty', '0'));
     $this->assertFalse($ccvr->isValid('testCCVR_getValid_Empty', ''));
     $this->assertFalse($ccvr->isValid('testCCVR_getValid_Empty', null));
     $ccvr->setAllowNull(true);
     $this->assertTrue($ccvr->isValid('testCCVR_getValid_Empty', ''));
     $this->assertTrue($ccvr->isValid('testCCVR_getValid_Empty', null));
 }