ReferenceSerializationRoundtripTest   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 12

Importance

Changes 0
Metric Value
wmc 2
c 0
b 0
f 0
lcom 0
cbo 12
dl 0
loc 38
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A testSnakSerializationRoundtrips() 0 11 1
A referenceProvider() 0 19 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\SerializerFactory;
12
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
13
use Wikibase\DataModel\Snak\PropertySomeValueSnak;
14
use Wikibase\DataModel\Snak\SnakList;
15
16
/**
17
 * @license GPL-2.0-or-later
18
 * @author Jeroen De Dauw < [email protected] >
19
 * @author Thomas Pellissier Tanon
20
 */
21
class ReferenceSerializationRoundtripTest extends TestCase {
22
23
	/**
24
	 * @dataProvider referenceProvider
25
	 */
26
	public function testSnakSerializationRoundtrips( Reference $reference ) {
27
		$serializerFactory = new SerializerFactory( new DataValueSerializer() );
28
		$deserializerFactory = new DeserializerFactory(
29
			new DataValueDeserializer(),
30
			new BasicEntityIdParser()
31
		);
32
33
		$serialization = $serializerFactory->newReferenceSerializer()->serialize( $reference );
34
		$newReference = $deserializerFactory->newReferenceDeserializer()->deserialize( $serialization );
35
		$this->assertTrue( $reference->equals( $newReference ) );
36
	}
37
38
	public function referenceProvider() {
39
		return [
40
			[
41
				new Reference()
42
			],
43
			[
44
				new Reference( new SnakList( [
45
					new PropertyNoValueSnak( 42 )
46
				] ) )
47
			],
48
			[
49
				new Reference( new SnakList( [
50
					new PropertyNoValueSnak( 42 ),
51
					new PropertySomeValueSnak( 24 ),
52
					new PropertyNoValueSnak( 24 )
53
				] ) )
54
			],
55
		];
56
	}
57
58
}
59