SerializerBaseTest   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

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

9 Methods

Rating   Name   Duplication   Size   Complexity  
buildSerializer() 0 1 ?
A testImplementsSerializerInterface() 0 3 1
serializableProvider() 0 1 ?
A testSerializeThrowsUnsupportedObjectException() 0 4 1
nonSerializableProvider() 0 1 ?
serializationProvider() 0 1 ?
A testIsSerializerForReturnsTrue() 0 9 2
A testIsSerializerForReturnsFalse() 0 9 2
A testSerialization() 0 6 1
1
<?php
2
3
namespace WikidataQueryApi\Query\Serializers;
4
5
use Serializers\DispatchableSerializer;
6
use Serializers\Serializer;
7
8
/**
9
 * @licence GPLv2+
10
 * @author Thomas Pellissier Tanon
11
 */
12
abstract class SerializerBaseTest extends \PHPUnit_Framework_TestCase {
13
14
	/**
15
	 * @return Serializer
16
	 */
17
	public abstract function buildSerializer();
18
19
	public function testImplementsSerializerInterface() {
20
		$this->assertInstanceOf( 'Serializers\Serializer', $this->buildSerializer() );
21
	}
22
23
	/**
24
	 * @dataProvider serializableProvider
25
	 */
26
	public function testIsSerializerForReturnsTrue( $serializable ) {
27
		$serializer = $this->buildSerializer();
28
29
		if ( $serializer instanceof DispatchableSerializer ) {
30
			$this->assertTrue( $serializer->isSerializerFor( $serializable ) );
31
		} else {
32
			$this->assertTrue( true );
33
		}
34
	}
35
36
	/**
37
	 * @return mixed[] things that are serialized by the serializer
38
	 */
39
	public abstract function serializableProvider();
40
41
	/**
42
	 * @dataProvider nonSerializableProvider
43
	 */
44
	public function testIsSerializerForReturnsFalse( $nonSerializable ) {
45
		$serializer = $this->buildSerializer();
46
47
		if ( $serializer instanceof DispatchableSerializer ) {
48
			$this->assertFalse( $serializer->isSerializerFor( $nonSerializable ) );
49
		} else {
50
			$this->assertTrue( true );
51
		}
52
	}
53
54
	/**
55
	 * @dataProvider nonSerializableProvider
56
	 */
57
	public function testSerializeThrowsUnsupportedObjectException( $nonSerializable ) {
58
		$this->setExpectedException( 'Serializers\Exceptions\UnsupportedObjectException' );
59
		$this->buildSerializer()->serialize( $nonSerializable );
60
	}
61
62
	/**
63
	 * @return mixed[] things that aren't serialized by the serializer
64
	 */
65
	public abstract function nonSerializableProvider();
66
67
	/**
68
	 * @dataProvider serializationProvider
69
	 */
70
	public function testSerialization( $serialization, $object ) {
71
		$this->assertEquals(
72
			$serialization,
73
			$this->buildSerializer()->serialize( $object )
74
		);
75
	}
76
77
	/**
78
	 * @return array an array of array( serialization, object to serialize)
79
	 */
80
	public abstract function serializationProvider();
81
}
82