summaryrefslogtreecommitdiff
path: root/test/PhpBB3LibTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'test/PhpBB3LibTest.php')
-rw-r--r--test/PhpBB3LibTest.php50
1 files changed, 50 insertions, 0 deletions
diff --git a/test/PhpBB3LibTest.php b/test/PhpBB3LibTest.php
new file mode 100644
index 0000000..cfad41f
--- /dev/null
+++ b/test/PhpBB3LibTest.php
@@ -0,0 +1,50 @@
+<?php
+
+require_once('PHPUnit/Framework.php');
+
+class PhpBB3LibTest 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/PhpBB3Lib.php");
+ \$result = serialize($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_get_user_id
+ */
+ public function test_get_user_id($from, $expected, $ex) {
+ if ($ex) $this->setExpectedException($ex);
+ $run = 'get_user_id("' . $from . '")';
+ $this->assertEquals($expected, $this->exec_kludge($run));
+ }
+
+ public function provider_get_user_id() {
+ return array(
+ array('bogus', null, 'PHPUnit_Framework_Error'),
+ array('uckelman@nomic.net', 2, null)
+ );
+ }
+}