testSnakSerializationRoundtrips()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.9
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Tests\Wikibase\DataModel;
4
5
use DataValues\Deserializers\DataValueDeserializer;
6
use DataValues\Serializers\DataValueSerializer;
7
use PHPUnit\Framework\TestCase;
8
use Wikibase\DataModel\DeserializerFactory;
9
use Wikibase\DataModel\Entity\BasicEntityIdParser;
10
use Wikibase\DataModel\Reference;
11
use Wikibase\DataModel\ReferenceList;
12
use Wikibase\DataModel\SerializerFactory;
13
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
14
use Wikibase\DataModel\Snak\PropertySomeValueSnak;
15
use Wikibase\DataModel\Snak\SnakList;
16
use Wikibase\DataModel\Statement\Statement;
17
18
/**
19
 * @license GPL-2.0-or-later
20
 * @author Thomas Pellissier Tanon
21
 */
22
class StatementSerializationRoundtripTest extends TestCase {
23
24
	/**
25
	 * @dataProvider snaksProvider
26
	 */
27
	public function testSnakSerializationRoundtrips( Statement $statement ) {
28
		$serializerFactory = new SerializerFactory( new DataValueSerializer() );
29
		$deserializerFactory = new DeserializerFactory(
30
			new DataValueDeserializer(),
31
			new BasicEntityIdParser()
32
		);
33
34
		$serialization = $serializerFactory->newStatementSerializer()->serialize( $statement );
35
		$newStatement = $deserializerFactory->newStatementDeserializer()->deserialize( $serialization );
36
		$this->assertEquals( $statement->getHash(), $newStatement->getHash() );
37
	}
38
39
	public function snaksProvider() {
40
		$statements = [];
41
42
		$statements[] = [
43
			new Statement( new PropertyNoValueSnak( 42 ) )
44
		];
45
46
		$statement = new Statement( new PropertyNoValueSnak( 42 ) );
47
		$statement->setGuid( 'q42' );
48
		$statements[] = [ $statement ];
49
50
		$statement = new Statement( new PropertyNoValueSnak( 42 ) );
51
		$statement->setRank( Statement::RANK_PREFERRED );
52
		$statements[] = [ $statement ];
53
54
		$statement = new Statement( new PropertyNoValueSnak( 42 ) );
55
		$statement->setRank( Statement::RANK_DEPRECATED );
56
		$statements[] = [ $statement ];
57
58
		$statement = new Statement( new PropertyNoValueSnak( 42 ) );
59
		$statement->setQualifiers( new SnakList( [] ) );
60
		$statements[] = [ $statement ];
61
62
		$statement = new Statement( new PropertyNoValueSnak( 42 ) );
63
		$statement->setQualifiers( new SnakList( [
64
			new PropertySomeValueSnak( 42 ),
65
			new PropertyNoValueSnak( 42 ),
66
			new PropertySomeValueSnak( 24 )
67
		] ) );
68
		$statements[] = [ $statement ];
69
70
		$statement = new Statement( new PropertyNoValueSnak( 42 ) );
71
		$statement->setReferences( new ReferenceList( [
72
			new Reference( [
73
				new PropertySomeValueSnak( 42 ),
74
				new PropertyNoValueSnak( 42 ),
75
				new PropertySomeValueSnak( 24 )
76
			] )
77
		] ) );
78
		$statements[] = [ $statement ];
79
80
		return $statements;
81
	}
82
83
}
84