Completed
Pull Request — master (#199)
by no
02:30
created

testDeserialization()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
eloc 2
nc 1
nop 2
1
<?php
2
3
namespace Tests\Wikibase\DataModel\Deserializers;
4
5
use Deserializers\DispatchableDeserializer;
6
use PHPUnit_Framework_TestCase;
7
8
/**
9
 * @licence GNU GPL v2+
10
 * @author Thomas Pellissier Tanon
11
 * @author Thiemo Mättig
12
 */
13
abstract class DispatchableDeserializerTest extends PHPUnit_Framework_TestCase {
14
15
	/**
16
	 * @return DispatchableDeserializer
17
	 */
18
	protected abstract function buildDeserializer();
19
20
	public function testImplementsDispatchableDeserializerInterface() {
21
		$this->assertInstanceOf( 'Deserializers\DispatchableDeserializer', $this->buildDeserializer() );
22
	}
23
24
	/**
25
	 * @dataProvider deserializableProvider
26
	 */
27
	public function testIsDeserializerForReturnsTrue( $deserializable ) {
28
		$this->assertTrue( $this->buildDeserializer()->isDeserializerFor( $deserializable ) );
29
	}
30
31
	/**
32
	 * @return array[] things that are deserialized by the deserializer
33
	 */
34
	public abstract function deserializableProvider();
35
36
	/**
37
	 * @dataProvider nonDeserializableProvider
38
	 */
39
	public function testIsDeserializerForReturnsFalse( $nonDeserializable ) {
40
		$this->assertFalse( $this->buildDeserializer()->isDeserializerFor( $nonDeserializable ) );
41
	}
42
43
	/**
44
	 * @dataProvider nonDeserializableProvider
45
	 */
46
	public function testDeserializeThrowsDeserializationException( $nonDeserializable ) {
47
		$deserializer = $this->buildDeserializer();
48
		$this->setExpectedException( 'Deserializers\Exceptions\DeserializationException' );
49
		$deserializer->deserialize( $nonDeserializable );
50
	}
51
52
	/**
53
	 * @return array[] things that aren't deserialized by the deserializer
54
	 */
55
	public abstract function nonDeserializableProvider();
56
57
	/**
58
	 * @dataProvider deserializationProvider
59
	 */
60
	public function testDeserialization( $object, $serialization ) {
61
		$this->assertEquals( $object, $this->buildDeserializer()->deserialize( $serialization ) );
62
	}
63
64
	/**
65
	 * @return array[] an array of array( object deserialized, serialization )
66
	 */
67
	public abstract function deserializationProvider();
68
69
}
70