| Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/repo/tests/phpunit/includes/SnakFactoryTest.php |
<?php
namespace Wikibase\Lib\Test;
use DataTypes\DataTypeFactory;
use DataValues\DataValueFactory;
use DataValues\Deserializers\DataValueDeserializer;
use DataValues\StringValue;
use InvalidArgumentException;
use PHPUnit_Framework_TestCase;
use Wikibase\DataModel\Entity\PropertyId;
use Wikibase\DataModel\Services\Lookup\InMemoryDataTypeLookup;
use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookupException;
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
use Wikibase\DataModel\Snak\PropertySomeValueSnak;
use Wikibase\DataModel\Snak\PropertyValueSnak;
use Wikibase\Repo\SnakFactory;
/**
* @covers Wikibase\Repo\SnakFactory
*
* @group Wikibase
* @group WikibaseRepo
* @group Snak
*
* @license GPL-2.0+
* @author Daniel Kinzler
*/
class SnakFactoryTest extends PHPUnit_Framework_TestCase {
public function newInstance() {
$dataTypeLookup = new InMemoryDataTypeLookup();
$dataTypeFactory = new DataTypeFactory( array( 'string' => 'string' ) );
$dataValueFactory = new DataValueFactory( new DataValueDeserializer( array(
'string' => StringValue::class,
) ) );
$dataTypeLookup->setDataTypeForProperty( new PropertyId( 'p1' ), 'string' );
$service = new SnakFactory(
$dataTypeLookup,
$dataTypeFactory,
$dataValueFactory
);
return $service;
}
/**
* @dataProvider newSnakProvider
*/
public function testNewSnak(
$propertyId,
$snakType,
$rawValue,
$expectedSnakClass,
$expectedException = null
) {
if ( is_int( $propertyId ) ) {
$propertyId = PropertyId::newFromNumber( $propertyId );
}
if ( $expectedException !== null ) {
$this->setExpectedException( $expectedException );
}
$service = $this->newInstance();
$snak = $service->newSnak( $propertyId, $snakType, $rawValue );
$this->assertInstanceOf( $expectedSnakClass, $snak );
}
public function newSnakProvider() {
return array(
'novalue' => array(
1, 'novalue', null,
PropertyNoValueSnak::class,
),
'somevalue' => array(
1, 'somevalue', null,
PropertySomeValueSnak::class,
),
'value' => array(
1, 'value', '"hello"',
PropertyValueSnak::class,
),
'novalue/badprop' => array(
66, 'novalue', null,
PropertyNoValueSnak::class,
PropertyDataTypeLookupException::class
),
'somevalue/badprop' => array(
66, 'somevalue', null,
PropertySomeValueSnak::class,
PropertyDataTypeLookupException::class
),
'value/badprop' => array(
66, 'value', '"hello"',
PropertyValueSnak::class,
PropertyDataTypeLookupException::class
),
'value/badvalue' => array(
1, 'value', array( 'foo' ),
PropertyValueSnak::class,
InvalidArgumentException::class
),
);
}
}