public function testRemoveQueueItem()
{
// Array access doesn't support removal index
// through normal function calls
$this->assertFalse(is_int($this->queue[] = new Message()));
$this->assertEquals(count($this->queue), 1);
unset($this->queue[0]);
$this->assertEquals(count($this->queue), 0);
// Adding to the queue with add() will return an index
// so that you can call remove on it
$index = $this->queue->add(new Message());
$this->assertEquals($index, 0);
$index = $this->queue->add(new Message());
$this->assertEquals($index, 1);
$this->assertEquals(count($this->queue), 2);
$this->queue->remove(1);
$this->assertEquals(count($this->queue), 1);
$this->queue->remove(0);
$this->assertEquals(count($this->queue), 0);
// Now lets add & remove to make sure all the correct indexes exist
$this->queue[] = new Message();
$index = $this->queue->add(new Message());
$this->assertEquals($index, 1);
$this->queue->remove($index);
$index = $this->queue->add(new Message());
$this->assertEquals($index, 1);
$this->queue[] = new Message();
$index = $this->queue->add(new Message());
$this->queue[] = new Message();
$this->assertEquals($index, 3);
$this->queue->remove($index);
$this->assertEquals(count($this->queue), 4);
}