diff --git a/Tests/queuefileTest.php b/Tests/queuefileTest.php new file mode 100644 index 0000000..59b1c2f --- /dev/null +++ b/Tests/queuefileTest.php @@ -0,0 +1,136 @@ + */ + +/** Test the queuefile.php file */ +class test_queuefile extends PHPUnit_Framework_TestCase +{ + public function test_clean () + { + if (file_exists ("/tmp/queuefileTest/queuefileTest.json")) + unlink ("/tmp/queuefileTest/queuefileTest.json"); + } + + public function test_add1 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->add ("test1"); + $this->assertSame (true, is_object ($res)); + } + + public function test_count1 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->count (); + $this->assertSame (1, $res); + } + + public function test_add2 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->add ("test2"); + $this->assertSame (true, is_object ($res)); + } + + public function test_count2 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->count (); + $this->assertSame (2, $res); + } + + public function test_getFirst1 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->getFirst (); + $this->assertSame ("test1", $res); + } + + public function test_getLast1 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->getLast (); + $this->assertSame ("test2", $res); + } + + public function test_getRange1 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->getRange (1, 1); + $this->assertSame (["test2"], $res); + } + + public function test_getRange2 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->getRange (0, 2); + $this->assertSame (["test1", "test2"], $res); + } + + public function test_getRange3 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $this->expectException (); + $res = $queuefile->getRange (0, 3); + } + + public function test_getAll1 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->getAll (); + $this->assertSame (["test1", "test2"], $res); + } + + // AFTER THIS TEST THE FILE WILL BE EMPTY + public function test_getAll2 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->clear (); + $this->assertSame (true, is_object ($res)); + } + + public function test_count3 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->count (); + $this->assertSame (0, $res); + } + + public function test_getAll3 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->getAll (); + $this->assertSame ([], $res); + } + + public function test_getFirst2 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->getFirst (); + $this->assertSame (null, $res); + } + + public function test_getLast2 () + { + $queuefile = new queuefile (); + $queuefile->connect ("file:///tmp/queuefileTest/queuefileTest.json"); + $res = $queuefile->getLast (); + $this->assertSame (null, $res); + } + +} diff --git a/queuefile.php b/queuefile.php index f639527..7c39c50 100644 --- a/queuefile.php +++ b/queuefile.php @@ -70,10 +70,12 @@ class queuefile extends queue else $file->lockSH ($this->queue); $content = $file->file_get_contents ($this->queue); - $entries = array (); - foreach (explode ("\n", $content) as $json) + $entries = explode ("\n", $content); + // Explode return always one empty entry at end. Remove it + array_pop ($entries); + foreach ($entries as $key => $val) { - $entries[] = json_decode ($json); + $entries[$key] = json_decode ($val); } if ($delete) $file->file_put_contents ($this->queue, ""); @@ -125,6 +127,8 @@ class queuefile extends queue $file->lockSH ($this->queue); $content = $file->file_get_contents ($this->queue); $entries = explode ("\n", $content); + // Explode return always one empty entry at end. Remove it + array_pop ($entries); if (count ($entries) === 0) $res = null; else @@ -155,6 +159,8 @@ class queuefile extends queue $file->lockSH ($this->queue); $content = $file->file_get_contents ($this->queue); $entries = explode ("\n", $content); + // Explode return always one empty entry at end. Remove it + array_pop ($entries); if (count ($entries) === 0) $res = null; else @@ -171,7 +177,8 @@ class queuefile extends queue // }}} /** Get X entries starting at position Y - * @param integer $start the starting position + * @param integer $start the starting position (the entries start at position + * zero) * @param integer $number The number of entries to get * @param boolean|null $delete If true, delete the read entries * @return array An array of mixed entries @@ -186,13 +193,18 @@ class queuefile extends queue $file->lockSH ($this->queue); $content = $file->file_get_contents ($this->queue); $entries = explode ("\n", $content); + // Explode return always one empty entry at end. Remove it + array_pop ($entries); $res = array (); if (count ($entries) > 0) { for ($i = $start ; $i < $start + $number ; $i++) { if (! key_exists ($i, $entries)) + { + $file->lockUN ($this->queue); throw new \Exception ("Invalid entry requested", 406); + } $json = $entries[$i]; $content = json_decode ($json, true); if (json_last_error() === JSON_ERROR_NONE)