Completed
Push — master ( 7d8921...21f60a )
by Thomas
26s
created

AliasGroupSerializerTest::testSerialization()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 4
rs 10
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
3
namespace Tests\Wikibase\DataModel\Serializers;
4
5
use PHPUnit_Framework_TestCase;
6
use Wikibase\DataModel\Serializers\AliasGroupSerializer;
7
use Wikibase\DataModel\Term\AliasGroup;
8
use Wikibase\DataModel\Term\AliasGroupFallback;
9
use Wikibase\DataModel\Term\AliasGroupList;
10
11
/**
12
 * @covers Wikibase\DataModel\Serializers\AliasGroupSerializer
13
 *
14
 * @licence GNU GPL v2+
15
 * @author Bene* < [email protected] >
16
 */
17
class AliasGroupSerializerTest extends PHPUnit_Framework_TestCase {
18
19
	/**
20
	 * @dataProvider nonSerializableProvider
21
	 */
22
	public function testSerializeThrowsUnsupportedObjectException( $nonSerializable ) {
23
		$serializer = new AliasGroupSerializer();
24
		$this->setExpectedException( 'Serializers\Exceptions\UnsupportedObjectException' );
25
		$serializer->serialize( $nonSerializable );
26
	}
27
28
	public function nonSerializableProvider() {
29
		return array(
30
			array(
31
				5
32
			),
33
			array(
34
				array()
35
			),
36
			array(
37
				new AliasGroupList()
38
			)
39
		);
40
	}
41
42
	/**
43
	 * @dataProvider serializationProvider
44
	 */
45
	public function testSerialization( $serialization, $object ) {
46
		$serializer = new AliasGroupSerializer();
47
		$this->assertSame( $serialization, $serializer->serialize( $object ) );
48
	}
49
50
	public function serializationProvider() {
51
		return array(
52
			array(
53
				array(),
54
				new AliasGroup( 'en', array() )
55
			),
56
			array(
57
				array(
58
					array( 'language' => 'en', 'value' => 'One' )
59
				),
60
				new AliasGroup( 'en', array( 'One' ) )
61
			),
62
			array(
63
				array(
64
					array( 'language' => 'en', 'value' => 'One' ),
65
					array( 'language' => 'en', 'value' => 'Pony' )
66
				),
67
				new AliasGroup( 'en', array( 'One', 'Pony' ) )
68
			),
69
			array(
70
				array(
71
					array( 'language' => 'de', 'value' => 'One', 'source' => 'fr' ),
72
					array( 'language' => 'de', 'value' => 'Pony', 'source' => 'fr' ),
73
				),
74
				new AliasGroupFallback( 'en', array( 'One', 'Pony' ), 'de', 'fr' )
75
			)
76
		);
77
	}
78
79
}
80