aboutsummaryrefslogtreecommitdiffstats
path: root/simplepie/test/unit_test/unit_test.php
diff options
context:
space:
mode:
Diffstat (limited to 'simplepie/test/unit_test/unit_test.php')
-rw-r--r--simplepie/test/unit_test/unit_test.php126
1 files changed, 126 insertions, 0 deletions
diff --git a/simplepie/test/unit_test/unit_test.php b/simplepie/test/unit_test/unit_test.php
new file mode 100644
index 000000000..0a27a3433
--- /dev/null
+++ b/simplepie/test/unit_test/unit_test.php
@@ -0,0 +1,126 @@
+<?php
+
+/**
+ * @package Unit Test
+ * @author Geoffrey Sneddon <geoffers@gmail.com>
+ * @version $Id: unit_test.php 6 2007-04-23 15:15:40Z gsnedders $
+ * @license http://www.opensource.org/licenses/zlib-license.php zlib/libpng license
+ * @license http://opensource.org/licenses/lgpl-license.php GNU Lesser General Public License
+ * @copyright Copyright © 2007, Geoffrey Sneddon
+ */
+
+class Unit_Test
+{
+ var $passed;
+ var $failed;
+ var $success_callback;
+ var $fail_callback;
+
+ function Unit_Test($success, $fail)
+ {
+ $this->success_callback = $success;
+ $this->fail_callback = $fail;
+ }
+
+ function do_test($callback, $dir, $vars = 'data')
+ {
+ $files = $this->get_files($dir);
+ foreach ($files as $file)
+ {
+ $istest = true;
+ $debug = false;
+ include $file;
+ if ($istest)
+ {
+ $args = compact($vars);
+ $result = call_user_func_array($callback, $args);
+ $this->run_test($file, $result === $expected);
+ if ($debug)
+ {
+ var_dump($file, $args, $result, $expected);
+ }
+ }
+ }
+ }
+
+ function run_test($file, $success)
+ {
+ if ($success)
+ {
+ $this->passed++;
+ call_user_func($this->success_callback, $file);
+ }
+ else
+ {
+ $this->failed++;
+ call_user_func($this->fail_callback, $file);
+ }
+ }
+
+ function passed()
+ {
+ return $this->passed;
+ }
+
+ function failed()
+ {
+ return $this->failed;
+ }
+
+ function total()
+ {
+ return $this->passed + $this->failed;
+ }
+
+ function get_files($dir)
+ {
+ static $extension = null;
+ if (!$extension)
+ {
+ $extension = pathinfo(__FILE__, PATHINFO_EXTENSION);
+ }
+ $files = array();
+ if ($dh = opendir($dir))
+ {
+ while (($file = readdir($dh)) !== false)
+ {
+ if (substr($file, 0, 1) != '.')
+ {
+ $files[] = "$dir/$file";
+ }
+ }
+ closedir($dh);
+ usort($files, array(&$this, 'sort_files'));
+ foreach ($files as $file)
+ {
+ if (is_dir($file))
+ {
+ array_splice($files, array_search($file, $files), 0, $this->get_files($file));
+ }
+ if (pathinfo($file, PATHINFO_EXTENSION) != $extension)
+ {
+ unset($files[array_search($file, $files)]);
+ }
+ }
+ }
+ return $files;
+ }
+
+ function sort_files(&$a, &$b)
+ {
+ if (is_dir($a) && is_dir($b) || !(is_dir($a) || is_dir($b)))
+ {
+ return strnatcasecmp($a, $b);
+ }
+ else if (is_dir($a))
+ {
+ return 1;
+ }
+ else if (is_dir($b))
+ {
+ return -1;
+ }
+ }
+}
+
+?> \ No newline at end of file