More tests and minor updates.

This commit is contained in:
2014-08-10 14:27:00 -05:00
parent 0b3b876b64
commit 12f6edf269
2 changed files with 108 additions and 11 deletions

View File

@@ -180,6 +180,7 @@ HTML;
/** /**
* @param int $count * @param int $count
* @throws \RuntimeException * @throws \RuntimeException
* @throws \InvalidArgumentException
* @return bool|array * @return bool|array
*/ */
public function processQueue($count = 1) public function processQueue($count = 1)
@@ -188,8 +189,16 @@ HTML;
throw new \RuntimeException('UglyQueue::processQueue - Must first initialize queue!'); throw new \RuntimeException('UglyQueue::processQueue - Must first initialize queue!');
// If we don't have a lock, assume issue and move on. // If we don't have a lock, assume issue and move on.
if ($this->haveLock === false || !file_exists($this->queueGroupDirPath.'queue.txt')) if ($this->haveLock === false)
return false; throw new \RuntimeException('UglyQueue::processQueue - Cannot process queue locked by another process');
// If non-int valid is passed
if (!is_int($count))
throw new \InvalidArgumentException('UglyQueue::processQueue - Argument 1 expected to be integer greater than 0, "'.gettype($count).'" seen');
// If negative integer passed
if ($count <= 0)
throw new \InvalidArgumentException('UglyQueue::processQueue - Argument 1 expected to be integer greater than 0, "'.$count.'" seen');
// Find number of lines in the queue file // Find number of lines in the queue file
$lineCount = FileHelper::getLineCount($this->queueGroupDirPath.'queue.txt'); $lineCount = FileHelper::getLineCount($this->queueGroupDirPath.'queue.txt');
@@ -222,7 +231,6 @@ HTML;
rewind($queueFileHandle); rewind($queueFileHandle);
ftruncate($queueFileHandle, 0); ftruncate($queueFileHandle, 0);
fclose($queueFileHandle); fclose($queueFileHandle);
$this->unlock();
} }
// Otherwise, create new queue file minus the processed lines. // Otherwise, create new queue file minus the processed lines.
else else
@@ -314,12 +322,7 @@ HTML;
if ($this->init === false) if ($this->init === false)
throw new \RuntimeException('UglyQueue::getQueueItemCount - Must first initialize queue'); throw new \RuntimeException('UglyQueue::getQueueItemCount - Must first initialize queue');
$count = FileHelper::getLineCount($this->queueGroupDirPath.'queue.txt'); return FileHelper::getLineCount($this->queueGroupDirPath.'queue.txt');
if ($count > 0)
return ($count - 1);
return $count;
} }
/** /**

View File

@@ -170,6 +170,18 @@ class UglyQueueTest extends PHPUnit_Framework_TestCase
$keyExists = $uglyQueue->keyExistsInQueue(0); $keyExists = $uglyQueue->keyExistsInQueue(0);
} }
/**
* @covers \DCarbone\UglyQueue::processQueue
* @uses \DCarbone\UglyQueue
* @depends testCanConstructUglyQueueWithValidParameter
* @expectedException \RuntimeException
* @param \DCarbone\UglyQueue $uglyQueue
*/
public function testExceptionThrownWhenTryingToProcessQueueBeforeInitialization(\DCarbone\UglyQueue $uglyQueue)
{
$process = $uglyQueue->processQueue();
}
/** /**
* @covers \DCarbone\UglyQueue::initialize * @covers \DCarbone\UglyQueue::initialize
* @covers \DCarbone\UglyQueue::getInit * @covers \DCarbone\UglyQueue::getInit
@@ -187,6 +199,18 @@ class UglyQueueTest extends PHPUnit_Framework_TestCase
return $uglyQueue; return $uglyQueue;
} }
/**
* @covers \DCarbone\UglyQueue::processQueue
* @uses \DCarbone\UglyQueue
* @depends testCanInitializeNewUglyQueue
* @expectedException \RuntimeException
* @param \DCarbone\UglyQueue $uglyQueue
*/
public function testExceptionThrownWhenTryingToProcessQueueAfterInitializationBeforeLock(\DCarbone\UglyQueue $uglyQueue)
{
$process = $uglyQueue->processQueue();
}
/** /**
* @covers \DCarbone\UglyQueue::keyExistsInQueue * @covers \DCarbone\UglyQueue::keyExistsInQueue
* @uses \DCarbone\UglyQueue * @uses \DCarbone\UglyQueue
@@ -471,7 +495,7 @@ class UglyQueueTest extends PHPUnit_Framework_TestCase
*/ */
public function testCanPopulateQueueTempFileAfterInitializationAndAcquiringLock(\DCarbone\UglyQueue $uglyQueue) public function testCanPopulateQueueTempFileAfterInitializationAndAcquiringLock(\DCarbone\UglyQueue $uglyQueue)
{ {
foreach($this->tastySandwich as $k=>$v) foreach(array_reverse($this->tastySandwich, true) as $k=>$v)
{ {
$added = $uglyQueue->addToQueue($k, $v); $added = $uglyQueue->addToQueue($k, $v);
$this->assertTrue($added); $this->assertTrue($added);
@@ -521,7 +545,7 @@ class UglyQueueTest extends PHPUnit_Framework_TestCase
{ {
$itemCount = $uglyQueue->getQueueItemCount(); $itemCount = $uglyQueue->getQueueItemCount();
$this->assertEquals(10, $itemCount); $this->assertEquals(11, $itemCount);
} }
/** /**
@@ -536,4 +560,74 @@ class UglyQueueTest extends PHPUnit_Framework_TestCase
$this->assertTrue($exists); $this->assertTrue($exists);
} }
/**
* @covers \DCarbone\UglyQueue::processQueue
* @uses \DCarbone\UglyQueue
* @depends testCanPopulateQueueTempFileAfterInitializationAndAcquiringLock
* @expectedException \InvalidArgumentException
* @param \DCarbone\UglyQueue $uglyQueue
*/
public function testExceptionThrownWhenTryingToProcessLockedQueueWithNonInteger(\DCarbone\UglyQueue $uglyQueue)
{
$process = $uglyQueue->processQueue('Eleventy Billion');
}
/**
* @covers \DCarbone\UglyQueue::processQueue
* @uses \DCarbone\UglyQueue
* @depends testCanPopulateQueueTempFileAfterInitializationAndAcquiringLock
* @expectedException \InvalidArgumentException
* @param \DCarbone\UglyQueue $uglyQueue
*/
public function testExceptionThrownWhenTryingToProcessLockedQueueWithIntegerLessThan1(\DCarbone\UglyQueue $uglyQueue)
{
$process = $uglyQueue->processQueue(0);
}
/**
* @covers \DCarbone\UglyQueue::processQueue
* @covers \DCarbone\UglyQueue::getQueueItemCount
* @uses \DCarbone\UglyQueue
* @uses \DCarbone\Helpers\FileHelper
* @depends testCanPopulateQueueTempFileAfterInitializationAndAcquiringLock
* @param \DCarbone\UglyQueue $uglyQueue
* @return \DCarbone\UglyQueue
*/
public function testCanGetPartialQueueContents(\DCarbone\UglyQueue $uglyQueue)
{
$process = $uglyQueue->processQueue(5);
$this->assertEquals(5, count($process));
$this->assertArrayHasKey('0', $process);
$this->assertArrayHasKey('4', $process);
$this->assertEquals(6, $uglyQueue->getQueueItemCount());
return $uglyQueue;
}
/**
* @covers \DCarbone\UglyQueue::processQueue
* @covers \DCarbone\UglyQueue::getQueueItemCount
* @uses \DCarbone\UglyQueue
* @uses \DCarbone\Helpers\FileHelper
* @depends testCanGetPartialQueueContents
* @param \DCarbone\UglyQueue $uglyQueue
* @return \DCarbone\UglyQueue
*/
public function testCanGetFullQueueContents(\DCarbone\UglyQueue $uglyQueue)
{
$process = $uglyQueue->processQueue(6);
$this->assertEquals(6, count($process));
$this->assertArrayHasKey('10', $process);
$this->assertArrayHasKey('5', $process);
$this->assertEquals(0, $uglyQueue->getQueueItemCount());
return $uglyQueue;
}
} }