147 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			147 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use IPTools\Range;
							 | 
						||
| 
								 | 
							
								use IPTools\Network;
							 | 
						||
| 
								 | 
							
								use IPTools\IP;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RangeTest extends \PHPUnit_Framework_TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @dataProvider getTestParseData
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testParse($data, $expected)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $range = Range::parse($data);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected[0], $range->firstIP);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected[1], $range->lastIP);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @dataProvider getTestNetworksData
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testGetNetworks($data, $expected)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $result = array();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        foreach (Range::parse($data)->getNetworks() as $network) {
							 | 
						||
| 
								 | 
							
								            $result[] = (string)$network;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected, $result);        
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @dataProvider getTestContainsData
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testContains($data, $find, $expected)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected, Range::parse($data)->contains(new IP($find)));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @dataProvider getTestIterationData
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testRangeIteration($data, $expected)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        foreach (Range::parse($data) as $key => $ip) {
							 | 
						||
| 
								 | 
							
								           $result[] = (string)$ip;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected, $result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @dataProvider getTestCountData
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testCount($data, $expected)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected, count(Range::parse($data)));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getTestParseData()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return array(
							 | 
						||
| 
								 | 
							
								            array('127.0.0.1-127.255.255.255', array('127.0.0.1', '127.255.255.255')),
							 | 
						||
| 
								 | 
							
								            array('127.0.0.1/24', array('127.0.0.0', '127.0.0.255')),
							 | 
						||
| 
								 | 
							
								            array('127.*.0.0', array('127.0.0.0', '127.255.0.0')),
							 | 
						||
| 
								 | 
							
								            array('127.255.255.0', array('127.255.255.0', '127.255.255.0')),
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getTestNetworksData()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return array(
							 | 
						||
| 
								 | 
							
								            array('192.168.1.*', array('192.168.1.0/24')),
							 | 
						||
| 
								 | 
							
								            array('192.168.1.208-192.168.1.255', array(
							 | 
						||
| 
								 | 
							
								                '192.168.1.208/28',
							 | 
						||
| 
								 | 
							
								                '192.168.1.224/27' 
							 | 
						||
| 
								 | 
							
								            )),
							 | 
						||
| 
								 | 
							
								            array('192.168.1.0-192.168.1.191', array(
							 | 
						||
| 
								 | 
							
								                '192.168.1.0/25',
							 | 
						||
| 
								 | 
							
								                '192.168.1.128/26' 
							 | 
						||
| 
								 | 
							
								            )),
							 | 
						||
| 
								 | 
							
								            array('192.168.1.125-192.168.1.126', array(
							 | 
						||
| 
								 | 
							
								                '192.168.1.125/32',
							 | 
						||
| 
								 | 
							
								                '192.168.1.126/32',
							 | 
						||
| 
								 | 
							
								            )),
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getTestContainsData()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return array(
							 | 
						||
| 
								 | 
							
								            array('192.168.*.*', '192.168.245.15', true),
							 | 
						||
| 
								 | 
							
								            array('192.168.*.*', '192.169.255.255', false),
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            /**
							 | 
						||
| 
								 | 
							
								             * 10.10.45.48 --> 00001010 00001010 00101101 00110000 
							 | 
						||
| 
								 | 
							
								             * the last 0000 leads error
							 | 
						||
| 
								 | 
							
								             */
							 | 
						||
| 
								 | 
							
								            array('10.10.45.48/28', '10.10.45.58', true),
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            array('2001:db8::/64', '2001:db8::ffff', true),
							 | 
						||
| 
								 | 
							
								            array('2001:db8::/64', '2001:db8:ffff::', false),
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getTestIterationData()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return array(
							 | 
						||
| 
								 | 
							
								            array('192.168.2.0-192.168.2.7', 
							 | 
						||
| 
								 | 
							
								                array(
							 | 
						||
| 
								 | 
							
								                    '192.168.2.0',
							 | 
						||
| 
								 | 
							
								                    '192.168.2.1',
							 | 
						||
| 
								 | 
							
								                    '192.168.2.2',
							 | 
						||
| 
								 | 
							
								                    '192.168.2.3',
							 | 
						||
| 
								 | 
							
								                    '192.168.2.4',
							 | 
						||
| 
								 | 
							
								                    '192.168.2.5',
							 | 
						||
| 
								 | 
							
								                    '192.168.2.6',
							 | 
						||
| 
								 | 
							
								                    '192.168.2.7',
							 | 
						||
| 
								 | 
							
								                )
							 | 
						||
| 
								 | 
							
								            ),
							 | 
						||
| 
								 | 
							
								            array('2001:db8::/125',
							 | 
						||
| 
								 | 
							
								                array(
							 | 
						||
| 
								 | 
							
								                    '2001:db8::',
							 | 
						||
| 
								 | 
							
								                    '2001:db8::1',
							 | 
						||
| 
								 | 
							
								                    '2001:db8::2',
							 | 
						||
| 
								 | 
							
								                    '2001:db8::3',
							 | 
						||
| 
								 | 
							
								                    '2001:db8::4',
							 | 
						||
| 
								 | 
							
								                    '2001:db8::5',
							 | 
						||
| 
								 | 
							
								                    '2001:db8::6',
							 | 
						||
| 
								 | 
							
								                    '2001:db8::7',
							 | 
						||
| 
								 | 
							
								                )
							 | 
						||
| 
								 | 
							
								            ),
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getTestCountData()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return array(
							 | 
						||
| 
								 | 
							
								            array('127.0.0.0/31', 2),
							 | 
						||
| 
								 | 
							
								            array('2001:db8::/120', 256),
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |