From ba2430b5778b5b2414b94b818354fa1ff7cfd0db Mon Sep 17 00:00:00 2001 From: Pascal Kriete Date: Wed, 20 Apr 2011 21:44:13 -0400 Subject: Adding tests directory and initial implemenation draft. --- tests/readme.txt | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 tests/readme.txt (limited to 'tests') diff --git a/tests/readme.txt b/tests/readme.txt new file mode 100644 index 000000000..eaad2c480 --- /dev/null +++ b/tests/readme.txt @@ -0,0 +1,113 @@ +# Do not merge to default until this is blank # + +- Clean up naming conventions +- Figure out config stuff +- Figure out database testing + + + +# -------------- CodeIgniter Testing (4/20/2011) -------------- # + + +# Introduction: + +This is the preliminary CodeIgniter testing documentation. It +will cover both internal as well as external APIs and the reasoning +behind their implemenation, where appropriate. As with all CodeIgniter +documentation, this file should maintain a mostly human readable +format to facilitate clean api design. [see http://arrenbrecht.ch/testing/] + +*FIRST PUBLIC DRAFT: EVERYTHING IS SUBJECT TO CHANGE* + +# Test Suites: + +CodeIgniter bootstraps a request very directly, with very flat class +hierarchy. As a result, there is no main CodeIgniter class until the +controller is instantiated. + +This has forced the core classes to be relatively decoupled, which is +a good thing. However, it makes that portion of code relatively hard +to test. + +Right now that means we'll probably have two core test suites, along +with a base for application and package tests. That gives us: + +1. Bootstrap Test - test common.php and sanity check codeigniter.php [in planning] +2. System Test - test core components in relative isolation [in development] +3. Application Test - bootstrapping for application/tests [not started] +4. Package Test - bootstrapping for /tests [not started] + + +## 1. Bootstrap Test + +Testing common.php should be pretty simple. Include the file, and test the +functions. May require some tweaking so that we can grab the statics from all +methods (see is_loaded()). Testing the actual CodeIgniter.php file will most +likely be an output test for the default view, with some object checking after +the file runs. Needs consideration. + + +## 2. System Test + +Testing the core system relies on being able to isolate the core components +as much as possible. A few of them access other core classes as globals. These +should be mocked up and easy to manipulate. + +All functions in common.php should be a minimal implementation, or and mapped +to a method in the test's parent class to gives us full control of their output. + + +### CodeIgniterTestCase Documentation + + +Test cases should extend CodeIgniterTestCase. This internally +extends PHPUnit_Framework_TestCase, so you have access to all +of your usual PHPUnit methods. + +We need to provide a simple way to modify the globals and the +common function output. We also need to be able to mock up +the super object as we please. + +Current API is *not stable*. Names and implementations will change. + +$this->ci_instance($obj) + set the object to use as the "super object", in a lot + of cases this will be a simple stdClass with the attributes + you need it to have. + +$this->ci_set_instance_var($name, $val) + add an attribute to the super object. This is useful if you + set up a simple instance in setUp and then need to add different + class mockups to your super object. + +$this->ci_core_class($name) + Get the _class name_ of a core class, so that you can instantiate + it. The variable is returned by reference and is tied to the correct + $GLOBALS key. For example: + $cfg =& $this->ci_core_class('cfg'); // returns 'CI_Config' + $cfg = new $cfg; // instantiates config and overwrites the CFG global + +$this->ci_set_core_class($name, $obj); + An alternative way to set one of the core globals. + + +## 3. Application Test: + +Not sure yet, needs to handle: +- Libraries +- Helpers +- Models +- MY_* files +- Controllers (uh...?) +- Views? (watir, selenium, cucumber?) + +- Database Testing + + +## 4. Package Test: + +I don't have a clue how this will work. + +Needs to be able to handle packages +that are used multiple times within the application (i.e. EE/Pyro modules) +as well as packages that are used by multiple applications (library distributions) \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 69c97a71476e4eaa6c629022fcd4ec7f36d4ec0d Mon Sep 17 00:00:00 2001 From: Pascal Kriete Date: Wed, 20 Apr 2011 21:44:54 -0400 Subject: Adding early bootstrap ideas for core test suite --- tests/Bootstrap.php | 21 ++++ tests/codeigniter/Setup_test.php | 13 +++ tests/codeigniter/core/Config_test.php | 107 ++++++++++++++++++ tests/codeigniter/core/Lang_test.php | 31 +++++ tests/codeigniter/core/Loader_test.php | 144 ++++++++++++++++++++++++ tests/codeigniter/helpers/Array_helper_test.php | 49 ++++++++ tests/codeigniter/libraries/Parser_test.php | 125 ++++++++++++++++++++ tests/lib/ci_testcase.php | 110 ++++++++++++++++++ tests/lib/common.php | 120 ++++++++++++++++++++ tests/phpunit.xml | 17 +++ 10 files changed, 737 insertions(+) create mode 100644 tests/Bootstrap.php create mode 100644 tests/codeigniter/Setup_test.php create mode 100644 tests/codeigniter/core/Config_test.php create mode 100644 tests/codeigniter/core/Lang_test.php create mode 100644 tests/codeigniter/core/Loader_test.php create mode 100644 tests/codeigniter/helpers/Array_helper_test.php create mode 100644 tests/codeigniter/libraries/Parser_test.php create mode 100644 tests/lib/ci_testcase.php create mode 100644 tests/lib/common.php create mode 100644 tests/phpunit.xml (limited to 'tests') diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php new file mode 100644 index 000000000..ca63ff788 --- /dev/null +++ b/tests/Bootstrap.php @@ -0,0 +1,21 @@ +markTestIncomplete('not implemented'); + // ensure that our bootstrapped test environment + // is a good representation of an isolated CI install + //die('here'); + } + +} \ No newline at end of file diff --git a/tests/codeigniter/core/Config_test.php b/tests/codeigniter/core/Config_test.php new file mode 100644 index 000000000..628fc630b --- /dev/null +++ b/tests/codeigniter/core/Config_test.php @@ -0,0 +1,107 @@ +ci_core_class('cfg'); + + $stub = $this->getMock($cls, NULL, array(), '', FALSE); + + //I would prefer this, but it currently + // does not work as when you try to pass + // null to setMethods it fails on an internal + // function call that expects an array =( + /* + $stub = $this->getMockBuilder($cls) + ->disableOriginalConstructor() + ->setMethods(null) + ->getMock(); + */ + + + // set predictable config values + $stub->config = array( + 'index_page' => 'index.php', + 'base_url' => 'http://example.com/', + 'subclass_prefix' => 'MY_' + ); + + $this->config = $stub; + } + + // -------------------------------------------------------------------- + + public function testItem() + { + $this->assertEquals('http://example.com/', $this->config->item('base_url')); + + // Bad Config value + $this->assertFalse($this->config->item('no_good_item')); + + // Index + $this->assertFalse($this->config->item('no_good_item', 'bad_index')); + $this->assertFalse($this->config->item('no_good_item', 'default')); + } + + // -------------------------------------------------------------------- + + public function testSetItem() + { + $this->assertFalse($this->config->item('not_yet_set')); + + $this->config->set_item('not_yet_set', 'is set'); + + $this->assertEquals('is set', $this->config->item('not_yet_set')); + } + + // -------------------------------------------------------------------- + + public function testSlashItem() + { + // Bad Config value + $this->assertFalse($this->config->slash_item('no_good_item')); + + $this->assertEquals('http://example.com/', $this->config->slash_item('base_url')); + + $this->assertEquals('MY_/', $this->config->slash_item('subclass_prefix')); + } + + // -------------------------------------------------------------------- + + public function testSiteUrl() + { + $this->assertEquals('http://example.com/index.php', $this->config->site_url()); + + $base_url = $this->config->item('base_url'); + + $this->config->set_item('base_url', ''); + + $q_string = $this->config->item('enable_query_strings'); + + $this->config->set_item('enable_query_strings', FALSE); + + $this->assertEquals('/index.php/test', $this->config->site_url('test')); + $this->assertEquals('/index.php/test/1', $this->config->site_url(array('test', '1'))); + + $this->config->set_item('enable_query_strings', TRUE); + + $this->assertEquals('/index.php?test', $this->config->site_url('test')); + $this->assertEquals('/index.php?0=test&1=1', $this->config->site_url(array('test', '1'))); + + $this->config->set_item('base_url', $base_url); + + $this->assertEquals('http://example.com/index.php?test', $this->config->site_url('test')); + + // back to home base + $this->config->set_item('enable_query_strings', $q_string); + } + + // -------------------------------------------------------------------- + + public function testSystemUrl() + { + $this->assertEquals('http://example.com/system/', $this->config->system_url()); + } + +} \ No newline at end of file diff --git a/tests/codeigniter/core/Lang_test.php b/tests/codeigniter/core/Lang_test.php new file mode 100644 index 000000000..82e279a52 --- /dev/null +++ b/tests/codeigniter/core/Lang_test.php @@ -0,0 +1,31 @@ +ci_core_class('lang'); + $this->lang = new $cls; + } + + // -------------------------------------------------------------------- + + public function testLoad() + { + // get_config needs work + $this->markTestIncomplete('get_config needs work'); + //$this->assertTrue($this->lang->load('profiler')); + } + + // -------------------------------------------------------------------- + + public function testLine() + { + $this->markTestIncomplete('get_config needs work'); + + $this->assertEquals('URI STRING', $this->lang->line('profiler_uri_string')); + } + +} \ No newline at end of file diff --git a/tests/codeigniter/core/Loader_test.php b/tests/codeigniter/core/Loader_test.php new file mode 100644 index 000000000..fd9c63216 --- /dev/null +++ b/tests/codeigniter/core/Loader_test.php @@ -0,0 +1,144 @@ +ci_core_class('load'); + $this->_loader = new $cls; + + // mock up a ci instance + $this->ci_obj = new StdClass; + + // Fix get_instance() + CodeIgniterTestCase::$test_instance =& $this; + $this->ci_instance($this->ci_obj); + } + + // -------------------------------------------------------------------- + + public function testLibrary() + { + // Mock up a config object until we + // figure out how to test the library configs + $config = $this->getMock('CI_Config', NULL, array(), '', FALSE); + $config->expects($this->any()) + ->method('load') + ->will($this->returnValue(TRUE)); + + // Add the mock to our stdClass + $this->ci_set_instance_var('config', $config); + + // Test loading as an array. + $this->assertEquals(NULL, $this->_loader->library(array('table'))); + $this->assertTrue(class_exists('CI_Table'), 'Table class exists'); + $this->assertAttributeInstanceOf('CI_Table', 'table', $this->ci_obj); + + // Test no lib given + $this->assertEquals(FALSE, $this->_loader->library()); + + // Test a string given to params + $this->assertEquals(NULL, $this->_loader->library('table', ' ')); + } + + // -------------------------------------------------------------------- + + public function testModels() + { + // Test loading as an array. + $this->assertEquals(NULL, $this->_loader->model(array('foobar'))); + + // Test no model given + $this->assertEquals(FALSE, $this->_loader->model('')); + + // Test a string given to params + $this->assertEquals(NULL, $this->_loader->model('foobar', ' ')); + } + + // -------------------------------------------------------------------- + + public function testDatabase() + { + $this->assertEquals(NULL, $this->_loader->database()); + $this->assertEquals(NULL, $this->_loader->dbutil()); + } + + // -------------------------------------------------------------------- + + public function testView() + { + // I'm not entirely sure this is the proper way to handle this. + // So, let's revist it, m'kay? + try + { + $this->_loader->view('foo'); + } + catch (Exception $expected) + { + return; + } + } + + // -------------------------------------------------------------------- + + public function testFile() + { + // I'm not entirely sure this is the proper way to handle this. + // So, let's revist it, m'kay? + try + { + $this->_loader->file('foo'); + } + catch (Exception $expected) + { + return; + } + } + + // -------------------------------------------------------------------- + + public function testVars() + { + $vars = array( + 'foo' => 'bar' + ); + + $this->assertEquals(NULL, $this->_loader->vars($vars)); + $this->assertEquals(NULL, $this->_loader->vars('foo', 'bar')); + } + + // -------------------------------------------------------------------- + + public function testHelper() + { + $this->assertEquals(NULL, $this->_loader->helper('array')); + $this->assertEquals(NULL, $this->_loader->helper('bad')); + } + + // -------------------------------------------------------------------- + + public function testHelpers() + { + $this->assertEquals(NULL, $this->_loader->helpers(array('file', 'array', 'string'))); + } + + // -------------------------------------------------------------------- + + // public function testLanguage() + // { + // $this->assertEquals(NULL, $this->_loader->language('test')); + // } + + // -------------------------------------------------------------------- + + public function testLoadConfig() + { + $this->assertEquals(NULL, $this->_loader->config('config', FALSE, TRUE)); + } + + + +} \ No newline at end of file diff --git a/tests/codeigniter/helpers/Array_helper_test.php b/tests/codeigniter/helpers/Array_helper_test.php new file mode 100644 index 000000000..bbefdb49d --- /dev/null +++ b/tests/codeigniter/helpers/Array_helper_test.php @@ -0,0 +1,49 @@ +my_array = array( + 'foo' => 'bar', + 'sally' => 'jim', + 'maggie' => 'bessie', + 'herb' => 'cook' + ); + } + + // ------------------------------------------------------------------------ + + public function testElementWithExistingItem() + { + $this->assertEquals(FALSE, element('testing', $this->my_array)); + + $this->assertEquals('not set', element('testing', $this->my_array, 'not set')); + + $this->assertEquals('bar', element('foo', $this->my_array)); + } + + // ------------------------------------------------------------------------ + + public function testRandomElement() + { + // Send a string, not an array to random_element + $this->assertEquals('my string', random_element('my string')); + + // Test sending an array + $this->assertEquals(TRUE, in_array(random_element($this->my_array), $this->my_array)); + } + + // ------------------------------------------------------------------------ + + public function testElements() + { + $this->assertEquals(TRUE, is_array(elements('test', $this->my_array))); + $this->assertEquals(TRUE, is_array(elements('foo', $this->my_array))); + } + +} \ No newline at end of file diff --git a/tests/codeigniter/libraries/Parser_test.php b/tests/codeigniter/libraries/Parser_test.php new file mode 100644 index 000000000..a8de108f0 --- /dev/null +++ b/tests/codeigniter/libraries/Parser_test.php @@ -0,0 +1,125 @@ +load->library('parser'); + self::$cls = get_class($CI->parser); + } + + // -------------------------------------------------------------------- + + public function setUp() + { + $cls = self::$cls; + $this->parser = new $cls; + } + // -------------------------------------------------------------------- + + public function testSetDelimiters() + { + // Make sure default delimiters are there + $this->assertEquals('{', $this->parser->l_delim); + $this->assertEquals('}', $this->parser->r_delim); + + // Change them to square brackets + $this->parser->set_delimiters('[', ']'); + + // Make sure they changed + $this->assertEquals('[', $this->parser->l_delim); + $this->assertEquals(']', $this->parser->r_delim); + + // Reset them + $this->parser->set_delimiters(); + + // Make sure default delimiters are there + $this->assertEquals('{', $this->parser->l_delim); + $this->assertEquals('}', $this->parser->r_delim); + } + + // -------------------------------------------------------------------- + + public function testParseSimpleString() + { + $data = array( + 'title' => 'Page Title', + 'body' => 'Lorem ipsum dolor sit amet.' + ); + + $template = "{title}\n{body}"; + + $result = implode("\n", $data); + + $this->assertEquals($result, $this->parser->parse_string($template, $data, TRUE)); + } + + // -------------------------------------------------------------------- + + public function testParse() + { + $this->_parse_no_template(); + $this->_parse_var_pair(); + $this->_mismatched_var_pair(); + } + + // -------------------------------------------------------------------- + + private function _parse_no_template() + { + $this->assertFalse($this->parser->parse_string('', '', TRUE)); + } + + // -------------------------------------------------------------------- + + private function _parse_var_pair() + { + $data = array( + 'title' => 'Super Heroes', + 'powers' => array( + array( + 'invisibility' => 'yes', + 'flying' => 'no'), + ) + ); + + $template = "{title}\n{powers}{invisibility}\n{flying}{/powers}"; + + $result = "Super Heroes\nyes\nno"; + + $this->assertEquals($result, $this->parser->parse_string($template, $data, TRUE)); + } + + // -------------------------------------------------------------------- + + private function _mismatched_var_pair() + { + $data = array( + 'title' => 'Super Heroes', + 'powers' => array( + array( + 'invisibility' => 'yes', + 'flying' => 'no'), + ) + ); + + $template = "{title}\n{powers}{invisibility}\n{flying}"; + + $result = "Super Heroes\n{powers}{invisibility}\n{flying}"; + + $this->assertEquals($result, $this->parser->parse_string($template, $data, TRUE)); + } + + // -------------------------------------------------------------------- + + // -------------------------------------------------------------------- + + // -------------------------------------------------------------------- + +} \ No newline at end of file diff --git a/tests/lib/ci_testcase.php b/tests/lib/ci_testcase.php new file mode 100644 index 000000000..a8a272db2 --- /dev/null +++ b/tests/lib/ci_testcase.php @@ -0,0 +1,110 @@ + 'bm', + 'config' => 'cfg', + 'hooks' => 'ext', + 'utf8' => 'uni', + 'router' => 'rtr', + 'output' => 'out', + 'security' => 'sec', + 'input' => 'in', + 'lang' => 'lang', + + // @todo the loader is an edge case + 'loader' => 'load' + ); + + function __construct() + { + parent::__construct(); + } + + // -------------------------------------------------------------------- + + // Change what get_instance returns + function ci_instance($obj) + { + $this->ci_instance = $obj; + } + + // -------------------------------------------------------------------- + + function ci_set_instance_var($name, $obj) + { + $this->ci_instance->$name =& $obj; + } + + // -------------------------------------------------------------------- + + // Set a class to a mock before it is loaded + function ci_library($name) + { + + } + + // -------------------------------------------------------------------- + + /** + * Grab a core class + * + * Loads the correct core class without extensions + * and returns a reference to the class name in the + * globals array with the correct key. This way the + * test can modify the variable it assigns to and + * still maintain the global. + */ + function &ci_core_class($name) + { + $name = strtolower($name); + + if (isset(self::$global_map[$name])) + { + $class_name = ucfirst($name); + $global_name = self::$global_map[$name]; + } + elseif (in_array($name, self::$global_map)) + { + $class_name = ucfirst(array_search($name, self::$global_map)); + $global_name = $name; + } + else + { + throw new Exception('Not a valid core class.'); + } + + if ( ! class_exists('CI_'.$class_name)) + { + require_once BASEPATH.'core/'.$class_name.'.php'; + } + + $GLOBALS[strtoupper($global_name)] = 'CI_'.$class_name; + return $GLOBALS[strtoupper($global_name)]; + } + + // -------------------------------------------------------------------- + + // convenience function for global mocks + function ci_set_core_class($name, $obj) + { + $orig =& $this->ci_core_class($name); + $orig = $obj; + } + + // -------------------------------------------------------------------- + + static function ci_config($item) + { + return ''; + } +} + +// EOF \ No newline at end of file diff --git a/tests/lib/common.php b/tests/lib/common.php new file mode 100644 index 000000000..482721a9a --- /dev/null +++ b/tests/lib/common.php @@ -0,0 +1,120 @@ +ci_instance; +} + +// Config Stuff | @todo High priority! +// -------------------------------------------------------------------- + +function get_config() { die('implement me'); } + +function config_item($item) +{ + return CodeIgniterTestCase::ci_config($item); +} + +// -------------------------------------------------------------------- + +function load_class($class, $directory = 'libraries', $prefix = 'CI_') +{ + if ($directory != 'core' OR $prefix != 'CI_') + { + throw new Exception('Not Implemented: Non-core load_class()'); + } + + $test = CodeIgniterTestCase::$test_instance; + + $obj =& $test->ci_core_class($class); + + if (is_string($obj)) + { + throw new Exception('Bad Isolation: Use ci_set_core_class to set '.$class.''); + } + + return $obj; +} + +// This is sort of meh. Should probably be mocked up with +// controllable output, so that we can test some of our +// security code. The function itself will be tested in the +// bootstrap testsuite. +// -------------------------------------------------------------------- + +function remove_invisible_characters($str, $url_encoded = TRUE) +{ + $non_displayables = array(); + + // every control character except newline (dec 10) + // carriage return (dec 13), and horizontal tab (dec 09) + + if ($url_encoded) + { + $non_displayables[] = '/%0[0-8bcef]/'; // url encoded 00-08, 11, 12, 14, 15 + $non_displayables[] = '/%1[0-9a-f]/'; // url encoded 16-31 + } + + $non_displayables[] = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S'; // 00-08, 11, 12, 14-31, 127 + + do + { + $str = preg_replace($non_displayables, '', $str, -1, $count); + } + while ($count); + + return $str; +} + + +// Clean up error messages +// -------------------------------------------------------------------- + +function show_error($message, $status_code = 500, $heading = 'An Error Was Encountered') +{ + throw new Exception('CI Error: '.$message); +} + +function show_404($page = '', $log_error = TRUE) +{ + throw new Exception('CI Error: 404'); +} + +function _exception_handler($severity, $message, $filepath, $line) +{ + throw new Exception('CI Exception: '.$message.' | '.$filepath.' | '.$line); +} + + +// We assume a few things about our environment ... +// -------------------------------------------------------------------- + +function is_php($version = '5.0.0') +{ + return ! (version_compare(PHP_VERSION, $version) < 0); +} + +function is_really_writable($file) +{ + return is_writable($file); +} + +function is_loaded() +{ + throw new Exception('Bad Isolation: mock up environment'); +} + +function log_message($level = 'error', $message, $php_error = FALSE) +{ + return TRUE; +} + +function set_status_header($code = 200, $text = '') +{ + return TRUE; +} + +// EOF \ No newline at end of file diff --git a/tests/phpunit.xml b/tests/phpunit.xml new file mode 100644 index 000000000..9e5e10d59 --- /dev/null +++ b/tests/phpunit.xml @@ -0,0 +1,17 @@ + + + + + + codeigniter/Setup_test.php + codeigniter/core + + + + + \ No newline at end of file -- cgit v1.2.3-24-g4f1b From c5d93cb3d4d8909507cbed548620e58d26c7c4bd Mon Sep 17 00:00:00 2001 From: Pascal Kriete Date: Thu, 21 Apr 2011 00:58:51 -0400 Subject: Removing some lefover code form experimenting with process isolation. --- tests/Bootstrap.php | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'tests') diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index ca63ff788..5a5eb6458 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -3,18 +3,10 @@ ini_set('display_errors', 1); error_reporting(E_ALL | E_STRICT); -if ( ! defined('PROJECT_BASE')) -{ - define('PROJECT_BASE', realpath(dirname(__FILE__).'/../').'/'); - - define('BASEPATH', PROJECT_BASE.'system/'); - define('APPPATH', PROJECT_BASE.'application/'); -} -// define('EXT', '.php'); - -// @todo provide a way to set various config options - +define('PROJECT_BASE', realpath(dirname(__FILE__).'/../').'/'); +define('BASEPATH', PROJECT_BASE.'system/'); +define('APPPATH', PROJECT_BASE.'application/'); // set up a highly controlled CI environment require_once './lib/common.php'; -- cgit v1.2.3-24-g4f1b From fe372e30a8f05ec4a77dc9a5ea2ec471b3488bd3 Mon Sep 17 00:00:00 2001 From: Pascal Kriete Date: Thu, 21 Apr 2011 00:59:45 -0400 Subject: Fixing up the scope soup, and adding a way to set core config items. --- tests/lib/ci_testcase.php | 74 ++++++++++++++++++++++++++++++++++++++++++----- tests/lib/common.php | 18 ++++++++---- 2 files changed, 78 insertions(+), 14 deletions(-) (limited to 'tests') diff --git a/tests/lib/ci_testcase.php b/tests/lib/ci_testcase.php index a8a272db2..04216e2a8 100644 --- a/tests/lib/ci_testcase.php +++ b/tests/lib/ci_testcase.php @@ -4,10 +4,8 @@ // Need a way to change dependencies (core libs and laoded libs) // Need a way to set the CI class -class CodeIgniterTestCase extends PHPUnit_Framework_TestCase { +class CI_TestCase extends PHPUnit_Framework_TestCase { - public $ci_instance; - public static $test_instance; public static $global_map = array( 'benchmark' => 'bm', 'config' => 'cfg', @@ -23,23 +21,62 @@ class CodeIgniterTestCase extends PHPUnit_Framework_TestCase { 'loader' => 'load' ); - function __construct() + protected $ci_config = array(); + + protected $ci_instance; + protected static $ci_test_instance; + + + public function __construct() { parent::__construct(); } // -------------------------------------------------------------------- - // Change what get_instance returns - function ci_instance($obj) + /** + * Overwrite runBare + * + * PHPUnit instantiates the test classes before + * running them individually. So right before a test + * runs we set our instance. Normally this step would + * happen in setUp, but someone is bound to forget to + * call the parent method and debugging this is no fun. + */ + public function runBare() { + self::$ci_test_instance = $this; + parent::runBare(); + } + + // -------------------------------------------------------------------- + + public static function instance() + { + return self::$ci_test_instance; + } + + // -------------------------------------------------------------------- + + function ci_instance($obj = FALSE) + { + if ( ! is_object($obj)) + { + return $this->ci_instance; + } + $this->ci_instance = $obj; } // -------------------------------------------------------------------- - function ci_set_instance_var($name, $obj) + function ci_instance_var($name, $obj = FALSE) { + if ( ! is_object($obj)) + { + return $this->ci_instance->$name; + } + $this->ci_instance->$name =& $obj; } @@ -101,7 +138,28 @@ class CodeIgniterTestCase extends PHPUnit_Framework_TestCase { // -------------------------------------------------------------------- - static function ci_config($item) + function ci_set_config($key, $val = '') + { + if (is_array($key)) + { + $this->ci_config = $key; + } + else + { + $this->ci_config[$key] = $val; + } + } + + // -------------------------------------------------------------------- + + function ci_config_array() + { + return $this->ci_config; + } + + // -------------------------------------------------------------------- + + function ci_config_item($item) { return ''; } diff --git a/tests/lib/common.php b/tests/lib/common.php index 482721a9a..994e9bc22 100644 --- a/tests/lib/common.php +++ b/tests/lib/common.php @@ -4,18 +4,24 @@ function &get_instance() { - $test = CodeIgniterTestCase::$test_instance; - return $test->ci_instance; + $test = CI_TestCase::instance(); + $instance = $test->ci_instance(); + return $instance; } -// Config Stuff | @todo High priority! // -------------------------------------------------------------------- -function get_config() { die('implement me'); } +function &get_config() { + $test = CI_TestCase::instance(); + $config = $test->ci_config_array(); + + return $config; +} function config_item($item) { - return CodeIgniterTestCase::ci_config($item); + $test = CI_TestCase::instance(); + return $test->ci_config_item($item); } // -------------------------------------------------------------------- @@ -27,7 +33,7 @@ function load_class($class, $directory = 'libraries', $prefix = 'CI_') throw new Exception('Not Implemented: Non-core load_class()'); } - $test = CodeIgniterTestCase::$test_instance; + $test = CI_TestCase::instance(); $obj =& $test->ci_core_class($class); -- cgit v1.2.3-24-g4f1b From 10ba64f9b76a25a77182d72a0a09413ccba12770 Mon Sep 17 00:00:00 2001 From: Pascal Kriete Date: Thu, 21 Apr 2011 01:00:27 -0400 Subject: Renamed the main test class, fixing test cases. --- tests/codeigniter/core/Config_test.php | 26 ++++++-------------------- tests/codeigniter/core/Lang_test.php | 2 +- tests/codeigniter/core/Loader_test.php | 5 ++--- 3 files changed, 9 insertions(+), 24 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/core/Config_test.php b/tests/codeigniter/core/Config_test.php index 628fc630b..b04dd67fa 100644 --- a/tests/codeigniter/core/Config_test.php +++ b/tests/codeigniter/core/Config_test.php @@ -1,33 +1,19 @@ ci_core_class('cfg'); - - $stub = $this->getMock($cls, NULL, array(), '', FALSE); - - //I would prefer this, but it currently - // does not work as when you try to pass - // null to setMethods it fails on an internal - // function call that expects an array =( - /* - $stub = $this->getMockBuilder($cls) - ->disableOriginalConstructor() - ->setMethods(null) - ->getMock(); - */ - - + // set predictable config values - $stub->config = array( + $this->ci_set_config(array( 'index_page' => 'index.php', 'base_url' => 'http://example.com/', 'subclass_prefix' => 'MY_' - ); - - $this->config = $stub; + )); + + $this->config = new $cls; } // -------------------------------------------------------------------- diff --git a/tests/codeigniter/core/Lang_test.php b/tests/codeigniter/core/Lang_test.php index 82e279a52..f65b335b0 100644 --- a/tests/codeigniter/core/Lang_test.php +++ b/tests/codeigniter/core/Lang_test.php @@ -1,6 +1,6 @@ ci_obj = new StdClass; // Fix get_instance() - CodeIgniterTestCase::$test_instance =& $this; $this->ci_instance($this->ci_obj); } @@ -30,7 +29,7 @@ class Loader_test extends CodeIgniterTestCase { ->will($this->returnValue(TRUE)); // Add the mock to our stdClass - $this->ci_set_instance_var('config', $config); + $this->ci_instance_var('config', $config); // Test loading as an array. $this->assertEquals(NULL, $this->_loader->library(array('table'))); -- cgit v1.2.3-24-g4f1b From f5aee9d1532b175d2dbfbb66f56e8861f34cd861 Mon Sep 17 00:00:00 2001 From: Pascal Kriete Date: Thu, 21 Apr 2011 01:20:40 -0400 Subject: some basic bootstrap cleanup --- tests/Bootstrap.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index 5a5eb6458..94dafdce4 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -1,13 +1,20 @@ Date: Thu, 21 Apr 2011 01:21:27 -0400 Subject: a bit of shuffling around in CI_TestCase --- tests/lib/ci_testcase.php | 89 ++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 51 deletions(-) (limited to 'tests') diff --git a/tests/lib/ci_testcase.php b/tests/lib/ci_testcase.php index 04216e2a8..c8c6bc900 100644 --- a/tests/lib/ci_testcase.php +++ b/tests/lib/ci_testcase.php @@ -5,8 +5,12 @@ // Need a way to set the CI class class CI_TestCase extends PHPUnit_Framework_TestCase { + + protected $ci_config; + protected $ci_instance; + protected static $ci_test_instance; - public static $global_map = array( + private $global_map = array( 'benchmark' => 'bm', 'config' => 'cfg', 'hooks' => 'ext', @@ -21,39 +25,25 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { 'loader' => 'load' ); - protected $ci_config = array(); - - protected $ci_instance; - protected static $ci_test_instance; - - public function __construct() { parent::__construct(); + + $this->ci_config = array(); } // -------------------------------------------------------------------- - /** - * Overwrite runBare - * - * PHPUnit instantiates the test classes before - * running them individually. So right before a test - * runs we set our instance. Normally this step would - * happen in setUp, but someone is bound to forget to - * call the parent method and debugging this is no fun. - */ - public function runBare() - { - self::$ci_test_instance = $this; - parent::runBare(); - } - - // -------------------------------------------------------------------- - - public static function instance() + function ci_set_config($key, $val = '') { - return self::$ci_test_instance; + if (is_array($key)) + { + $this->ci_config = $key; + } + else + { + $this->ci_config[$key] = $val; + } } // -------------------------------------------------------------------- @@ -80,14 +70,6 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { $this->ci_instance->$name =& $obj; } - // -------------------------------------------------------------------- - - // Set a class to a mock before it is loaded - function ci_library($name) - { - - } - // -------------------------------------------------------------------- /** @@ -103,14 +85,14 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { { $name = strtolower($name); - if (isset(self::$global_map[$name])) + if (isset($this->global_map[$name])) { $class_name = ucfirst($name); - $global_name = self::$global_map[$name]; + $global_name = $this->global_map[$name]; } - elseif (in_array($name, self::$global_map)) + elseif (in_array($name, $this->global_map)) { - $class_name = ucfirst(array_search($name, self::$global_map)); + $class_name = ucfirst(array_search($name, $this->global_map)); $global_name = $name; } else @@ -136,32 +118,37 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { $orig = $obj; } + // -------------------------------------------------------------------- + // Internals // -------------------------------------------------------------------- - function ci_set_config($key, $val = '') + /** + * Overwrite runBare + * + * PHPUnit instantiates the test classes before + * running them individually. So right before a test + * runs we set our instance. Normally this step would + * happen in setUp, but someone is bound to forget to + * call the parent method and debugging this is no fun. + */ + public function runBare() { - if (is_array($key)) - { - $this->ci_config = $key; - } - else - { - $this->ci_config[$key] = $val; - } + self::$ci_test_instance = $this; + parent::runBare(); } // -------------------------------------------------------------------- - function ci_config_array() + public static function instance() { - return $this->ci_config; + return self::$ci_test_instance; } // -------------------------------------------------------------------- - function ci_config_item($item) + function ci_get_config() { - return ''; + return $this->ci_config; } } -- cgit v1.2.3-24-g4f1b From 88b296311090acdb84719148d3c722ca30bd3ed7 Mon Sep 17 00:00:00 2001 From: Pascal Kriete Date: Thu, 21 Apr 2011 01:21:55 -0400 Subject: Making config_item work again after I pulled it from CI_TestCase --- tests/lib/common.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/lib/common.php b/tests/lib/common.php index 994e9bc22..6d29eb0d6 100644 --- a/tests/lib/common.php +++ b/tests/lib/common.php @@ -13,15 +13,21 @@ function &get_instance() function &get_config() { $test = CI_TestCase::instance(); - $config = $test->ci_config_array(); + $config = $test->ci_get_config(); return $config; } function config_item($item) { - $test = CI_TestCase::instance(); - return $test->ci_config_item($item); + $config =& get_config(); + + if ( ! isset($config[$item])) + { + return FALSE; + } + + return $config[$item]; } // -------------------------------------------------------------------- -- cgit v1.2.3-24-g4f1b From 34bc0896ea283fefdba5213a67e6db6134b982b6 Mon Sep 17 00:00:00 2001 From: Pascal Kriete Date: Thu, 21 Apr 2011 01:22:23 -0400 Subject: Updating changes in the readme --- tests/readme.txt | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'tests') diff --git a/tests/readme.txt b/tests/readme.txt index eaad2c480..27871478b 100644 --- a/tests/readme.txt +++ b/tests/readme.txt @@ -57,12 +57,12 @@ All functions in common.php should be a minimal implementation, or and mapped to a method in the test's parent class to gives us full control of their output. -### CodeIgniterTestCase Documentation +### CI_TestCase Documentation -Test cases should extend CodeIgniterTestCase. This internally -extends PHPUnit_Framework_TestCase, so you have access to all -of your usual PHPUnit methods. +Test cases should extend CI_TestCase. This internally extends +PHPUnit_Framework_TestCase, so you have access to all of your +usual PHPUnit methods. We need to provide a simple way to modify the globals and the common function output. We also need to be able to mock up @@ -70,12 +70,16 @@ the super object as we please. Current API is *not stable*. Names and implementations will change. +$this->ci_set_config($key, $val) + Set the global config variables. If key is an array, it will + replace the entire config array. They are _not_ merged. + $this->ci_instance($obj) set the object to use as the "super object", in a lot of cases this will be a simple stdClass with the attributes - you need it to have. + you need it to have. If no parameter, will return the instance. -$this->ci_set_instance_var($name, $val) +$this->ci_instance_var($name, $val) add an attribute to the super object. This is useful if you set up a simple instance in setUp and then need to add different class mockups to your super object. @@ -87,9 +91,18 @@ $this->ci_core_class($name) $cfg =& $this->ci_core_class('cfg'); // returns 'CI_Config' $cfg = new $cfg; // instantiates config and overwrites the CFG global -$this->ci_set_core_class($name, $obj); +$this->ci_set_core_class($name, $obj) An alternative way to set one of the core globals. +$this->ci_get_config() __internal__ + Returns the global config array. Internal as you shouldn't need to + call this (you're setting it, after all). Used internally to make + CI's get_config() work. + +CI_TestCase::instance() __internal__ + Returns an instance of the current test case. We force phpunit to + run with backup-globals enabled, so this will always be the instance + of the currently running test class. ## 3. Application Test: -- cgit v1.2.3-24-g4f1b From 25a6690724751d1937a8adc867ca630830b2eb6f Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 09:24:16 -0500 Subject: Updating requirements for unit tests in readme.txt --- tests/readme.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'tests') diff --git a/tests/readme.txt b/tests/readme.txt index 27871478b..b1e9b732f 100644 --- a/tests/readme.txt +++ b/tests/readme.txt @@ -19,6 +19,17 @@ format to facilitate clean api design. [see http://arrenbrecht.ch/testing/] *FIRST PUBLIC DRAFT: EVERYTHING IS SUBJECT TO CHANGE* +# Requirements + +1. PHP Unit + - pear channel-discover pear.phpunit.de + - pear install phpunit/PHPUnit + +2. vfsStream + - pear channel-discover pear.php-tools.net + - pear install pat/vfsStream-alpha + + # Test Suites: CodeIgniter bootstraps a request very directly, with very flat class -- cgit v1.2.3-24-g4f1b From 8da69039f6d855eb4f88de73702155e6899d2d23 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 11:28:27 -0500 Subject: Working on tests in the loader. Have generic model mocking working with vfsStream. --- tests/codeigniter/core/Loader_test.php | 134 ++++++++++++++++++++++----------- tests/lib/ci_testcase.php | 4 +- 2 files changed, 92 insertions(+), 46 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/core/Loader_test.php b/tests/codeigniter/core/Loader_test.php index c7085c439..2aa1b8cb9 100644 --- a/tests/codeigniter/core/Loader_test.php +++ b/tests/codeigniter/core/Loader_test.php @@ -1,5 +1,38 @@ models_dir = vfsStream::newDirectory('models')->at(vfsStreamWrapper::getRoot()); + $this->libs_dir = vfsStream::newDirectory('libraries')->at(vfsStreamWrapper::getRoot()); + $this->helpers_dir = vfsStream::newDirectory('helpers')->at(vfsStreamWrapper::getRoot()); + $this->views_dir = vfsStream::newDirectory('views')->at(vfsStreamWrapper::getRoot()); + + $this->_ci_ob_level = ob_get_level(); + $this->_ci_library_paths = array(vfsStream::url('application').'/', BASEPATH); + $this->_ci_helper_paths = array(vfsStream::url('application').'/', BASEPATH); + $this->_ci_model_paths = array(vfsStream::url('application').'/'); + $this->_ci_view_paths = array(vfsStream::url('application').'/views/' => TRUE); + } +} + + class Loader_test extends CI_TestCase { private $ci_obj; @@ -7,8 +40,7 @@ class Loader_test extends CI_TestCase { public function setUp() { // Instantiate a new loader - $cls = $this->ci_core_class('load'); - $this->_loader = new $cls; + $this->load = new Extended_Loader(); // mock up a ci instance $this->ci_obj = new StdClass; @@ -32,53 +64,67 @@ class Loader_test extends CI_TestCase { $this->ci_instance_var('config', $config); // Test loading as an array. - $this->assertEquals(NULL, $this->_loader->library(array('table'))); + $this->assertEquals(NULL, $this->load->library(array('table'))); $this->assertTrue(class_exists('CI_Table'), 'Table class exists'); $this->assertAttributeInstanceOf('CI_Table', 'table', $this->ci_obj); // Test no lib given - $this->assertEquals(FALSE, $this->_loader->library()); + $this->assertEquals(FALSE, $this->load->library()); // Test a string given to params - $this->assertEquals(NULL, $this->_loader->library('table', ' ')); + $this->assertEquals(NULL, $this->load->library('table', ' ')); } // -------------------------------------------------------------------- + public function testNonExistentModel() + { + $this->setExpectedException( + 'Exception', + 'CI Error: Unable to locate the model you have specified: ci_test_nonexistent_mode.php' + ); + + $this->load->model('ci_test_nonexistent_mode.php'); + } + + // -------------------------------------------------------------------- + public function testModels() { - // Test loading as an array. - $this->assertEquals(NULL, $this->_loader->model(array('foobar'))); + $this->ci_set_core_class('model', 'CI_Model'); + + $content = 'withContent($content) + ->at($this->load->models_dir); + + $this->assertNull($this->load->model('unit_test_model')); // Test no model given - $this->assertEquals(FALSE, $this->_loader->model('')); + $this->assertEquals(FALSE, $this->load->model('')); // Test a string given to params - $this->assertEquals(NULL, $this->_loader->model('foobar', ' ')); + // $this->assertEquals(NULL, $this->load->model('foobar', ' ')); } // -------------------------------------------------------------------- - public function testDatabase() - { - $this->assertEquals(NULL, $this->_loader->database()); - $this->assertEquals(NULL, $this->_loader->dbutil()); - } + // public function testDatabase() + // { + // $this->assertEquals(NULL, $this->load->database()); + // $this->assertEquals(NULL, $this->load->dbutil()); + // } // -------------------------------------------------------------------- - public function testView() + public function testNonExistentView() { - // I'm not entirely sure this is the proper way to handle this. - // So, let's revist it, m'kay? - try - { - $this->_loader->view('foo'); - } - catch (Exception $expected) - { - return; - } + $this->setExpectedException( + 'Exception', + 'CI Error: Unable to load the requested file: ci_test_nonexistent_view.php' + ); + + $this->load->view('ci_test_nonexistent_view', array('foo' => 'bar')); } // -------------------------------------------------------------------- @@ -86,10 +132,9 @@ class Loader_test extends CI_TestCase { public function testFile() { // I'm not entirely sure this is the proper way to handle this. - // So, let's revist it, m'kay? try { - $this->_loader->file('foo'); + $this->load->file('foo'); } catch (Exception $expected) { @@ -105,39 +150,40 @@ class Loader_test extends CI_TestCase { 'foo' => 'bar' ); - $this->assertEquals(NULL, $this->_loader->vars($vars)); - $this->assertEquals(NULL, $this->_loader->vars('foo', 'bar')); + $this->assertEquals(NULL, $this->load->vars($vars)); + $this->assertEquals(NULL, $this->load->vars('foo', 'bar')); } // -------------------------------------------------------------------- - public function testHelper() - { - $this->assertEquals(NULL, $this->_loader->helper('array')); - $this->assertEquals(NULL, $this->_loader->helper('bad')); - } + // public function testHelper() + // { + // $this->assertEquals(NULL, $this->load->helper('array')); + // $this->assertEquals(NULL, $this->load->helper('bad')); + // } // -------------------------------------------------------------------- public function testHelpers() { - $this->assertEquals(NULL, $this->_loader->helpers(array('file', 'array', 'string'))); + $this->assertEquals(NULL, $this->load->helpers(array('file', 'array', 'string'))); } // -------------------------------------------------------------------- // public function testLanguage() // { - // $this->assertEquals(NULL, $this->_loader->language('test')); + // $this->assertEquals(NULL, $this->load->language('test')); // } // -------------------------------------------------------------------- - public function testLoadConfig() - { - $this->assertEquals(NULL, $this->_loader->config('config', FALSE, TRUE)); - } - - - -} \ No newline at end of file + // public function testLoadConfig() + // { + // $this->assertEquals(NULL, $this->load->config('config', FALSE, TRUE)); + // } +} + + + + diff --git a/tests/lib/ci_testcase.php b/tests/lib/ci_testcase.php index c8c6bc900..10539a3af 100644 --- a/tests/lib/ci_testcase.php +++ b/tests/lib/ci_testcase.php @@ -20,9 +20,9 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { 'security' => 'sec', 'input' => 'in', 'lang' => 'lang', - // @todo the loader is an edge case - 'loader' => 'load' + 'loader' => 'load', + 'model' => 'model' ); public function __construct() -- cgit v1.2.3-24-g4f1b From 98357c5865dbec43bcb79fb114469d40cf2f5367 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 11:30:23 -0500 Subject: Swap from assertEquals(FALSE, x) to just assertFalse(). Silly Greg. --- tests/codeigniter/core/Loader_test.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/codeigniter/core/Loader_test.php b/tests/codeigniter/core/Loader_test.php index 2aa1b8cb9..83ee68777 100644 --- a/tests/codeigniter/core/Loader_test.php +++ b/tests/codeigniter/core/Loader_test.php @@ -101,7 +101,7 @@ class Loader_test extends CI_TestCase { $this->assertNull($this->load->model('unit_test_model')); // Test no model given - $this->assertEquals(FALSE, $this->load->model('')); + $this->assertFalse($this->load->model('')); // Test a string given to params // $this->assertEquals(NULL, $this->load->model('foobar', ' ')); -- cgit v1.2.3-24-g4f1b From deab6ad864f05367e2c122906f63d24286b731d1 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 11:44:11 -0500 Subject: Buttoning up model loader tests. --- tests/codeigniter/core/Loader_test.php | 39 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/core/Loader_test.php b/tests/codeigniter/core/Loader_test.php index 83ee68777..d84928eca 100644 --- a/tests/codeigniter/core/Loader_test.php +++ b/tests/codeigniter/core/Loader_test.php @@ -64,7 +64,7 @@ class Loader_test extends CI_TestCase { $this->ci_instance_var('config', $config); // Test loading as an array. - $this->assertEquals(NULL, $this->load->library(array('table'))); + $this->assertNull($this->load->library(array('table'))); $this->assertTrue(class_exists('CI_Table'), 'Table class exists'); $this->assertAttributeInstanceOf('CI_Table', 'table', $this->ci_obj); @@ -100,11 +100,11 @@ class Loader_test extends CI_TestCase { $this->assertNull($this->load->model('unit_test_model')); - // Test no model given - $this->assertFalse($this->load->model('')); + // Was the model class instantiated. + $this->assertTrue(class_exists('Unit_test_model')); - // Test a string given to params - // $this->assertEquals(NULL, $this->load->model('foobar', ' ')); + // Test no model given + $this->assertNull($this->load->model('')); } // -------------------------------------------------------------------- @@ -132,14 +132,8 @@ class Loader_test extends CI_TestCase { public function testFile() { // I'm not entirely sure this is the proper way to handle this. - try - { - $this->load->file('foo'); - } - catch (Exception $expected) - { - return; - } + // $this->load->file('foo'); + } // -------------------------------------------------------------------- @@ -156,15 +150,22 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - // public function testHelper() - // { - // $this->assertEquals(NULL, $this->load->helper('array')); - // $this->assertEquals(NULL, $this->load->helper('bad')); - // } + public function testHelper() + { + $this->assertEquals(NULL, $this->load->helper('array')); + + $this->setExpectedException( + 'Exception', + 'CI Error: Unable to load the requested file: helpers/bad_helper.php' + ); + + + $this->load->helper('bad'); + } // -------------------------------------------------------------------- - public function testHelpers() + public function testLoadingMultipleHelpers() { $this->assertEquals(NULL, $this->load->helpers(array('file', 'array', 'string'))); } -- cgit v1.2.3-24-g4f1b From 321768d902f68a929a55ef9480c22cb54d40bd34 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 12:09:33 -0500 Subject: Testing view loading. --- tests/codeigniter/core/Loader_test.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'tests') diff --git a/tests/codeigniter/core/Loader_test.php b/tests/codeigniter/core/Loader_test.php index d84928eca..782751cd7 100644 --- a/tests/codeigniter/core/Loader_test.php +++ b/tests/codeigniter/core/Loader_test.php @@ -117,6 +117,23 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- + public function testLoadView() + { + $this->ci_set_core_class('output', 'CI_Output'); + + $content = 'This is my test page. '; + $view = vfsStream::newFile('unit_test_view.php')->withContent($content) + ->at($this->load->views_dir); + + // Use the optional return parameter in this test, so the view is not + // run through the output class. + $this->assertEquals('This is my test page. World!', + $this->load->view('unit_test_view', array('hello' => "World!"), TRUE)); + + } + + // -------------------------------------------------------------------- + public function testNonExistentView() { $this->setExpectedException( -- cgit v1.2.3-24-g4f1b From 6858fb92133afa127eff6f11dd29abf554e1b2d1 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 12:27:23 -0500 Subject: Adding mock testing of libraries in the application directory --- tests/codeigniter/core/Loader_test.php | 58 +++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 12 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/core/Loader_test.php b/tests/codeigniter/core/Loader_test.php index 782751cd7..1e32c7e0a 100644 --- a/tests/codeigniter/core/Loader_test.php +++ b/tests/codeigniter/core/Loader_test.php @@ -53,15 +53,7 @@ class Loader_test extends CI_TestCase { public function testLibrary() { - // Mock up a config object until we - // figure out how to test the library configs - $config = $this->getMock('CI_Config', NULL, array(), '', FALSE); - $config->expects($this->any()) - ->method('load') - ->will($this->returnValue(TRUE)); - - // Add the mock to our stdClass - $this->ci_instance_var('config', $config); + $this->_setup_config_mock(); // Test loading as an array. $this->assertNull($this->load->library(array('table'))); @@ -73,22 +65,58 @@ class Loader_test extends CI_TestCase { // Test a string given to params $this->assertEquals(NULL, $this->load->library('table', ' ')); - } + } + + // -------------------------------------------------------------------- + + public function testLoadLibraryInApplicationDir() + { + $this->_setup_config_mock(); + + $content = 'withContent($content) + ->at($this->load->libs_dir); + + $this->assertNull($this->load->library('super_test_library')); + + // Was the model class instantiated. + $this->assertTrue(class_exists('Super_test_library')); + } // -------------------------------------------------------------------- + private function _setup_config_mock() + { + // Mock up a config object until we + // figure out how to test the library configs + $config = $this->getMock('CI_Config', NULL, array(), '', FALSE); + $config->expects($this->any()) + ->method('load') + ->will($this->returnValue(TRUE)); + + // Add the mock to our stdClass + $this->ci_instance_var('config', $config); + } + + // -------------------------------------------------------------------- + + public function testNonExistentModel() { $this->setExpectedException( 'Exception', - 'CI Error: Unable to locate the model you have specified: ci_test_nonexistent_mode.php' + 'CI Error: Unable to locate the model you have specified: ci_test_nonexistent_model.php' ); - $this->load->model('ci_test_nonexistent_mode.php'); + $this->load->model('ci_test_nonexistent_model.php'); } // -------------------------------------------------------------------- + /** + * @coverts CI_Loader::model + */ public function testModels() { $this->ci_set_core_class('model', 'CI_Model'); @@ -117,6 +145,9 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- + /** + * @coverts CI_Loader::view + */ public function testLoadView() { $this->ci_set_core_class('output', 'CI_Output'); @@ -134,6 +165,9 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- + /** + * @coverts CI_Loader::view + */ public function testNonExistentView() { $this->setExpectedException( -- cgit v1.2.3-24-g4f1b From 4d2bb09cbb4fc66dc4881c2ffdeee7dbaf0a3a3b Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 12:33:12 -0500 Subject: config CI_Loader tests. --- tests/codeigniter/core/Loader_test.php | 36 +++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/core/Loader_test.php b/tests/codeigniter/core/Loader_test.php index 1e32c7e0a..55ab9a4e5 100644 --- a/tests/codeigniter/core/Loader_test.php +++ b/tests/codeigniter/core/Loader_test.php @@ -195,8 +195,8 @@ class Loader_test extends CI_TestCase { 'foo' => 'bar' ); - $this->assertEquals(NULL, $this->load->vars($vars)); - $this->assertEquals(NULL, $this->load->vars('foo', 'bar')); + $this->assertNull($this->load->vars($vars)); + $this->assertNull($this->load->vars('foo', 'bar')); } // -------------------------------------------------------------------- @@ -230,12 +230,30 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - // public function testLoadConfig() - // { - // $this->assertEquals(NULL, $this->load->config('config', FALSE, TRUE)); - // } -} - - + public function testLoadConfig() + { + $this->_setup_config_mock(); + + $this->assertNull($this->load->config('config', FALSE)); + } + + // -------------------------------------------------------------------- + public function testLoadBadConfig() + { + $this->_setup_config_mock(); + + $this->setExpectedException( + 'Exception', + 'CI Error: The configuration file foobar.php does not exist.' + ); + + $this->load->config('foobar', FALSE); + } + // -------------------------------------------------------------------- + + + + +} \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 56106630e172203858d58325dea5d2e81b226f87 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 13:10:19 -0500 Subject: load->file() tests. --- tests/codeigniter/core/Loader_test.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/core/Loader_test.php b/tests/codeigniter/core/Loader_test.php index 55ab9a4e5..49679e241 100644 --- a/tests/codeigniter/core/Loader_test.php +++ b/tests/codeigniter/core/Loader_test.php @@ -101,7 +101,6 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testNonExistentModel() { $this->setExpectedException( @@ -182,8 +181,22 @@ class Loader_test extends CI_TestCase { public function testFile() { - // I'm not entirely sure this is the proper way to handle this. - // $this->load->file('foo'); + $content = 'Here is a test file, which we will load now.'; + $file = vfsStream::newFile('ci_test_mock_file.php')->withContent($content) + ->at($this->load->views_dir); + + // Just like load->view(), take the output class out of the mix here. + $load = $this->load->file(vfsStream::url('application').'/views/ci_test_mock_file.php', + TRUE); + + $this->assertEquals($content, $load); + + $this->setExpectedException( + 'Exception', + 'CI Error: Unable to load the requested file: ci_test_file_not_exists' + ); + + $this->load->file('ci_test_file_not_exists', TRUE); } @@ -210,7 +223,6 @@ class Loader_test extends CI_TestCase { 'CI Error: Unable to load the requested file: helpers/bad_helper.php' ); - $this->load->helper('bad'); } -- cgit v1.2.3-24-g4f1b From b567947d38a20960aade96f9179ad6bc21f22646 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 14:34:31 -0500 Subject: Moving tests/codeigniter/helpers/Array_helper_test.php to be lower cased. Adding html_helper_test.php as well. --- tests/Bootstrap.php | 8 +++ tests/codeigniter/helpers/Array_helper_test.php | 49 ------------------ tests/codeigniter/helpers/array_helper_test.php | 49 ++++++++++++++++++ tests/codeigniter/helpers/html_helper_test.php | 67 +++++++++++++++++++++++++ tests/phpunit.xml | 5 +- 5 files changed, 127 insertions(+), 51 deletions(-) delete mode 100644 tests/codeigniter/helpers/Array_helper_test.php create mode 100644 tests/codeigniter/helpers/array_helper_test.php create mode 100644 tests/codeigniter/helpers/html_helper_test.php (limited to 'tests') diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index 94dafdce4..db5ffbd52 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -17,4 +17,12 @@ define('APPPATH', PROJECT_BASE.'application/'); require_once $dir.'/lib/common.php'; require_once $dir.'/lib/ci_testcase.php'; + +// Omit files in the PEAR & PHP Paths from ending up in the coverage report +PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PEAR_INSTALL_DIR); +PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PHP_LIBDIR); + +// Omit Tests from the coverage reports. +// PHP_CodeCoverage_Filter::getInstance() + unset($dir); \ No newline at end of file diff --git a/tests/codeigniter/helpers/Array_helper_test.php b/tests/codeigniter/helpers/Array_helper_test.php deleted file mode 100644 index bbefdb49d..000000000 --- a/tests/codeigniter/helpers/Array_helper_test.php +++ /dev/null @@ -1,49 +0,0 @@ -my_array = array( - 'foo' => 'bar', - 'sally' => 'jim', - 'maggie' => 'bessie', - 'herb' => 'cook' - ); - } - - // ------------------------------------------------------------------------ - - public function testElementWithExistingItem() - { - $this->assertEquals(FALSE, element('testing', $this->my_array)); - - $this->assertEquals('not set', element('testing', $this->my_array, 'not set')); - - $this->assertEquals('bar', element('foo', $this->my_array)); - } - - // ------------------------------------------------------------------------ - - public function testRandomElement() - { - // Send a string, not an array to random_element - $this->assertEquals('my string', random_element('my string')); - - // Test sending an array - $this->assertEquals(TRUE, in_array(random_element($this->my_array), $this->my_array)); - } - - // ------------------------------------------------------------------------ - - public function testElements() - { - $this->assertEquals(TRUE, is_array(elements('test', $this->my_array))); - $this->assertEquals(TRUE, is_array(elements('foo', $this->my_array))); - } - -} \ No newline at end of file diff --git a/tests/codeigniter/helpers/array_helper_test.php b/tests/codeigniter/helpers/array_helper_test.php new file mode 100644 index 000000000..bbefdb49d --- /dev/null +++ b/tests/codeigniter/helpers/array_helper_test.php @@ -0,0 +1,49 @@ +my_array = array( + 'foo' => 'bar', + 'sally' => 'jim', + 'maggie' => 'bessie', + 'herb' => 'cook' + ); + } + + // ------------------------------------------------------------------------ + + public function testElementWithExistingItem() + { + $this->assertEquals(FALSE, element('testing', $this->my_array)); + + $this->assertEquals('not set', element('testing', $this->my_array, 'not set')); + + $this->assertEquals('bar', element('foo', $this->my_array)); + } + + // ------------------------------------------------------------------------ + + public function testRandomElement() + { + // Send a string, not an array to random_element + $this->assertEquals('my string', random_element('my string')); + + // Test sending an array + $this->assertEquals(TRUE, in_array(random_element($this->my_array), $this->my_array)); + } + + // ------------------------------------------------------------------------ + + public function testElements() + { + $this->assertEquals(TRUE, is_array(elements('test', $this->my_array))); + $this->assertEquals(TRUE, is_array(elements('foo', $this->my_array))); + } + +} \ No newline at end of file diff --git a/tests/codeigniter/helpers/html_helper_test.php b/tests/codeigniter/helpers/html_helper_test.php new file mode 100644 index 000000000..3b7f2b342 --- /dev/null +++ b/tests/codeigniter/helpers/html_helper_test.php @@ -0,0 +1,67 @@ +assertEquals('

foobar

', heading('foobar')); + } + + // ------------------------------------------------------------------------ + + public function testUl() + { + $expect = << +
  • foo
  • +
  • bar
  • + + +EOH; + + $expect = ltrim($expect); + + $list = array('foo', 'bar'); + + $this->assertEquals($expect, ul($list)); + + + $expect = << +
  • foo
  • +
  • bar
  • + + +EOH; + + $expect = ltrim($expect); + + $list = array('foo', 'bar'); + + $this->assertEquals($expect, ul($list, ' class="test"')); + + $this->assertEquals($expect, ul($list, array('class' => 'test'))); + } + + // ------------------------------------------------------------------------ + + public function testNBS() + { + $this->assertEquals('   ', nbs(3)); + } + + // ------------------------------------------------------------------------ + + public function testMeta() + { + $this->assertEquals("\n", meta('test', 'foo')); + + $expect = "\n"; + + $this->assertEquals($expect, meta(array('name' => 'foo'))); + + } + +} \ No newline at end of file diff --git a/tests/phpunit.xml b/tests/phpunit.xml index 9e5e10d59..1e712a1bb 100644 --- a/tests/phpunit.xml +++ b/tests/phpunit.xml @@ -1,17 +1,18 @@ codeigniter/Setup_test.php codeigniter/core - + codeigniter/helpers + \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 9071573bc510f127fa22ddd367b2ff46a60242cc Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 14:36:26 -0500 Subject: Adding text_helper_test --- tests/codeigniter/helpers/text_helper_test.php | 151 +++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 tests/codeigniter/helpers/text_helper_test.php (limited to 'tests') diff --git a/tests/codeigniter/helpers/text_helper_test.php b/tests/codeigniter/helpers/text_helper_test.php new file mode 100644 index 000000000..aa6660ea0 --- /dev/null +++ b/tests/codeigniter/helpers/text_helper_test.php @@ -0,0 +1,151 @@ +_long_string = 'Once upon a time, a framework had no tests. It sad. So some nice people began to write tests. The more time that went on, the happier it became. Everyone was happy.'; + } + + // ------------------------------------------------------------------------ + + public function testWordLimiter() + { + $this->assertEquals('Once upon a time,…', word_limiter($this->_long_string, 4)); + $this->assertEquals('Once upon a time,…', word_limiter($this->_long_string, 4, '…')); + $this->assertEquals('', word_limiter('', 4)); + } + + // ------------------------------------------------------------------------ + + public function testCharacterLimiter() + { + $this->assertEquals('Once upon a time, a…', character_limiter($this->_long_string, 20)); + $this->assertEquals('Once upon a time, a…', character_limiter($this->_long_string, 20, '…')); + $this->assertEquals('Short', character_limiter('Short', 20)); + $this->assertEquals('Short', character_limiter('Short', 5)); + } + + // ------------------------------------------------------------------------ + + public function testAsciiToEntities() + { + $strs = array( + '“‘ “test”' => '“‘ “test”', + '†¥¨ˆøåß∂ƒ©˙∆˚¬' => '†¥¨ˆøåß∂ƒ©˙∆˚¬' + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, ascii_to_entities($str)); + } + } + + // ------------------------------------------------------------------------ + + public function testEntitiesToAscii() + { + $strs = array( + '“‘ “test”' => '“‘ “test”', + '†¥¨ˆøåß∂ƒ©˙∆˚¬' => '†¥¨ˆøåß∂ƒ©˙∆˚¬' + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, entities_to_ascii($str)); + } + } + + // ------------------------------------------------------------------------ + + public function testCensoredWords() + { + $censored = array('boob', 'nerd', 'ass', 'fart'); + + $strs = array( + 'Ted bobbled the ball' => 'Ted bobbled the ball', + 'Jake is a nerdo' => 'Jake is a nerdo', + 'The borg will assimilate you' => 'The borg will assimilate you', + 'Did Mary Fart?' => 'Did Mary $*#?', + 'Jake is really a boob' => 'Jake is really a $*#' + ); + + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, word_censor($str, $censored, '$*#')); + } + + // test censored words being sent as a string + $this->assertEquals('test', word_censor('test', 'test')); + } + + // ------------------------------------------------------------------------ + + public function testHighlightCode() + { + $code = ''; + $expect = "\n<?php var_dump(\$this); ?> \n\n"; + + $this->assertEquals($expect, highlight_code($code)); + } + + // ------------------------------------------------------------------------ + + public function testHighlightPhrase() + { + $strs = array( + 'this is a phrase' => 'this is a phrase', + 'this is another' => 'this is another', + 'Gimme a test, Sally' => 'Gimme a test, Sally', + 'Or tell me what this is' => 'Or tell me what this is', + '' => '' + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, highlight_phrase($str, 'this is')); + } + } + + // ------------------------------------------------------------------------ + + public function testEllipsizing() + { + $strs = array( + '0' => array( + 'this is my string' => '… my string', + "here's another one" => '…nother one', + 'this one is just a bit longer' => '…bit longer', + 'short' => 'short' + ), + '.5' => array( + 'this is my string' => 'this …tring', + "here's another one" => "here'…r one", + 'this one is just a bit longer' => 'this …onger', + 'short' => 'short' + ), + '1' => array( + 'this is my string' => 'this is my…', + "here's another one" => "here's ano…", + 'this one is just a bit longer' => 'this one i…', + 'short' => 'short' + ), + ); + + foreach ($strs as $pos => $s) + { + foreach ($s as $str => $expect) + { + $this->assertEquals($expect, ellipsize($str, 10, $pos)); + } + } + } + + // ------------------------------------------------------------------------ + +} \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 052b01d9398de56e23300242f25d5317afcacf82 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 14:38:03 -0500 Subject: Adding string helper and inflector helper tests --- .../codeigniter/helpers/inflector_helper_test.php | 91 ++++++++++++++++ tests/codeigniter/helpers/string_helper_test.php | 117 +++++++++++++++++++++ 2 files changed, 208 insertions(+) create mode 100644 tests/codeigniter/helpers/inflector_helper_test.php create mode 100644 tests/codeigniter/helpers/string_helper_test.php (limited to 'tests') diff --git a/tests/codeigniter/helpers/inflector_helper_test.php b/tests/codeigniter/helpers/inflector_helper_test.php new file mode 100644 index 000000000..5e2fae9fd --- /dev/null +++ b/tests/codeigniter/helpers/inflector_helper_test.php @@ -0,0 +1,91 @@ + 'telly', + 'smellies' => 'smelly', + 'abjectnesses' => 'abjectness', + 'smells' => 'smell' + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, singular($str)); + } + } + + // -------------------------------------------------------------------- + + public function testPlural() + { + $strs = array( + 'telly' => 'tellies', + 'smelly' => 'smellies', + 'abjectness' => 'abjectness', + 'smell' => 'smells', + 'witch' => 'witches' + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, plural($str)); + } + } + + // -------------------------------------------------------------------- + + public function testCamelize() + { + $strs = array( + 'this is the string' => 'thisIsTheString', + 'this is another one' => 'thisIsAnotherOne', + 'i-am-playing-a-trick' => 'i-am-playing-a-trick', + 'what_do_you_think-yo?' => 'whatDoYouThink-yo?', + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, camelize($str)); + } + } + + // -------------------------------------------------------------------- + + public function testUnderscore() + { + $strs = array( + 'this is the string' => 'this_is_the_string', + 'this is another one' => 'this_is_another_one', + 'i-am-playing-a-trick' => 'i-am-playing-a-trick', + 'what_do_you_think-yo?' => 'what_do_you_think-yo?', + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, underscore($str)); + } + } + + // -------------------------------------------------------------------- + + public function testHumanize() + { + $strs = array( + 'this_is_the_string' => 'This Is The String', + 'this_is_another_one' => 'This Is Another One', + 'i-am-playing-a-trick' => 'I-am-playing-a-trick', + 'what_do_you_think-yo?' => 'What Do You Think-yo?', + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, humanize($str)); + } + } +} \ No newline at end of file diff --git a/tests/codeigniter/helpers/string_helper_test.php b/tests/codeigniter/helpers/string_helper_test.php new file mode 100644 index 000000000..71449f64a --- /dev/null +++ b/tests/codeigniter/helpers/string_helper_test.php @@ -0,0 +1,117 @@ + 'Slashes//\\', + '/var/www/html/' => 'var/www/html' + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, trim_slashes($str)); + } + } + + // -------------------------------------------------------------------- + + public function testStripSlashes() + { + $this->assertEquals("This is totally foo bar'd", trim_slashes("This is totally foo bar'd")); + } + + // -------------------------------------------------------------------- + + public function testStripQuotes() + { + $strs = array( + '"me oh my!"' => 'me oh my!', + "it's a winner!" => 'its a winner!', + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, strip_quotes($str)); + } + } + + // -------------------------------------------------------------------- + + public function testQuotesToEntities() + { + $strs = array( + '"me oh my!"' => '"me oh my!"', + "it's a winner!" => 'it's a winner!', + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, quotes_to_entities($str)); + } + } + + // -------------------------------------------------------------------- + + public function testReduceDoubleSlashes() + { + $strs = array( + 'http://codeigniter.com' => 'http://codeigniter.com', + '//var/www/html/example.com/' => '/var/www/html/example.com/', + '/var/www/html//index.php' => '/var/www/html/index.php' + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, reduce_double_slashes($str)); + } + } + + // -------------------------------------------------------------------- + + public function testReduceMultiples() + { + $strs = array( + 'Fred, Bill,, Joe, Jimmy' => 'Fred, Bill, Joe, Jimmy', + 'Ringo, John, Paul,,' => 'Ringo, John, Paul,' + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, reduce_multiples($str)); + } + + $strs = array( + 'Fred, Bill,, Joe, Jimmy' => 'Fred, Bill, Joe, Jimmy', + 'Ringo, John, Paul,,' => 'Ringo, John, Paul' + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, reduce_multiples($str, ',', TRUE)); + } + } + + // -------------------------------------------------------------------- + + public function testRepeater() + { + $strs = array( + 'a' => 'aaaaaaaaaa', + ' ' => '          ', + '
    ' => '









    ' + + ); + + foreach ($strs as $str => $expect) + { + $this->assertEquals($expect, repeater($str, 10)); + } + } + + // -------------------------------------------------------------------- + +} \ No newline at end of file -- cgit v1.2.3-24-g4f1b From b4d93dbab7253f98613ab10e75e0ed20f06eaf19 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 14:42:33 -0500 Subject: Updating helper test classes to extend CI_TestCase --- tests/codeigniter/helpers/array_helper_test.php | 2 +- tests/codeigniter/helpers/html_helper_test.php | 2 +- tests/codeigniter/helpers/inflector_helper_test.php | 2 +- tests/codeigniter/helpers/string_helper_test.php | 2 +- tests/codeigniter/helpers/text_helper_test.php | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/helpers/array_helper_test.php b/tests/codeigniter/helpers/array_helper_test.php index bbefdb49d..fd306cee8 100644 --- a/tests/codeigniter/helpers/array_helper_test.php +++ b/tests/codeigniter/helpers/array_helper_test.php @@ -4,7 +4,7 @@ require_once(BASEPATH.'helpers/array_helper.php'); -class Array_helper_test extends PHPUnit_Framework_TestCase +class Array_helper_test extends CI_TestCase { public function setUp() { diff --git a/tests/codeigniter/helpers/html_helper_test.php b/tests/codeigniter/helpers/html_helper_test.php index 3b7f2b342..8c0e53301 100644 --- a/tests/codeigniter/helpers/html_helper_test.php +++ b/tests/codeigniter/helpers/html_helper_test.php @@ -2,7 +2,7 @@ require_once(BASEPATH.'helpers/html_helper.php'); -class Html_helper_test extends PHPUnit_Framework_TestCase +class Html_helper_test extends CI_TestCase { public function testHeading() { diff --git a/tests/codeigniter/helpers/inflector_helper_test.php b/tests/codeigniter/helpers/inflector_helper_test.php index 5e2fae9fd..e59875e4a 100644 --- a/tests/codeigniter/helpers/inflector_helper_test.php +++ b/tests/codeigniter/helpers/inflector_helper_test.php @@ -2,7 +2,7 @@ require_once(BASEPATH.'helpers/inflector_helper.php'); -class Inflector_helper_test extends PHPUnit_Framework_TestCase { +class Inflector_helper_test extends CI_TestCase { public function testSingular() diff --git a/tests/codeigniter/helpers/string_helper_test.php b/tests/codeigniter/helpers/string_helper_test.php index 71449f64a..00ba5dec7 100644 --- a/tests/codeigniter/helpers/string_helper_test.php +++ b/tests/codeigniter/helpers/string_helper_test.php @@ -2,7 +2,7 @@ require_once(BASEPATH.'helpers/string_helper.php'); -class String_helper_test extends PHPUnit_Framework_TestCase +class String_helper_test extends CI_TestCase { public function testTrimSlashes() { diff --git a/tests/codeigniter/helpers/text_helper_test.php b/tests/codeigniter/helpers/text_helper_test.php index aa6660ea0..22c834bcf 100644 --- a/tests/codeigniter/helpers/text_helper_test.php +++ b/tests/codeigniter/helpers/text_helper_test.php @@ -2,7 +2,7 @@ require_once(BASEPATH.'helpers/text_helper.php'); -class Text_helper_test extends PHPUnit_Framework_TestCase +class Text_helper_test extends CI_TestCase { private $_long_string; -- cgit v1.2.3-24-g4f1b From a7f9b251b03f7fb17251951d3024cb11fc1f881f Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 14:54:59 -0500 Subject: Parser test. --- tests/codeigniter/libraries/Parser_test.php | 42 +++++++++++------------------ tests/phpunit.xml | 1 + 2 files changed, 17 insertions(+), 26 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/libraries/Parser_test.php b/tests/codeigniter/libraries/Parser_test.php index a8de108f0..3f63bd589 100644 --- a/tests/codeigniter/libraries/Parser_test.php +++ b/tests/codeigniter/libraries/Parser_test.php @@ -2,24 +2,19 @@ // OLD TEST FORMAT: DO NOT COPY -class Parser_test extends PHPUnit_Framework_TestCase -{ - static $cls; - protected $parser; - - public static function setUpBeforeClass() - { - $CI = get_instance(); - $CI->load->library('parser'); - self::$cls = get_class($CI->parser); - } +require BASEPATH.'libraries/Parser.php'; - // -------------------------------------------------------------------- +class Parser_test extends CI_TestCase +{ public function setUp() { - $cls = self::$cls; - $this->parser = new $cls; + $obj = new StdClass; + $obj->parser = new CI_Parser(); + + $this->ci_instance($obj); + + $this->parser = $obj->parser; } // -------------------------------------------------------------------- @@ -61,23 +56,23 @@ class Parser_test extends PHPUnit_Framework_TestCase } // -------------------------------------------------------------------- - + public function testParse() { $this->_parse_no_template(); $this->_parse_var_pair(); $this->_mismatched_var_pair(); } - + // -------------------------------------------------------------------- - + private function _parse_no_template() { $this->assertFalse($this->parser->parse_string('', '', TRUE)); } - + // -------------------------------------------------------------------- - + private function _parse_var_pair() { $data = array( @@ -95,9 +90,9 @@ class Parser_test extends PHPUnit_Framework_TestCase $this->assertEquals($result, $this->parser->parse_string($template, $data, TRUE)); } - + // -------------------------------------------------------------------- - + private function _mismatched_var_pair() { $data = array( @@ -117,9 +112,4 @@ class Parser_test extends PHPUnit_Framework_TestCase } // -------------------------------------------------------------------- - - // -------------------------------------------------------------------- - - // -------------------------------------------------------------------- - } \ No newline at end of file diff --git a/tests/phpunit.xml b/tests/phpunit.xml index 1e712a1bb..e07aa96a7 100644 --- a/tests/phpunit.xml +++ b/tests/phpunit.xml @@ -8,6 +8,7 @@ codeigniter/Setup_test.php codeigniter/core codeigniter/helpers + codeigniter/libraries But no!'; + $expect = '

      But no!

    '; + + $this->assertEquals($expect, $this->type->auto_typography($str)); + } + + // -------------------------------------------------------------------- + + private function _protect_pre() + { + $str = '

    My Sentence

    var_dump($this);
    '; + $expect = '

    My Sentence

    var_dump($this);
    '; + + $this->assertEquals($expect, $this->type->auto_typography($str)); + } + + // -------------------------------------------------------------------- + + private function _no_opening_block() + { + $str = 'My Sentence
    var_dump($this);
    '; + $expect = '

    My Sentence

    var_dump($this);
    '; + + $this->assertEquals($expect, $this->type->auto_typography($str)); + } + + // -------------------------------------------------------------------- + + public function _protect_braced_quotes() + { + $this->type->protect_braced_quotes = TRUE; + + $str = 'Test {parse="foobar"}'; + $expect = '

    Test {parse="foobar"}

    '; + + $this->assertEquals($expect, $this->type->auto_typography($str)); + + $this->type->protect_braced_quotes = FALSE; + + $str = 'Test {parse="foobar"}'; + $expect = '

    Test {parse=“foobar”}

    '; + + $this->assertEquals($expect, $this->type->auto_typography($str)); + + + } +} \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 9512ab8a22ff14a3789cba6e5ace03aed4196e23 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Thu, 21 Apr 2011 15:10:48 -0500 Subject: Adding user agent library test. Needs some work, but is a good start. --- tests/codeigniter/libraries/User_agent_test.php | 91 +++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 tests/codeigniter/libraries/User_agent_test.php (limited to 'tests') diff --git a/tests/codeigniter/libraries/User_agent_test.php b/tests/codeigniter/libraries/User_agent_test.php new file mode 100644 index 000000000..d1d950cd9 --- /dev/null +++ b/tests/codeigniter/libraries/User_agent_test.php @@ -0,0 +1,91 @@ +_user_agent; + + $obj = new StdClass; + $obj->agent = new CI_User_agent(); + + $this->ci_instance($obj); + + $this->agent = $obj->agent; + } + + // -------------------------------------------------------------------- + + public function testAcceptLang() + { + $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'en'; + + $this->assertEquals('en', $this->agent->accept_lang()); + + unset($_SERVER['HTTP_ACCEPT_LANGUAGE']); + } + + // -------------------------------------------------------------------- + + public function testMobile() + { + // Mobile Not Set + $_SERVER['HTTP_USER_AGENT'] = $this->_mobile_ua; + $this->assertEquals('', $this->agent->mobile()); + unset($_SERVER['HTTP_USER_AGENT']); + } + + // -------------------------------------------------------------------- + + public function testUtilIsFunctions() + { + $this->assertTrue($this->agent->is_browser()); + $this->assertFalse($this->agent->is_robot()); + $this->assertFalse($this->agent->is_mobile()); + $this->assertFalse($this->agent->is_referral()); + } + + // -------------------------------------------------------------------- + + public function testAgentString() + { + $this->assertEquals($this->_user_agent, $this->agent->agent_string()); + } + + // -------------------------------------------------------------------- + + public function testBrowserInfo() + { + $this->assertEquals('Mac OS X', $this->agent->platform()); + $this->assertEquals('Safari', $this->agent->browser()); + $this->assertEquals('533.20.27', $this->agent->version()); + $this->assertEquals('', $this->agent->robot()); + $this->assertEquals('', $this->agent->referrer()); + } + + // -------------------------------------------------------------------- + + public function testCharsets() + { + $_SERVER['HTTP_ACCEPT_CHARSET'] = 'utf8'; + + $charsets = $this->agent->charsets(); + + $this->assertEquals('utf8', $charsets[0]); + + unset($_SERVER['HTTP_ACCEPT_CHARSET']); + + $this->assertFalse($this->agent->accept_charset()); + } + + // -------------------------------------------------------------------- + +} \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 68286a4dcc1ed4d904ad992173c1b3621bf6fced Mon Sep 17 00:00:00 2001 From: Eric Barnes Date: Thu, 21 Apr 2011 22:00:33 -0400 Subject: Reworked unit tests to match rest of framework and added a few more. --- tests/codeigniter/Setup_test.php | 2 +- tests/codeigniter/core/Common_test.php | 16 +++++++++++++ tests/codeigniter/core/Config_test.php | 12 +++++----- tests/codeigniter/core/Lang_test.php | 6 ++--- tests/codeigniter/core/Loader_test.php | 28 +++++++++++----------- tests/codeigniter/helpers/array_helper_test.php | 8 +++---- tests/codeigniter/helpers/email_helper_test.php | 16 +++++++++++++ tests/codeigniter/helpers/html_helper_test.php | 19 +++++++++++---- .../codeigniter/helpers/inflector_helper_test.php | 10 ++++---- tests/codeigniter/helpers/number_helper_test.php | 13 ++++++++++ tests/codeigniter/helpers/string_helper_test.php | 27 +++++++++++---------- tests/codeigniter/helpers/text_helper_test.php | 26 +++++++++++++------- tests/codeigniter/helpers/xml_helper_test.php | 13 ++++++++++ tests/codeigniter/libraries/Parser_test.php | 8 +++---- tests/codeigniter/libraries/Table_test.php | 26 ++++++++++---------- tests/codeigniter/libraries/Typography_test.php | 8 +++---- tests/codeigniter/libraries/User_agent_test.php | 14 +++++------ tests/lib/ci_testcase.php | 22 +++++++++++++++++ 18 files changed, 187 insertions(+), 87 deletions(-) create mode 100644 tests/codeigniter/core/Common_test.php create mode 100644 tests/codeigniter/helpers/email_helper_test.php create mode 100644 tests/codeigniter/helpers/number_helper_test.php create mode 100644 tests/codeigniter/helpers/xml_helper_test.php (limited to 'tests') diff --git a/tests/codeigniter/Setup_test.php b/tests/codeigniter/Setup_test.php index e088b51d3..550245f2f 100644 --- a/tests/codeigniter/Setup_test.php +++ b/tests/codeigniter/Setup_test.php @@ -2,7 +2,7 @@ class Setup_test extends PHPUnit_Framework_TestCase { - function testNonsense() + function test_nonsense() { $this->markTestIncomplete('not implemented'); // ensure that our bootstrapped test environment diff --git a/tests/codeigniter/core/Common_test.php b/tests/codeigniter/core/Common_test.php new file mode 100644 index 000000000..cec12982d --- /dev/null +++ b/tests/codeigniter/core/Common_test.php @@ -0,0 +1,16 @@ +assertEquals(TRUE, is_php('1.2.0')); + $this->assertEquals(FALSE, is_php('9999.9.9')); + } + +} \ No newline at end of file diff --git a/tests/codeigniter/core/Config_test.php b/tests/codeigniter/core/Config_test.php index b04dd67fa..b6c57da70 100644 --- a/tests/codeigniter/core/Config_test.php +++ b/tests/codeigniter/core/Config_test.php @@ -2,7 +2,7 @@ class Config_test extends CI_TestCase { - public function setUp() + public function set_up() { $cls =& $this->ci_core_class('cfg'); @@ -18,7 +18,7 @@ class Config_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testItem() + public function test_item() { $this->assertEquals('http://example.com/', $this->config->item('base_url')); @@ -32,7 +32,7 @@ class Config_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testSetItem() + public function test_set_item() { $this->assertFalse($this->config->item('not_yet_set')); @@ -43,7 +43,7 @@ class Config_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testSlashItem() + public function test_slash_item() { // Bad Config value $this->assertFalse($this->config->slash_item('no_good_item')); @@ -55,7 +55,7 @@ class Config_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testSiteUrl() + public function test_site_url() { $this->assertEquals('http://example.com/index.php', $this->config->site_url()); @@ -85,7 +85,7 @@ class Config_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testSystemUrl() + public function test_system_url() { $this->assertEquals('http://example.com/system/', $this->config->system_url()); } diff --git a/tests/codeigniter/core/Lang_test.php b/tests/codeigniter/core/Lang_test.php index f65b335b0..dcc3d0879 100644 --- a/tests/codeigniter/core/Lang_test.php +++ b/tests/codeigniter/core/Lang_test.php @@ -4,7 +4,7 @@ class Lang_test extends CI_TestCase { protected $lang; - public function setUp() + public function set_up() { $cls = $this->ci_core_class('lang'); $this->lang = new $cls; @@ -12,7 +12,7 @@ class Lang_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testLoad() + public function test_load() { // get_config needs work $this->markTestIncomplete('get_config needs work'); @@ -21,7 +21,7 @@ class Lang_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testLine() + public function test_line() { $this->markTestIncomplete('get_config needs work'); diff --git a/tests/codeigniter/core/Loader_test.php b/tests/codeigniter/core/Loader_test.php index 49679e241..9ba870b7d 100644 --- a/tests/codeigniter/core/Loader_test.php +++ b/tests/codeigniter/core/Loader_test.php @@ -37,7 +37,7 @@ class Loader_test extends CI_TestCase { private $ci_obj; - public function setUp() + public function set_up() { // Instantiate a new loader $this->load = new Extended_Loader(); @@ -51,7 +51,7 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testLibrary() + public function test_library() { $this->_setup_config_mock(); @@ -69,7 +69,7 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testLoadLibraryInApplicationDir() + public function test_load_library_in_application_dir() { $this->_setup_config_mock(); @@ -101,7 +101,7 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testNonExistentModel() + public function test_non_existent_model() { $this->setExpectedException( 'Exception', @@ -116,7 +116,7 @@ class Loader_test extends CI_TestCase { /** * @coverts CI_Loader::model */ - public function testModels() + public function test_models() { $this->ci_set_core_class('model', 'CI_Model'); @@ -147,7 +147,7 @@ class Loader_test extends CI_TestCase { /** * @coverts CI_Loader::view */ - public function testLoadView() + public function test_load_view() { $this->ci_set_core_class('output', 'CI_Output'); @@ -158,7 +158,7 @@ class Loader_test extends CI_TestCase { // Use the optional return parameter in this test, so the view is not // run through the output class. $this->assertEquals('This is my test page. World!', - $this->load->view('unit_test_view', array('hello' => "World!"), TRUE)); + $this->load->view('unit_test_view', array('hello' => "World!"), TRUE)); } @@ -167,7 +167,7 @@ class Loader_test extends CI_TestCase { /** * @coverts CI_Loader::view */ - public function testNonExistentView() + public function test_non_existent_view() { $this->setExpectedException( 'Exception', @@ -179,7 +179,7 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testFile() + public function test_file() { $content = 'Here is a test file, which we will load now.'; $file = vfsStream::newFile('ci_test_mock_file.php')->withContent($content) @@ -202,7 +202,7 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testVars() + public function test_vars() { $vars = array( 'foo' => 'bar' @@ -214,7 +214,7 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testHelper() + public function test_helper() { $this->assertEquals(NULL, $this->load->helper('array')); @@ -228,7 +228,7 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testLoadingMultipleHelpers() + public function test_loading_multiple_helpers() { $this->assertEquals(NULL, $this->load->helpers(array('file', 'array', 'string'))); } @@ -242,7 +242,7 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testLoadConfig() + public function test_load_config() { $this->_setup_config_mock(); @@ -251,7 +251,7 @@ class Loader_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testLoadBadConfig() + public function test_load_bad_config() { $this->_setup_config_mock(); diff --git a/tests/codeigniter/helpers/array_helper_test.php b/tests/codeigniter/helpers/array_helper_test.php index fd306cee8..62559de83 100644 --- a/tests/codeigniter/helpers/array_helper_test.php +++ b/tests/codeigniter/helpers/array_helper_test.php @@ -6,7 +6,7 @@ require_once(BASEPATH.'helpers/array_helper.php'); class Array_helper_test extends CI_TestCase { - public function setUp() + public function set_up() { $this->my_array = array( 'foo' => 'bar', @@ -18,7 +18,7 @@ class Array_helper_test extends CI_TestCase // ------------------------------------------------------------------------ - public function testElementWithExistingItem() + public function test_element_with_existing_item() { $this->assertEquals(FALSE, element('testing', $this->my_array)); @@ -29,7 +29,7 @@ class Array_helper_test extends CI_TestCase // ------------------------------------------------------------------------ - public function testRandomElement() + public function test_random_element() { // Send a string, not an array to random_element $this->assertEquals('my string', random_element('my string')); @@ -40,7 +40,7 @@ class Array_helper_test extends CI_TestCase // ------------------------------------------------------------------------ - public function testElements() + public function test_elements() { $this->assertEquals(TRUE, is_array(elements('test', $this->my_array))); $this->assertEquals(TRUE, is_array(elements('foo', $this->my_array))); diff --git a/tests/codeigniter/helpers/email_helper_test.php b/tests/codeigniter/helpers/email_helper_test.php new file mode 100644 index 000000000..7324e8109 --- /dev/null +++ b/tests/codeigniter/helpers/email_helper_test.php @@ -0,0 +1,16 @@ +assertEquals(FALSE, valid_email('test')); + $this->assertEquals(FALSE, valid_email('test@test@test.com')); + $this->assertEquals(TRUE, valid_email('test@test.com')); + $this->assertEquals(TRUE, valid_email('my.test@test.com')); + } + +} \ No newline at end of file diff --git a/tests/codeigniter/helpers/html_helper_test.php b/tests/codeigniter/helpers/html_helper_test.php index 8c0e53301..706874f9e 100644 --- a/tests/codeigniter/helpers/html_helper_test.php +++ b/tests/codeigniter/helpers/html_helper_test.php @@ -4,14 +4,25 @@ require_once(BASEPATH.'helpers/html_helper.php'); class Html_helper_test extends CI_TestCase { - public function testHeading() + + // ------------------------------------------------------------------------ + + public function test_br() + { + $this->assertEquals('

    ', br(2)); + } + + // ------------------------------------------------------------------------ + + public function test_heading() { $this->assertEquals('

    foobar

    ', heading('foobar')); + $this->assertEquals('

    foobar

    ', heading('foobar', 2, 'class="bar"')); } // ------------------------------------------------------------------------ - public function testUl() + public function test_Ul() { $expect = << @@ -47,14 +58,14 @@ EOH; // ------------------------------------------------------------------------ - public function testNBS() + public function test_NBS() { $this->assertEquals('   ', nbs(3)); } // ------------------------------------------------------------------------ - public function testMeta() + public function test_meta() { $this->assertEquals("\n", meta('test', 'foo')); diff --git a/tests/codeigniter/helpers/inflector_helper_test.php b/tests/codeigniter/helpers/inflector_helper_test.php index e59875e4a..34bc34ebb 100644 --- a/tests/codeigniter/helpers/inflector_helper_test.php +++ b/tests/codeigniter/helpers/inflector_helper_test.php @@ -5,7 +5,7 @@ require_once(BASEPATH.'helpers/inflector_helper.php'); class Inflector_helper_test extends CI_TestCase { - public function testSingular() + public function test_singular() { $strs = array( 'tellies' => 'telly', @@ -22,7 +22,7 @@ class Inflector_helper_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testPlural() + public function test_plural() { $strs = array( 'telly' => 'tellies', @@ -40,7 +40,7 @@ class Inflector_helper_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testCamelize() + public function test_camelize() { $strs = array( 'this is the string' => 'thisIsTheString', @@ -57,7 +57,7 @@ class Inflector_helper_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testUnderscore() + public function test_underscore() { $strs = array( 'this is the string' => 'this_is_the_string', @@ -74,7 +74,7 @@ class Inflector_helper_test extends CI_TestCase { // -------------------------------------------------------------------- - public function testHumanize() + public function test_humanize() { $strs = array( 'this_is_the_string' => 'This Is The String', diff --git a/tests/codeigniter/helpers/number_helper_test.php b/tests/codeigniter/helpers/number_helper_test.php new file mode 100644 index 000000000..02fc49c3d --- /dev/null +++ b/tests/codeigniter/helpers/number_helper_test.php @@ -0,0 +1,13 @@ +assertEquals('456 Bytes', byte_format(456)); + } + +} \ No newline at end of file diff --git a/tests/codeigniter/helpers/string_helper_test.php b/tests/codeigniter/helpers/string_helper_test.php index 00ba5dec7..5e0ee45de 100644 --- a/tests/codeigniter/helpers/string_helper_test.php +++ b/tests/codeigniter/helpers/string_helper_test.php @@ -4,7 +4,7 @@ require_once(BASEPATH.'helpers/string_helper.php'); class String_helper_test extends CI_TestCase { - public function testTrimSlashes() + public function test_trim_slashes() { $strs = array( '//Slashes//\/' => 'Slashes//\\', @@ -17,16 +17,9 @@ class String_helper_test extends CI_TestCase } } - // -------------------------------------------------------------------- - - public function testStripSlashes() - { - $this->assertEquals("This is totally foo bar'd", trim_slashes("This is totally foo bar'd")); - } - // -------------------------------------------------------------------- - public function testStripQuotes() + public function test_strip_quotes() { $strs = array( '"me oh my!"' => 'me oh my!', @@ -41,7 +34,7 @@ class String_helper_test extends CI_TestCase // -------------------------------------------------------------------- - public function testQuotesToEntities() + public function test_quotes_to_entities() { $strs = array( '"me oh my!"' => '"me oh my!"', @@ -56,7 +49,7 @@ class String_helper_test extends CI_TestCase // -------------------------------------------------------------------- - public function testReduceDoubleSlashes() + public function test_reduce_double_slashes() { $strs = array( 'http://codeigniter.com' => 'http://codeigniter.com', @@ -72,7 +65,7 @@ class String_helper_test extends CI_TestCase // -------------------------------------------------------------------- - public function testReduceMultiples() + public function test_reduce_multiples() { $strs = array( 'Fred, Bill,, Joe, Jimmy' => 'Fred, Bill, Joe, Jimmy', @@ -97,7 +90,7 @@ class String_helper_test extends CI_TestCase // -------------------------------------------------------------------- - public function testRepeater() + public function test_repeater() { $strs = array( 'a' => 'aaaaaaaaaa', @@ -114,4 +107,12 @@ class String_helper_test extends CI_TestCase // -------------------------------------------------------------------- + + public function test_random_string() + { + $this->assertEquals(16, strlen(random_string('alnum', 16))); + $this->assertEquals(32, strlen(random_string('unique', 16))); + $this->assertInternalType('string', random_string('numeric', 16)); + } + } \ No newline at end of file diff --git a/tests/codeigniter/helpers/text_helper_test.php b/tests/codeigniter/helpers/text_helper_test.php index 22c834bcf..a0866e638 100644 --- a/tests/codeigniter/helpers/text_helper_test.php +++ b/tests/codeigniter/helpers/text_helper_test.php @@ -6,14 +6,14 @@ class Text_helper_test extends CI_TestCase { private $_long_string; - public function setUp() + public function set_up() { $this->_long_string = 'Once upon a time, a framework had no tests. It sad. So some nice people began to write tests. The more time that went on, the happier it became. Everyone was happy.'; } // ------------------------------------------------------------------------ - public function testWordLimiter() + public function test_word_limiter() { $this->assertEquals('Once upon a time,…', word_limiter($this->_long_string, 4)); $this->assertEquals('Once upon a time,…', word_limiter($this->_long_string, 4, '…')); @@ -22,7 +22,7 @@ class Text_helper_test extends CI_TestCase // ------------------------------------------------------------------------ - public function testCharacterLimiter() + public function test_character_limiter() { $this->assertEquals('Once upon a time, a…', character_limiter($this->_long_string, 20)); $this->assertEquals('Once upon a time, a…', character_limiter($this->_long_string, 20, '…')); @@ -32,7 +32,7 @@ class Text_helper_test extends CI_TestCase // ------------------------------------------------------------------------ - public function testAsciiToEntities() + public function test_ascii_to_entities() { $strs = array( '“‘ “test”' => '“‘ “test”', @@ -47,7 +47,7 @@ class Text_helper_test extends CI_TestCase // ------------------------------------------------------------------------ - public function testEntitiesToAscii() + public function test_entities_to_ascii() { $strs = array( '“‘ “test”' => '“‘ “test”', @@ -59,10 +59,18 @@ class Text_helper_test extends CI_TestCase $this->assertEquals($expect, entities_to_ascii($str)); } } + + // ------------------------------------------------------------------------ + + function test_convert_accented_characters() + { + $this->assertEquals('AAAeEEEIIOOEUUUeY', convert_accented_characters('ÀÂÄÈÊËÎÏÔŒÙÛÜŸ')); + $this->assertEquals('a e i o u n ue', convert_accented_characters('á é í ó ú ñ ü')); + } // ------------------------------------------------------------------------ - public function testCensoredWords() + public function test_censored_words() { $censored = array('boob', 'nerd', 'ass', 'fart'); @@ -86,7 +94,7 @@ class Text_helper_test extends CI_TestCase // ------------------------------------------------------------------------ - public function testHighlightCode() + public function test_highlight_code() { $code = ''; $expect = "\n<?php var_dump(\$this); ?> \n\n"; @@ -96,7 +104,7 @@ class Text_helper_test extends CI_TestCase // ------------------------------------------------------------------------ - public function testHighlightPhrase() + public function test_highlight_phrase() { $strs = array( 'this is a phrase' => 'this is a phrase', @@ -114,7 +122,7 @@ class Text_helper_test extends CI_TestCase // ------------------------------------------------------------------------ - public function testEllipsizing() + public function test_ellipsizing() { $strs = array( '0' => array( diff --git a/tests/codeigniter/helpers/xml_helper_test.php b/tests/codeigniter/helpers/xml_helper_test.php new file mode 100644 index 000000000..49f49e166 --- /dev/null +++ b/tests/codeigniter/helpers/xml_helper_test.php @@ -0,0 +1,13 @@ +assertEquals('<tag>my & test - </tag>', xml_convert('my & test - ')); + } + +} \ No newline at end of file diff --git a/tests/codeigniter/libraries/Parser_test.php b/tests/codeigniter/libraries/Parser_test.php index 44269ad2c..b4580a4b1 100644 --- a/tests/codeigniter/libraries/Parser_test.php +++ b/tests/codeigniter/libraries/Parser_test.php @@ -5,7 +5,7 @@ require BASEPATH.'libraries/Parser.php'; class Parser_test extends CI_TestCase { - public function setUp() + public function set_up() { $obj = new StdClass; $obj->parser = new CI_Parser(); @@ -16,7 +16,7 @@ class Parser_test extends CI_TestCase } // -------------------------------------------------------------------- - public function testSetDelimiters() + public function test_set_delimiters() { // Make sure default delimiters are there $this->assertEquals('{', $this->parser->l_delim); @@ -39,7 +39,7 @@ class Parser_test extends CI_TestCase // -------------------------------------------------------------------- - public function testParseSimpleString() + public function test_parse_simple_string() { $data = array( 'title' => 'Page Title', @@ -55,7 +55,7 @@ class Parser_test extends CI_TestCase // -------------------------------------------------------------------- - public function testParse() + public function test_parse() { $this->_parse_no_template(); $this->_parse_var_pair(); diff --git a/tests/codeigniter/libraries/Table_test.php b/tests/codeigniter/libraries/Table_test.php index ded4c22c1..133179f3a 100644 --- a/tests/codeigniter/libraries/Table_test.php +++ b/tests/codeigniter/libraries/Table_test.php @@ -5,7 +5,7 @@ require BASEPATH.'libraries/Table.php'; class Table_test extends CI_TestCase { - public function setUp() + public function set_up() { $obj = new StdClass; $obj->table = new CI_table(); @@ -19,7 +19,7 @@ class Table_test extends CI_TestCase // Setter Methods // -------------------------------------------------------------------- - public function testSetTemplate() + public function test_set_template() { $this->assertFalse($this->table->set_template('not an array')); @@ -31,13 +31,13 @@ class Table_test extends CI_TestCase $this->assertEquals($template, $this->table->template); } - public function testSetEmpty() + public function test_set_empty() { $this->table->set_empty('nada'); $this->assertEquals('nada', $this->table->empty_cells); } - public function testSetCaption() + public function test_set_caption() { $this->table->set_caption('awesome cap'); $this->assertEquals('awesome cap', $this->table->caption); @@ -47,7 +47,7 @@ class Table_test extends CI_TestCase /* * @depends testPrepArgs */ - public function testSetHeading() + public function test_set_heading() { // uses _prep_args internally, so we'll just do a quick // check to verify that func_get_args and prep_args are @@ -69,7 +69,7 @@ class Table_test extends CI_TestCase /* * @depends testPrepArgs */ - public function testAddRow() + public function test_add_row() { // uses _prep_args internally, so we'll just do a quick // check to verify that func_get_args and prep_args are @@ -95,7 +95,7 @@ class Table_test extends CI_TestCase // Uility Methods // -------------------------------------------------------------------- - public function testPrepArgs() + public function test_prep_args() { $expected = array( array('data' => 'name'), @@ -139,7 +139,7 @@ class Table_test extends CI_TestCase 'attributes'); } - public function testDefaultTemplateKeys() + public function test_default_template_keys() { $deft_template = $this->table->_default_template(); $keys = array( @@ -158,7 +158,7 @@ class Table_test extends CI_TestCase } } - public function testCompileTemplate() + public function test_compile_template() { $this->assertFalse($this->table->set_template('invalid_junk')); @@ -177,7 +177,7 @@ class Table_test extends CI_TestCase $this->assertEquals('', $this->table->template['table_close']); } - public function testMakeColumns() + public function test_make_columns() { // Test bogus parameters $this->assertFalse($this->table->make_columns('invalid_junk')); @@ -213,7 +213,7 @@ class Table_test extends CI_TestCase $this->markTestSkipped('Look at commented assertFalse above'); } - public function testClear() + public function test_clear() { $this->table->set_heading('Name', 'Color', 'Size'); @@ -240,7 +240,7 @@ class Table_test extends CI_TestCase } - public function testSetFromArray() + public function test_set_from_array() { $this->assertFalse($this->table->_set_from_array('bogus')); $this->assertFalse($this->table->_set_from_array(array())); @@ -281,7 +281,7 @@ class Table_test extends CI_TestCase ); } - function testSetFromObject() + function test_set_from_object() { $this->markTestSkipped('Not yet implemented.'); } diff --git a/tests/codeigniter/libraries/Typography_test.php b/tests/codeigniter/libraries/Typography_test.php index 242a6e944..a0533bae0 100644 --- a/tests/codeigniter/libraries/Typography_test.php +++ b/tests/codeigniter/libraries/Typography_test.php @@ -5,7 +5,7 @@ require BASEPATH.'libraries/Typography.php'; class Typography_test extends CI_TestCase { - public function setUp() + public function set_up() { $obj = new StdClass; $obj->type = new CI_Typography(); @@ -22,7 +22,7 @@ class Typography_test extends CI_TestCase * * this can and should grow. */ - public function testFormatCharacters() + public function test_format_characters() { $strs = array( '"double quotes"' => '“double quotes”', @@ -46,7 +46,7 @@ class Typography_test extends CI_TestCase // -------------------------------------------------------------------- - public function testNl2brExceptPre() + public function test_nl2br_except_pre() { $str = <<_blank_string(); $this->_standardize_new_lines(); diff --git a/tests/codeigniter/libraries/User_agent_test.php b/tests/codeigniter/libraries/User_agent_test.php index d1d950cd9..277c12ed0 100644 --- a/tests/codeigniter/libraries/User_agent_test.php +++ b/tests/codeigniter/libraries/User_agent_test.php @@ -9,7 +9,7 @@ class UserAgent_test extends CI_TestCase protected $_user_agent = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27'; protected $_mobile_ua = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7'; - public function setUp() + public function set_up() { // set a baseline user agent $_SERVER['HTTP_USER_AGENT'] = $this->_user_agent; @@ -24,7 +24,7 @@ class UserAgent_test extends CI_TestCase // -------------------------------------------------------------------- - public function testAcceptLang() + public function test_accept_lang() { $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'en'; @@ -35,7 +35,7 @@ class UserAgent_test extends CI_TestCase // -------------------------------------------------------------------- - public function testMobile() + public function test_mobile() { // Mobile Not Set $_SERVER['HTTP_USER_AGENT'] = $this->_mobile_ua; @@ -45,7 +45,7 @@ class UserAgent_test extends CI_TestCase // -------------------------------------------------------------------- - public function testUtilIsFunctions() + public function test_util_is_functions() { $this->assertTrue($this->agent->is_browser()); $this->assertFalse($this->agent->is_robot()); @@ -55,14 +55,14 @@ class UserAgent_test extends CI_TestCase // -------------------------------------------------------------------- - public function testAgentString() + public function test_agent_string() { $this->assertEquals($this->_user_agent, $this->agent->agent_string()); } // -------------------------------------------------------------------- - public function testBrowserInfo() + public function test_browser_info() { $this->assertEquals('Mac OS X', $this->agent->platform()); $this->assertEquals('Safari', $this->agent->browser()); @@ -73,7 +73,7 @@ class UserAgent_test extends CI_TestCase // -------------------------------------------------------------------- - public function testCharsets() + public function test_charsets() { $_SERVER['HTTP_ACCEPT_CHARSET'] = 'utf8'; diff --git a/tests/lib/ci_testcase.php b/tests/lib/ci_testcase.php index 10539a3af..8ca71fdf2 100644 --- a/tests/lib/ci_testcase.php +++ b/tests/lib/ci_testcase.php @@ -25,6 +25,8 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { 'model' => 'model' ); + // -------------------------------------------------------------------- + public function __construct() { parent::__construct(); @@ -34,6 +36,26 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { // -------------------------------------------------------------------- + public function setUp() + { + if (method_exists($this, 'set_up')) + { + $this->set_up(); + } + } + + // -------------------------------------------------------------------- + + public function tearDown() + { + if (method_exists($this, 'tear_down')) + { + $this->tear_down(); + } + } + + // -------------------------------------------------------------------- + function ci_set_config($key, $val = '') { if (is_array($key)) -- cgit v1.2.3-24-g4f1b From fd5667c9d74549bb92f0ffbd74262e525e4830f9 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Fri, 22 Apr 2011 10:01:56 -0500 Subject: dropping in PHPUnit version requirements --- tests/readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/readme.txt b/tests/readme.txt index b1e9b732f..9a299544a 100644 --- a/tests/readme.txt +++ b/tests/readme.txt @@ -21,7 +21,7 @@ format to facilitate clean api design. [see http://arrenbrecht.ch/testing/] # Requirements -1. PHP Unit +1. PHP Unit >= 3.5.6 - pear channel-discover pear.phpunit.de - pear install phpunit/PHPUnit -- cgit v1.2.3-24-g4f1b From 5de50ec2fefc7dad1fd768573ca3f47538fd8988 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Fri, 22 Apr 2011 10:02:17 -0500 Subject: Updates to test Bootstrap --- tests/Bootstrap.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index db5ffbd52..657671ab0 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -21,8 +21,10 @@ require_once $dir.'/lib/ci_testcase.php'; // Omit files in the PEAR & PHP Paths from ending up in the coverage report PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PEAR_INSTALL_DIR); PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PHP_LIBDIR); +PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PROJECT_BASE.'tests'); // Omit Tests from the coverage reports. -// PHP_CodeCoverage_Filter::getInstance() +// PHP_CodeCoverage_Filter::getInstance()->addDirectoryToWhiteList('../system/core'); +PHP_CodeCoverage_Filter::getInstance()->addFileToBlackList('../system/core/CodeIgniter.php'); unset($dir); \ No newline at end of file -- cgit v1.2.3-24-g4f1b From d92277d650139af381a856cfa8f23a42b8ce04cb Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Fri, 22 Apr 2011 12:56:22 -0500 Subject: Initial commit of file helper tests. --- tests/codeigniter/helpers/file_helper_test.php | 157 +++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 tests/codeigniter/helpers/file_helper_test.php (limited to 'tests') diff --git a/tests/codeigniter/helpers/file_helper_test.php b/tests/codeigniter/helpers/file_helper_test.php new file mode 100644 index 000000000..a596a0375 --- /dev/null +++ b/tests/codeigniter/helpers/file_helper_test.php @@ -0,0 +1,157 @@ +_test_dir = vfsStreamWrapper::getRoot(); + } + + // -------------------------------------------------------------------- + + public function test_read_file() + { + $this->assertFalse(read_file('does_not_exist')); + + $content = 'Jack and Jill went up the mountain to fight a billy goat.'; + + $file = vfsStream::newFile('my_file.txt')->withContent($content) + ->at($this->_test_dir); + + $this->assertEquals($content, read_file(vfsStream::url('my_file.txt'))); + } + + // -------------------------------------------------------------------- + + public function test_octal_permissions() + { + $content = 'Jack and Jill went up the mountain to fight a billy goat.'; + + $file = vfsStream::newFile('my_file.txt', 0777)->withContent($content) + ->lastModified(time() - 86400) + ->at($this->_test_dir); + + $this->assertEquals('777', octal_permissions($file->getPermissions())); + } + + // -------------------------------------------------------------------- + + /** + * More tests should happen here, since I'm not hitting the whole function. + */ + public function test_symbolic_permissions() + { + $content = 'Jack and Jill went up the mountain to fight a billy goat.'; + + $file = vfsStream::newFile('my_file.txt', 0777)->withContent($content) + ->lastModified(time() - 86400) + ->at($this->_test_dir); + + $this->assertEquals('urwxrwxrwx', symbolic_permissions($file->getPermissions())); + } + + // -------------------------------------------------------------------- + + public function test_get_mime_by_extension() + { + $content = 'Jack and Jill went up the mountain to fight a billy goat.'; + + $file = vfsStream::newFile('my_file.txt', 0777)->withContent($content) + ->lastModified(time() - 86400) + ->at($this->_test_dir); + + $this->assertEquals('text/plain', + get_mime_by_extension(vfsStream::url('my_file.txt'))); + + // Test a mime with an array, such as png + $file = vfsStream::newFile('foo.png')->at($this->_test_dir); + + $this->assertEquals('image/png', get_mime_by_extension(vfsStream::url('foo.png'))); + + // Test a file not in the mimes array + $file = vfsStream::newFile('foo.blarfengar')->at($this->_test_dir); + + $this->assertFalse(get_mime_by_extension(vfsStream::url('foo.blarfengar'))); + } + + // -------------------------------------------------------------------- + + public function test_get_file_info() + { + // Test Bad File + $this->assertFalse(get_file_info('i_am_bad_boo')); + + // Test the rest + + // First pass in an array + $vals = array( + 'name', 'server_path', 'size', 'date', + 'readable', 'writable', 'executable', 'fileperms' + ); + + $this->_test_get_file_info($vals); + + // Test passing in vals as a string. + $vals = 'name, server_path, size, date, readable, writable, executable, fileperms'; + $this->_test_get_file_info($vals); + } + + private function _test_get_file_info($vals) + { + $content = 'Jack and Jill went up the mountain to fight a billy goat.'; + $last_modified = time() - 86400; + + $file = vfsStream::newFile('my_file.txt', 0777)->withContent($content) + ->lastModified($last_modified) + ->at($this->_test_dir); + + $ret_values = array( + 'name' => 'my_file.txt', + 'server_path' => 'vfs://my_file.txt', + 'size' => 57, + 'date' => $last_modified, + 'readable' => TRUE, + 'writable' => TRUE, + 'executable' => TRUE, + 'fileperms' => 33279 + ); + + $info = get_file_info(vfsStream::url('my_file.txt'), $vals); + + foreach ($info as $k => $v) + { + $this->assertEquals($ret_values[$k], $v); + } + } + + // -------------------------------------------------------------------- + + // Skipping for now, as it's not implemented in vfsStreamWrapper + // flock(): vfsStreamWrapper::stream_lock is not implemented! + + // public function test_write_file() + // { + // if ( ! defined('FOPEN_WRITE_CREATE_DESTRUCTIVE')) + // { + // define('FOPEN_WRITE_CREATE_DESTRUCTIVE', 'wb'); + // } + // + // $content = 'Jack and Jill went up the mountain to fight a billy goat.'; + // + // $file = vfsStream::newFile('write.txt', 0777)->withContent('') + // ->lastModified(time() - 86400) + // ->at($this->_test_dir); + // + // $this->assertTrue(write_file(vfsStream::url('write.txt'), $content)); + // + // } + + // -------------------------------------------------------------------- + +} \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 19379ef47a6bc0a788c65038bb59eca0b6624848 Mon Sep 17 00:00:00 2001 From: Eric Barnes Date: Tue, 3 May 2011 22:16:11 -0400 Subject: Added unit tests for number helper. --- tests/codeigniter/helpers/number_helper_test.php | 71 +++++++++++++++++++++++- 1 file changed, 68 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/helpers/number_helper_test.php b/tests/codeigniter/helpers/number_helper_test.php index 02fc49c3d..3322b2475 100644 --- a/tests/codeigniter/helpers/number_helper_test.php +++ b/tests/codeigniter/helpers/number_helper_test.php @@ -1,13 +1,78 @@ ci_core_class('lang'); + + // Mock away load, too much going on in there, + // we'll just check for the expected parameter + + $lang = $this->getMock($lang_cls, array('load')); + $lang->expects($this->once()) + ->method('load') + ->with($this->equalTo('number')); + + // Assign the proper language array + + $lang->language = $this->_get_lang('number'); + + // We don't have a controller, so just create + // a cheap class to act as our super object. + // Make sure it has a lang attribute. + + $obj = new StdClass; + $obj->lang = $lang; + $this->ci_instance($obj); + } + + // Quick helper to actually grab the language + // file. Consider moving this to ci_testcase? + public function _get_lang($name) + { + require BASEPATH.'language/english/'.$name.'_lang.php'; + return $lang; + } + public function test_byte_format() { - // $this->assertEquals('456 Bytes', byte_format(456)); + $this->assertEquals('456 Bytes', byte_format(456)); + } + + public function test_kb_format() + { + $this->assertEquals('4.5 KB', byte_format(4567)); + } + + public function test_kb_format_medium() + { + $this->assertEquals('44.6 KB', byte_format(45678)); } -} \ No newline at end of file + public function test_kb_format_large() + { + $this->assertEquals('446.1 KB', byte_format(456789)); + } + + public function test_mb_format() + { + $this->assertEquals('3.3 MB', byte_format(3456789)); + } + + public function test_gb_format() + { + $this->assertEquals('1.8 GB', byte_format(1932735283.2)); + } + + public function test_tb_format() + { + $this->assertEquals('112,283.3 TB', byte_format(123456789123456789)); + } +} + +// EOF \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 5d1e32b2fbae74e6f9e1ab2bdb6a3635579ef13e Mon Sep 17 00:00:00 2001 From: Eric Barnes Date: Tue, 3 May 2011 22:28:59 -0400 Subject: Added unit tests for date helper. --- tests/codeigniter/helpers/date_helper_test.php | 240 +++++++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 tests/codeigniter/helpers/date_helper_test.php (limited to 'tests') diff --git a/tests/codeigniter/helpers/date_helper_test.php b/tests/codeigniter/helpers/date_helper_test.php new file mode 100644 index 000000000..f6048c324 --- /dev/null +++ b/tests/codeigniter/helpers/date_helper_test.php @@ -0,0 +1,240 @@ +markTestIncomplete('not implemented yet'); + } + + // ------------------------------------------------------------------------ + + public function test_mdate() + { + $time = time(); + $expected = date("Y-m-d - h:i a", $time); + $test = mdate("%Y-%m-%d - %h:%i %a", $time); + $this->assertEquals($expected, $test); + } + + // ------------------------------------------------------------------------ + + public function test_standard_date_rfc822() + { + $time = time(); + $format = 'DATE_RFC822'; + $expected = date("D, d F y G:i:s O", $time); + $this->assertEquals($expected, standard_date($format, $time)); + } + + // ------------------------------------------------------------------------ + + public function test_standard_date_atom() + { + $time = time(); + $format = 'DATE_ATOM'; + $expected = date("Y-m-d\TH:i:sO", $time); + $this->assertEquals($expected, standard_date($format, $time)); + } + + // ------------------------------------------------------------------------ + + public function test_standard_date_cookie() + { + $time = time(); + $format = 'DATE_COOKIE'; + $expected = date("l, d-M-y H:i:s \U\T\C", $time); + $this->assertEquals($expected, standard_date($format, $time)); + } + + // ------------------------------------------------------------------------ + + public function test_standard_date_iso8601() + { + $time = time(); + $format = 'DATE_ISO8601'; + $expected = date("Y-m-d\TH:i:sO", $time); + $this->assertEquals($expected, standard_date($format, $time)); + } + + // ------------------------------------------------------------------------ + + public function test_standard_date_rfc850() + { + $time = time(); + $format = 'DATE_RFC850'; + $expected = date("l, d-M-y H:i:s \U\T\C", $time); + $this->assertEquals($expected, standard_date($format, $time)); + } + + // ------------------------------------------------------------------------ + + public function test_standard_date_rfc1036() + { + $time = time(); + $format = 'DATE_RFC1036'; + $expected = date("D, d M y H:i:s O", $time); + $this->assertEquals($expected, standard_date($format, $time)); + } + + // ------------------------------------------------------------------------ + + public function test_standard_date_rfc1123() + { + $time = time(); + $format = 'DATE_RFC1123'; + $expected = date("D, d M Y H:i:s O", $time); + $this->assertEquals($expected, standard_date($format, $time)); + } + + // ------------------------------------------------------------------------ + + public function test_standard_date_rfc2822() + { + $time = time(); + $format = 'DATE_RFC2822'; + $expected = date("D, d M Y H:i:s O", $time); + $this->assertEquals($expected, standard_date($format, $time)); + } + + // ------------------------------------------------------------------------ + + public function test_standard_date_rss() + { + $time = time(); + $format = 'DATE_RSS'; + $expected = date("D, d M Y H:i:s O", $time); + $this->assertEquals($expected, standard_date($format, $time)); + } + + // ------------------------------------------------------------------------ + + public function test_standard_date_w3c() + { + $time = time(); + $format = 'DATE_W3C'; + $expected = date("Y-m-d\TH:i:sO", $time); + $this->assertEquals($expected, standard_date($format, $time)); + } + + // ------------------------------------------------------------------------ + + public function test_timespan() + { + $this->markTestIncomplete('not implemented yet'); + } + + // ------------------------------------------------------------------------ + + public function test_days_in_month() + { + $this->assertEquals(30, days_in_month(06, 2005)); + $this->assertEquals(28, days_in_month(02, 2011)); + $this->assertEquals(29, days_in_month(02, 2012)); + } + + // ------------------------------------------------------------------------ + + public function test_local_to_gmt() + { + $this->markTestIncomplete('not implemented yet'); + } + + // ------------------------------------------------------------------------ + + public function test_gmt_to_local() + { + $timestamp = '1140153693'; + $timezone = 'UM8'; + $daylight_saving = TRUE; + + $this->assertEquals(1140128493, gmt_to_local($timestamp, $timezone, $daylight_saving)); + } + + // ------------------------------------------------------------------------ + + public function test_mysql_to_unix() + { + $this->assertEquals(1164378225, mysql_to_unix(20061124092345)); + } + + // ------------------------------------------------------------------------ + + public function test_unix_to_human() + { + $time = time(); + $this->assertEquals(date("Y-m-d h:i A"), unix_to_human($time)); + $this->assertEquals(date("Y-m-d h:i:s A"), unix_to_human($time, TRUE, 'us')); + $this->assertEquals(date("Y-m-d H:i:s"), unix_to_human($time, TRUE, 'eu')); + } + + // ------------------------------------------------------------------------ + + public function test_human_to_unix() + { + $time = time(); + $this->markTestIncomplete('Failed Test'); + // $this->assertEquals($time, human_to_unix(unix_to_human($time))); + } + + // ------------------------------------------------------------------------ + + public function test_timezones() + { + $zones = array( + 'UM12' => -12, + 'UM11' => -11, + 'UM10' => -10, + 'UM95' => -9.5, + 'UM9' => -9, + 'UM8' => -8, + 'UM7' => -7, + 'UM6' => -6, + 'UM5' => -5, + 'UM45' => -4.5, + 'UM4' => -4, + 'UM35' => -3.5, + 'UM3' => -3, + 'UM2' => -2, + 'UM1' => -1, + 'UTC' => 0, + 'UP1' => +1, + 'UP2' => +2, + 'UP3' => +3, + 'UP35' => +3.5, + 'UP4' => +4, + 'UP45' => +4.5, + 'UP5' => +5, + 'UP55' => +5.5, + 'UP575' => +5.75, + 'UP6' => +6, + 'UP65' => +6.5, + 'UP7' => +7, + 'UP8' => +8, + 'UP875' => +8.75, + 'UP9' => +9, + 'UP95' => +9.5, + 'UP10' => +10, + 'UP105' => +10.5, + 'UP11' => +11, + 'UP115' => +11.5, + 'UP12' => +12, + 'UP1275' => +12.75, + 'UP13' => +13, + 'UP14' => +14 + ); + + foreach ($zones AS $test => $expected) + { + $this->assertEquals($expected, timezones($test)); + } + + $this->assertArrayHasKey('UP3', timezones()); + $this->assertEquals(0, timezones('non_existant')); + } +} + +/* End of file date_helper_test.php */ \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 71644d683d0a15a6f7e04fabd0f51a4200d620b4 Mon Sep 17 00:00:00 2001 From: Eric Barnes Date: Tue, 12 Jul 2011 21:45:40 -0400 Subject: Fixed some small issues in the date tests. --- tests/codeigniter/helpers/date_helper_test.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/helpers/date_helper_test.php b/tests/codeigniter/helpers/date_helper_test.php index f6048c324..63cf30bbe 100644 --- a/tests/codeigniter/helpers/date_helper_test.php +++ b/tests/codeigniter/helpers/date_helper_test.php @@ -26,7 +26,7 @@ class Date_helper_test extends CI_TestCase { $time = time(); $format = 'DATE_RFC822'; - $expected = date("D, d F y G:i:s O", $time); + $expected = date("D, d M y H:i:s O", $time); $this->assertEquals($expected, standard_date($format, $time)); } @@ -158,7 +158,7 @@ class Date_helper_test extends CI_TestCase public function test_mysql_to_unix() { - $this->assertEquals(1164378225, mysql_to_unix(20061124092345)); + $this->assertEquals(1344708680, mysql_to_unix(date("YYYY-MM-DD HH:MM:SS"))); } // ------------------------------------------------------------------------ -- cgit v1.2.3-24-g4f1b From 92ff07ee199d17a4dccd84114da8b66a95a4f56d Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Sat, 20 Aug 2011 16:57:48 -0500 Subject: Updating error in html_helper test_Ul --- tests/codeigniter/helpers/html_helper_test.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/codeigniter/helpers/html_helper_test.php b/tests/codeigniter/helpers/html_helper_test.php index 706874f9e..553fc2bb1 100644 --- a/tests/codeigniter/helpers/html_helper_test.php +++ b/tests/codeigniter/helpers/html_helper_test.php @@ -51,7 +51,7 @@ EOH; $list = array('foo', 'bar'); - $this->assertEquals($expect, ul($list, ' class="test"')); + $this->assertEquals($expect, ul($list, 'class="test"')); $this->assertEquals($expect, ul($list, array('class' => 'test'))); } -- cgit v1.2.3-24-g4f1b From 2e0f825c942e7e77a9aba451f3252762db0c86f5 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Sun, 21 Aug 2011 16:19:16 -0500 Subject: Fixing errors in date helper tests. --- tests/codeigniter/helpers/date_helper_test.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/helpers/date_helper_test.php b/tests/codeigniter/helpers/date_helper_test.php index 63cf30bbe..c7a2c9b6e 100644 --- a/tests/codeigniter/helpers/date_helper_test.php +++ b/tests/codeigniter/helpers/date_helper_test.php @@ -158,7 +158,9 @@ class Date_helper_test extends CI_TestCase public function test_mysql_to_unix() { - $this->assertEquals(1344708680, mysql_to_unix(date("YYYY-MM-DD HH:MM:SS"))); + $time = time(); + $this->assertEquals($time, + mysql_to_unix(date("Y-m-d H:i:s", $time))); } // ------------------------------------------------------------------------ @@ -166,9 +168,9 @@ class Date_helper_test extends CI_TestCase public function test_unix_to_human() { $time = time(); - $this->assertEquals(date("Y-m-d h:i A"), unix_to_human($time)); - $this->assertEquals(date("Y-m-d h:i:s A"), unix_to_human($time, TRUE, 'us')); - $this->assertEquals(date("Y-m-d H:i:s"), unix_to_human($time, TRUE, 'eu')); + $this->assertEquals(date("Y-m-d h:i A", $time), unix_to_human($time)); + $this->assertEquals(date("Y-m-d h:i:s A", $time), unix_to_human($time, TRUE, 'us')); + $this->assertEquals(date("Y-m-d H:i:s", $time), unix_to_human($time, TRUE, 'eu')); } // ------------------------------------------------------------------------ -- cgit v1.2.3-24-g4f1b From d031ef79248bef6e188b6726682aac12b2fb8ff6 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Sun, 21 Aug 2011 16:19:56 -0500 Subject: ignoring a test in the inflector test. --- tests/codeigniter/helpers/inflector_helper_test.php | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'tests') diff --git a/tests/codeigniter/helpers/inflector_helper_test.php b/tests/codeigniter/helpers/inflector_helper_test.php index 34bc34ebb..ef1f54afc 100644 --- a/tests/codeigniter/helpers/inflector_helper_test.php +++ b/tests/codeigniter/helpers/inflector_helper_test.php @@ -24,6 +24,10 @@ class Inflector_helper_test extends CI_TestCase { public function test_plural() { + $this->markTestSkipped( + 'abjectness is breaking. SKipping for the time being.' + ); + $strs = array( 'telly' => 'tellies', 'smelly' => 'smellies', -- cgit v1.2.3-24-g4f1b From 2c4b36620828173f3caf83fc7f6146bccb3688f4 Mon Sep 17 00:00:00 2001 From: Greg Aker Date: Sun, 21 Aug 2011 16:28:06 -0500 Subject: Adding url_helper unit test file. GO! --- tests/codeigniter/helpers/url_helper_test.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tests/codeigniter/helpers/url_helper_test.php (limited to 'tests') diff --git a/tests/codeigniter/helpers/url_helper_test.php b/tests/codeigniter/helpers/url_helper_test.php new file mode 100644 index 000000000..ea3fb0e4f --- /dev/null +++ b/tests/codeigniter/helpers/url_helper_test.php @@ -0,0 +1,22 @@ + 'foo-bar', + '\ testing 12' => 'testing-12' + ); + + foreach ($words as $in => $out) + { + $this->assertEquals($out, url_title($in, 'dash', TRUE)); + } + } + + // -------------------------------------------------------------------- + +} \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 34f64d9998cc82f62425b31acd99ae4fac6e4f52 Mon Sep 17 00:00:00 2001 From: Stephen Date: Sun, 28 Aug 2011 10:08:15 +0200 Subject: Cleaned up and converted readme to markdown format for github --- tests/README.md | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/readme.txt | 137 ---------------------------------------------- 2 files changed, 162 insertions(+), 137 deletions(-) create mode 100644 tests/README.md delete mode 100644 tests/readme.txt (limited to 'tests') diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 000000000..b53f19506 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,162 @@ +# CodeIgniter Unit Tests # + +*Do not merge to default until these issues have been addressed* + +- Clean up naming conventions +- Figure out config stuff +- Figure out database testing + +### Introduction: + +This is the preliminary CodeIgniter testing documentation. It +will cover both internal as well as external APIs and the reasoning +behind their implemenation, where appropriate. As with all CodeIgniter +documentation, this file should maintain a mostly human readable +format to facilitate clean api design. [see http://arrenbrecht.ch/testing/] + +*First public draft: everything is subject to change* + +### Requirements + +PHP Unit >= 3.5.6 + + pear channel-discover pear.phpunit.de + pear install phpunit/PHPUnit + +vfsStream + + pear channel-discover pear.php-tools.net + pear install pat/vfsStream-alpha + +#### Installation of PEAR and PHPUnit on Ubuntu + + Installation on Ubuntu requires a few steps. Depending on your setup you may + need to use 'sudo' to install these. Mileage may vary but these steps are a + good start. + + # Install the PEAR package + sudo apt-get install php-pear + + # Add a few sources to PEAR + pear channel-discover pear.phpunit.de + pear channel-discover pear.symfony-project.com + pear channel-discover components.ez.no + pear channel-discover pear.symfony-project.com + + # Finally install PHPUnit and vfsStream (including dependencies) + pear install --alldeps phpunit/PHPUnit + pear install --alldeps pat/vfsStream-alpha + + # Finally, run 'phpunit' from within the ./tests directory + # and you should be on your way! + +## Test Suites: + +CodeIgniter bootstraps a request very directly, with very flat class +hierarchy. As a result, there is no main CodeIgniter class until the +controller is instantiated. + +This has forced the core classes to be relatively decoupled, which is +a good thing. However, it makes that portion of code relatively hard +to test. + +Right now that means we'll probably have two core test suites, along +with a base for application and package tests. That gives us: + +1. Bootstrap Test - test common.php and sanity check codeigniter.php [in planning] +2. System Test - test core components in relative isolation [in development] +3. Application Test - bootstrapping for application/tests [not started] +4. Package Test - bootstrapping for /tests [not started] + +### CI_TestCase Documentation + +Test cases should extend CI_TestCase. This internally extends +PHPUnit\_Framework\_TestCase, so you have access to all of your +usual PHPUnit methods. + +We need to provide a simple way to modify the globals and the +common function output. We also need to be able to mock up +the super object as we please. + +Current API is *not stable*. Names and implementations will change. + + $this->ci_set_config($key, $val) + +Set the global config variables. If key is an array, it will +replace the entire config array. They are _not_ merged. + + $this->ci_instance($obj) + +Set the object to use as the "super object", in a lot +of cases this will be a simple stdClass with the attributes +you need it to have. If no parameter, will return the instance. + + $this->ci_instance_var($name, $val) + +Add an attribute to the super object. This is useful if you +set up a simple instance in setUp and then need to add different +class mockups to your super object. + + $this->ci_core_class($name) + +Get the _class name_ of a core class, so that you can instantiate +it. The variable is returned by reference and is tied to the correct +$GLOBALS key. For example: + + $cfg =& $this->ci_core_class('cfg'); // returns 'CI_Config' + $cfg = new $cfg; // instantiates config and overwrites the CFG global + + $this->ci_set_core_class($name, $obj) + +An alternative way to set one of the core globals. + + $this->ci_get_config() __internal__ + +Returns the global config array. Internal as you shouldn't need to +call this (you're setting it, after all). Used internally to make +CI's get_config() work. + + CI_TestCase::instance() __internal__ + +Returns an instance of the current test case. We force phpunit to +run with backup-globals enabled, so this will always be the instance +of the currently running test class. + +### Going forward + +#### 1. Bootstrap Test + +Testing common.php should be pretty simple. Include the file, and test the +functions. May require some tweaking so that we can grab the statics from all +methods (see is_loaded()). Testing the actual CodeIgniter.php file will most +likely be an output test for the default view, with some object checking after +the file runs. Needs consideration. + +#### 2. System Test + +Testing the core system relies on being able to isolate the core components +as much as possible. A few of them access other core classes as globals. These +should be mocked up and easy to manipulate. + +All functions in common.php should be a minimal implementation, or and mapped +to a method in the test's parent class to gives us full control of their output. + +#### 3. Application Test: + +Not sure yet, needs to handle: + +- Libraries +- Helpers +- Models +- MY_* files +- Controllers (uh...?) +- Views? (watir, selenium, cucumber?) +- Database Testing + +#### 4. Package Test: + +I don't have a clue how this will work. + +Needs to be able to handle packages +that are used multiple times within the application (i.e. EE/Pyro modules) +as well as packages that are used by multiple applications (library distributions) \ No newline at end of file diff --git a/tests/readme.txt b/tests/readme.txt deleted file mode 100644 index 9a299544a..000000000 --- a/tests/readme.txt +++ /dev/null @@ -1,137 +0,0 @@ -# Do not merge to default until this is blank # - -- Clean up naming conventions -- Figure out config stuff -- Figure out database testing - - - -# -------------- CodeIgniter Testing (4/20/2011) -------------- # - - -# Introduction: - -This is the preliminary CodeIgniter testing documentation. It -will cover both internal as well as external APIs and the reasoning -behind their implemenation, where appropriate. As with all CodeIgniter -documentation, this file should maintain a mostly human readable -format to facilitate clean api design. [see http://arrenbrecht.ch/testing/] - -*FIRST PUBLIC DRAFT: EVERYTHING IS SUBJECT TO CHANGE* - -# Requirements - -1. PHP Unit >= 3.5.6 - - pear channel-discover pear.phpunit.de - - pear install phpunit/PHPUnit - -2. vfsStream - - pear channel-discover pear.php-tools.net - - pear install pat/vfsStream-alpha - - -# Test Suites: - -CodeIgniter bootstraps a request very directly, with very flat class -hierarchy. As a result, there is no main CodeIgniter class until the -controller is instantiated. - -This has forced the core classes to be relatively decoupled, which is -a good thing. However, it makes that portion of code relatively hard -to test. - -Right now that means we'll probably have two core test suites, along -with a base for application and package tests. That gives us: - -1. Bootstrap Test - test common.php and sanity check codeigniter.php [in planning] -2. System Test - test core components in relative isolation [in development] -3. Application Test - bootstrapping for application/tests [not started] -4. Package Test - bootstrapping for /tests [not started] - - -## 1. Bootstrap Test - -Testing common.php should be pretty simple. Include the file, and test the -functions. May require some tweaking so that we can grab the statics from all -methods (see is_loaded()). Testing the actual CodeIgniter.php file will most -likely be an output test for the default view, with some object checking after -the file runs. Needs consideration. - - -## 2. System Test - -Testing the core system relies on being able to isolate the core components -as much as possible. A few of them access other core classes as globals. These -should be mocked up and easy to manipulate. - -All functions in common.php should be a minimal implementation, or and mapped -to a method in the test's parent class to gives us full control of their output. - - -### CI_TestCase Documentation - - -Test cases should extend CI_TestCase. This internally extends -PHPUnit_Framework_TestCase, so you have access to all of your -usual PHPUnit methods. - -We need to provide a simple way to modify the globals and the -common function output. We also need to be able to mock up -the super object as we please. - -Current API is *not stable*. Names and implementations will change. - -$this->ci_set_config($key, $val) - Set the global config variables. If key is an array, it will - replace the entire config array. They are _not_ merged. - -$this->ci_instance($obj) - set the object to use as the "super object", in a lot - of cases this will be a simple stdClass with the attributes - you need it to have. If no parameter, will return the instance. - -$this->ci_instance_var($name, $val) - add an attribute to the super object. This is useful if you - set up a simple instance in setUp and then need to add different - class mockups to your super object. - -$this->ci_core_class($name) - Get the _class name_ of a core class, so that you can instantiate - it. The variable is returned by reference and is tied to the correct - $GLOBALS key. For example: - $cfg =& $this->ci_core_class('cfg'); // returns 'CI_Config' - $cfg = new $cfg; // instantiates config and overwrites the CFG global - -$this->ci_set_core_class($name, $obj) - An alternative way to set one of the core globals. - -$this->ci_get_config() __internal__ - Returns the global config array. Internal as you shouldn't need to - call this (you're setting it, after all). Used internally to make - CI's get_config() work. - -CI_TestCase::instance() __internal__ - Returns an instance of the current test case. We force phpunit to - run with backup-globals enabled, so this will always be the instance - of the currently running test class. - -## 3. Application Test: - -Not sure yet, needs to handle: -- Libraries -- Helpers -- Models -- MY_* files -- Controllers (uh...?) -- Views? (watir, selenium, cucumber?) - -- Database Testing - - -## 4. Package Test: - -I don't have a clue how this will work. - -Needs to be able to handle packages -that are used multiple times within the application (i.e. EE/Pyro modules) -as well as packages that are used by multiple applications (library distributions) \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 2e00c2490fb544596fba06483ad1c1d626c1fd4f Mon Sep 17 00:00:00 2001 From: Stephen Date: Sun, 28 Aug 2011 10:25:40 +0200 Subject: Added tests for CI_URI class. Made modifications to core class which helped with isolation for testing. --- tests/codeigniter/core/URI_test.php | 344 ++++++++++++++++++++++++++++++++++++ 1 file changed, 344 insertions(+) create mode 100644 tests/codeigniter/core/URI_test.php (limited to 'tests') diff --git a/tests/codeigniter/core/URI_test.php b/tests/codeigniter/core/URI_test.php new file mode 100644 index 000000000..87d921b11 --- /dev/null +++ b/tests/codeigniter/core/URI_test.php @@ -0,0 +1,344 @@ +ci_core_class('cfg'); + + // set predictable config values + $test->ci_set_config(array( + 'index_page' => 'index.php', + 'base_url' => 'http://example.com/', + 'subclass_prefix' => 'MY_' + )); + + $this->config = new $cls; + + } + + protected function _is_cli_request() + { + return FALSE; + } +} + +class URI_test extends CI_TestCase { + + public function set_up() + { + $this->uri = new URI_extended(); + } + + // -------------------------------------------------------------------- + + public function test_set_uri_string() + { + // Slashes get killed + $this->uri->_set_uri_string('/'); + + $a = ''; + $b =& $this->uri->uri_string; + + $this->assertEquals($a, $b); + + $this->uri->_set_uri_string('nice/uri'); + + $a = 'nice/uri'; + + $this->assertEquals($a, $b); + } + + // -------------------------------------------------------------------- + + public function test_fetch_uri_string() + { + define('SELF', 'index.php'); + + // uri_protocol: AUTO + $this->uri->config->set_item('uri_protocol', 'AUTO'); + + // Test a variety of request uris + $requests = array( + '/index.php/controller/method' => 'controller/method', + '/index.php?/controller/method' => 'controller/method', + '/index.php?/controller/method/?var=foo' => 'controller/method' + ); + + foreach($requests as $request => $expected) + { + $_SERVER['SCRIPT_NAME'] = '/index.php'; + $_SERVER['REQUEST_URI'] = $request; + + $this->uri->_fetch_uri_string(); + $this->assertEquals($expected, $this->uri->uri_string ); + } + + // Test a subfolder + $_SERVER['SCRIPT_NAME'] = '/subfolder/index.php'; + $_SERVER['REQUEST_URI'] = '/subfolder/index.php/controller/method'; + + $this->uri->_fetch_uri_string(); + + $a = 'controller/method'; + $b = $this->uri->uri_string; + + $this->assertEquals($a, $b); + + // death to request uri + unset($_SERVER['REQUEST_URI']); + + // life to path info + $_SERVER['PATH_INFO'] = '/controller/method/'; + + $this->uri->_fetch_uri_string(); + + $a = '/controller/method/'; + $b =& $this->uri->uri_string; + + $this->assertEquals($a, $b); + + // death to path info + // At this point your server must be seriously drunk + unset($_SERVER['PATH_INFO']); + + $_SERVER['QUERY_STRING'] = '/controller/method/'; + + $this->uri->_fetch_uri_string(); + + $a = '/controller/method/'; + $b = $this->uri->uri_string; + + $this->assertEquals($a, $b); + + // At this point your server is a labotomy victim + + unset($_SERVER['QUERY_STRING']); + + $_GET['/controller/method/'] = ''; + + $this->uri->_fetch_uri_string(); + $this->assertEquals($a, $b); + + // Test coverage implies that these will work + // uri_protocol: REQUEST_URI + // uri_protocol: CLI + + } + + // -------------------------------------------------------------------- + + public function test_explode_segments() + { + // Lets test the function's ability to clean up this mess + $uris = array( + 'test/uri' => array('test', 'uri'), + '/test2/uri2' => array('test2', 'uri2'), + '//test3/test3///' => array('test3', 'test3') + ); + + foreach($uris as $uri => $a) + { + $this->uri->segments = array(); + $this->uri->uri_string = $uri; + $this->uri->_explode_segments(); + + $b = $this->uri->segments; + + $this->assertEquals($a, $b); + } + + } + + // -------------------------------------------------------------------- + + public function test_filter_uri() + { + $this->uri->config->set_item('enable_query_strings', FALSE); + $this->uri->config->set_item('permitted_uri_chars', 'a-z 0-9~%.:_\-'); + + $str_in = 'abc01239~%.:_-'; + $str = $this->uri->_filter_uri($str_in); + + $this->assertEquals($str, $str_in); + } + + // -------------------------------------------------------------------- + + public function test_filter_uri_escaping() + { + // ensure escaping even if dodgey characters are permitted + + $this->uri->config->set_item('enable_query_strings', FALSE); + $this->uri->config->set_item('permitted_uri_chars', 'a-z 0-9~%.:_\-()$'); + + $str = $this->uri->_filter_uri('$destroy_app(foo)'); + + $this->assertEquals($str, '$destroy_app(foo)'); + } + + // -------------------------------------------------------------------- + + public function test_filter_uri_throws_error() + { + $this->setExpectedException('Exception'); + + $this->uri->config->set_item('enable_query_strings', FALSE); + $this->uri->config->set_item('permitted_uri_chars', 'a-z 0-9~%.:_\-'); + $this->uri->_filter_uri('$this()'); + } + + // -------------------------------------------------------------------- + + public function test_remove_url_suffix() + { + $this->uri->config->set_item('url_suffix', '.html'); + + $this->uri->uri_string = 'controller/method/index.html'; + $this->uri->_remove_url_suffix(); + + $this->assertEquals($this->uri->uri_string, 'controller/method/index'); + + $this->uri->uri_string = 'controller/method/index.htmlify.html'; + $this->uri->_remove_url_suffix(); + + $this->assertEquals($this->uri->uri_string, 'controller/method/index.htmlify'); + } + + // -------------------------------------------------------------------- + + public function test_segment() + { + $this->uri->segments = array(1 => 'controller'); + $this->assertEquals($this->uri->segment(1), 'controller'); + $this->assertEquals($this->uri->segment(2, 'default'), 'default'); + } + + // -------------------------------------------------------------------- + + public function test_rsegment() + { + $this->uri->rsegments = array(1 => 'method'); + $this->assertEquals($this->uri->rsegment(1), 'method'); + $this->assertEquals($this->uri->rsegment(2, 'default'), 'default'); + } + + // -------------------------------------------------------------------- + + public function test_uri_to_assoc() + { + $this->uri->segments = array('a', '1', 'b', '2', 'c', '3'); + + $a = array('a' => '1', 'b' => '2', 'c' => '3'); + $b = $this->uri->uri_to_assoc(1); + $this->assertEquals($a, $b); + + $a = array('b' => '2', 'c' => '3'); + $b = $this->uri->uri_to_assoc(3); + $this->assertEquals($a, $b); + + + $this->uri->keyval = array(); // reset cache + + $this->uri->segments = array('a', '1', 'b', '2', 'c'); + + $a = array('a' => '1', 'b' => '2', 'c' => FALSE); + $b = $this->uri->uri_to_assoc(1); + $this->assertEquals($a, $b); + + $this->uri->keyval = array(); // reset cache + + $this->uri->segments = array('a', '1'); + + // test default + $a = array('a' => '1', 'b' => FALSE); + $b = $this->uri->uri_to_assoc(1, array('a', 'b')); + $this->assertEquals($a, $b); + } + + // -------------------------------------------------------------------- + + public function test_ruri_to_assoc() + { + $this->uri->rsegments = array('x', '1', 'y', '2', 'z', '3'); + + $a = array('x' => '1', 'y' => '2', 'z' => '3'); + $b = $this->uri->ruri_to_assoc(1); + $this->assertEquals($a, $b); + + $a = array('y' => '2', 'z' => '3'); + $b = $this->uri->ruri_to_assoc(3); + $this->assertEquals($a, $b); + + + $this->uri->keyval = array(); // reset cache + + $this->uri->rsegments = array('x', '1', 'y', '2', 'z'); + + $a = array('x' => '1', 'y' => '2', 'z' => FALSE); + $b = $this->uri->ruri_to_assoc(1); + $this->assertEquals($a, $b); + + $this->uri->keyval = array(); // reset cache + + $this->uri->rsegments = array('x', '1'); + + // test default + $a = array('x' => '1', 'y' => FALSE); + $b = $this->uri->ruri_to_assoc(1, array('x', 'y')); + $this->assertEquals($a, $b); + + } + + // -------------------------------------------------------------------- + + public function test_assoc_to_uri() + { + $this->uri->config->set_item('uri_string_slashes', 'none'); + + $arr = array('a' => 1, 'b' => 2); + $a = 'a/1/b/2'; + $b = $this->uri->assoc_to_uri($arr); + $this->assertEquals($a, $b); + } + + // -------------------------------------------------------------------- + + public function test_slash_segment() + { + $this->uri->segments[1] = 'segment'; + $this->uri->rsegments[1] = 'segment'; + + $a = '/segment/'; + $b = $this->uri->slash_segment(1, 'both'); + $this->assertEquals($a, $b); + $b = $this->uri->slash_rsegment(1, 'both'); + $this->assertEquals($a, $b); + + $a = '/segment'; + $b = $this->uri->slash_segment(1, 'leading'); + $this->assertEquals($a, $b); + $b = $this->uri->slash_rsegment(1, 'leading'); + $this->assertEquals($a, $b); + + $a = 'segment/'; + $b = $this->uri->slash_segment(1, 'trailing'); + $this->assertEquals($a, $b); + $b = $this->uri->slash_rsegment(1, 'trailing'); + $this->assertEquals($a, $b); + } + + +} +// END URI_test Class + +/* End of file URI_test.php */ +/* Location: ./tests/core/URI_test.php */ \ No newline at end of file -- cgit v1.2.3-24-g4f1b From cf1926acb352f1d80cab7c1bc7e1ec5457a2b43d Mon Sep 17 00:00:00 2001 From: Eric Barnes Date: Mon, 29 Aug 2011 00:00:51 -0400 Subject: Removed beginning slash in expected for site_url. --- tests/codeigniter/core/Config_test.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/core/Config_test.php b/tests/codeigniter/core/Config_test.php index b6c57da70..30f0cc61d 100644 --- a/tests/codeigniter/core/Config_test.php +++ b/tests/codeigniter/core/Config_test.php @@ -67,13 +67,13 @@ class Config_test extends CI_TestCase { $this->config->set_item('enable_query_strings', FALSE); - $this->assertEquals('/index.php/test', $this->config->site_url('test')); - $this->assertEquals('/index.php/test/1', $this->config->site_url(array('test', '1'))); + $this->assertEquals('index.php/test', $this->config->site_url('test')); + $this->assertEquals('index.php/test/1', $this->config->site_url(array('test', '1'))); $this->config->set_item('enable_query_strings', TRUE); - $this->assertEquals('/index.php?test', $this->config->site_url('test')); - $this->assertEquals('/index.php?0=test&1=1', $this->config->site_url(array('test', '1'))); + $this->assertEquals('index.php?test', $this->config->site_url('test')); + $this->assertEquals('index.php?0=test&1=1', $this->config->site_url(array('test', '1'))); $this->config->set_item('base_url', $base_url); -- cgit v1.2.3-24-g4f1b From b3d277a58560c9cdc440efdc04730bf61ae80f9a Mon Sep 17 00:00:00 2001 From: Jeroen van der Gulik Date: Thu, 22 Sep 2011 18:03:49 +0200 Subject: added missing PAT pear channel --- tests/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/README.md b/tests/README.md index b53f19506..ad8051618 100644 --- a/tests/README.md +++ b/tests/README.md @@ -41,7 +41,7 @@ vfsStream pear channel-discover pear.phpunit.de pear channel-discover pear.symfony-project.com pear channel-discover components.ez.no - pear channel-discover pear.symfony-project.com + pear channel-discover pear.php-tools.net # Finally install PHPUnit and vfsStream (including dependencies) pear install --alldeps phpunit/PHPUnit @@ -159,4 +159,4 @@ I don't have a clue how this will work. Needs to be able to handle packages that are used multiple times within the application (i.e. EE/Pyro modules) -as well as packages that are used by multiple applications (library distributions) \ No newline at end of file +as well as packages that are used by multiple applications (library distributions) -- cgit v1.2.3-24-g4f1b From 78ec0603601001b6f0b4d0c4ef6087d32a133a63 Mon Sep 17 00:00:00 2001 From: Eric Barnes Date: Sun, 27 Nov 2011 00:48:56 -0500 Subject: Added tests for new increment_string --- tests/codeigniter/helpers/string_helper_test.php | 65 ++++++++++++++---------- 1 file changed, 38 insertions(+), 27 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/helpers/string_helper_test.php b/tests/codeigniter/helpers/string_helper_test.php index 5e0ee45de..2d7f96aa5 100644 --- a/tests/codeigniter/helpers/string_helper_test.php +++ b/tests/codeigniter/helpers/string_helper_test.php @@ -10,14 +10,14 @@ class String_helper_test extends CI_TestCase '//Slashes//\/' => 'Slashes//\\', '/var/www/html/' => 'var/www/html' ); - + foreach ($strs as $str => $expect) { $this->assertEquals($expect, trim_slashes($str)); } } - - // -------------------------------------------------------------------- + + // -------------------------------------------------------------------- public function test_strip_quotes() { @@ -25,30 +25,30 @@ class String_helper_test extends CI_TestCase '"me oh my!"' => 'me oh my!', "it's a winner!" => 'its a winner!', ); - + foreach ($strs as $str => $expect) { $this->assertEquals($expect, strip_quotes($str)); } } - // -------------------------------------------------------------------- - + // -------------------------------------------------------------------- + public function test_quotes_to_entities() { $strs = array( '"me oh my!"' => '"me oh my!"', "it's a winner!" => 'it's a winner!', ); - + foreach ($strs as $str => $expect) { $this->assertEquals($expect, quotes_to_entities($str)); - } + } } - // -------------------------------------------------------------------- - + // -------------------------------------------------------------------- + public function test_reduce_double_slashes() { $strs = array( @@ -56,57 +56,56 @@ class String_helper_test extends CI_TestCase '//var/www/html/example.com/' => '/var/www/html/example.com/', '/var/www/html//index.php' => '/var/www/html/index.php' ); - + foreach ($strs as $str => $expect) { $this->assertEquals($expect, reduce_double_slashes($str)); - } + } } - // -------------------------------------------------------------------- - + // -------------------------------------------------------------------- + public function test_reduce_multiples() { $strs = array( 'Fred, Bill,, Joe, Jimmy' => 'Fred, Bill, Joe, Jimmy', 'Ringo, John, Paul,,' => 'Ringo, John, Paul,' ); - + foreach ($strs as $str => $expect) { $this->assertEquals($expect, reduce_multiples($str)); } - + $strs = array( 'Fred, Bill,, Joe, Jimmy' => 'Fred, Bill, Joe, Jimmy', 'Ringo, John, Paul,,' => 'Ringo, John, Paul' - ); + ); foreach ($strs as $str => $expect) { $this->assertEquals($expect, reduce_multiples($str, ',', TRUE)); - } + } } - - // -------------------------------------------------------------------- - + + // -------------------------------------------------------------------- + public function test_repeater() { $strs = array( 'a' => 'aaaaaaaaaa', ' ' => '          ', '
    ' => '









    ' - + ); - + foreach ($strs as $str => $expect) { $this->assertEquals($expect, repeater($str, 10)); } - } - - // -------------------------------------------------------------------- + } + // -------------------------------------------------------------------- public function test_random_string() { @@ -114,5 +113,17 @@ class String_helper_test extends CI_TestCase $this->assertEquals(32, strlen(random_string('unique', 16))); $this->assertInternalType('string', random_string('numeric', 16)); } - + + // -------------------------------------------------------------------- + + public function test_increment_string() + { + $this->assertEquals('my-test_1', increment_string('my-test')); + $this->assertEquals('my-test-1', increment_string('my-test', '-')); + $this->assertEquals('file_5', increment_string('file_4')); + $this->assertEquals('file-5', increment_string('file-4', '-')); + $this->assertEquals('file-5', increment_string('file-4', '-')); + $this->assertEquals('file-1', increment_string('file', '-', '1')); + $this->assertEquals(124, increment_string('123', '')); + } } \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 051a317e1e51c2ab50920e3ced50732bc7041bd7 Mon Sep 17 00:00:00 2001 From: Eric Barnes Date: Sun, 27 Nov 2011 00:49:25 -0500 Subject: Fixed accept lang test to account for boolean results. --- tests/codeigniter/libraries/User_agent_test.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/libraries/User_agent_test.php b/tests/codeigniter/libraries/User_agent_test.php index 277c12ed0..6f9e87196 100644 --- a/tests/codeigniter/libraries/User_agent_test.php +++ b/tests/codeigniter/libraries/User_agent_test.php @@ -8,17 +8,17 @@ class UserAgent_test extends CI_TestCase { protected $_user_agent = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27'; protected $_mobile_ua = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7'; - + public function set_up() { // set a baseline user agent $_SERVER['HTTP_USER_AGENT'] = $this->_user_agent; - + $obj = new StdClass; $obj->agent = new CI_User_agent(); - + $this->ci_instance($obj); - + $this->agent = $obj->agent; } @@ -27,10 +27,10 @@ class UserAgent_test extends CI_TestCase public function test_accept_lang() { $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'en'; - - $this->assertEquals('en', $this->agent->accept_lang()); - + $this->assertTrue($this->agent->accept_lang()); unset($_SERVER['HTTP_ACCEPT_LANGUAGE']); + $this->assertTrue($this->agent->accept_lang('en')); + $this->assertFalse($this->agent->accept_lang('fr')); } // -------------------------------------------------------------------- @@ -70,19 +70,19 @@ class UserAgent_test extends CI_TestCase $this->assertEquals('', $this->agent->robot()); $this->assertEquals('', $this->agent->referrer()); } - + // -------------------------------------------------------------------- public function test_charsets() { $_SERVER['HTTP_ACCEPT_CHARSET'] = 'utf8'; - + $charsets = $this->agent->charsets(); - + $this->assertEquals('utf8', $charsets[0]); - + unset($_SERVER['HTTP_ACCEPT_CHARSET']); - + $this->assertFalse($this->agent->accept_charset()); } -- cgit v1.2.3-24-g4f1b From 940761464e6f7788bdce0bad55f41850ad73eb89 Mon Sep 17 00:00:00 2001 From: Eric Barnes Date: Sun, 27 Nov 2011 00:59:07 -0500 Subject: Added tests for removing extra dashes in url title. --- tests/codeigniter/helpers/url_helper_test.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/helpers/url_helper_test.php b/tests/codeigniter/helpers/url_helper_test.php index ea3fb0e4f..b5384eaef 100644 --- a/tests/codeigniter/helpers/url_helper_test.php +++ b/tests/codeigniter/helpers/url_helper_test.php @@ -10,13 +10,25 @@ class Url_helper_test extends CI_TestCase 'foo bar /' => 'foo-bar', '\ testing 12' => 'testing-12' ); - + foreach ($words as $in => $out) { $this->assertEquals($out, url_title($in, 'dash', TRUE)); - } + } } // -------------------------------------------------------------------- + public function test_url_title_extra_dashes() + { + $words = array( + '_foo bar_' => 'foo_bar', + '_What\'s wrong with CSS?_' => 'Whats_wrong_with_CSS' + ); + + foreach ($words as $in => $out) + { + $this->assertEquals($out, url_title($in, 'underscore')); + } + } } \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 32b6780d6e75a39e62784cec998ee2b5f69ee77e Mon Sep 17 00:00:00 2001 From: Eric Barnes Date: Sun, 27 Nov 2011 01:10:09 -0500 Subject: Added prep_url and auto_link tests --- tests/codeigniter/helpers/url_helper_test.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tests') diff --git a/tests/codeigniter/helpers/url_helper_test.php b/tests/codeigniter/helpers/url_helper_test.php index b5384eaef..30ba4a417 100644 --- a/tests/codeigniter/helpers/url_helper_test.php +++ b/tests/codeigniter/helpers/url_helper_test.php @@ -31,4 +31,27 @@ class Url_helper_test extends CI_TestCase $this->assertEquals($out, url_title($in, 'underscore')); } } + + // -------------------------------------------------------------------- + + public function test_prep_url() + { + $this->assertEquals('http://codeigniter.com', prep_url('codeigniter.com')); + $this->assertEquals('http://www.codeigniter.com', prep_url('www.codeigniter.com')); + } + + // -------------------------------------------------------------------- + + public function test_auto_link_url() + { + $strings = array( + 'www.codeigniter.com test' => 'http://www.codeigniter.com test', + 'This is my noreply@codeigniter.com test' => 'This is my noreply@codeigniter.com test', + ); + + foreach ($strings as $in => $out) + { + $this->assertEquals($out, auto_link($in, 'url')); + } + } } \ No newline at end of file -- cgit v1.2.3-24-g4f1b From d90e1a0fb541ee94459a20cf8b0726aebaec9692 Mon Sep 17 00:00:00 2001 From: Eric Barnes Date: Sun, 27 Nov 2011 14:12:46 -0500 Subject: Added unit test to confirm pull request #675 --- tests/codeigniter/helpers/url_helper_test.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'tests') diff --git a/tests/codeigniter/helpers/url_helper_test.php b/tests/codeigniter/helpers/url_helper_test.php index 30ba4a417..51a8cc7c0 100644 --- a/tests/codeigniter/helpers/url_helper_test.php +++ b/tests/codeigniter/helpers/url_helper_test.php @@ -47,6 +47,21 @@ class Url_helper_test extends CI_TestCase $strings = array( 'www.codeigniter.com test' => 'http://www.codeigniter.com test', 'This is my noreply@codeigniter.com test' => 'This is my noreply@codeigniter.com test', + '
    www.google.com' => '
    http://www.google.com', + ); + + foreach ($strings as $in => $out) + { + $this->assertEquals($out, auto_link($in, 'url')); + } + } + + // -------------------------------------------------------------------- + + public function test_pull_675() + { + $strings = array( + '
    www.google.com' => '
    http://www.google.com', ); foreach ($strings as $in => $out) -- cgit v1.2.3-24-g4f1b From cfc59244c6cd83a3031fa7cbe45bd6a7056f2791 Mon Sep 17 00:00:00 2001 From: Taufan Aditya Date: Fri, 17 Feb 2012 23:53:13 +0700 Subject: vfsStream via pyrus --- tests/README.md | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tests') diff --git a/tests/README.md b/tests/README.md index ad8051618..f565fa760 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,5 +1,7 @@ # CodeIgniter Unit Tests # +Status : [![Build Status](https://secure.travis-ci.org/toopay/CodeIgniter.png?branch=unit-tests)](http://travis-ci.org/toopay/CodeIgniter) + *Do not merge to default until these issues have been addressed* - Clean up naming conventions -- cgit v1.2.3-24-g4f1b From 32a99ff4c781865cf010596fc99c763f5dac37a1 Mon Sep 17 00:00:00 2001 From: Taufan Aditya Date: Sat, 18 Feb 2012 00:01:20 +0700 Subject: PHPunit force to continue --- tests/phpunit.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/phpunit.xml b/tests/phpunit.xml index e07aa96a7..2f18dae93 100644 --- a/tests/phpunit.xml +++ b/tests/phpunit.xml @@ -2,7 +2,13 @@ + colors="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + stopOnError="false" + stopOnFailure="false" + stopOnIncomplete="false" + stopOnSkipped="false"> codeigniter/Setup_test.php -- cgit v1.2.3-24-g4f1b From 57d6d2e5c904aae88572aafc2cbcc2ee337d8e4a Mon Sep 17 00:00:00 2001 From: Taufan Aditya Date: Sat, 18 Feb 2012 00:12:51 +0700 Subject: temporary commenting PHP_CodeCoverage_Filter::get_instance() --- tests/Bootstrap.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index 657671ab0..28c63f0b2 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -19,12 +19,12 @@ require_once $dir.'/lib/ci_testcase.php'; // Omit files in the PEAR & PHP Paths from ending up in the coverage report -PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PEAR_INSTALL_DIR); -PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PHP_LIBDIR); -PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PROJECT_BASE.'tests'); +// PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PEAR_INSTALL_DIR); +// PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PHP_LIBDIR); +// PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PROJECT_BASE.'tests'); // Omit Tests from the coverage reports. // PHP_CodeCoverage_Filter::getInstance()->addDirectoryToWhiteList('../system/core'); -PHP_CodeCoverage_Filter::getInstance()->addFileToBlackList('../system/core/CodeIgniter.php'); +// PHP_CodeCoverage_Filter::getInstance()->addFileToBlackList('../system/core/CodeIgniter.php'); unset($dir); \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 4054c56b882ad40495f2d227990d73437af51038 Mon Sep 17 00:00:00 2001 From: Taufan Aditya Date: Sat, 18 Feb 2012 01:12:10 +0700 Subject: Pointed the report to EllisLab repo --- tests/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/README.md b/tests/README.md index f565fa760..6d83c34d8 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,6 +1,6 @@ # CodeIgniter Unit Tests # -Status : [![Build Status](https://secure.travis-ci.org/toopay/CodeIgniter.png?branch=unit-tests)](http://travis-ci.org/toopay/CodeIgniter) +Status : [![Build Status](https://secure.travis-ci.org/EllisLab/CodeIgniter.png?branch=feature/unit-tests)](http://travis-ci.org/EllisLab/CodeIgniter) *Do not merge to default until these issues have been addressed* -- cgit v1.2.3-24-g4f1b From a03cbc5d2d2747b48be47c6fdef51f338701c583 Mon Sep 17 00:00:00 2001 From: Taufan Aditya Date: Fri, 9 Mar 2012 17:00:56 +0700 Subject: Add tiyowan suggestion #1147 --- tests/Bootstrap.php | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'tests') diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index 28c63f0b2..94dafdce4 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -17,14 +17,4 @@ define('APPPATH', PROJECT_BASE.'application/'); require_once $dir.'/lib/common.php'; require_once $dir.'/lib/ci_testcase.php'; - -// Omit files in the PEAR & PHP Paths from ending up in the coverage report -// PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PEAR_INSTALL_DIR); -// PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PHP_LIBDIR); -// PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist(PROJECT_BASE.'tests'); - -// Omit Tests from the coverage reports. -// PHP_CodeCoverage_Filter::getInstance()->addDirectoryToWhiteList('../system/core'); -// PHP_CodeCoverage_Filter::getInstance()->addFileToBlackList('../system/core/CodeIgniter.php'); - unset($dir); \ No newline at end of file -- cgit v1.2.3-24-g4f1b From e39728c55d3745ff60742d7dd1c5114ec690d1db Mon Sep 17 00:00:00 2001 From: tiyowan Date: Sat, 10 Mar 2012 02:10:44 +0400 Subject: Fix issue #1148 Rewrote tests to use reflection to access protected/private functions of Table class. This fixes fatal errors that prevent the test suite from executing other tests. Signed-off-by: tiyowan --- tests/codeigniter/libraries/Table_test.php | 64 +++++++++++++++++++----------- 1 file changed, 41 insertions(+), 23 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/libraries/Table_test.php b/tests/codeigniter/libraries/Table_test.php index 133179f3a..045216b16 100644 --- a/tests/codeigniter/libraries/Table_test.php +++ b/tests/codeigniter/libraries/Table_test.php @@ -106,42 +106,50 @@ class Table_test extends CI_TestCase // test what would be discreet args, // basically means a single array as the calling method // will use func_get_args() + + $reflectionOfTable = new ReflectionClass($this->table); + $method = $reflectionOfTable->getMethod('_prep_args'); + + $method->setAccessible(true); + $this->assertEquals( $expected, - $this->table->_prep_args(array( - 'name', 'color', 'size' - )), - 'discreet'); - + $method->invokeArgs( + $this->table, array(array('name', 'color', 'size'), 'discreet') + ) + ); // test what would be a single array argument. Again, nested // due to func_get_args on calling methods $this->assertEquals( $expected, - $this->table->_prep_args(array( - array('name', 'color', 'size') - )), - 'array'); + $method->invokeArgs( + $this->table, array(array('name', 'color', 'size'), 'array') + ) + ); // with cell attributes // need to add that new argument row to our expected outcome $expected[] = array('data' => 'weight', 'class' => 'awesome'); - + $this->assertEquals( $expected, - $this->table->_prep_args(array( - array('name', 'color', 'size', - array('data' => 'weight', 'class' => 'awesome') - ) - )), - 'attributes'); + $method->invokeArgs( + $this->table, array(array('name', 'color', 'size', array('data' => 'weight', 'class' => 'awesome')), 'attributes') + ) + ); } public function test_default_template_keys() { - $deft_template = $this->table->_default_template(); + $reflectionOfTable = new ReflectionClass($this->table); + $method = $reflectionOfTable->getMethod('_default_template'); + + $method->setAccessible(true); + + $deft_template = $method->invoke($this->table); $keys = array( 'table_open', 'thead_open', 'thead_close', @@ -160,18 +168,23 @@ class Table_test extends CI_TestCase public function test_compile_template() { + $reflectionOfTable = new ReflectionClass($this->table); + $method = $reflectionOfTable->getMethod('_compile_template'); + + $method->setAccessible(true); + $this->assertFalse($this->table->set_template('invalid_junk')); // non default key $this->table->set_template(array('nonsense' => 'foo')); - $this->table->_compile_template(); + $method->invoke($this->table); $this->assertArrayHasKey('nonsense', $this->table->template); $this->assertEquals('foo', $this->table->template['nonsense']); // override default $this->table->set_template(array('table_close' => '')); - $this->table->_compile_template(); + $method->invoke($this->table); $this->assertArrayHasKey('table_close', $this->table->template); $this->assertEquals('', $this->table->template['table_close']); @@ -242,8 +255,13 @@ class Table_test extends CI_TestCase public function test_set_from_array() { - $this->assertFalse($this->table->_set_from_array('bogus')); - $this->assertFalse($this->table->_set_from_array(array())); + $reflectionOfTable = new ReflectionClass($this->table); + $method = $reflectionOfTable->getMethod('_set_from_array'); + + $method->setAccessible(true); + + $this->assertFalse($method->invokeArgs($this->table, array('bogus'))); + $this->assertFalse($method->invoke($this->table, array())); $data = array( array('name', 'color', 'number'), @@ -251,7 +269,7 @@ class Table_test extends CI_TestCase array('Katie', 'Blue') ); - $this->table->_set_from_array($data, FALSE); + $method->invokeArgs($this->table, array($data, FALSE)); $this->assertEmpty($this->table->heading); $this->table->clear(); @@ -267,7 +285,7 @@ class Table_test extends CI_TestCase array('data' => 'Blue'), ); - $this->table->_set_from_array($data); + $method->invokeArgs($this->table, array($data)); $this->assertEquals(count($this->table->rows), 2); $this->assertEquals( -- cgit v1.2.3-24-g4f1b From 7729faa553c0ec93a13533003a53dc66078467a8 Mon Sep 17 00:00:00 2001 From: Hamza Bhatti Date: Sat, 10 Mar 2012 13:07:05 +0400 Subject: Fix test errors in Loader_test.php and URI_test.php Change exceptions from Exception to RuntimeException since PHPUnit 3.6 doesn't like you to expect generic exceptions. The error it gives is: InvalidArgumentException: You must not expect the generic exception class travis-ci.org/#!/tiyowan/CodeIgniter/builds/832518 This issue addressed by using exceptions that are more specific. --- tests/codeigniter/core/Loader_test.php | 12 ++++++------ tests/codeigniter/core/URI_test.php | 4 ++-- tests/lib/common.php | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/core/Loader_test.php b/tests/codeigniter/core/Loader_test.php index 9ba870b7d..b86fd3477 100644 --- a/tests/codeigniter/core/Loader_test.php +++ b/tests/codeigniter/core/Loader_test.php @@ -104,7 +104,7 @@ class Loader_test extends CI_TestCase { public function test_non_existent_model() { $this->setExpectedException( - 'Exception', + 'RuntimeException', 'CI Error: Unable to locate the model you have specified: ci_test_nonexistent_model.php' ); @@ -170,7 +170,7 @@ class Loader_test extends CI_TestCase { public function test_non_existent_view() { $this->setExpectedException( - 'Exception', + 'RuntimeException', 'CI Error: Unable to load the requested file: ci_test_nonexistent_view.php' ); @@ -192,7 +192,7 @@ class Loader_test extends CI_TestCase { $this->assertEquals($content, $load); $this->setExpectedException( - 'Exception', + 'RuntimeException', 'CI Error: Unable to load the requested file: ci_test_file_not_exists' ); @@ -219,7 +219,7 @@ class Loader_test extends CI_TestCase { $this->assertEquals(NULL, $this->load->helper('array')); $this->setExpectedException( - 'Exception', + 'RuntimeException', 'CI Error: Unable to load the requested file: helpers/bad_helper.php' ); @@ -256,7 +256,7 @@ class Loader_test extends CI_TestCase { $this->_setup_config_mock(); $this->setExpectedException( - 'Exception', + 'RuntimeException', 'CI Error: The configuration file foobar.php does not exist.' ); @@ -268,4 +268,4 @@ class Loader_test extends CI_TestCase { -} \ No newline at end of file +} diff --git a/tests/codeigniter/core/URI_test.php b/tests/codeigniter/core/URI_test.php index 87d921b11..40252aa14 100644 --- a/tests/codeigniter/core/URI_test.php +++ b/tests/codeigniter/core/URI_test.php @@ -189,7 +189,7 @@ class URI_test extends CI_TestCase { public function test_filter_uri_throws_error() { - $this->setExpectedException('Exception'); + $this->setExpectedException('RuntimeException'); $this->uri->config->set_item('enable_query_strings', FALSE); $this->uri->config->set_item('permitted_uri_chars', 'a-z 0-9~%.:_\-'); @@ -341,4 +341,4 @@ class URI_test extends CI_TestCase { // END URI_test Class /* End of file URI_test.php */ -/* Location: ./tests/core/URI_test.php */ \ No newline at end of file +/* Location: ./tests/core/URI_test.php */ diff --git a/tests/lib/common.php b/tests/lib/common.php index 6d29eb0d6..4a832587d 100644 --- a/tests/lib/common.php +++ b/tests/lib/common.php @@ -87,17 +87,17 @@ function remove_invisible_characters($str, $url_encoded = TRUE) function show_error($message, $status_code = 500, $heading = 'An Error Was Encountered') { - throw new Exception('CI Error: '.$message); + throw new RuntimeException('CI Error: '.$message); } function show_404($page = '', $log_error = TRUE) { - throw new Exception('CI Error: 404'); + throw new RuntimeException('CI Error: 404'); } function _exception_handler($severity, $message, $filepath, $line) { - throw new Exception('CI Exception: '.$message.' | '.$filepath.' | '.$line); + throw new RuntimeException('CI Exception: '.$message.' | '.$filepath.' | '.$line); } @@ -129,4 +129,4 @@ function set_status_header($code = 200, $text = '') return TRUE; } -// EOF \ No newline at end of file +// EOF -- cgit v1.2.3-24-g4f1b From e40c763bf969acbaa7c4c61be50f01e870062080 Mon Sep 17 00:00:00 2001 From: Phil Sturgeon Date: Sat, 10 Mar 2012 13:05:08 +0000 Subject: Fixed camelize. --- tests/phpunit.xml | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tests/phpunit.xml (limited to 'tests') diff --git a/tests/phpunit.xml b/tests/phpunit.xml new file mode 100644 index 000000000..abb9881b9 --- /dev/null +++ b/tests/phpunit.xml @@ -0,0 +1,38 @@ + + + + + + codeigniter/Setup_test.php + codeigniter/core + codeigniter/helpers + codeigniter/libraries + + + + + + + PEAR_INSTALL_DIR + PHP_LIBDIR + PROJECT_BASE.'tests' + '../system/core/CodeIgniter.php' + + + + + + \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 8749bc7e836c196dfef37d3b7b5a67736a15092c Mon Sep 17 00:00:00 2001 From: Taufan Aditya Date: Sun, 11 Mar 2012 05:43:45 +0700 Subject: Fix incomplete and skipped test --- tests/Bootstrap.php | 1 + tests/codeigniter/core/Lang_test.php | 10 ++-- tests/codeigniter/helpers/date_helper_test.php | 56 +++++++++++++++++++--- .../codeigniter/helpers/inflector_helper_test.php | 6 +-- tests/codeigniter/libraries/Table_test.php | 51 ++++++++++++++++---- tests/lib/ci_testcase.php | 17 +++++++ 6 files changed, 116 insertions(+), 25 deletions(-) (limited to 'tests') diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index 94dafdce4..39c24b219 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -11,6 +11,7 @@ $dir = realpath(dirname(__FILE__)); define('PROJECT_BASE', realpath($dir.'/../').'/'); define('BASEPATH', PROJECT_BASE.'system/'); define('APPPATH', PROJECT_BASE.'application/'); +define('VIEWPATH', PROJECT_BASE.''); // Prep our test environment diff --git a/tests/codeigniter/core/Lang_test.php b/tests/codeigniter/core/Lang_test.php index dcc3d0879..a414f0ace 100644 --- a/tests/codeigniter/core/Lang_test.php +++ b/tests/codeigniter/core/Lang_test.php @@ -6,6 +6,9 @@ class Lang_test extends CI_TestCase { public function set_up() { + $loader_cls = $this->ci_core_class('load'); + $this->ci_instance_var('load', new $loader_cls); + $cls = $this->ci_core_class('lang'); $this->lang = new $cls; } @@ -14,17 +17,14 @@ class Lang_test extends CI_TestCase { public function test_load() { - // get_config needs work - $this->markTestIncomplete('get_config needs work'); - //$this->assertTrue($this->lang->load('profiler')); + $this->assertTrue($this->lang->load('profiler', 'english')); } // -------------------------------------------------------------------- public function test_line() { - $this->markTestIncomplete('get_config needs work'); - + $this->assertTrue($this->lang->load('profiler', 'english')); $this->assertEquals('URI STRING', $this->lang->line('profiler_uri_string')); } diff --git a/tests/codeigniter/helpers/date_helper_test.php b/tests/codeigniter/helpers/date_helper_test.php index c7a2c9b6e..662d16485 100644 --- a/tests/codeigniter/helpers/date_helper_test.php +++ b/tests/codeigniter/helpers/date_helper_test.php @@ -5,9 +5,39 @@ class Date_helper_test extends CI_TestCase { // ------------------------------------------------------------------------ - public function test_now() + public function test_now_local() { - $this->markTestIncomplete('not implemented yet'); + // This stub job, is simply to cater $config['time_reference'] + $config = $this->getMock('CI_Config'); + $config->expects($this->any()) + ->method('item') + ->will($this->returnValue('local')); + + // Add the stub to our test instance + $this->ci_instance_var('config', $config); + + $expected = time(); + $test = now(); + $this->assertEquals($expected, $test); + } + + // ------------------------------------------------------------------------ + + public function test_now_gmt() + { + // This stub job, is simply to cater $config['time_reference'] + $config = $this->getMock('CI_Config'); + $config->expects($this->any()) + ->method('item') + ->will($this->returnValue('gmt')); + + // Add the stub to our stdClass + $this->ci_instance_var('config', $config); + + $t = time(); + $expected = mktime(gmdate("H", $t), gmdate("i", $t), gmdate("s", $t), gmdate("m", $t), gmdate("d", $t), gmdate("Y", $t)); + $test = now(); + $this->assertEquals($expected, $test); } // ------------------------------------------------------------------------ @@ -124,7 +154,16 @@ class Date_helper_test extends CI_TestCase public function test_timespan() { - $this->markTestIncomplete('not implemented yet'); + $loader_cls = $this->ci_core_class('load'); + $this->ci_instance_var('load', new $loader_cls); + + $lang_cls = $this->ci_core_class('lang'); + $this->ci_instance_var('lang', new $lang_cls); + + $this->assertEquals('1 Second', timespan(time(), time()+1)); + $this->assertEquals('1 Minute', timespan(time(), time()+60)); + $this->assertEquals('1 Hour', timespan(time(), time()+3600)); + $this->assertEquals('2 Hours', timespan(time(), time()+7200)); } // ------------------------------------------------------------------------ @@ -140,7 +179,9 @@ class Date_helper_test extends CI_TestCase public function test_local_to_gmt() { - $this->markTestIncomplete('not implemented yet'); + $t = time(); + $expected = mktime(gmdate("H", $t), gmdate("i", $t), gmdate("s", $t), gmdate("m", $t), gmdate("d", $t), gmdate("Y", $t)); + $this->assertEquals($expected, local_to_gmt($t)); } // ------------------------------------------------------------------------ @@ -177,9 +218,10 @@ class Date_helper_test extends CI_TestCase public function test_human_to_unix() { - $time = time(); - $this->markTestIncomplete('Failed Test'); - // $this->assertEquals($time, human_to_unix(unix_to_human($time))); + $date = '2000-12-31 10:00:00 PM'; + $expected = strtotime($date); + $this->assertEquals($expected, human_to_unix($date)); + $this->assertFalse(human_to_unix()); } // ------------------------------------------------------------------------ diff --git a/tests/codeigniter/helpers/inflector_helper_test.php b/tests/codeigniter/helpers/inflector_helper_test.php index ef1f54afc..e476f6dc8 100644 --- a/tests/codeigniter/helpers/inflector_helper_test.php +++ b/tests/codeigniter/helpers/inflector_helper_test.php @@ -24,14 +24,10 @@ class Inflector_helper_test extends CI_TestCase { public function test_plural() { - $this->markTestSkipped( - 'abjectness is breaking. SKipping for the time being.' - ); - $strs = array( 'telly' => 'tellies', 'smelly' => 'smellies', - 'abjectness' => 'abjectness', + 'abjectness' => 'abjectnesses', // ref : http://en.wiktionary.org/wiki/abjectnesses 'smell' => 'smells', 'witch' => 'witches' ); diff --git a/tests/codeigniter/libraries/Table_test.php b/tests/codeigniter/libraries/Table_test.php index 045216b16..0208a465a 100644 --- a/tests/codeigniter/libraries/Table_test.php +++ b/tests/codeigniter/libraries/Table_test.php @@ -194,11 +194,8 @@ class Table_test extends CI_TestCase { // Test bogus parameters $this->assertFalse($this->table->make_columns('invalid_junk')); - $this->assertFalse( $this->table->make_columns(array())); - // $this->assertFalse( - // $this->table->make_columns(array('one', 'two')), - // '2.5' // not an integer! - // ); + $this->assertFalse($this->table->make_columns(array())); + $this->assertFalse($this->table->make_columns(array('one', 'two'), '2.5')); // Now on to the actual column creation @@ -222,8 +219,6 @@ class Table_test extends CI_TestCase ), $this->table->make_columns($five_values, 3) ); - - $this->markTestSkipped('Look at commented assertFalse above'); } public function test_clear() @@ -301,7 +296,47 @@ class Table_test extends CI_TestCase function test_set_from_object() { - $this->markTestSkipped('Not yet implemented.'); + $reflectionOfTable = new ReflectionClass($this->table); + $method = $reflectionOfTable->getMethod('_set_from_object'); + + $method->setAccessible(true); + + // Make a stub of query instance + $query = new CI_TestCase(); + $query->list_fields = function(){ + return array('name', 'email'); + }; + $query->result_array = function(){ + return array( + array('name' => 'John Doe', 'email' => 'john@doe.com'), + array('name' => 'Foo Bar', 'email' => 'foo@bar.com'), + ); + }; + $query->num_rows = function(){ + return 2; + }; + + $expected_heading = array( + array('data' => 'name'), + array('data' => 'email') + ); + + $expected_second = array( + 'name' => array('data' => 'Foo Bar'), + 'email' => array('data' => 'foo@bar.com'), + ); + + $method->invokeArgs($this->table, array($query)); + + $this->assertEquals( + $expected_heading, + $this->table->heading + ); + + $this->assertEquals( + $expected_second, + $this->table->rows[1] + ); } // Test main generate method diff --git a/tests/lib/ci_testcase.php b/tests/lib/ci_testcase.php index 8ca71fdf2..afccee017 100644 --- a/tests/lib/ci_testcase.php +++ b/tests/lib/ci_testcase.php @@ -172,6 +172,23 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { { return $this->ci_config; } + + // -------------------------------------------------------------------- + + /** + * This overload is useful to create a stub, that need to have a specific method. + */ + function __call($method, $args) + { + if ($this->{$method} instanceof Closure) + { + return call_user_func_array($this->{$method},$args); + } + else + { + return parent::__call($method, $args); + } + } } // EOF \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 575895f66884904617fcdd60e9db894ca1786ca9 Mon Sep 17 00:00:00 2001 From: Hamza Bhatti Date: Sun, 11 Mar 2012 11:58:31 +0400 Subject: Add unit tests for directory helper --- .../codeigniter/helpers/directory_helper_test.php | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 tests/codeigniter/helpers/directory_helper_test.php (limited to 'tests') diff --git a/tests/codeigniter/helpers/directory_helper_test.php b/tests/codeigniter/helpers/directory_helper_test.php new file mode 100644 index 000000000..3fae81b82 --- /dev/null +++ b/tests/codeigniter/helpers/directory_helper_test.php @@ -0,0 +1,42 @@ +_test_dir = vfsStreamWrapper::getRoot(); + } + + public function test_directory_map() + { + $structure = array('libraries' => array('benchmark.html' => '', 'database' => + array('active_record.html' => '', 'binds.html' => ''), 'email.html' => '', '.hiddenfile.txt' => '')); + + vfsStream::create($structure, $this->_test_dir); + + // test default recursive behavior + $expected = array('libraries' => array('benchmark.html', 'database' => + array('active_record.html', 'binds.html'), 'email.html')); + + $this->assertEquals($expected, directory_map(vfsStream::url('testDir'))); + + // test recursion depth behavior + $expected = array('libraries'); + + $this->assertEquals($expected, directory_map(vfsStream::url('testDir'), 1)); + + // test detection of hidden files + $expected = array('libraries' => array('benchmark.html', 'database' => + array('active_record.html', 'binds.html'), 'email.html', '.hiddenfile.txt')); + + $this->assertEquals($expected, directory_map(vfsStream::url('testDir'), FALSE, TRUE)); + } +} + +/* End of file directory_helper_test.php */ \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 756516dac202e376cd16c4dbc11a1292f8cca4e6 Mon Sep 17 00:00:00 2001 From: Hamza Bhatti Date: Mon, 12 Mar 2012 09:47:34 +0400 Subject: Add unit tests for path helper --- tests/codeigniter/helpers/path_helper_test.php | 29 ++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 tests/codeigniter/helpers/path_helper_test.php (limited to 'tests') diff --git a/tests/codeigniter/helpers/path_helper_test.php b/tests/codeigniter/helpers/path_helper_test.php new file mode 100644 index 000000000..591214bde --- /dev/null +++ b/tests/codeigniter/helpers/path_helper_test.php @@ -0,0 +1,29 @@ +assertEquals($expected, set_realpath(getcwd())); + } + + public function test_set_realpath_nonexistent_directory() + { + $expected = '/path/to/nowhere'; + $this->assertEquals($expected, set_realpath('/path/to/nowhere', FALSE)); + } + + public function test_set_realpath_error_trigger() + { + $this->setExpectedException( + 'RuntimeException', 'CI Error: Not a valid path: /path/to/nowhere' + ); + + set_realpath('/path/to/nowhere', TRUE); + } +} + +/* End of file path_helper_test.php */ \ No newline at end of file -- cgit v1.2.3-24-g4f1b From 3ec336fc6020e3126b8be7d2b3516b4e40abd87d Mon Sep 17 00:00:00 2001 From: Hamza Bhatti Date: Wed, 14 Mar 2012 13:50:23 +0400 Subject: Add fix for Windows OS --- tests/codeigniter/helpers/path_helper_test.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/codeigniter/helpers/path_helper_test.php b/tests/codeigniter/helpers/path_helper_test.php index 591214bde..2e6cc6391 100644 --- a/tests/codeigniter/helpers/path_helper_test.php +++ b/tests/codeigniter/helpers/path_helper_test.php @@ -6,7 +6,7 @@ class Path_helper_test extends CI_TestCase { public function test_set_realpath() { - $expected = getcwd() . '/'; + $expected = getcwd() . DIRECTORY_SEPARATOR; $this->assertEquals($expected, set_realpath(getcwd())); } -- cgit v1.2.3-24-g4f1b From 2a6a6162ff6de8c2114c50254a5046ee6822c5dc Mon Sep 17 00:00:00 2001 From: Hamza Bhatti Date: Thu, 15 Mar 2012 09:45:29 +0400 Subject: Change unit tests to provide one hundred percent code coverage - Add value to test is_countable() conditional in test_singular() - Add value to test is_countable() conditional in test_plural() --- tests/codeigniter/helpers/inflector_helper_test.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/codeigniter/helpers/inflector_helper_test.php b/tests/codeigniter/helpers/inflector_helper_test.php index e476f6dc8..472e28adb 100644 --- a/tests/codeigniter/helpers/inflector_helper_test.php +++ b/tests/codeigniter/helpers/inflector_helper_test.php @@ -11,7 +11,8 @@ class Inflector_helper_test extends CI_TestCase { 'tellies' => 'telly', 'smellies' => 'smelly', 'abjectnesses' => 'abjectness', - 'smells' => 'smell' + 'smells' => 'smell', + 'equipment' => 'equipment' ); foreach ($strs as $str => $expect) @@ -29,7 +30,8 @@ class Inflector_helper_test extends CI_TestCase { 'smelly' => 'smellies', 'abjectness' => 'abjectnesses', // ref : http://en.wiktionary.org/wiki/abjectnesses 'smell' => 'smells', - 'witch' => 'witches' + 'witch' => 'witches', + 'equipment' => 'equipment' ); foreach ($strs as $str => $expect) -- cgit v1.2.3-24-g4f1b From 3fb5aa5886de15ef68e40b556a6ea3f1badf962e Mon Sep 17 00:00:00 2001 From: tiyowan Date: Fri, 16 Mar 2012 19:08:34 +0400 Subject: Add unit test for strip_slashes() in string_helper.php --- tests/codeigniter/helpers/string_helper_test.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'tests') diff --git a/tests/codeigniter/helpers/string_helper_test.php b/tests/codeigniter/helpers/string_helper_test.php index 2d7f96aa5..a884d6284 100644 --- a/tests/codeigniter/helpers/string_helper_test.php +++ b/tests/codeigniter/helpers/string_helper_test.php @@ -4,6 +4,21 @@ require_once(BASEPATH.'helpers/string_helper.php'); class String_helper_test extends CI_TestCase { + public function test_strip_slashes() + { + $expected = array( + "Is your name O'reilly?", + "No, my name is O'connor." + ); + + $str = array( + "Is your name O\'reilly?", + "No, my name is O\'connor." + ); + + $this->assertEquals($expected, strip_slashes($str)); + } + public function test_trim_slashes() { $strs = array( -- cgit v1.2.3-24-g4f1b