You are here

class IsbnValidatorTest in Plug 7

Hierarchy

Expanded class hierarchy of IsbnValidatorTest

See also

https://en.wikipedia.org/wiki/Isbn

File

lib/Symfony/validator/Symfony/Component/Validator/Tests/Constraints/IsbnValidatorTest.php, line 21

Namespace

Symfony\Component\Validator\Tests\Constraints
View source
class IsbnValidatorTest extends AbstractConstraintValidatorTest {
  protected function getApiVersion() {
    return Validation::API_VERSION_2_5;
  }
  protected function createValidator() {
    return new IsbnValidator();
  }
  public function getValidIsbn10() {
    return array(
      array(
        '2723442284',
      ),
      array(
        '2723442276',
      ),
      array(
        '2723455041',
      ),
      array(
        '2070546810',
      ),
      array(
        '2711858839',
      ),
      array(
        '2756406767',
      ),
      array(
        '2870971648',
      ),
      array(
        '226623854X',
      ),
      array(
        '2851806424',
      ),
      array(
        '0321812700',
      ),
      array(
        '0-45122-5244',
      ),
      array(
        '0-4712-92311',
      ),
      array(
        '0-9752298-0-X',
      ),
    );
  }
  public function getInvalidIsbn10() {
    return array(
      array(
        '27234422841',
        Isbn::TOO_LONG_ERROR,
      ),
      array(
        '272344228',
        Isbn::TOO_SHORT_ERROR,
      ),
      array(
        '0-4712-9231',
        Isbn::TOO_SHORT_ERROR,
      ),
      array(
        '1234567890',
        Isbn::CHECKSUM_FAILED_ERROR,
      ),
      array(
        '0987656789',
        Isbn::CHECKSUM_FAILED_ERROR,
      ),
      array(
        '7-35622-5444',
        Isbn::CHECKSUM_FAILED_ERROR,
      ),
      array(
        '0-4X19-92611',
        Isbn::CHECKSUM_FAILED_ERROR,
      ),
      array(
        '0_45122_5244',
        Isbn::INVALID_CHARACTERS_ERROR,
      ),
      array(
        '2870#971#648',
        Isbn::INVALID_CHARACTERS_ERROR,
      ),
      array(
        '0-9752298-0-x',
        Isbn::INVALID_CHARACTERS_ERROR,
      ),
      array(
        '1A34567890',
        Isbn::INVALID_CHARACTERS_ERROR,
      ),
      // chr(1) evaluates to 0
      // 2070546810 is valid
      array(
        '2' . chr(1) . '70546810',
        Isbn::INVALID_CHARACTERS_ERROR,
      ),
    );
  }
  public function getValidIsbn13() {
    return array(
      array(
        '978-2723442282',
      ),
      array(
        '978-2723442275',
      ),
      array(
        '978-2723455046',
      ),
      array(
        '978-2070546817',
      ),
      array(
        '978-2711858835',
      ),
      array(
        '978-2756406763',
      ),
      array(
        '978-2870971642',
      ),
      array(
        '978-2266238540',
      ),
      array(
        '978-2851806420',
      ),
      array(
        '978-0321812704',
      ),
      array(
        '978-0451225245',
      ),
      array(
        '978-0471292319',
      ),
    );
  }
  public function getInvalidIsbn13() {
    return array(
      array(
        '978-27234422821',
        Isbn::TOO_LONG_ERROR,
      ),
      array(
        '978-272344228',
        Isbn::TOO_SHORT_ERROR,
      ),
      array(
        '978-2723442-82',
        Isbn::TOO_SHORT_ERROR,
      ),
      array(
        '978-2723442281',
        Isbn::CHECKSUM_FAILED_ERROR,
      ),
      array(
        '978-0321513774',
        Isbn::CHECKSUM_FAILED_ERROR,
      ),
      array(
        '979-0431225385',
        Isbn::CHECKSUM_FAILED_ERROR,
      ),
      array(
        '980-0474292319',
        Isbn::CHECKSUM_FAILED_ERROR,
      ),
      array(
        '0-4X19-92619812',
        Isbn::INVALID_CHARACTERS_ERROR,
      ),
      array(
        '978_2723442282',
        Isbn::INVALID_CHARACTERS_ERROR,
      ),
      array(
        '978#2723442282',
        Isbn::INVALID_CHARACTERS_ERROR,
      ),
      array(
        '978-272C442282',
        Isbn::INVALID_CHARACTERS_ERROR,
      ),
      // chr(1) evaluates to 0
      // 978-2070546817 is valid
      array(
        '978-2' . chr(1) . '70546817',
        Isbn::INVALID_CHARACTERS_ERROR,
      ),
    );
  }
  public function getValidIsbn() {
    return array_merge($this
      ->getValidIsbn10(), $this
      ->getValidIsbn13());
  }
  public function getInvalidIsbn() {
    return array_merge($this
      ->getInvalidIsbn10(), $this
      ->getInvalidIsbn13());
  }
  public function testNullIsValid() {
    $constraint = new Isbn(true);
    $this->validator
      ->validate(null, $constraint);
    $this
      ->assertNoViolation();
  }
  public function testEmptyStringIsValid() {
    $constraint = new Isbn(true);
    $this->validator
      ->validate('', $constraint);
    $this
      ->assertNoViolation();
  }

  /**
   * @expectedException \Symfony\Component\Validator\Exception\UnexpectedTypeException
   */
  public function testExpectsStringCompatibleType() {
    $constraint = new Isbn(true);
    $this->validator
      ->validate(new \stdClass(), $constraint);
  }

  /**
   * @dataProvider getValidIsbn10
   */
  public function testValidIsbn10($isbn) {
    $constraint = new Isbn(array(
      'type' => 'isbn10',
    ));
    $this->validator
      ->validate($isbn, $constraint);
    $this
      ->assertNoViolation();
  }

  /**
   * @dataProvider getInvalidIsbn10
   */
  public function testInvalidIsbn10($isbn, $code) {
    $constraint = new Isbn(array(
      'type' => 'isbn10',
      'isbn10Message' => 'myMessage',
    ));
    $this->validator
      ->validate($isbn, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $isbn . '"')
      ->setCode($code)
      ->assertRaised();
  }

  /**
   * @dataProvider getValidIsbn13
   */
  public function testValidIsbn13($isbn) {
    $constraint = new Isbn(array(
      'type' => 'isbn13',
    ));
    $this->validator
      ->validate($isbn, $constraint);
    $this
      ->assertNoViolation();
  }

  /**
   * @dataProvider getInvalidIsbn13
   */
  public function testInvalidIsbn13($isbn, $code) {
    $constraint = new Isbn(array(
      'type' => 'isbn13',
      'isbn13Message' => 'myMessage',
    ));
    $this->validator
      ->validate($isbn, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $isbn . '"')
      ->setCode($code)
      ->assertRaised();
  }

  /**
   * @dataProvider getValidIsbn
   */
  public function testValidIsbnAny($isbn) {
    $constraint = new Isbn();
    $this->validator
      ->validate($isbn, $constraint);
    $this
      ->assertNoViolation();
  }

  /**
   * @dataProvider getInvalidIsbn10
   */
  public function testInvalidIsbnAnyIsbn10($isbn, $code) {
    $constraint = new Isbn(array(
      'bothIsbnMessage' => 'myMessage',
    ));
    $this->validator
      ->validate($isbn, $constraint);

    // Too long for an ISBN-10, but not long enough for an ISBN-13
    if (Isbn::TOO_LONG_ERROR === $code) {
      $code = Isbn::TYPE_NOT_RECOGNIZED_ERROR;
    }
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $isbn . '"')
      ->setCode($code)
      ->assertRaised();
  }

  /**
   * @dataProvider getInvalidIsbn13
   */
  public function testInvalidIsbnAnyIsbn13($isbn, $code) {
    $constraint = new Isbn(array(
      'bothIsbnMessage' => 'myMessage',
    ));
    $this->validator
      ->validate($isbn, $constraint);

    // Too short for an ISBN-13, but not short enough for an ISBN-10
    if (Isbn::TOO_SHORT_ERROR === $code) {
      $code = Isbn::TYPE_NOT_RECOGNIZED_ERROR;
    }
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $isbn . '"')
      ->setCode($code)
      ->assertRaised();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
AbstractConstraintValidatorTest::$constraint protected property
AbstractConstraintValidatorTest::$context protected property 1
AbstractConstraintValidatorTest::$defaultTimezone protected property
AbstractConstraintValidatorTest::$group protected property
AbstractConstraintValidatorTest::$metadata protected property
AbstractConstraintValidatorTest::$object protected property
AbstractConstraintValidatorTest::$propertyPath protected property
AbstractConstraintValidatorTest::$root protected property
AbstractConstraintValidatorTest::$validator protected property 1
AbstractConstraintValidatorTest::$value protected property
AbstractConstraintValidatorTest::assertNoViolation protected function
AbstractConstraintValidatorTest::assertViolation Deprecated protected function
AbstractConstraintValidatorTest::assertViolations Deprecated protected function
AbstractConstraintValidatorTest::buildViolation protected function
AbstractConstraintValidatorTest::createContext protected function
AbstractConstraintValidatorTest::createViolation Deprecated protected function
AbstractConstraintValidatorTest::expectNoValidate protected function
AbstractConstraintValidatorTest::expectValidateAt protected function
AbstractConstraintValidatorTest::expectValidateValueAt protected function
AbstractConstraintValidatorTest::restoreDefaultTimezone protected function
AbstractConstraintValidatorTest::setDefaultTimezone protected function
AbstractConstraintValidatorTest::setGroup protected function
AbstractConstraintValidatorTest::setObject protected function
AbstractConstraintValidatorTest::setProperty protected function
AbstractConstraintValidatorTest::setPropertyPath protected function
AbstractConstraintValidatorTest::setRoot protected function
AbstractConstraintValidatorTest::setUp protected function 6
AbstractConstraintValidatorTest::setValue protected function
AbstractConstraintValidatorTest::tearDown protected function 1
IsbnValidatorTest::createValidator protected function Overrides AbstractConstraintValidatorTest::createValidator
IsbnValidatorTest::getApiVersion protected function Overrides AbstractConstraintValidatorTest::getApiVersion 2
IsbnValidatorTest::getInvalidIsbn public function
IsbnValidatorTest::getInvalidIsbn10 public function
IsbnValidatorTest::getInvalidIsbn13 public function
IsbnValidatorTest::getValidIsbn public function
IsbnValidatorTest::getValidIsbn10 public function
IsbnValidatorTest::getValidIsbn13 public function
IsbnValidatorTest::testEmptyStringIsValid public function
IsbnValidatorTest::testExpectsStringCompatibleType public function @expectedException \Symfony\Component\Validator\Exception\UnexpectedTypeException
IsbnValidatorTest::testInvalidIsbn10 public function @dataProvider getInvalidIsbn10
IsbnValidatorTest::testInvalidIsbn13 public function @dataProvider getInvalidIsbn13
IsbnValidatorTest::testInvalidIsbnAnyIsbn10 public function @dataProvider getInvalidIsbn10
IsbnValidatorTest::testInvalidIsbnAnyIsbn13 public function @dataProvider getInvalidIsbn13
IsbnValidatorTest::testNullIsValid public function
IsbnValidatorTest::testValidIsbn10 public function @dataProvider getValidIsbn10
IsbnValidatorTest::testValidIsbn13 public function @dataProvider getValidIsbn13
IsbnValidatorTest::testValidIsbnAny public function @dataProvider getValidIsbn