public function testItReturnsManyMessagesInTheCorrectOrder()
 {
     $instanceOne = $this->fileQueue;
     $instanceTwo = $this->createFileQueueInstance();
     $nMessages = 1000;
     for ($i = 0; $i < $nMessages; $i++) {
         $writeQueue = $i % 2 === 0 ? $instanceOne : $instanceTwo;
         $writeQueue->add($this->createTestMessageWithName('message_' . $i));
     }
     $receiveCallCount = 0;
     $this->mockMessageReceiver->expects($this->exactly($nMessages))->method('receive')->with($this->callback(function (Message $message) use(&$receiveCallCount, $nMessages) {
         $expected = 'message_' . $receiveCallCount++;
         if ($receiveCallCount > $nMessages) {
             // Workaround https://github.com/sebastianbergmann/phpunit-mock-objects/issues/261
             $expected = 'message_' . ($receiveCallCount - 2);
         }
         return $expected === $message->getName();
     }));
     for ($i = 0; $i < $nMessages; $i++) {
         $readQueue = $i % 2 === 1 ? $instanceOne : $instanceTwo;
         $readQueue->consume($this->mockMessageReceiver, 1);
     }
 }
 public function consume(MessageReceiver $messageReceiver, int $maxNumberOfMessagesToConsume)
 {
     while ($this->isReadyForNext() && $maxNumberOfMessagesToConsume-- > 0) {
         $messageReceiver->receive($this->next());
     }
 }