/** * @dataProvider instanceProvider * @param HashArray $array */ public function testAddElement(HashArray $array) { $elementCount = $array->count(); $elements = $this->elementInstancesProvider(); $element = array_shift($elements); $element = $element[0][0]; ++$elementCount; $this->assertTrue($array->addElement($element), 'Adding an element should always work'); $this->assertEquals($elementCount, $array->count(), 'Adding an element should always increase the count'); $this->assertTrue($array->addElement($element), 'Adding an element should always work'); }
/** * @dataProvider instanceProvider * @param HashArray $array */ public function testAddElement(HashArray $array) { $elementCount = $array->count(); $elements = $this->elementInstancesProvider(); $element = array_shift($elements); $element = $element[0][0]; if (!$array->hasElement($element)) { ++$elementCount; } $this->assertEquals(!$array->hasElement($element), $array->addElement($element), 'Adding an element should only work if its not already there'); $this->assertEquals($elementCount, $array->count(), 'Element count should only increase if the element was not there yet'); $this->assertFalse($array->addElement($element), 'Adding an already present element should not work'); $this->assertEquals($elementCount, $array->count(), 'Element count should not increase if the element is already there'); }
/** * @dataProvider instanceProvider * @param HashArray $array */ public function testRemoveElement(HashArray $array) { $array->removeDuplicates(); $elementCount = $array->count(); /** * @var Hashable $element */ foreach (iterator_to_array($array) as $element) { $this->assertTrue($array->hasElement($element)); if ($elementCount % 2 === 0) { $array->removeElement($element); } else { $array->removeByElementHash($element->getHash()); } $this->assertFalse($array->hasElement($element)); $this->assertEquals(--$elementCount, $array->count()); } $element = new PropertyNoValueSnak(42); $array->removeElement($element); $array->removeByElementHash($element->getHash()); $this->assertTrue(true); }