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
|
|
|
|