Input class code-coverage
diff --git a/tests/mocks/core/input.php b/tests/mocks/core/input.php
new file mode 100644
index 0000000..8a337d2
--- /dev/null
+++ b/tests/mocks/core/input.php
@@ -0,0 +1,31 @@
+<?php
+
+class Mock_Core_Input extends CI_Input {
+	
+	/**
+	 * Since we use GLOBAL to fetch Security and Utf8 classes, 
+	 * we need to use inversion of control to mock up 
+	 * the same process within CI_Input class constructor.
+	 *
+	 * @covers CI_Input::__construct()
+	 */
+	public function __construct($security, $utf8)
+	{
+		$this->_allow_get_array	= (config_item('allow_get_array') === TRUE);
+		$this->_enable_xss	= (config_item('global_xss_filtering') === TRUE);
+		$this->_enable_csrf	= (config_item('csrf_protection') === TRUE);
+
+		// Assign Security and Utf8 classes
+		$this->security = $security;
+		$this->uni = $utf8;
+
+		// Sanitize global arrays
+		$this->_sanitize_globals();
+	}
+
+	public function fetch_from_array($array, $index = '', $xss_clean = FALSE)
+	{
+		return parent::_fetch_from_array($array, $index, $xss_clean);
+	}
+
+}
\ No newline at end of file
diff --git a/tests/mocks/core/security.php b/tests/mocks/core/security.php
index c5269fb..d7ea0e6 100644
--- a/tests/mocks/core/security.php
+++ b/tests/mocks/core/security.php
@@ -6,7 +6,7 @@
 	{
 		// We cannot set cookie in CLI mode, so for csrf test, who rely on $_COOKIE,
 		// we superseded set_cookie with directly set the cookie variable,
-		// @see : ./Bootstrap.php, line 16
+		// @see : ./tests/codeigniter/core/Security_test.php, line 8
 		return $this;
 	}
 
diff --git a/tests/mocks/core/utf8.php b/tests/mocks/core/utf8.php
new file mode 100644
index 0000000..b77d717
--- /dev/null
+++ b/tests/mocks/core/utf8.php
@@ -0,0 +1,27 @@
+<?php
+
+class Mock_Core_Utf8 extends CI_Utf8 {
+	
+	/**
+	 * We need to define several constants as 
+	 * the same process within CI_Utf8 class constructor.
+	 *
+	 * @covers CI_Utf8::__construct()
+	 */
+	public function __construct()
+	{
+		defined('UTF8_ENABLED') or define('UTF8_ENABLED', TRUE);
+
+		if (extension_loaded('mbstring'))
+		{
+			defined('MB_ENABLED') or define('MB_ENABLED', TRUE);
+			mb_internal_encoding('UTF-8');
+		}
+		else
+		{
+			defined('MB_ENABLED') or define('MB_ENABLED', FALSE);
+		}
+		
+	}
+
+}
\ No newline at end of file