| 
<?php
 namespace Melody\Validation\Constraints;
 
 use Melody\Validation\Validator as v;
 
 class EmailTest extends \PHPUnit_Framework_TestCase
 {
 
 /**
 * @dataProvider providerForValidEmail
 */
 public function test_valid_email_should_pass($validEmail)
 {
 $this->assertTrue(v::email()->validate($validEmail));
 }
 
 /**
 * @dataProvider providerForInvalidEmail
 */
 public function test_invalid_emails_should_fail_validation($invalidEmail)
 {
 $this->assertFalse(v::email()->validate($invalidEmail));
 }
 
 public function providerForValidEmail()
 {
 return array(
 array('[email protected]'),
 array('[email protected]'),
 array('[email protected]'),
 array('[email protected]')
 );
 }
 
 public function providerForInvalidEmail()
 {
 return array(
 array('test@test'),
 array('test'),
 array('test@тест.рф'),
 array('@test.com'),
 array('mail@[email protected]'),
 array('test.test@'),
 array('[email protected]'),
 array('[email protected]'),
 array('[email protected]'),
 array('[email protected].'),
 array('[email protected]')
 );
 }
 
 public function test_not_string_argument_exception()
 {
 $this->setExpectedException('InvalidArgumentException');
 $this->assertInstanceOf('InvalidArgumentException', v::email()->validate(null));
 }
 
 }
 
 |