tests for encryption class
diff --git a/tests/codeigniter/libraries/Encrypt_test.php b/tests/codeigniter/libraries/Encrypt_test.php
new file mode 100644
index 0000000..0669901
--- /dev/null
+++ b/tests/codeigniter/libraries/Encrypt_test.php
@@ -0,0 +1,71 @@
+<?php
+
+class Encrypt_test extends CI_TestCase {
+
+  public function set_up()
+  {
+    $obj = new StdClass;
+    $obj->encrypt = new Mock_Libraries_Encrypt();
+    
+    $this->ci_instance($obj);
+    $this->encrypt = $obj->encrypt;
+
+    $this->ci_set_config('encryption_key', "Encryptin'glike@boss!");
+    $this->msg = 'My secret message';
+  }
+
+  // --------------------------------------------------------------------
+
+  public function test_encode()
+  {
+    $this->assertNotEquals($this->msg, $this->encrypt->encode($this->msg));
+  }
+
+  // --------------------------------------------------------------------
+
+  public function test_decode()
+  {
+    $encoded_msg = $this->encrypt->encode($this->msg);
+    $this->assertEquals($this->msg, $this->encrypt->decode($encoded_msg));
+  }
+
+  // --------------------------------------------------------------------
+
+  public function test_optional_key()
+  {
+    $key = 'Ohai!ù0129°03182%HD1892P0';
+    $encoded_msg = $this->encrypt->encode($this->msg, $key);
+    $this->assertEquals($this->msg, $this->encrypt->decode($encoded_msg, $key));
+  }
+
+  // --------------------------------------------------------------------
+
+  public function test_default_cipher()
+  {
+    $this->assertEquals('rijndael-256', $this->encrypt->get_cipher());
+  }
+
+  // --------------------------------------------------------------------
+
+  public function test_set_cipher()
+  {
+    $this->encrypt->set_cipher(MCRYPT_BLOWFISH);
+    $this->assertEquals('blowfish', $this->encrypt->get_cipher());
+  }
+
+  // --------------------------------------------------------------------
+
+  public function test_default_mode()
+  {
+    $this->assertEquals('cbc', $this->encrypt->get_mode());
+  }
+
+  // --------------------------------------------------------------------
+
+  public function test_set_mode()
+  {
+    $this->encrypt->set_mode(MCRYPT_MODE_CFB);
+    $this->assertEquals('cfb', $this->encrypt->get_mode());
+  }
+
+}
\ No newline at end of file
diff --git a/tests/mocks/libraries/encrypt.php b/tests/mocks/libraries/encrypt.php
new file mode 100644
index 0000000..a9bbaaf
--- /dev/null
+++ b/tests/mocks/libraries/encrypt.php
@@ -0,0 +1,15 @@
+<?php
+
+class Mock_Libraries_Encrypt extends CI_Encrypt {
+
+  // Overide inaccesible protected method
+  public function __call($method, $params)
+  {
+    if (is_callable(array($this, '_'.$method)))
+    {
+      return call_user_func_array(array($this, '_'.$method), $params);
+    }
+
+    throw new BadMethodCallException('Method '.$method.' was not found');
+  }
+}
\ No newline at end of file