/** * @covers PrimitiveTypeDescription * @covers TypeDescription */ public function testInstantiateAndCheck() { $typeDescription = new PrimitiveTypeDescription('string'); self::assertTrue($typeDescription->isCompatible($object = 'some string')); self::assertFalse($typeDescription->isCompatible($object = 5)); self::assertFalse($typeDescription->isCompatible($object = array(5))); self::assertEquals('string', $typeDescription->getTypeName()); self::assertEquals('primitive::string', $typeDescription->getTypeDescription()); $typeDescription = new PrimitiveTypeDescription('integer'); self::assertTrue($typeDescription->isCompatible($object = 2)); self::assertFalse($typeDescription->isCompatible($object = 'some string')); self::assertFalse($typeDescription->isCompatible($object = 5.5)); self::assertFalse($typeDescription->isCompatible($object = new stdClass())); $typeDescription = new PrimitiveTypeDescription('float'); self::assertTrue($typeDescription->isCompatible($object = 2.5)); self::assertFalse($typeDescription->isCompatible($object = 'some string')); self::assertFalse($typeDescription->isCompatible($object = 5)); $typeDescription = new PrimitiveTypeDescription('boolean'); self::assertTrue($typeDescription->isCompatible($object = true)); self::assertTrue($typeDescription->isCompatible($object = false)); self::assertFalse($typeDescription->isCompatible($object = 1)); self::assertFalse($typeDescription->isCompatible($object = '')); $typeDescription = new PrimitiveTypeDescription('integer[]'); self::assertTrue($typeDescription->isCompatible($object = array(2))); self::assertTrue($typeDescription->isCompatible($object = array(2, 5))); self::assertFalse($typeDescription->isCompatible($object = 2)); $typeDescription = new PrimitiveTypeDescription('integer[1]'); self::assertTrue($typeDescription->isCompatible($object = array(2))); self::assertFalse($typeDescription->isCompatible($object = array(2, 5))); self::assertFalse($typeDescription->isCompatible($object = 2)); }
/** * @see TypeDescription::checkType() */ function checkType(&$object) { // Check primitive type. if (!parent::checkType($object)) { return false; } // Instantiate and call validator import('lib.pkp.classes.validation.' . $this->_validatorClassName); assert(class_exists($this->_validatorClassName)); $validatorConstructorCode = 'return new ' . $this->_validatorClassName . '(' . $this->_validatorArgs . ');'; $validator = eval($validatorConstructorCode); assert(is_a($validator, 'Validator')); // Validate the object if (!$validator->isValid($object)) { return false; } return true; }