testSnakSerializationRoundtrips()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 12
rs 9.8666
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\SerializerFactory;
11
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
12
use Wikibase\DataModel\Statement\Statement;
13
use Wikibase\DataModel\Statement\StatementList;
14
15
/**
16
 * @license GPL-2.0-or-later
17
 * @author Thomas Pellissier Tanon
18
 */
19
class StatementListSerializationRoundtripTest extends TestCase {
20
21
	/**
22
	 * @dataProvider snaksProvider
23
	 */
24
	public function testSnakSerializationRoundtrips( StatementList $statements ) {
25
		$serializerFactory = new SerializerFactory( new DataValueSerializer() );
26
		$deserializerFactory = new DeserializerFactory(
27
			new DataValueDeserializer(),
28
			new BasicEntityIdParser()
29
		);
30
31
		$serialization = $serializerFactory->newStatementListSerializer()->serialize( $statements );
32
		$newStatements = $deserializerFactory->newStatementListDeserializer()
33
			->deserialize( $serialization );
34
		$this->assertEquals( $statements, $newStatements );
35
	}
36
37
	public function snaksProvider() {
38
		$statement = new Statement( new PropertyNoValueSnak( 42 ) );
39
		$statement->setGuid( 'test' );
40
41
		$statement2 = new Statement( new PropertyNoValueSnak( 42 ) );
42
		$statement2->setGuid( 'test2' );
43
44
		return [
45
			[
46
				new StatementList()
47
			],
48
			[
49
				new StatementList( [
50
					$statement
51
				] )
52
			],
53
			[
54
				new StatementList( [
55
					$statement,
56
					$statement2
57
				] )
58
			],
59
		];
60
	}
61
62
}
63