DeserializerBaseTest   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 2
dl 0
loc 70
c 0
b 0
f 0
rs 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
buildDeserializer() 0 1 ?
A testImplementsDeserializerInterface() 0 3 1
A testIsDeserializerForReturnsTrue() 0 9 2
deserializableProvider() 0 1 ?
A testIsDeserializerForReturnsFalse() 0 9 2
A testSerializeThrowsUnsupportedObjectException() 0 4 1
nonDeserializableProvider() 0 1 ?
A testDeserialization() 0 6 1
deserializationProvider() 0 1 ?
1
<?php
2
3
namespace PPP\DataModel\Deserializers;
4
5
use Deserializers\Deserializer;
6
use Deserializers\DispatchableDeserializer;
7
8
/**
9
 * @licence AGPLv3+
10
 * @author Thomas Pellissier Tanon
11
 */
12
abstract class DeserializerBaseTest extends \PHPUnit_Framework_TestCase {
13
14
	/**
15
	 * @return Deserializer
16
	 */
17
	public abstract function buildDeserializer();
18
19
	public function testImplementsDeserializerInterface() {
20
		$this->assertInstanceOf('Deserializers\Deserializer', $this->buildDeserializer());
21
	}
22
23
	/**
24
	 * @dataProvider deserializableProvider
25
	 */
26
	public function testIsDeserializerForReturnsTrue($serializable) {
27
		$deserializer = $this->buildDeserializer();
28
29
		if($deserializer instanceof DispatchableDeserializer) {
30
			$this->assertTrue($deserializer->isDeserializerFor($serializable));
31
		} else {
32
			$this->assertTrue(true);
33
		}
34
	}
35
36
	/**
37
	 * @return mixed[] things that are deserialized by the deserializer
38
	 */
39
	public abstract function deserializableProvider();
40
41
	/**
42
	 * @dataProvider nonDeserializableProvider
43
	 */
44
	public function testIsDeserializerForReturnsFalse($nonSerializable) {
45
		$deserializer = $this->buildDeserializer();
46
47
		if($deserializer instanceof DispatchableDeserializer) {
48
			$this->assertFalse($deserializer->isDeserializerFor($nonSerializable));
49
		} else {
50
			$this->assertTrue(true);
51
		}
52
	}
53
54
	/**
55
	 * @dataProvider nonDeserializableProvider
56
	 */
57
	public function testSerializeThrowsUnsupportedObjectException($nonSerializable) {
58
		$this->setExpectedException('Deserializers\Exceptions\DeserializationException');
59
		$this->buildDeserializer()->deserialize($nonSerializable);
60
	}
61
62
	/**
63
	 * @return mixed[] things that aren't deserialized by the deserializer
64
	 */
65
	public abstract function nonDeserializableProvider();
66
67
	/**
68
	 * @dataProvider deserializationProvider
69
	 */
70
	public function testDeserialization($object, $serialization) {
71
		$this->assertEquals(
72
			$object,
73
			$this->buildDeserializer()->deserialize($serialization)
74
		);
75
	}
76
77
	/**
78
	 * @return array an array of array(object deserialized, serialization)
79
	 */
80
	public abstract function deserializationProvider();
81
}
82