<?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));
 
    } 
 
} 
 
 |