| Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/repo/tests/phpunit/includes/StatementRankSerializerTest.php |
<?php
namespace Wikibase\Test;
use DataValues\Serializers\DataValueSerializer;
use Deserializers\Exceptions\DeserializationException;
use PHPUnit_Framework_TestCase;
use Serializers\Exceptions\SerializationException;
use Wikibase\DataModel\SerializerFactory;
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
use Wikibase\DataModel\Statement\Statement;
use Wikibase\StatementRankSerializer;
/**
* @covers Wikibase\StatementRankSerializer
*
* @group Wikibase
* @group WikibaseRepo
*
* @license GPL-2.0+
* @author Addshore
* @author Thiemo Mättig
*/
class StatementRankSerializerTest extends PHPUnit_Framework_TestCase {
public function rankProvider() {
return array(
array( Statement::RANK_DEPRECATED, 'deprecated' ),
array( Statement::RANK_NORMAL, 'normal' ),
array( Statement::RANK_PREFERRED, 'preferred' ),
);
}
/**
* @dataProvider rankProvider
*/
public function testSerialize( $rank, $expected ) {
$serializer = new StatementRankSerializer();
$serialization = $serializer->serialize( $rank );
$this->assertSame( $expected, $serialization );
}
/**
* @dataProvider rankProvider
*/
public function testDeserialize( $expected, $serialization ) {
$serializer = new StatementRankSerializer();
$deserialization = $serializer->deserialize( $serialization );
$this->assertSame( $expected, $deserialization );
}
/**
* @dataProvider rankProvider
*/
public function testSerializerFactoryRoundtrip( $rank ) {
$statement = new Statement( new PropertyNoValueSnak( 1 ) );
$statement->setRank( $rank );
$factory = new SerializerFactory( new DataValueSerializer() );
$statementSerializer = $factory->newStatementSerializer();
$serialization = $statementSerializer->serialize( $statement );
$rankSerializer = new StatementRankSerializer();
$this->assertSame(
$rank,
$rankSerializer->deserialize( $serialization['rank'] ),
'reference serialization can be deserialized'
);
$this->assertSame(
$serialization['rank'],
$rankSerializer->serialize( $rank ),
'serialization is identical to reference'
);
}
public function testGivenInvalidRank_serializationFails() {
$serializer = new StatementRankSerializer();
$this->setExpectedException( SerializationException::class );
$serializer->serialize( -1 );
}
public function testGivenInvalidSerialization_deserializeFails() {
$serializer = new StatementRankSerializer();
$this->setExpectedException( DeserializationException::class );
$serializer->deserialize( 'invalid' );
}
}