Completed
Push — master ( 7b50af...c4a39f )
by Jeroen De
11:31 queued 11:02
created

testRemoveDuplicates()   B

Complexity

Conditions 3
Paths 3

Size

Total Lines 25
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 25
c 0
b 0
f 0
rs 8.8571
cc 3
eloc 14
nc 3
nop 1
1
<?php
2
3
namespace Wikibase\DataModel\Tests\HashArray;
4
5
use Hashable;
6
use Wikibase\DataModel\Fixtures\HashArrayElement;
7
use Wikibase\DataModel\HashArray;
8
9
/**
10
 * @covers Wikibase\DataModel\HashArray
11
 *
12
 * @group Wikibase
13
 * @group WikibaseDataModel
14
 * @group HashArray
15
 *
16
 * @license GPL-2.0+
17
 * @author Jeroen De Dauw < [email protected] >
18
 */
19
class HashArrayWithDuplicatesTest extends HashArrayTest {
20
21
	public function constructorProvider() {
22
		$argLists = [];
23
24
		$argLists[] = [ HashArrayElement::getInstances() ];
25
		$argLists[] = [ array_merge( HashArrayElement::getInstances(), HashArrayElement::getInstances() ) ];
26
27
		return $argLists;
28
	}
29
30
	public function getInstanceClass() {
31
		return 'Wikibase\DataModel\Fixtures\HashArrayWithDuplicates';
32
	}
33
34
	public function elementInstancesProvider() {
35
		return $this->arrayWrap( array_merge(
36
			$this->arrayWrap( HashArrayElement::getInstances() ),
37
			[ HashArrayElement::getInstances() ]
38
		) );
39
	}
40
41
	/**
42
	 * @dataProvider instanceProvider
43
	 * @param HashArray $array
44
	 */
45
	public function testAddElement( HashArray $array ) {
46
		$elementCount = $array->count();
47
48
		$elements = $this->elementInstancesProvider();
49
		$element = array_shift( $elements );
50
		$element = $element[0][0];
51
52
		++$elementCount;
53
54
		$this->assertTrue( $array->addElement( $element ), 'Adding an element should always work' );
55
56
		$this->assertEquals( $elementCount, $array->count(), 'Adding an element should always increase the count' );
57
58
		$this->assertTrue( $array->addElement( $element ), 'Adding an element should always work' );
59
	}
60
61
	/**
62
	 * @dataProvider instanceProvider
63
	 * @param HashArray $array
64
	 */
65
	public function testGetHash( HashArray $array ) {
66
		$hash = $array->getHash();
67
68
		$this->assertEquals( $hash, $array->getHash() );
69
70
		$elements = $this->elementInstancesProvider();
71
		$element = array_shift( $elements );
72
		$element = $element[0][0];
73
74
		$array->addElement( $element );
75
76
		$newHash = $array->getHash();
77
78
		$this->assertNotSame( $hash, $newHash, 'Hash should not be the same after adding an element' );
79
80
		$array->addElement( $element );
81
82
		$this->assertNotSame(
83
			$newHash,
84
			$array->getHash(),
85
			'Hash should not be the same after adding an existing element again'
86
		);
87
	}
88
89
}
90