public function testAddWithDuplicateObjects()
{
$set = new Set([1, 2, 3]);
$vector = new Vector([1, 2, 3]);
// Add the same object twice.
$set->add($vector);
$set->add($vector);
$this->assertEquals(4, count($set));
$this->assertEquals(4, count($set->asArray()));
$objects = 0;
foreach ($set as $key => $value) {
if ($value instanceof \MathPHP\LinearAlgebra\Vector) {
$objects++;
$vector_key = get_class($value) . '(' . spl_object_hash($vector) . ')';
$this->assertEquals($vector_key, $key);
$this->assertEquals($vector, $value);
}
}
// There should have only been one vector object.
$this->assertEquals(1, $objects);
}