assertInstanceOf( ConstraintFactory::class, new ConstraintFactory() ); } public function testCanConstructConstraintRegistry() { $instance = new ConstraintFactory(); $this->assertInstanceOf( '\SMW\Constraint\ConstraintRegistry', $instance->newConstraintRegistry() ); } public function testCanConstructConstraintCheckRunner() { $instance = new ConstraintFactory(); $this->assertInstanceOf( '\SMW\Constraint\ConstraintCheckRunner', $instance->newConstraintCheckRunner() ); } public function testCanConstructNullConstraint() { $instance = new ConstraintFactory(); $this->assertInstanceOf( '\SMW\Constraint\Constraints\NullConstraint', $instance->newNullConstraint() ); } public function testCanConstructConstraintSchemaCompiler() { $store = $this->getMockBuilder( '\SMW\Store' ) ->disableOriginalConstructor() ->getMockForAbstractClass(); $instance = new ConstraintFactory(); $this->assertInstanceOf( '\SMW\Constraint\ConstraintSchemaCompiler', $instance->newConstraintSchemaCompiler( $store ) ); } public function testNewConstraintByClassInvalidClassThrowsException() { $instance = new ConstraintFactory(); $this->expectException( '\SMW\Exception\ClassNotFoundException' ); $instance->newConstraintByClass( 'ThisIsNotAClass' ); } public function testNewConstraintByClassNonConstraintClassThrowsException() { $instance = new ConstraintFactory(); $this->expectException( '\RuntimeException' ); $instance->newConstraintByClass( PlainClass::class ); } /** * @dataProvider constraintByClassProvider */ public function testCanConstructConstraintByClass( $class, $expected ) { $instance = new ConstraintFactory(); $this->assertInstanceOf( '\SMW\Constraint\Constraint', $instance->newConstraintByClass( $class ) ); $this->assertInstanceOf( $expected, $instance->newConstraintByClass( $class ) ); } public function constraintByClassProvider() { yield [ '\SMW\Constraint\Constraints\NullConstraint', '\SMW\Constraint\Constraints\NullConstraint' ]; yield [ 'SMW\Constraint\Constraints\NamespaceConstraint', '\SMW\Constraint\Constraints\NamespaceConstraint' ]; yield [ 'SMW\Constraint\Constraints\UniqueValueConstraint', '\SMW\Constraint\Constraints\UniqueValueConstraint' ]; yield [ 'SMW\Constraint\Constraints\NonNegativeIntegerConstraint', '\SMW\Constraint\Constraints\NonNegativeIntegerConstraint' ]; yield [ 'SMW\Constraint\Constraints\SingleValueConstraint', '\SMW\Constraint\Constraints\SingleValueConstraint' ]; yield [ 'SMW\Constraint\Constraints\MustExistsConstraint', '\SMW\Constraint\Constraints\MustExistsConstraint' ]; yield [ 'SMW\Constraint\Constraints\MandatoryPropertiesConstraint', '\SMW\Constraint\Constraints\MandatoryPropertiesConstraint' ]; yield [ 'SMW\Constraint\Constraints\ShapeConstraint', '\SMW\Constraint\Constraints\ShapeConstraint' ]; } }