first commit

This commit is contained in:
gauvainboiche
2020-03-03 22:45:25 +01:00
commit 058c2110e9
4420 changed files with 598645 additions and 0 deletions

View File

@@ -0,0 +1,161 @@
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license.
*/
namespace ProxyManagerTest\Inflector;
use PHPUnit_Framework_TestCase;
use ProxyManager\Inflector\ClassNameInflector;
use ProxyManager\Inflector\ClassNameInflectorInterface;
/**
* Tests for {@see \ProxyManager\Inflector\ClassNameInflector}
*
* @author Marco Pivetta <ocramius@gmail.com>
* @license MIT
*
* @group Coverage
*/
class ClassNameInflectorTest extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider getClassNames
*
* @covers \ProxyManager\Inflector\ClassNameInflector::__construct
* @covers \ProxyManager\Inflector\ClassNameInflector::getUserClassName
* @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName
* @covers \ProxyManager\Inflector\ClassNameInflector::isProxyClassName
*/
public function testInflector($realClassName, $proxyClassName)
{
$inflector = new ClassNameInflector('ProxyNS');
$this->assertFalse($inflector->isProxyClassName($realClassName));
$this->assertTrue($inflector->isProxyClassName($proxyClassName));
$this->assertStringMatchesFormat($realClassName, $inflector->getUserClassName($realClassName));
$this->assertStringMatchesFormat($proxyClassName, $inflector->getProxyClassName($proxyClassName));
$this->assertStringMatchesFormat($proxyClassName, $inflector->getProxyClassName($realClassName));
$this->assertStringMatchesFormat($realClassName, $inflector->getUserClassName($proxyClassName));
}
/**
* @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName
*/
public function testGeneratesSameClassNameWithSameParameters()
{
$inflector = new ClassNameInflector('ProxyNS');
$this->assertSame($inflector->getProxyClassName('Foo\\Bar'), $inflector->getProxyClassName('Foo\\Bar'));
$this->assertSame(
$inflector->getProxyClassName('Foo\\Bar', array('baz' => 'tab')),
$inflector->getProxyClassName('Foo\\Bar', array('baz' => 'tab'))
);
$this->assertSame(
$inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz')),
$inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz'))
);
}
/**
* @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName
*/
public function testGeneratesDifferentClassNameWithDifferentParameters()
{
$inflector = new ClassNameInflector('ProxyNS');
$this->assertNotSame(
$inflector->getProxyClassName('Foo\\Bar'),
$inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar'))
);
$this->assertNotSame(
$inflector->getProxyClassName('Foo\\Bar', array('baz' => 'tab')),
$inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz'))
);
$this->assertNotSame(
$inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar', 'tab' => 'baz')),
$inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar'))
);
$this->assertNotSame(
$inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar', 'tab' => 'baz')),
$inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz', 'foo' => 'bar'))
);
}
/**
* @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName
*/
public function testGeneratesCorrectClassNameWhenGivenLeadingBackslash()
{
$inflector = new ClassNameInflector('ProxyNS');
$this->assertSame(
$inflector->getProxyClassName('\\Foo\\Bar', array('tab' => 'baz')),
$inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz'))
);
}
/**
* @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName
*
* @dataProvider getClassAndParametersCombinations
*
* @param string $className
* @param array $parameters
*/
public function testClassNameIsValidClassIdentifier($className, array $parameters)
{
$inflector = new ClassNameInflector('ProxyNS');
$this->assertRegExp(
'/([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+)(\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+)*/',
$inflector->getProxyClassName($className, $parameters),
'Class name string is a valid class identifier'
);
}
/**
* Data provider.
*
* @return array[]
*/
public function getClassNames()
{
return array(
array('Foo', 'ProxyNS\\' . ClassNameInflectorInterface::PROXY_MARKER . '\\Foo\\%s'),
array('Foo\\Bar', 'ProxyNS\\' . ClassNameInflectorInterface::PROXY_MARKER . '\\Foo\\Bar\\%s'),
);
}
/**
* Data provider.
*
* @return array[]
*/
public function getClassAndParametersCombinations()
{
return array(
array('Foo', array()),
array('Foo\\Bar', array()),
array('Foo', array(null)),
array('Foo\\Bar', array(null)),
array('Foo', array('foo' => 'bar')),
array('Foo\\Bar', array('foo' => 'bar')),
array('Foo', array("\0" => "very \0 bad")),
array('Foo\\Bar', array("\0" => "very \0 bad")),
);
}
}

View File

@@ -0,0 +1,66 @@
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license.
*/
namespace ProxyManagerTest\Inflector\Util;
use PHPUnit_Framework_TestCase;
use ProxyManager\Inflector\Util\ParameterEncoder;
/**
* Tests for {@see \ProxyManager\Inflector\Util\ParameterEncoder}
*
* @author Marco Pivetta <ocramius@gmail.com>
* @license MIT
*
* @group Coverage
*/
class ParameterEncoderTest extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider getParameters
*
* @covers \ProxyManager\Inflector\Util\ParameterEncoder::encodeParameters
*/
public function testGeneratesValidClassName(array $parameters)
{
$encoder = new ParameterEncoder();
$this->assertRegExp(
'/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+/',
$encoder->encodeParameters($parameters),
'Encoded string is a valid class identifier'
);
}
/**
* @return array
*/
public function getParameters()
{
return array(
array(array()),
array(array('foo' => 'bar')),
array(array('bar' => 'baz')),
array(array(null)),
array(array(null, null)),
array(array('bar' => null)),
array(array('bar' => 12345)),
array(array('foo' => 'bar', 'bar' => 'baz')),
);
}
}

View File

@@ -0,0 +1,62 @@
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license.
*/
namespace ProxyManagerTest\Inflector\Util;
use PHPUnit_Framework_TestCase;
use ProxyManager\Inflector\Util\ParameterHasher;
/**
* Tests for {@see \ProxyManager\Inflector\Util\ParameterHasher}
*
* @author Marco Pivetta <ocramius@gmail.com>
* @license MIT
*
* @group Coverage
*/
class ParameterHasherTest extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider getParameters
*
* @covers \ProxyManager\Inflector\Util\ParameterHasher::hashParameters
*/
public function testGeneratesValidClassName(array $parameters, $expectedHash)
{
$encoder = new ParameterHasher();
$this->assertSame($expectedHash, $encoder->hashParameters($parameters));
}
/**
* @return array
*/
public function getParameters()
{
return array(
array(array(), '40cd750bba9870f18aada2478b24840a'),
array(array('foo' => 'bar'), '49a3696adf0fbfacc12383a2d7400d51'),
array(array('bar' => 'baz'), '6ed41c8a63c1571554ecaeb998198757'),
array(array(null), '38017a839aaeb8ff1a658fce9af6edd3'),
array(array(null, null), '12051f9a58288e5328ad748881cc4e00'),
array(array('bar' => null), '0dbb112e1c4e6e4126232de2daa2d660'),
array(array('bar' => 12345), 'eb6291ea4973741bf9b6571f49b4ffd2'),
array(array('foo' => 'bar', 'bar' => 'baz'), '4447ff857f244d24c31bd84d7a855eda'),
);
}
}