Skip to content

Commit f7a5d02

Browse files
committed
Add more tests
1 parent f0c5833 commit f7a5d02

1 file changed

Lines changed: 44 additions & 9 deletions

File tree

tests/unit/ReferenceListTest.php

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,26 @@ public function testRemoveReference( ReferenceList $array ) {
157157
$this->assertTrue( true );
158158
}
159159

160+
public function testRemoveReferenceRemovesIdenticalObjects() {
161+
$reference = new Reference( array( new PropertyNoValueSnak( 1 ) ) );
162+
$references = new ReferenceList( array( $reference, $reference ) );
163+
164+
$references->removeReference( $reference );
165+
166+
$this->assertTrue( $references->isEmpty() );
167+
}
168+
169+
public function testRemoveReferenceDoesNotRemoveCopies() {
170+
$reference = new Reference( array( new PropertyNoValueSnak( 1 ) ) );
171+
$references = new ReferenceList( array( $reference, clone $reference ) );
172+
173+
$references->removeReference( $reference );
174+
175+
$this->assertFalse( $references->isEmpty() );
176+
$this->assertTrue( $references->hasReference( $reference ) );
177+
$this->assertNotSame( $reference, $references->getReference( $reference->getHash() ) );
178+
}
179+
160180
public function testAddReferenceOnEmptyList() {
161181
$reference = new Reference( array( new PropertyNoValueSnak( 1 ) ) );
162182

@@ -330,21 +350,36 @@ public function testRemoveReferenceHash( ReferenceList $references ) {
330350
$this->assertEquals( 0, count( $references ) );
331351
}
332352

333-
public function testRemoveReferenceHash_occurrencesOfSameObjectGetRemoved() {
334-
$reference = new Reference( array( new PropertyNoValueSnak( 42 ) ) );
335-
$references = new ReferenceList( array(
336-
$reference,
337-
clone $reference,
338-
$reference
339-
) );
353+
public function testRemoveReferenceHashRemovesIdenticalObjects() {
354+
$reference = new Reference( array( new PropertyNoValueSnak( 1 ) ) );
355+
$references = new ReferenceList( array( $reference, $reference ) );
340356

341357
$references->removeReferenceHash( $reference->getHash() );
342358

343-
$this->assertTrue( $references->hasReferenceHash( $reference->getHash() ) );
344-
$this->assertCount( 1, $references );
359+
$this->assertTrue( $references->isEmpty() );
360+
}
361+
362+
public function testRemoveReferenceHashDoesNotRemoveCopies() {
363+
$reference = new Reference( array( new PropertyNoValueSnak( 1 ) ) );
364+
$references = new ReferenceList( array( $reference, clone $reference ) );
365+
366+
$references->removeReferenceHash( $reference->getHash() );
367+
368+
$this->assertFalse( $references->isEmpty() );
369+
$this->assertTrue( $references->hasReference( $reference ) );
345370
$this->assertNotSame( $reference, $references->getReference( $reference->getHash() ) );
346371
}
347372

373+
public function testRemoveReferenceHashUpdatesIndexes() {
374+
$reference1 = new Reference( array( new PropertyNoValueSnak( 1 ) ) );
375+
$reference2 = new Reference( array( new PropertyNoValueSnak( 2 ) ) );
376+
$references = new ReferenceList( array( $reference1, $reference2 ) );
377+
378+
$references->removeReferenceHash( $reference1->getHash() );
379+
380+
$this->assertSame( 0, $references->indexOf( $reference2 ) );
381+
}
382+
348383
public function testGivenOneSnak_addNewReferenceAddsSnak() {
349384
$references = new ReferenceList();
350385
$snak = new PropertyNoValueSnak( 1 );

0 commit comments

Comments
 (0)