Passed
Push — Facets ( b72148...68bbc0 )
by Daniel
07:49 queued 03:58
created

FacetContainerContractTester   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

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

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testHasFacet() 0 8 1
A testListFacets() 0 8 1
A testGetFacet() 0 21 3
A testAddFacet() 0 9 1
1
<?php
2
3
namespace Wikibase\DataModel\Tests\Facet;
4
5
use stdClass;
6
use Wikibase\DataModel\Facet\FacetContainer;
7
use PHPUnit_Framework_Assert;
8
use Wikibase\DataModel\Facet\MismatchingFacetException;
9
use Wikibase\DataModel\Facet\NoSuchFacetException;
10
11
/**
12
 * Helper for testing implementations of FacetContainer
13
 *
14
 * @covers Wikibase\DataModel\Facet\FacetContainer
15
 *
16
 * @group Wikibase
17
 * @group WikibaseDataModel
18
 *
19
 * @licence GNU GPL v2+
20
 * @author Daniel Kinzler
21
 */
22
class FacetContainerContractTester {
23
24
	public function testHasFacet( FacetContainer $container ) {
25
		PHPUnit_Framework_Assert::assertFalse( $container->hasFacet( 'foo' ) );
26
27
		$facet = new stdClass();
28
		$container->addFacet( 'foo', $facet );
29
30
		PHPUnit_Framework_Assert::assertTrue( $container->hasFacet( 'foo' ) );
31
	}
32
33
	public function testListFacets( FacetContainer $container ) {
34
		PHPUnit_Framework_Assert::assertEquals( array(), $container->listFacets() );
35
36
		$facet = new stdClass();
37
		$container->addFacet( 'foo', $facet );
38
39
		PHPUnit_Framework_Assert::assertEquals( array( 'foo' ), $container->listFacets() );
40
	}
41
42
	public function testGetFacet( FacetContainer $container ) {
43
		$facet = new stdClass();
44
		$container->addFacet( 'foo', $facet );
45
46
		PHPUnit_Framework_Assert::assertSame( $facet, $container->getFacet( 'foo' ) );
47
		PHPUnit_Framework_Assert::assertSame( $facet, $container->getFacet( 'foo', 'stdClass' ) );
48
49
		try {
50
			$container->getFacet( 'foo', 'Wikibase\DataModel\Snak' );
51
			PHPUnit_Framework_Assert::fail( 'getFacet() should fail with a MismatchingFacetException' );
52
		} catch ( MismatchingFacetException $ex ) {
53
			PHPUnit_Framework_Assert::assertTrue( true ); // make phpcs happy
54
		}
55
56
		try {
57
			$container->getFacet( 'xyzzy' );
58
			PHPUnit_Framework_Assert::fail( 'getFacet() should fail with a NoSuchFacetException' );
59
		} catch ( NoSuchFacetException $ex ) {
60
			PHPUnit_Framework_Assert::assertTrue( true ); // make phpcs happy
61
		}
62
	}
63
64
	public function testAddFacet( FacetContainer $container ) {
65
		$facet = new stdClass();
66
		$facet2 = new stdClass();
67
68
		$container->addFacet( 'foo', $facet );
69
		$container->addFacet( 'foo', $facet2 );
70
71
		PHPUnit_Framework_Assert::assertSame( $facet2, $container->getFacet( 'foo' ) );
72
	}
73
74
}
75