ReferencesSerializationRoundtripTest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 12

Importance

Changes 0
Metric Value
wmc 3
c 0
b 0
f 0
lcom 0
cbo 12
dl 0
loc 45
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testReferenceSerializationRoundtrips() 0 11 1
A referencesProvider() 0 22 1
A assertReferenceListEquals() 0 3 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\SnakList;
15
16
/**
17
 * @license GPL-2.0-or-later
18
 * @author Thomas Pellissier Tanon
19
 */
20
class ReferencesSerializationRoundtripTest extends TestCase {
21
22
	/**
23
	 * @dataProvider referencesProvider
24
	 */
25
	public function testReferenceSerializationRoundtrips( ReferenceList $references ) {
26
		$serializerFactory = new SerializerFactory( new DataValueSerializer() );
27
		$deserializerFactory = new DeserializerFactory(
28
			new DataValueDeserializer(),
29
			new BasicEntityIdParser()
30
		);
31
32
		$serialization = $serializerFactory->newReferencesSerializer()->serialize( $references );
33
		$newReferences = $deserializerFactory->newReferencesDeserializer()->deserialize( $serialization );
34
		$this->assertReferenceListEquals( $references, $newReferences );
35
	}
36
37
	public function referencesProvider() {
38
		return [
39
			[
40
				new ReferenceList( [] )
41
			],
42
			[
43
				new ReferenceList( [
44
					new Reference()
45
				] )
46
			],
47
			[
48
				new ReferenceList( [
49
					new Reference( new SnakList( [
50
						new PropertyNoValueSnak( 42 )
51
					] ) ),
52
					new Reference( new SnakList( [
53
						new PropertyNoValueSnak( 43 )
54
					] ) )
55
				] )
56
			],
57
		];
58
	}
59
60
	public function assertReferenceListEquals( ReferenceList $expected, ReferenceList $actual ) {
61
		$this->assertTrue( $actual->equals( $expected ), 'The two ReferenceList are different' );
62
	}
63
64
}
65