From 50f4cc47a96fd6c3f5818a5a70d585f3964f99cc Mon Sep 17 00:00:00 2001 From: knut <> Date: Wed, 30 May 2007 13:18:02 +0000 Subject: full coverage for TStack --- tests/unit/Collections/AllTests.php | 2 + tests/unit/Collections/TStackTest.php | 131 ++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 tests/unit/Collections/TStackTest.php (limited to 'tests') diff --git a/tests/unit/Collections/AllTests.php b/tests/unit/Collections/AllTests.php index d9158f3a..a639a42c 100644 --- a/tests/unit/Collections/AllTests.php +++ b/tests/unit/Collections/AllTests.php @@ -8,6 +8,7 @@ if(!defined('PHPUnit_MAIN_METHOD')) { require_once 'TListTest.php'; require_once 'TMapTest.php'; require_once 'TQueueTest.php'; +require_once 'TStackTest.php'; class Collections_AllTests { public static function main() { @@ -20,6 +21,7 @@ class Collections_AllTests { $suite->addTestSuite('TListTest'); $suite->addTestSuite('TMapTest'); $suite->addTestSuite('TQueueTest'); + $suite->addTestSuite('TStackTest'); return $suite; } diff --git a/tests/unit/Collections/TStackTest.php b/tests/unit/Collections/TStackTest.php new file mode 100644 index 00000000..d9cf5fa7 --- /dev/null +++ b/tests/unit/Collections/TStackTest.php @@ -0,0 +1,131 @@ +toArray()); + $stack = new TStack(array(1, 2, 3)); + self::assertEquals(array(1, 2, 3), $stack->toArray()); + } + + public function testToArray() { + $stack = new TStack(array(1, 2, 3)); + self::assertEquals(array(1, 2, 3), $stack->toArray()); + } + + public function testCopyFrom() { + $stack = new TStack(array(1, 2, 3)); + $data = array(4, 5, 6); + $stack->copyFrom($data); + self::assertEquals(array(4, 5, 6), $stack->toArray()); + } + + public function testCanNotCopyFromNonTraversableTypes() { + $stack = new TStack(); + $data = new stdClass(); + try { + $stack->copyFrom($data); + } catch(TInvalidDataTypeException $e) { + return; + } + self::fail('An expected TInvalidDataTypeException was not raised'); + } + + public function testClear() { + $stack = new TStack(array(1, 2, 3)); + $stack->clear(); + self::assertEquals(array(), $stack->toArray()); + } + + public function testContains() { + $stack = new TStack(array(1, 2, 3)); + self::assertEquals(true, $stack->contains(2)); + self::assertEquals(false, $stack->contains(4)); + } + + public function testPeek() { + $stack = new TStack(array(1)); + self::assertEquals(1, $stack->peek()); + } + + public function testCanNotPeekAnEmptyStack() { + $stack = new TStack(); + try { + $item = $stack->peek(); + } catch(TInvalidOperationException $e) { + return; + } + self::fail('An expected TInvalidOperationException was not raised'); + } + + public function testPop() { + $stack = new TStack(array(1, 2, 3)); + $last = $stack->pop(); + self::assertEquals(3, $last); + self::assertEquals(array(1, 2), $stack->toArray()); + } + + public function testCanNotPopAnEmptyStack() { + $stack = new TStack(); + try { + $item = $stack->pop(); + } catch(TInvalidOperationException $e) { + return; + } + self::fail('An expected TInvalidOperationException was not raised'); + } + + public function testPush() { + $stack = new TStack(); + $stack->push(1); + self::assertEquals(array(1), $stack->toArray()); + } + + public function testGetIterator() { + $stack = new TStack(array(1, 2)); + self::assertType('TStackIterator', $stack->getIterator()); + $n = 0; + $found = 0; + foreach($stack as $index => $item) { + foreach($stack as $a => $b); // test of iterator + $n++; + if($index === 0 && $item === 1) { + $found++; + } + if($index === 1 && $item === 2) { + $found++; + } + } + self::assertTrue($n == 2 && $found == 2); + } + + public function testGetCount() { + $stack = new TStack(); + self::assertEquals(0, $stack->getCount()); + $stack = new TStack(array(1, 2, 3)); + self::assertEquals(3, $stack->getCount()); + } + + public function testCount() { + $stack = new TStack(); + self::assertEquals(0, $stack->count()); + $stack = new TStack(array(1, 2, 3)); + self::assertEquals(3, $stack->count()); + } + +} + +?> -- cgit v1.2.3