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

FacetContainerContractTester::testAddFacet()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 9
c 1
b 0
f 0
rs 9.6667
cc 1
eloc 6
nc 1
nop 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