summaryrefslogtreecommitdiff
path: root/modules/unit_test/libraries
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2008-12-15 08:37:09 +0000
committerBharat Mediratta <bharat@menalto.com>2008-12-15 08:37:09 +0000
commit31759cb3b3090c1b9d68ac54f2d2622584003563 (patch)
tree97a6029ab240a940abddf8235e57984232037aff /modules/unit_test/libraries
parente73bd90285e1082449990e8118b91aa853eb5e6f (diff)
Delete trunk/kohana and trunk/modules/unit_test in preparation to refresh
them properly from the vendor branch.
Diffstat (limited to 'modules/unit_test/libraries')
-rw-r--r--modules/unit_test/libraries/Unit_Test.php499
1 files changed, 0 insertions, 499 deletions
diff --git a/modules/unit_test/libraries/Unit_Test.php b/modules/unit_test/libraries/Unit_Test.php
deleted file mode 100644
index 018ce8e1..00000000
--- a/modules/unit_test/libraries/Unit_Test.php
+++ /dev/null
@@ -1,499 +0,0 @@
-<?php defined('SYSPATH') or die('No direct script access.');
-/**
- * Unit_Test library.
- *
- * $Id$
- *
- * @package Unit_Test
- * @author Kohana Team
- * @copyright (c) 2007-2008 Kohana Team
- * @license http://kohanaphp.com/license.html
- */
-class Unit_Test_Core {
-
- // The path(s) to recursively scan for tests
- protected $paths = array();
-
- // The results of all tests from every test class
- protected $results = array();
-
- // Statistics for every test class
- protected $stats = array();
-
- /**
- * Sets the test path(s), runs the tests inside and stores the results.
- *
- * @param array test path(s)
- * @param string filter (regular expression)
- * @return void
- */
- public function __construct($extra_paths=array(), $filter=null)
- {
- // Merge possible default test path(s) from config with the rest
- $paths = array_merge($extra_paths, Kohana::config('unit_test.paths', FALSE, FALSE));
-
- // Normalize all test paths
- foreach ($paths as $path)
- {
- $path = str_replace('\\', '/', realpath((string) $path));
- }
-
- // Take out duplicate test paths after normalization
- $this->paths = array_unique($paths);
-
- // Loop over each given test path
- foreach ($this->paths as $path)
- {
- // Validate test path
- if ( ! is_dir($path))
- throw new Kohana_Exception('unit_test.invalid_test_path', $path);
-
- // Recursively iterate over each file in the test path
- foreach
- (
- new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_PATHNAME))
- as $path => $file
- )
- {
- // Normalize path
- $path = str_replace('\\', '/', $path);
-
- // Skip files without "_Test" suffix
- if ( ! $file->isFile() OR substr($path, -9) !== '_Test'.EXT)
- continue;
-
- // The class name should be the same as the file name
- $class = substr($path, strrpos($path, '/') + 1, -(strlen(EXT)));
-
- // Skip hidden files
- if (substr($class, 0, 1) === '.')
- continue;
-
- // Check for duplicate test class name
- if (class_exists($class, FALSE))
- throw new Kohana_Exception('unit_test.duplicate_test_class', $class, $path);
-
- // Include the test class
- include_once $path;
-
- // Check whether the test class has been found and loaded
- if ( ! class_exists($class, FALSE))
- throw new Kohana_Exception('unit_test.test_class_not_found', $class, $path);
-
- // Reverse-engineer Test class
- $reflector = new ReflectionClass($class);
-
- // Test classes must extend Unit_Test_Case
- if ( ! $reflector->isSubclassOf(new ReflectionClass('Unit_Test_Case')))
- throw new Kohana_Exception('unit_test.test_class_extends', $class);
-
- // Skip disabled Tests
- if ($reflector->getConstant('DISABLED') === TRUE)
- continue;
-
- // Initialize setup and teardown method triggers
- $setup = $teardown = FALSE;
-
- // Look for valid setup and teardown methods
- foreach (array('setup', 'teardown') as $method_name)
- {
- if ($reflector->hasMethod($method_name))
- {
- $method = new ReflectionMethod($class, $method_name);
- $$method_name = ($method->isPublic() AND ! $method->isStatic() AND $method->getNumberOfRequiredParameters() === 0);
- }
- }
-
- // Initialize test class results and stats
- $this->results[$class] = array();
- $this->stats[$class] = array
- (
- 'passed' => 0,
- 'failed' => 0,
- 'errors' => 0,
- 'total' => 0,
- 'score' => 0,
- );
-
- // Loop through all the class methods
- foreach ($reflector->getMethods() as $method)
- {
- // Skip invalid test methods
- if ( ! $method->isPublic() OR $method->isStatic() OR $method->getNumberOfRequiredParameters() !== 0)
- continue;
-
- if ($filter && !preg_match("/$filter/i", "$class::{$method->getName()}")) {
- continue;
- }
-
- // Test methods should be suffixed with "_test"
- if (substr($method_name = $method->getName(), -5) !== '_test')
- continue;
-
- // Instantiate Test class
- $object = new $class;
-
- try
- {
- // Run setup method
- if ($setup === TRUE)
- {
- $object->setup();
- }
-
- $e = null;
- try {
-
- // Run the actual test
- $object->$method_name();
- } catch (Exception $e) { }
-
- // Run teardown method
- if ($teardown === TRUE)
- {
- $object->teardown();
- }
-
- if ($e) {
- throw $e;
- }
-
-
- $this->stats[$class]['total']++;
-
- // Test passed
- $this->results[$class][$method_name] = TRUE;
- $this->stats[$class]['passed']++;
-
- }
- catch (Kohana_Unit_Test_Exception $e)
- {
- $this->stats[$class]['total']++;
- // Test failed
- $this->results[$class][$method_name] = $e;
- $this->stats[$class]['failed']++;
- }
- catch (Exception $e)
- {
- $this->stats[$class]['total']++;
-
- // Test error
- $this->results[$class][$method_name] = $e;
- $this->stats[$class]['errors']++;
- }
-
- // Calculate score
- $this->stats[$class]['score'] = $this->stats[$class]['passed'] * 100 / $this->stats[$class]['total'];
-
- // Cleanup
- unset($object);
- }
-
- if ($filter && $this->stats[$class]['total'] == 0) {
- unset($this->results[$class]);
- unset($this->stats[$class]);
- }
- }
- }
- }
-
- /**
- * Generates nice test results.
- *
- * @param boolean hide passed tests from the report
- * @return string rendered test results html
- */
- public function report($hide_passed = NULL)
- {
- // No tests found
- if (empty($this->results))
- return Kohana::lang('unit_test.no_tests_found');
-
- // Hide passed tests from the report?
- $hide_passed = (bool) (($hide_passed !== NULL) ? $hide_passed : Kohana::config('unit_test.hide_passed', FALSE, FALSE));
-
- // Render unit_test report
- return View::factory('kohana_unit_test')
- ->set('results', $this->results)
- ->set('stats', $this->stats)
- ->set('hide_passed', $hide_passed)
- ->render();
- }
-
- /**
- * Magically convert this object to a string.
- *
- * @return string test report
- */
- public function __toString()
- {
- return $this->report();
- }
-
- /**
- * Magically gets a Unit_Test property.
- *
- * @param string property name
- * @return mixed variable value if the property is found
- * @return void if the property is not found
- */
- public function __get($key)
- {
- if (isset($this->$key))
- return $this->$key;
- }
-
-} // End Unit_Test_Core
-
-
-abstract class Unit_Test_Case {
-
- public function assert_true($value, $debug = NULL)
- {
- if ($value != TRUE)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_true', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_true_strict($value, $debug = NULL)
- {
- if ($value !== TRUE)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_true_strict', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_false($value, $debug = NULL)
- {
- if ($value != FALSE)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_false', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_false_strict($value, $debug = NULL)
- {
- if ($value !== FALSE)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_false_strict', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_equal($expected, $actual, $debug = NULL)
- {
- if ($expected != $actual)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_equal', gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_not_equal($expected, $actual, $debug = NULL)
- {
- if ($expected == $actual)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_equal', gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_same($expected, $actual, $debug = NULL)
- {
- if ($expected !== $actual)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_same', gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_not_same($expected, $actual, $debug = NULL)
- {
- if ($expected === $actual)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_same', gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_boolean($value, $debug = NULL)
- {
- if ( ! is_bool($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_boolean', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_not_boolean($value, $debug = NULL)
- {
- if (is_bool($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_boolean', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_integer($value, $debug = NULL)
- {
- if ( ! is_int($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_integer', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_not_integer($value, $debug = NULL)
- {
- if (is_int($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_integer', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_float($value, $debug = NULL)
- {
- if ( ! is_float($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_float', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_not_float($value, $debug = NULL)
- {
- if (is_float($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_float', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_array($value, $debug = NULL)
- {
- if ( ! is_array($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_array', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_array_key($key, $array, $debug = NULL)
- {
- if ( ! array_key_exists($key, $array)) {
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_array_key', gettype($key), var_export($key, TRUE)), $debug);
- }
-
- return $this;
- }
-
- public function assert_in_array($value, $array, $debug = NULL)
- {
- if ( ! in_array($value, $array)) {
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_in_array', gettype($value), var_export($value, TRUE)), $debug);
- }
-
- return $this;
- }
-
- public function assert_not_array($value, $debug = NULL)
- {
- if (is_array($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_array', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_object($value, $debug = NULL)
- {
- if ( ! is_object($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_object', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_not_object($value, $debug = NULL)
- {
- if (is_object($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_object', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_null($value, $debug = NULL)
- {
- if ($value !== NULL)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_null', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_not_null($value, $debug = NULL)
- {
- if ($value === NULL)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_null', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_empty($value, $debug = NULL)
- {
- if ( ! empty($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_empty', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_not_empty($value, $debug = NULL)
- {
- if (empty($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_empty', gettype($value), var_export($value, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_pattern($value, $regex, $debug = NULL)
- {
- if ( ! is_string($value) OR ! is_string($regex) OR ! preg_match($regex, $value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_pattern', var_export($value, TRUE), var_export($regex, TRUE)), $debug);
-
- return $this;
- }
-
- public function assert_not_pattern($value, $regex, $debug = NULL)
- {
- if ( ! is_string($value) OR ! is_string($regex) OR preg_match($regex, $value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_pattern', var_export($value, TRUE), var_export($regex, TRUE)), $debug);
-
- return $this;
- }
-
-} // End Unit_Test_Case
-
-
-class Kohana_Unit_Test_Exception extends Exception {
-
- protected $debug = NULL;
-
- /**
- * Sets exception message and debug info.
- *
- * @param string message
- * @param mixed debug info
- * @return void
- */
- public function __construct($message, $debug = NULL)
- {
- // Failure message
- parent::__construct((string) $message);
-
- // Extra user-defined debug info
- $this->debug = $debug;
-
- // Overwrite failure location
- $trace = $this->getTrace();
- $this->file = $trace[0]['file'];
- $this->line = $trace[0]['line'];
- }
-
- /**
- * Returns the user-defined debug info
- *
- * @return mixed debug property
- */
- public function getDebug()
- {
- return $this->debug;
- }
-
-} // End Kohana_Unit_Test_Exception