1 system.test | QueueTestCase::testQueue() |
Queues and dequeues a set of items to check the basic queue functionality.
File
- core/
modules/ system/ tests/ system.test, line 1896 - Tests for system.module.
Class
- QueueTestCase
- Test the basic queue functionality.
Code
function testQueue() {
// Create two queues.
$queue1 = BackdropQueue::get($this->randomName());
$queue1->createQueue();
$queue2 = BackdropQueue::get($this->randomName());
$queue2->createQueue();
// Create four items.
$data = array();
for ($i = 0; $i < 4; $i++) {
$data[] = array($this->randomName() => $this->randomName());
}
// Queue items 1 and 2 in the queue1.
$queue1->createItem($data[0]);
$queue1->createItem($data[1]);
// Retrieve two items from queue1.
$items = array();
$new_items = array();
$items[] = $item = $queue1->claimItem();
$new_items[] = $item->data;
$items[] = $item = $queue1->claimItem();
$new_items[] = $item->data;
// First two dequeued items should match the first two items we queued.
$this->assertEqual($this->queueScore($data, $new_items), 2, 'Two items matched');
// Add two more items.
$queue1->createItem($data[2]);
$queue1->createItem($data[3]);
$this->assertTrue($queue1->numberOfItems(), 'Queue 1 is not empty after adding items.');
$this->assertFalse($queue2->numberOfItems(), 'Queue 2 is empty while Queue 1 has items');
$items[] = $item = $queue1->claimItem();
$new_items[] = $item->data;
$items[] = $item = $queue1->claimItem();
$new_items[] = $item->data;
// All dequeued items should match the items we queued exactly once,
// therefore the score must be exactly 4.
$this->assertEqual($this->queueScore($data, $new_items), 4, 'Four items matched');
// There should be no duplicate items.
$this->assertEqual($this->queueScore($new_items, $new_items), 4, 'Four items matched');
// Delete all items from queue1.
foreach ($items as $item) {
$queue1->deleteItem($item);
}
// Check that both queues are empty.
$this->assertFalse($queue1->numberOfItems(), 'Queue 1 is empty');
$this->assertFalse($queue2->numberOfItems(), 'Queue 2 is empty');
}