diff options
Diffstat (limited to 'test/PhpBB3Test.php')
-rw-r--r-- | test/PhpBB3Test.php | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/test/PhpBB3Test.php b/test/PhpBB3Test.php new file mode 100644 index 0000000..8f06170 --- /dev/null +++ b/test/PhpBB3Test.php @@ -0,0 +1,83 @@ +<?php + +require_once('PHPUnit/Framework.php'); + +class PhpBB3Test extends PHPUnit_Framework_TestCase { + + /** + * phpBB3 uses many globals; due to the way tests are run, we cannot + * easily get these globals into the right scope so that the methods + * called by our tests can see them. Therefore, we use this function + * to run tests externally and report back on the results. + */ + protected function exec_kludge($run) { + $prog = <<<EOF +try { + require_once("src/PhpBB3.php"); + \$phpBB = new PhpBB3(); + \$result = serialize(\$phpBB->$run); +} +catch (Exception \$e) { + \$result = serialize(\$e); +} + +print \$result; +EOF; + + $result = unserialize(exec('php -r \'' . $prog . '\'')); + + if ($result instanceof Exception) { + throw $result; + } + + return $result; + } + + /** + * @dataProvider provider_GetUserId + */ + public function testGetUserId($from, $expected, $ex) { + if ($ex) $this->setExpectedException($ex); + $run = 'getUserId("' . $from . '")'; + $this->assertEquals($expected, $this->exec_kludge($run)); + } + + public function providerGetUserId() { + return array( + array('bogus', null, 'PHPUnit_Framework_Error'), + array('uckelman@nomic.net', 2, null) + ); + } + + /** + * @dataProvider providerGetUserName + */ + public function testGetUserName($id, $expected, $ex) { + if ($ex) $this->setExpectedException($ex); + $run = 'getUserName(' . $id . ')'; + $this->assertEquals($expected, $this->exec_kludge($run)); + } + + public function providerGetUserName() { + return array( + array(0, null, 'PHPUnit_Framework_Error'), + array(2, 'admin', null ) + ); + } + + /** + * @dataProvider providerGetTopicAndForumIds + */ + public function testGetTopicAndForumIds($post_id, $expected, $ex) { + if ($ex) $this->setExpectedException($ex); + $run = 'getTopicAndForumIds(' . $post_id . ')'; + $this->assertEquals($expected, $this->exec_kludge($run)); + } + + public function providerGetTopicAndForumIds() { + return array( + array(0, null, 'PHPUnit_Framework_Error'), + array(2, array('topic_id' => 2, 'forum_id' => 2), null) + ); + } +} |