Open Journal Systems  3.3.0
PrimitiveTypeDescriptionTest.php
1 <?php
2 
23 import('lib.pkp.tests.PKPTestCase');
24 import('lib.pkp.classes.filter.PrimitiveTypeDescription');
25 
31  public function testInstantiateAndCheck() {
32  $typeDescription = new PrimitiveTypeDescription('string');
33  self::assertTrue($typeDescription->isCompatible($object = 'some string'));
34  self::assertFalse($typeDescription->isCompatible($object = 5));
35  self::assertFalse($typeDescription->isCompatible($object = array(5)));
36 
37  self::assertEquals('string', $typeDescription->getTypeName());
38  self::assertEquals('primitive::string', $typeDescription->getTypeDescription());
39 
40  $typeDescription = new PrimitiveTypeDescription('integer');
41  self::assertTrue($typeDescription->isCompatible($object = 2));
42  self::assertFalse($typeDescription->isCompatible($object = 'some string'));
43  self::assertFalse($typeDescription->isCompatible($object = 5.5));
44  self::assertFalse($typeDescription->isCompatible($object = new stdClass()));
45 
46  $typeDescription = new PrimitiveTypeDescription('float');
47  self::assertTrue($typeDescription->isCompatible($object = 2.5));
48  self::assertFalse($typeDescription->isCompatible($object = 'some string'));
49  self::assertFalse($typeDescription->isCompatible($object = 5));
50 
51  $typeDescription = new PrimitiveTypeDescription('boolean');
52  self::assertTrue($typeDescription->isCompatible($object = true));
53  self::assertTrue($typeDescription->isCompatible($object = false));
54  self::assertFalse($typeDescription->isCompatible($object = 1));
55  self::assertFalse($typeDescription->isCompatible($object = ''));
56 
57  $typeDescription = new PrimitiveTypeDescription('integer[]');
58  self::assertTrue($typeDescription->isCompatible($object = array(2)));
59  self::assertTrue($typeDescription->isCompatible($object = array(2, 5)));
60  self::assertFalse($typeDescription->isCompatible($object = 2));
61 
62  $typeDescription = new PrimitiveTypeDescription('integer[1]');
63  self::assertTrue($typeDescription->isCompatible($object = array(2)));
64  self::assertFalse($typeDescription->isCompatible($object = array(2, 5)));
65  self::assertFalse($typeDescription->isCompatible($object = 2));
66  }
67 
73  // An unknown type name will cause an error.
74  $this->expectError();
75  $typeDescription = new PrimitiveTypeDescription('xyz');
76  }
77 
83  // We don't allow multi-dimensional arrays.
84  $this->expectError();
85  $typeDescription = new PrimitiveTypeDescription('integer[][]');
86  }
87 
93  // An invalid cardinality will also cause an error.
94  $this->expectError();
95  $typeDescription = new PrimitiveTypeDescription('integer[x]');
96  }
97 }
98 
PKPTestCase
Class that implements functionality common to all PKP unit test cases.
Definition: PKPTestCase.inc.php:27
PrimitiveTypeDescriptionTest\testInstantiateWithInvalidTypeDescriptor2
testInstantiateWithInvalidTypeDescriptor2()
Definition: PrimitiveTypeDescriptionTest.php:82
PrimitiveTypeDescriptionTest\testInstantiateWithInvalidTypeDescriptor3
testInstantiateWithInvalidTypeDescriptor3()
Definition: PrimitiveTypeDescriptionTest.php:92
PrimitiveTypeDescriptionTest\testInstantiateWithInvalidTypeDescriptor1
testInstantiateWithInvalidTypeDescriptor1()
Definition: PrimitiveTypeDescriptionTest.php:72
PrimitiveTypeDescription
Class that describes a primitive input/output type.
Definition: PrimitiveTypeDescription.inc.php:18
PrimitiveTypeDescriptionTest\testInstantiateAndCheck
testInstantiateAndCheck()
Definition: PrimitiveTypeDescriptionTest.php:31
PrimitiveTypeDescriptionTest
Test class for PrimitiveTypeDescription and TypeDescription.
Definition: PrimitiveTypeDescriptionTest.php:26