diff --git a/src/Lunr/Network/Tests/MailBaseTest.php b/src/Lunr/Network/Tests/MailBaseTest.php
index 9815dc378d56822b63663d6bae531abc31e7954b..bbf22924a4747a0e4a2f6ca5ae054df9156ef329 100644
--- a/src/Lunr/Network/Tests/MailBaseTest.php
+++ b/src/Lunr/Network/Tests/MailBaseTest.php
@@ -9,6 +9,7 @@
  * @package    Network
  * @subpackage Tests
  * @author     Heinz Wiesinger <heinz@m2mobi.com>
+ * @author     Andrea Nigido <andrea@m2mobi.com>
  * @copyright  2012-2013, M2Mobi BV, Amsterdam, The Netherlands
  * @license    http://lunr.nl/LICENSE MIT License
  */
@@ -26,84 +27,35 @@ use ReflectionClass;
  * @package    Network
  * @subpackage Tests
  * @author     Heinz Wiesinger <heinz@m2mobi.com>
+ * @author     Andrea Nigido <andrea@m2mobi.com>
  * @covers     Lunr\Network\Mail
  */
 class MailBaseTest extends MailTest
 {
 
     /**
-     * Test that the default sender address is empty.
-     */
-    public function testFromEmptyByDefault()
-    {
-        $property = $this->mail_reflection->getProperty('from');
-        $property->setAccessible(TRUE);
-
-        $this->assertEquals('', $property->getValue($this->mail));
-    }
-
-    /**
-     * Test that the default receiver address is empty.
-     */
-    public function testToEmptyByDefault()
-    {
-        $property = $this->mail_reflection->getProperty('to');
-        $property->setAccessible(TRUE);
-
-        $value = $property->getValue($this->mail);
-
-        $this->assertInternalType('array', $value);
-        $this->assertEmpty($value);
-    }
-
-    /**
-     * Test that the default CC address is empty.
-     */
-    public function testCCEmptyByDefault()
-    {
-        $property = $this->mail_reflection->getProperty('cc');
-        $property->setAccessible(TRUE);
-
-        $value = $property->getValue($this->mail);
-
-        $this->assertInternalType('array', $value);
-        $this->assertEmpty($value);
-    }
-
-    /**
-     * Test that the default BCC address is empty.
-     */
-    public function testBCCEmptyByDefault()
-    {
-        $property = $this->mail_reflection->getProperty('bcc');
-        $property->setAccessible(TRUE);
-
-        $value = $property->getValue($this->mail);
-
-        $this->assertInternalType('array', $value);
-        $this->assertEmpty($value);
-    }
-
-    /**
-     * Test that the default message is empty.
+     * Test that the default string type values are empty.
+     *
+     * @param String $prop The property to check against
+     *
+     * @dataProvider stringPropsProvider
      */
-    public function testMessageEmptyByDefault()
+    public function testStringPropEmptyByDefault($prop)
     {
-        $property = $this->mail_reflection->getProperty('msg');
-        $property->setAccessible(TRUE);
-
-        $this->assertEquals('', $property->getValue($this->mail));
+        $this->assertPropertyEquals($prop, '');
     }
 
     /**
-     * Test that the default subject is empty.
+     * Test that the default array type values are empty.
+     *
+     * @param String $prop The property to check against
+     *
+     * @dataProvider arrayPropsProvider
      */
-    public function testSubjectEmptyByDefault()
+    public function testArrayPropEmptyByDefault($prop)
     {
-        $property = $this->mail_reflection->getProperty('subject');
-        $property->setAccessible(TRUE);
-
-        $this->assertEquals('', $property->getValue($this->mail));
+        $value = $this->get_reflection_property_value($prop);
+        $this->assertArrayEmpty($value);
     }
 
     /**
@@ -116,7 +68,7 @@ class MailBaseTest extends MailTest
      */
     public function testValidEmailIsValid($email)
     {
-        $this->assertTrue($this->mail->is_valid($email));
+        $this->assertTrue($this->class->is_valid($email));
     }
 
     /**
@@ -129,7 +81,7 @@ class MailBaseTest extends MailTest
      */
     public function testInvalidEmailIsNotValid($email)
     {
-        $this->assertFalse($this->mail->is_valid($email));
+        $this->assertFalse($this->class->is_valid($email));
     }
 
 }
diff --git a/src/Lunr/Network/Tests/MailSendTest.php b/src/Lunr/Network/Tests/MailSendTest.php
index 10092af889b2110553151d995aa4b203e19c1fa9..953a782409f2b08657ea031342cdadebb998b3a2 100644
--- a/src/Lunr/Network/Tests/MailSendTest.php
+++ b/src/Lunr/Network/Tests/MailSendTest.php
@@ -9,6 +9,7 @@
  * @package    Network
  * @subpackage Tests
  * @author     Heinz Wiesinger <heinz@m2mobi.com>
+ * @author     Andrea Nigido <andrea@m2mobi.com>
  * @copyright  2012-2013, M2Mobi BV, Amsterdam, The Netherlands
  * @license    http://lunr.nl/LICENSE MIT License
  */
@@ -16,7 +17,6 @@
 namespace Lunr\Network\Tests;
 
 use Lunr\Network\Mail;
-use PHPUnit_Framework_TestCase;
 use ReflectionClass;
 
 /**
@@ -26,6 +26,7 @@ use ReflectionClass;
  * @package    Network
  * @subpackage Tests
  * @author     Heinz Wiesinger <heinz@m2mobi.com>
+ * @author     Andrea Nigido <andrea@m2mobi.com>
  * @covers     Lunr\Network\Mail
  */
 class MailSendTest extends MailTest
@@ -38,39 +39,36 @@ class MailSendTest extends MailTest
      */
     public function testGeneratingHeadersForInvalidCarbonCopyReturnsEmptyString()
     {
-        $method = $this->mail_reflection->getMethod('generate_carbon_copy_header');
-        $method->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_carbon_copy_header');
 
-        $this->assertEquals('', $method->invokeArgs($this->mail, array('invalid')));
+        $this->assertEquals('', $method->invokeArgs($this->class, array('invalid')));
     }
 
     /**
      * Test that generating CC headers when none are defined returns an empty string.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testCCEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testArrayPropEmptyByDefault
      * @covers  Lunr\Network\Mail::generate_carbon_copy_header
      */
     public function testGeneratingCCHeadersWhenEmptyReturnsEmptyString()
     {
-        $method = $this->mail_reflection->getMethod('generate_carbon_copy_header');
-        $method->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_carbon_copy_header');
 
-        $this->assertEquals('', $method->invokeArgs($this->mail, array('cc')));
-        $this->assertEquals('', $method->invoke($this->mail));
+        $this->assertEquals('', $method->invokeArgs($this->class, array('cc')));
+        $this->assertEquals('', $method->invoke($this->class));
     }
 
     /**
      * Test that generating BCC headers when none are defined returns an empty string.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testBCCEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testArrayPropEmptyByDefault
      * @covers  Lunr\Network\Mail::generate_carbon_copy_header
      */
     public function testGeneratingBCCHeadersWhenEmptyReturnsEmptyString()
     {
-        $method = $this->mail_reflection->getMethod('generate_carbon_copy_header');
-        $method->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_carbon_copy_header');
 
-        $this->assertEquals('', $method->invokeArgs($this->mail, array('bcc')));
+        $this->assertEquals('', $method->invokeArgs($this->class, array('bcc')));
     }
 
     /**
@@ -80,17 +78,13 @@ class MailSendTest extends MailTest
      */
     public function testGeneratingCCHeadersWithOneEntry()
     {
-        $method = $this->mail_reflection->getMethod('generate_carbon_copy_header');
-        $method->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_carbon_copy_header');
 
-        $property = $this->mail_reflection->getProperty('cc');
-        $property->setAccessible(TRUE);
-
-        $property->setValue($this->mail, array('info@m2mobi.com'));
+        $this->set_reflection_property_value('cc', array('info@m2mobi.com'));
 
         $expect = "CC: info@m2mobi.com\r\n";
 
-        $this->assertEquals($expect, $method->invokeArgs($this->mail, array('cc')));
+        $this->assertEquals($expect, $method->invokeArgs($this->class, array('cc')));
     }
 
     /**
@@ -100,17 +94,13 @@ class MailSendTest extends MailTest
      */
     public function testGeneratingCCHeadersWithMoreEntries()
     {
-        $method = $this->mail_reflection->getMethod('generate_carbon_copy_header');
-        $method->setAccessible(TRUE);
-
-        $property = $this->mail_reflection->getProperty('cc');
-        $property->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_carbon_copy_header');
 
-        $property->setValue($this->mail, array('info@m2mobi.com', 'jobs@m2mobi.com'));
+        $this->set_reflection_property_value('cc', array('info@m2mobi.com', 'jobs@m2mobi.com'));
 
         $expect = "CC: info@m2mobi.com, jobs@m2mobi.com\r\n";
 
-        $this->assertEquals($expect, $method->invokeArgs($this->mail, array('cc')));
+        $this->assertEquals($expect, $method->invokeArgs($this->class, array('cc')));
     }
 
     /**
@@ -120,17 +110,13 @@ class MailSendTest extends MailTest
      */
     public function testGeneratingBCCHeadersWithOneEntry()
     {
-        $method = $this->mail_reflection->getMethod('generate_carbon_copy_header');
-        $method->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_carbon_copy_header');
 
-        $property = $this->mail_reflection->getProperty('bcc');
-        $property->setAccessible(TRUE);
-
-        $property->setValue($this->mail, array('info@m2mobi.com'));
+        $this->set_reflection_property_value('bcc', array('info@m2mobi.com'));
 
         $expect = "BCC: info@m2mobi.com\r\n";
 
-        $this->assertEquals($expect, $method->invokeArgs($this->mail, array('bcc')));
+        $this->assertEquals($expect, $method->invokeArgs($this->class, array('bcc')));
     }
 
     /**
@@ -140,31 +126,26 @@ class MailSendTest extends MailTest
      */
     public function testGeneratingBCCHeadersWithMoreEntries()
     {
-        $method = $this->mail_reflection->getMethod('generate_carbon_copy_header');
-        $method->setAccessible(TRUE);
-
-        $property = $this->mail_reflection->getProperty('bcc');
-        $property->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_carbon_copy_header');
 
-        $property->setValue($this->mail, array('info@m2mobi.com', 'jobs@m2mobi.com'));
+        $this->set_reflection_property_value('bcc', array('info@m2mobi.com', 'jobs@m2mobi.com'));
 
         $expect = "BCC: info@m2mobi.com, jobs@m2mobi.com\r\n";
 
-        $this->assertEquals($expect, $method->invokeArgs($this->mail, array('bcc')));
+        $this->assertEquals($expect, $method->invokeArgs($this->class, array('bcc')));
     }
 
     /**
      * Test that headers returns FALSE when there is no From address set.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testFromEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testStringPropEmptyByDefault
      * @covers  Lunr\Network\Mail::generate_headers
      */
     public function testHeadersReturnsFalseWhenFromIsEmpty()
     {
-        $method = $this->mail_reflection->getMethod('generate_headers');
-        $method->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_headers');
 
-        $this->assertFalse($method->invoke($this->mail));
+        $this->assertFalse($method->invoke($this->class));
     }
 
     /**
@@ -176,17 +157,14 @@ class MailSendTest extends MailTest
      */
     public function testHeadersWithEmptyCCAndEmptyBCC()
     {
-        $method = $this->mail_reflection->getMethod('generate_headers');
-        $method->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_headers');
 
-        $property = $this->mail_reflection->getProperty('from');
-        $property->setAccessible(TRUE);
-        $property->setValue($this->mail, 'info@m2mobi.com');
+        $this->set_reflection_property_value('from', 'info@m2mobi.com');
 
         $expected  = "From: info@m2mobi.com\r\n";
         $expected .= 'X-Mailer: PHP/' . phpversion();
 
-        $this->assertEquals($expected, $method->invoke($this->mail));
+        $this->assertEquals($expected, $method->invoke($this->class));
     }
 
     /**
@@ -199,22 +177,17 @@ class MailSendTest extends MailTest
      */
     public function testHeadersWithCCAndEmptyBCC()
     {
-        $method = $this->mail_reflection->getMethod('generate_headers');
-        $method->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_headers');
 
-        $from = $this->mail_reflection->getProperty('from');
-        $from->setAccessible(TRUE);
-        $from->setValue($this->mail, 'info@m2mobi.com');
+        $this->set_reflection_property_value('from', 'info@m2mobi.com');
 
-        $cc = $this->mail_reflection->getProperty('cc');
-        $cc->setAccessible(TRUE);
-        $cc->setValue($this->mail, array('jobs@m2mobi.com'));
+        $this->set_reflection_property_value('cc', array('jobs@m2mobi.com'));
 
         $expected  = "From: info@m2mobi.com\r\n";
         $expected .= "CC: jobs@m2mobi.com\r\n";
         $expected .= 'X-Mailer: PHP/' . phpversion();
 
-        $this->assertEquals($expected, $method->invoke($this->mail));
+        $this->assertEquals($expected, $method->invoke($this->class));
     }
 
     /**
@@ -227,22 +200,17 @@ class MailSendTest extends MailTest
      */
     public function testHeadersWithEmptyCCAndBCC()
     {
-        $method = $this->mail_reflection->getMethod('generate_headers');
-        $method->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_headers');
 
-        $from = $this->mail_reflection->getProperty('from');
-        $from->setAccessible(TRUE);
-        $from->setValue($this->mail, 'info@m2mobi.com');
+        $this->set_reflection_property_value('from', 'info@m2mobi.com');
 
-        $bcc = $this->mail_reflection->getProperty('bcc');
-        $bcc->setAccessible(TRUE);
-        $bcc->setValue($this->mail, array('jobs@m2mobi.com'));
+        $this->set_reflection_property_value('bcc', array('jobs@m2mobi.com'));
 
         $expected  = "From: info@m2mobi.com\r\n";
         $expected .= "BCC: jobs@m2mobi.com\r\n";
         $expected .= 'X-Mailer: PHP/' . phpversion();
 
-        $this->assertEquals($expected, $method->invoke($this->mail));
+        $this->assertEquals($expected, $method->invoke($this->class));
     }
 
     /**
@@ -256,27 +224,20 @@ class MailSendTest extends MailTest
      */
     public function testHeaders()
     {
-        $method = $this->mail_reflection->getMethod('generate_headers');
-        $method->setAccessible(TRUE);
+        $method = $this->get_accessible_reflection_method('generate_headers');
 
-        $from = $this->mail_reflection->getProperty('from');
-        $from->setAccessible(TRUE);
-        $from->setValue($this->mail, 'info@m2mobi.com');
+        $this->set_reflection_property_value('from', 'info@m2mobi.com');
 
-        $cc = $this->mail_reflection->getProperty('cc');
-        $cc->setAccessible(TRUE);
-        $cc->setValue($this->mail, array('jobs@m2mobi.com'));
+        $this->set_reflection_property_value('cc', array('jobs@m2mobi.com'));
 
-        $bcc = $this->mail_reflection->getProperty('bcc');
-        $bcc->setAccessible(TRUE);
-        $bcc->setValue($this->mail, array('jobs@m2mobi.com'));
+        $this->set_reflection_property_value('bcc', array('jobs@m2mobi.com'));
 
         $expected  = "From: info@m2mobi.com\r\n";
         $expected .= "CC: jobs@m2mobi.com\r\n";
         $expected .= "BCC: jobs@m2mobi.com\r\n";
         $expected .= 'X-Mailer: PHP/' . phpversion();
 
-        $this->assertEquals($expected, $method->invoke($this->mail));
+        $this->assertEquals($expected, $method->invoke($this->class));
     }
 
     /**
@@ -289,10 +250,10 @@ class MailSendTest extends MailTest
      */
     public function testSendReturnsFalseWhenFromIsEmpty()
     {
-        $this->mail->set_subject('Subject');
-        $this->mail->add_to('jobs@m2mobi.com');
+        $this->class->set_subject('Subject');
+        $this->class->add_to('jobs@m2mobi.com');
 
-        $this->assertFalse($this->mail->send());
+        $this->assertFalse($this->class->send());
     }
 
     /**
@@ -304,10 +265,10 @@ class MailSendTest extends MailTest
      */
     public function testSendReturnsFalseWhenToIsEmpty()
     {
-        $this->mail->set_subject('Subject');
-        $this->mail->set_from('info@m2mobi.com');
+        $this->class->set_subject('Subject');
+        $this->class->set_from('info@m2mobi.com');
 
-        $this->assertFalse($this->mail->send());
+        $this->assertFalse($this->class->send());
     }
 
     /**
@@ -319,10 +280,10 @@ class MailSendTest extends MailTest
      */
     public function testSendReturnsFalseWhenSubjectIsEmpty()
     {
-        $this->mail->add_to('jobs@m2mobi.com');
-        $this->mail->set_from('info@m2mobi.com');
+        $this->class->add_to('jobs@m2mobi.com');
+        $this->class->set_from('info@m2mobi.com');
 
-        $this->assertFalse($this->mail->send());
+        $this->assertFalse($this->class->send());
     }
 
     /**
@@ -336,13 +297,13 @@ class MailSendTest extends MailTest
      */
     public function testSendReturnsFalseWhenSendingFails()
     {
-        $this->mail->set_subject('Subject');
-        $this->mail->add_to('jobs@m2mobi.com');
-        $this->mail->set_from('info@m2mobi.com');
+        $this->class->set_subject('Subject');
+        $this->class->add_to('jobs@m2mobi.com');
+        $this->class->set_from('info@m2mobi.com');
 
         runkit_function_redefine('mail', '', self::SEND_MAIL_FAILS);
 
-        $this->assertFalse($this->mail->send());
+        $this->assertFalse($this->class->send());
     }
 
     /**
@@ -356,13 +317,13 @@ class MailSendTest extends MailTest
      */
     public function testSendReturnsTrueWhenSendingSucceeds()
     {
-        $this->mail->set_subject('Subject');
-        $this->mail->add_to('jobs@m2mobi.com');
-        $this->mail->set_from('info@m2mobi.com');
+        $this->class->set_subject('Subject');
+        $this->class->add_to('jobs@m2mobi.com');
+        $this->class->set_from('info@m2mobi.com');
 
         runkit_function_redefine('mail', '', self::SEND_MAIL_WORKS);
 
-        $this->assertTrue($this->mail->send());
+        $this->assertTrue($this->class->send());
     }
 
 }
diff --git a/src/Lunr/Network/Tests/MailSetTest.php b/src/Lunr/Network/Tests/MailSetTest.php
index 8f044e21f84ccb06096acfe13c35d5c0349ff336..d6b1cfc890ed0568a4248dec7ac997c1aece135a 100644
--- a/src/Lunr/Network/Tests/MailSetTest.php
+++ b/src/Lunr/Network/Tests/MailSetTest.php
@@ -9,6 +9,7 @@
  * @package    Network
  * @subpackage Tests
  * @author     Heinz Wiesinger <heinz@m2mobi.com>
+ * @author     Andrea Nigido <andrea@m2mobi.com>
  * @copyright  2012-2013, M2Mobi BV, Amsterdam, The Netherlands
  * @license    http://lunr.nl/LICENSE MIT License
  */
@@ -16,7 +17,6 @@
 namespace Lunr\Network\Tests;
 
 use Lunr\Network\Mail;
-use PHPUnit_Framework_TestCase;
 use ReflectionClass;
 
 /**
@@ -26,6 +26,7 @@ use ReflectionClass;
  * @package    Network
  * @subpackage Tests
  * @author     Heinz Wiesinger <heinz@m2mobi.com>
+ * @author     Andrea Nigido <andrea@m2mobi.com>
  * @covers     Lunr\Network\Mail
  */
 class MailSetTest extends MailTest
@@ -38,44 +39,38 @@ class MailSetTest extends MailTest
      */
     public function testSetFromReturnsSelfReference()
     {
-        $result = $this->mail->set_from('info@m2mobi.com');
+        $result = $this->class->set_from('info@m2mobi.com');
 
         $this->assertInstanceOf('Lunr\Network\Mail', $result);
-        $this->assertSame($this->mail, $result);
+        $this->assertSame($this->class, $result);
     }
 
     /**
      * Test that trying to set an invalid email as From will not do anything.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testFromEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testStringPropEmptyByDefault
      * @depends Lunr\Network\Tests\MailBaseTest::testInvalidEmailIsNotValid
      * @covers  Lunr\Network\Mail::set_from
      */
     public function testSetInvalidEmailAsFromDoesNothing()
     {
-        $property = $this->mail_reflection->getProperty('from');
-        $property->setAccessible(TRUE);
+        $this->class->set_from(NULL);
 
-        $this->mail->set_from(NULL);
-
-        $this->assertEquals('', $property->getValue($this->mail));
+        $this->assertPropertyEquals('from', '');
     }
 
     /**
      * Test setting a valid email as From.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testFromEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testStringPropEmptyByDefault
      * @depends Lunr\Network\Tests\MailBaseTest::testInvalidEmailIsNotValid
      * @covers  Lunr\Network\Mail::set_from
      */
     public function testSetValidEmailAsFrom()
     {
-        $property = $this->mail_reflection->getProperty('from');
-        $property->setAccessible(TRUE);
-
-        $this->mail->set_from('info@m2mobi.com');
+        $this->class->set_from('info@m2mobi.com');
 
-        $this->assertEquals('info@m2mobi.com', $property->getValue($this->mail));
+        $this->assertPropertyEquals('from', 'info@m2mobi.com');
     }
 
     /**
@@ -85,47 +80,40 @@ class MailSetTest extends MailTest
      */
     public function testAddToReturnsSelfReference()
     {
-        $result = $this->mail->add_to('info@m2mobi.com');
+        $result = $this->class->add_to('info@m2mobi.com');
 
         $this->assertInstanceOf('Lunr\Network\Mail', $result);
-        $this->assertSame($this->mail, $result);
+        $this->assertSame($this->class, $result);
     }
 
     /**
      * Test that trying to add an invalid email as To will not do anything.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testToEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testArrayPropEmptyByDefault
      * @depends Lunr\Network\Tests\MailBaseTest::testInvalidEmailIsNotValid
      * @covers  Lunr\Network\Mail::add_to
      */
     public function testAddInvalidEmailAsToDoesNothing()
     {
-        $property = $this->mail_reflection->getProperty('to');
-        $property->setAccessible(TRUE);
+        $this->class->add_to(NULL);
 
-        $this->mail->add_to(NULL);
+        $value = $this->get_reflection_property_value('to');
 
-        $value = $property->getValue($this->mail);
-
-        $this->assertInternalType('array', $value);
-        $this->assertEmpty($value);
+        $this->assertArrayEmpty($value);
     }
 
     /**
      * Test adding a valid email as To.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testToEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testArrayPropEmptyByDefault
      * @depends Lunr\Network\Tests\MailBaseTest::testInvalidEmailIsNotValid
      * @covers  Lunr\Network\Mail::add_to
      */
     public function testAddValidEmailAsTo()
     {
-        $property = $this->mail_reflection->getProperty('to');
-        $property->setAccessible(TRUE);
+        $this->class->add_to('info@m2mobi.com');
 
-        $this->mail->add_to('info@m2mobi.com');
-
-        $value = $property->getValue($this->mail);
+        $value = $this->get_reflection_property_value('to');
 
         $this->assertInternalType('array', $value);
         $this->assertContains('info@m2mobi.com', $value);
@@ -135,19 +123,16 @@ class MailSetTest extends MailTest
     /**
      * Test adding more than one valid email as To.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testToEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testArrayPropEmptyByDefault
      * @depends Lunr\Network\Tests\MailBaseTest::testInvalidEmailIsNotValid
      * @covers  Lunr\Network\Mail::add_to
      */
     public function testAddAnotherEmailAsTo()
     {
-        $property = $this->mail_reflection->getProperty('to');
-        $property->setAccessible(TRUE);
-
-        $this->mail->add_to('info@m2mobi.com');
-        $this->mail->add_to('jobs@m2mobi.com');
+        $this->class->add_to('info@m2mobi.com');
+        $this->class->add_to('jobs@m2mobi.com');
 
-        $value = $property->getValue($this->mail);
+        $value = $this->get_reflection_property_value('to');
 
         $this->assertInternalType('array', $value);
         $this->assertContains('info@m2mobi.com', $value);
@@ -162,47 +147,40 @@ class MailSetTest extends MailTest
      */
     public function testAddCCReturnsSelfReference()
     {
-        $result = $this->mail->add_cc('info@m2mobi.com');
+        $result = $this->class->add_cc('info@m2mobi.com');
 
         $this->assertInstanceOf('Lunr\Network\Mail', $result);
-        $this->assertSame($this->mail, $result);
+        $this->assertSame($this->class, $result);
     }
 
     /**
      * Test that trying to add an invalid email as CC will not do anything.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testCCEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testArrayPropEmptyByDefault
      * @depends Lunr\Network\Tests\MailBaseTest::testInvalidEmailIsNotValid
      * @covers  Lunr\Network\Mail::add_cc
      */
     public function testAddInvalidEmailAsCCDoesNothing()
     {
-        $property = $this->mail_reflection->getProperty('cc');
-        $property->setAccessible(TRUE);
+        $this->class->add_cc(NULL);
 
-        $this->mail->add_cc(NULL);
+        $value = $this->get_reflection_property_value('cc');
 
-        $value = $property->getValue($this->mail);
-
-        $this->assertInternalType('array', $value);
-        $this->assertEmpty($value);
+        $this->assertArrayEmpty($value);
     }
 
     /**
      * Test adding a valid email as CC.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testCCEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testArrayPropEmptyByDefault
      * @depends Lunr\Network\Tests\MailBaseTest::testInvalidEmailIsNotValid
      * @covers  Lunr\Network\Mail::add_cc
      */
     public function testAddValidEmailAsCC()
     {
-        $property = $this->mail_reflection->getProperty('cc');
-        $property->setAccessible(TRUE);
+        $this->class->add_cc('info@m2mobi.com');
 
-        $this->mail->add_cc('info@m2mobi.com');
-
-        $value = $property->getValue($this->mail);
+        $value = $this->get_reflection_property_value('cc');
 
         $this->assertInternalType('array', $value);
         $this->assertContains('info@m2mobi.com', $value);
@@ -212,19 +190,16 @@ class MailSetTest extends MailTest
     /**
      * Test adding more than one valid email as CC.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testCCEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testArrayPropEmptyByDefault
      * @depends Lunr\Network\Tests\MailBaseTest::testInvalidEmailIsNotValid
      * @covers  Lunr\Network\Mail::add_cc
      */
     public function testAddAnotherEmailAsCC()
     {
-        $property = $this->mail_reflection->getProperty('cc');
-        $property->setAccessible(TRUE);
-
-        $this->mail->add_cc('info@m2mobi.com');
-        $this->mail->add_cc('jobs@m2mobi.com');
+        $this->class->add_cc('info@m2mobi.com');
+        $this->class->add_cc('jobs@m2mobi.com');
 
-        $value = $property->getValue($this->mail);
+        $value = $this->get_reflection_property_value('cc');
 
         $this->assertInternalType('array', $value);
         $this->assertContains('info@m2mobi.com', $value);
@@ -239,47 +214,40 @@ class MailSetTest extends MailTest
      */
     public function testAddBCCReturnsSelfReference()
     {
-        $result = $this->mail->add_bcc('info@m2mobi.com');
+        $result = $this->class->add_bcc('info@m2mobi.com');
 
         $this->assertInstanceOf('Lunr\Network\Mail', $result);
-        $this->assertSame($this->mail, $result);
+        $this->assertSame($this->class, $result);
     }
 
     /**
      * Test that trying to add an invalid email as BCC will not do anything.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testBCCEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testArrayPropEmptyByDefault
      * @depends Lunr\Network\Tests\MailBaseTest::testInvalidEmailIsNotValid
      * @covers  Lunr\Network\Mail::add_bcc
      */
     public function testAddInvalidEmailAsBCCDoesNothing()
     {
-        $property = $this->mail_reflection->getProperty('bcc');
-        $property->setAccessible(TRUE);
+        $this->class->add_bcc(NULL);
 
-        $this->mail->add_bcc(NULL);
+        $value = $this->get_reflection_property_value('bcc');
 
-        $value = $property->getValue($this->mail);
-
-        $this->assertInternalType('array', $value);
-        $this->assertEmpty($value);
+        $this->assertArrayEmpty($value);
     }
 
     /**
      * Test adding a valid email as BCC.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testBCCEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testArrayPropEmptyByDefault
      * @depends Lunr\Network\Tests\MailBaseTest::testInvalidEmailIsNotValid
      * @covers  Lunr\Network\Mail::add_bcc
      */
     public function testAddValidEmailAsBCC()
     {
-        $property = $this->mail_reflection->getProperty('bcc');
-        $property->setAccessible(TRUE);
+        $this->class->add_bcc('info@m2mobi.com');
 
-        $this->mail->add_bcc('info@m2mobi.com');
-
-        $value = $property->getValue($this->mail);
+        $value = $this->get_reflection_property_value('bcc');
 
         $this->assertInternalType('array', $value);
         $this->assertContains('info@m2mobi.com', $value);
@@ -289,19 +257,16 @@ class MailSetTest extends MailTest
     /**
      * Test adding more than one valid email as BCC.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testBCCEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testArrayPropEmptyByDefault
      * @depends Lunr\Network\Tests\MailBaseTest::testInvalidEmailIsNotValid
      * @covers  Lunr\Network\Mail::add_bcc
      */
     public function testAddAnotherEmailAsBCC()
     {
-        $property = $this->mail_reflection->getProperty('bcc');
-        $property->setAccessible(TRUE);
-
-        $this->mail->add_bcc('info@m2mobi.com');
-        $this->mail->add_bcc('jobs@m2mobi.com');
+        $this->class->add_bcc('info@m2mobi.com');
+        $this->class->add_bcc('jobs@m2mobi.com');
 
-        $value = $property->getValue($this->mail);
+        $value = $this->get_reflection_property_value('bcc');
 
         $this->assertInternalType('array', $value);
         $this->assertContains('info@m2mobi.com', $value);
@@ -316,26 +281,23 @@ class MailSetTest extends MailTest
      */
     public function testSetMessageReturnsSelfReference()
     {
-        $result = $this->mail->set_message('Message');
+        $result = $this->class->set_message('Message');
 
         $this->assertInstanceOf('Lunr\Network\Mail', $result);
-        $this->assertSame($this->mail, $result);
+        $this->assertSame($this->class, $result);
     }
 
     /**
      * Test setting a message.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testMessageEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testStringPropEmptyByDefault
      * @covers  Lunr\Network\Mail::set_message
      */
     public function testSetMessage()
     {
-        $property = $this->mail_reflection->getProperty('msg');
-        $property->setAccessible(TRUE);
-
-        $this->mail->set_message('Message');
+        $this->class->set_message('Message');
 
-        $this->assertEquals('Message', $property->getValue($this->mail));
+        $this->assertPropertyEquals('msg', 'Message');
     }
 
     /**
@@ -345,26 +307,25 @@ class MailSetTest extends MailTest
      */
     public function testSetSubjectReturnsSelfReference()
     {
-        $result = $this->mail->set_subject('Subject');
+        $result = $this->class->set_subject('Subject');
 
         $this->assertInstanceOf('Lunr\Network\Mail', $result);
-        $this->assertSame($this->mail, $result);
+        $this->assertSame($this->class, $result);
     }
 
     /**
      * Test setting a subject.
      *
-     * @depends Lunr\Network\Tests\MailBaseTest::testMessageEmptyByDefault
+     * @depends Lunr\Network\Tests\MailBaseTest::testStringPropEmptyByDefault
      * @covers  Lunr\Network\Mail::set_message
      */
     public function testSetSubject()
     {
-        $property = $this->mail_reflection->getProperty('subject');
-        $property->setAccessible(TRUE);
+        $property = $this->get_reflection_property_value('subject');
 
-        $this->mail->set_subject('Subject');
+        $this->class->set_subject('Subject');
 
-        $this->assertEquals('Subject', $property->getValue($this->mail));
+        $this->assertPropertyEquals('subject', 'Subject');
     }
 
 }
diff --git a/src/Lunr/Network/Tests/MailTest.php b/src/Lunr/Network/Tests/MailTest.php
index cad885c2570664d3634ec20463d0f1205d2dd3c4..864c2886478d4927a2fba5f011120ffaa12bed22 100644
--- a/src/Lunr/Network/Tests/MailTest.php
+++ b/src/Lunr/Network/Tests/MailTest.php
@@ -9,6 +9,7 @@
  * @package    Network
  * @subpackage Tests
  * @author     Heinz Wiesinger <heinz@m2mobi.com>
+ * @author     Andrea Nigido <andrea@m2mobi.com>
  * @copyright  2012-2013, M2Mobi BV, Amsterdam, The Netherlands
  * @license    http://lunr.nl/LICENSE MIT License
  */
@@ -16,7 +17,7 @@
 namespace Lunr\Network\Tests;
 
 use Lunr\Network\Mail;
-use PHPUnit_Framework_TestCase;
+use Lunr\Halo\LunrBaseTest;
 use ReflectionClass;
 
 /**
@@ -26,24 +27,13 @@ use ReflectionClass;
  * @package    Network
  * @subpackage Tests
  * @author     Heinz Wiesinger <heinz@m2mobi.com>
+ * @author     Andrea Nigido <andrea@m2mobi.com>
  * @covers     Lunr\Network\Mail
  */
-abstract class MailTest extends PHPUnit_Framework_TestCase
+abstract class MailTest extends LunrBaseTest
 {
 
     /**
-     * Instance of the Mail class.
-     * @var Mail
-     */
-    protected $mail;
-
-    /**
-     * Reflection instance of the Mail class.
-     * @var ReflectionClass
-     */
-    protected $mail_reflection;
-
-    /**
      * Runkit simulation code for working email sending.
      * @var string
      */
@@ -60,8 +50,8 @@ abstract class MailTest extends PHPUnit_Framework_TestCase
      */
     public function setUp()
     {
-        $this->mail            = new Mail();
-        $this->mail_reflection = new ReflectionClass('Lunr\Network\Mail');
+        $this->class      = new Mail();
+        $this->reflection = new ReflectionClass('Lunr\Network\Mail');
     }
 
     /**
@@ -69,8 +59,8 @@ abstract class MailTest extends PHPUnit_Framework_TestCase
      */
     public function tearDown()
     {
-        unset($this->mail);
-        unset($this->mail_reflection);
+        unset($this->reflection);
+        unset($this->class);
     }
 
     /**
@@ -107,6 +97,36 @@ abstract class MailTest extends PHPUnit_Framework_TestCase
         return $emails;
     }
 
+    /**
+     * Unit Test Data Provider for string fields identifiers.
+     *
+     * @return array $base Array of property IDs
+     */
+    public function stringPropsProvider()
+    {
+        $string_props   = array();
+        $string_props[] = array('from');
+        $string_props[] = array('msg');
+        $string_props[] = array('subject');;
+
+        return $string_props;
+    }
+
+    /**
+     * Unit Test Data Provider for array fields identifiers.
+     *
+     * @return array $base Array of property IDs
+     */
+    public function arrayPropsProvider()
+    {
+        $array_props   = array();
+        $array_props[] = array('to');
+        $array_props[] = array('cc');
+        $array_props[] = array('bcc');;
+
+        return $array_props;
+    }
+
 }
 
 ?>
