function QueueTest::runQueueTest

Same name and namespace in other branches
  1. 9 core/tests/Drupal/KernelTests/Core/Queue/QueueTest.php \Drupal\KernelTests\Core\Queue\QueueTest::runQueueTest()
  2. 8.9.x core/tests/Drupal/KernelTests/Core/Queue/QueueTest.php \Drupal\KernelTests\Core\Queue\QueueTest::runQueueTest()
  3. 11.x core/tests/Drupal/KernelTests/Core/Queue/QueueTest.php \Drupal\KernelTests\Core\Queue\QueueTest::runQueueTest()

Queues and unqueues a set of items to check the basic queue functionality.

Parameters

\Drupal\Core\Queue\QueueInterface $queue1: An instantiated queue object.

\Drupal\Core\Queue\QueueInterface $queue2: An instantiated queue object.

2 calls to QueueTest::runQueueTest()
QueueTest::testMemoryQueue in core/tests/Drupal/KernelTests/Core/Queue/QueueTest.php
Tests the Memory queue.
QueueTest::testSystemQueue in core/tests/Drupal/KernelTests/Core/Queue/QueueTest.php
Tests the System queue.

File

core/tests/Drupal/KernelTests/Core/Queue/QueueTest.php, line 53

Class

QueueTest
Queues and unqueues a set of items to check the basic queue functionality.

Namespace

Drupal\KernelTests\Core\Queue

Code

protected function runQueueTest($queue1, $queue2) {
  // Create four items.
  $data = [];
  for ($i = 0; $i < 4; $i++) {
    $data[] = [
      $this->randomMachineName() => $this->randomMachineName(),
    ];
  }
  // Queue items 1 and 2 in the queue1.
  $queue1->createItem($data[0]);
  $queue1->createItem($data[1]);
  // Retrieve two items from queue1.
  $items = [];
  $new_items = [];
  $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->assertEquals(2, $this->queueScore($data, $new_items), 'Two items matched');
  // Add two more items.
  $queue1->createItem($data[2]);
  $queue1->createItem($data[3]);
  $this->assertSame(4, $queue1->numberOfItems(), 'Queue 1 is not empty after adding items.');
  $this->assertSame(0, $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->assertEquals(4, $this->queueScore($data, $new_items), 'Four items matched');
  // There should be no duplicate items.
  $this->assertEquals(4, $this->queueScore($new_items, $new_items), 'Four items matched');
  // Delete all items from queue1.
  foreach ($items as $item) {
    $queue1->deleteItem($item);
  }
  // Check that both queues are empty.
  $this->assertSame(0, $queue1->numberOfItems(), 'Queue 1 is empty');
  $this->assertSame(0, $queue2->numberOfItems(), 'Queue 2 is empty');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.