<commit_before><?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to <EMAIL> so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @subpackage UnitTests
 * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * Test helper
 */
require_once dirname(__FILE__) . '/../../TestHelper.php';

/**
 * @see Zend_Validate_Ip
 */
require_once 'Zend/Validate/Ip.php';

/**
 * @category   Zend
 * @package    Zend_Validate
 * @subpackage UnitTests
 * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @group      Zend_Validate
 */
class Zend_Validate_IpTest extends PHPUnit_Framework_TestCase
{
    /**
     * Zend_Validate_Ip object
     *
     * @var Zend_Validate_Ip
     */
    protected $_validator;

    /**
     * Creates a new Zend_Validate_Ip object for each test method
     *
     * @return void
     */
    public function setUp()
    {
        $this->_validator = new Zend_Validate_Ip();
    }

    /**
     * Ensures that the validator follows expected behavior
     *
     * @return void
     */
    public function testBasic()
    {
        $this->assertTrue($this->_validator->isValid('1.2.3.4'));
        $this->assertTrue($this->_validator->isValid('10.0.0.1'));
        $this->assertTrue($this->_validator->isValid('255.255.255.255'));

        $this->assertFalse($this->_validator->isValid('0.0.0.256'));
        $this->assertFalse($this->_validator->isValid('1.2.3.4.5'));
    }

    public function testZeroIpForZF2420()
    {
        $this->assertTrue($this->_validator->isValid('0.0.0.0'));
    }

    /**
     * Ensures that getMessages() returns expected default value
     *
     * @return void
     */
    public function testGetMessages()
    {
        $this->assertEquals(array(), $this->_validator->getMessages());
    }

    public function testInvalidIpForZF4809()
    {
        $this->assertFalse($this->_validator->isValid('1.2.333'));
    }

    public function testInvalidIpForZF3435()
    {
        $this->assertFalse($this->_validator->isValid('192.168.0.2 adfs'));
    }

    /**
     * @see ZF-2694
     */
    public function testIPv6addresses()
    {
        if (!function_exists('inet_pton')) {
            $this->markTestIncomplete('No IPv6 support within this PHP release');
        }

        $this->assertTrue($this->_validator->isValid('::127.0.0.1'));
    }
    
    /**
     * @see ZF-8253
     */
    public function testMoreIPv6Addresses()
    {
        $ips = array(
                     '2001:0db8:0000:0000:0000:0000:1428:57ab',
                     '2001:0DB8:0000:0000:0000:0000:1428:57AB',
                     'a:b:c::1.2.3.4',
                     'a:b:c:d::1.2.3.4',
                     'a:b:c:d:e:f:1.2.3.4',
                     'a::c:d:e:f:0:1',
                     'fdf8:f53e:61e4::18',
                     '::e:f',
                     'fc00:e968:6179::de52:7100');
        foreach($ips as $ip) {
            $this->assertTrue($this->_validator->isValid($ip));
        }
    }
    
    /**
     * @see ZF-8253
     * @see http://bugs.php.net/bug.php?id=50117
     */
    public function testMoreIPv6AddressesPHPdidWrong()
    {
        $validIps = array('fd00:a516:7c1b:17cd:6d81:2137:bd2a:2c5b.2.3.4',
                          '::0:a:b:c:d:e:f',
                          '0:a:b:c:d:e:f::');
        $invalidIps = array('::01.02.03.04',
                            '0:0:0:255.255.255.255');
        
        foreach($validIps as $ip) {
            $this->assertTrue($this->_validator->isValid($ip));
        }
        
        foreach($invalidIps as $ip) {
            $this->assertFalse($this->_validator->isValid($ip));
        }
    }
    

    /**
     * @ZF-4352
     */
    public function testNonStringValidation()
    {
        $this->assertFalse($this->_validator->isValid(array(1 => 1)));
    }
}<commit_msg>#ZF-8253<commit_after><?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to <EMAIL> so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @subpackage UnitTests
 * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * Test helper
 */
require_once dirname(__FILE__) . '/../../TestHelper.php';

/**
 * @see Zend_Validate_Ip
 */
require_once 'Zend/Validate/Ip.php';

/**
 * @category   Zend
 * @package    Zend_Validate
 * @subpackage UnitTests
 * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @group      Zend_Validate
 */
class Zend_Validate_IpTest extends PHPUnit_Framework_TestCase
{
    /**
     * Zend_Validate_Ip object
     *
     * @var Zend_Validate_Ip
     */
    protected $_validator;

    /**
     * Creates a new Zend_Validate_Ip object for each test method
     *
     * @return void
     */
    public function setUp()
    {
        $this->_validator = new Zend_Validate_Ip();
    }

    /**
     * Ensures that the validator follows expected behavior
     *
     * @return void
     */
    public function testBasic()
    {
        $this->assertTrue($this->_validator->isValid('1.2.3.4'));
        $this->assertTrue($this->_validator->isValid('10.0.0.1'));
        $this->assertTrue($this->_validator->isValid('255.255.255.255'));

        $this->assertFalse($this->_validator->isValid('0.0.0.256'));
        $this->assertFalse($this->_validator->isValid('1.2.3.4.5'));
    }

    public function testZeroIpForZF2420()
    {
        $this->assertTrue($this->_validator->isValid('0.0.0.0'));
    }

    /**
     * Ensures that getMessages() returns expected default value
     *
     * @return void
     */
    public function testGetMessages()
    {
        $this->assertEquals(array(), $this->_validator->getMessages());
    }

    public function testInvalidIpForZF4809()
    {
        $this->assertFalse($this->_validator->isValid('1.2.333'));
    }

    public function testInvalidIpForZF3435()
    {
        $this->assertFalse($this->_validator->isValid('192.168.0.2 adfs'));
    }

    /**
     * @see ZF-2694
     * @see ZF-8253
     */
    public function testIPv6addresses()
    {
        $IPs = array(
            '2001:0db8:0000:0000:0000:0000:1428:57ab'   => true,
            '2001:0DB8:0000:0000:0000:0000:1428:57AB'   => true,
            '2001:00db8:0000:0000:0000:0000:1428:57ab'  => false,
            '2001:0db8:xxxx:0000:0000:0000:1428:57ab'   => false,

            '2001:db8::1428:57ab'   => true,
            '2001:db8::1428::57ab'  => false,
            '2001:dx0::1234'        => false,
            '2001:db0::12345'       => false,

            ''                      => false,
            ':'                     => false,
            '::'                    => true,
            ':::'                   => false,
            '::::'                  => false,
            '::1'                   => true,
            ':::1'                  => false,

            '::1.2.3.4'             => true,
            '::127.0.0.1'           => true,
            '::256.0.0.1'           => false,
            '::01.02.03.04'         => false,
            'a:b:c::1.2.3.4'        => true,
            'a:b:c:d::1.2.3.4'      => true,
            'a:b:c:d:e::1.2.3.4'    => true,
            'a:b:c:d:e:f:1.2.3.4'   => true,
            'a:b:c:d:e:f:1.256.3.4' => false,
            'a:b:c:d:e:f::1.2.3.4'  => false,

            'a:b:c:d:e:f:0:1:2'     => false,
            'fdf8:f53e:61e4::18'       => true,
            'a::b:c:d:e:f:0:1'      => false,
            'a::c:d:e:f:0:1'        => true,
            'a::d:e:f:0:1'          => true,
            'a::e:f:0:1'            => true,
            'a::f:0:1'              => true,
            'a::0:1'                => true,
            'a::1'                  => true,
            'a::'                   => true,

            '::0:1:a:b:c:d:e:f'     => false,
//            '::0:a:b:c:d:e:f'       => false,  //
            '::a:b:c:d:e:f'         => true,
            '::b:c:d:e:f'           => true,
            '::c:d:e:f'             => true,
            '::d:e:f'               => true,
            '::e:f'                 => true,
            '::f'                   => true,

            'fd00:a516:7c1b:17cd:6d81:2137:bd2a:2c5b::'     => false,
//            '0:a:b:c:d:e:f::'       => false,  //
            'a:b:c:d:e:f::'         => true,
            'b:c:d:e:f::'           => true,
            'c:d:e:f::'             => true,
            'd:e:f::'               => true,
            'e:f::'                 => true,
            'f::'                   => true,

            'a:b:::e:f'             => false,
            '::a:'                  => false,
            '::a::'                 => false,
            ':a::b'                 => false,
            'a::b:'                 => false,
            '::a:b::c'              => false,
            'abcde::f'              => false,

            ':10.0.0.1'             => false,
            '0:0:0:255.255.255.255' => false,
            'fd00:c2b6:b24b:be67:2827:688d:e6a1:6a3b:85a3::172.31.128.1' => false,

            'a:b:c:d:e:f:0::1'      => false,
//            'a:b:c:d:e:f:0::'       => false,
            'fc00:e968:6179::de52:7100'        => true,
            'a:b:c:d:e:f::'         => true,

            'total gibberish'       => false
        );

        foreach($IPs as $ip => $expectedOutcome) {
            if($expectedOutcome) {
                $this->assertTrue($this->_validator->isValid($ip));
            } else {
                $this->assertFalse($this->_validator->isValid($ip));
            }
        }

    }
    
    /**
     * @ZF-4352
     */
    public function testNonStringValidation()
    {
        $this->assertFalse($this->_validator->isValid(array(1 => 1)));
    }
}
{'fraction_non_alphanumeric': 0.17079025110782867, 'fraction_numerical': 0.061299852289512555, 'mean_word_length': 1.6688839615668885, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 155, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 32, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5807362', 'n_tokens_mistral': 3984, 'n_tokens_neox': 3665, 'n_words': 598}