/home/lnzliplg/www/alt-php82-pecl-psr_1.2.0-1.el8.tar
tests/phpinfo.phpt000064400000001110151731451530010244 0ustar00--TEST--
psr phpinfo
--SKIPIF--
<?php include('skip_lt_php72.inc'); ?>
--FILE--
<?php
phpinfo(INFO_MODULES);
--EXPECTF--
%A
psr
%A
Version => %s
Released => %s
Authors => %s
PSR-3 Log Version => %d.%d.%d
PSR-6 Cache Version => %d.%d.%d
PSR-7 Http Message Version => %d.%d.%d
PSR-11 Container Version => %d.%d.%d
PSR-13 Link Version => %d.%d.%d
PSR-14 Event Dispatcher => %d.%d.%d
PSR-15 HTTP Handlers (Server Handler) => %d.%d.%d
PSR-15 HTTP Handlers (Middleware) => %d.%d.%d
PSR-16 Simple Cache Version => %d.%d.%d
PSR-17 HTTP Factories => %d.%d.%d
PSR-18 HTTP Client => %d.%d.%d
%A
tests/PsrLogLoggerInterface.phpt000064400000002730151731451540013002 0ustar00--TEST--
Psr\Log\LoggerInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleLogger.inc';
var_dump(interface_exists('\\Psr\\Log\\LoggerInterface', false));
var_dump(class_implements('SampleLogger', false));
$logger = new SampleLogger();
$logger->emergency('msg emergency', array(1));
$logger->alert('msg alert', array(2));
$logger->critical('msg critical', array(3));
$logger->error('msg error', array(4));
$logger->warning('msg warning', array(5));
$logger->notice('msg notice', array(6));
$logger->info('msg info', array(7));
$logger->debug('msg debug', array(8));
$logger->log('level', 'msg', array(9));
$logger->log('level', 'no context');
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\Log\LoggerInterface"]=>
  string(26) "PsrExt\Log\LoggerInterface"
}
string(9) "emergency"
string(13) "msg emergency"
array(1) {
  [0]=>
  int(1)
}
string(5) "alert"
string(9) "msg alert"
array(1) {
  [0]=>
  int(2)
}
string(8) "critical"
string(12) "msg critical"
array(1) {
  [0]=>
  int(3)
}
string(5) "error"
string(9) "msg error"
array(1) {
  [0]=>
  int(4)
}
string(7) "warning"
string(11) "msg warning"
array(1) {
  [0]=>
  int(5)
}
string(6) "notice"
string(10) "msg notice"
array(1) {
  [0]=>
  int(6)
}
string(4) "info"
string(8) "msg info"
array(1) {
  [0]=>
  int(7)
}
string(5) "debug"
string(9) "msg debug"
array(1) {
  [0]=>
  int(8)
}
string(5) "level"
string(3) "msg"
array(1) {
  [0]=>
  int(9)
}
string(5) "level"
string(10) "no context"
array(0) {
}

tests/PsrEventDispatcherListenerProviderInterface.phpt000064400000001402151731451540017425 0ustar00--TEST--
Psr\EventDispatcher\ListenerProviderInterface
--SKIPIF--
<?php include('skip_lt_php72.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleListenerProvider.inc';
var_dump(interface_exists('\\Psr\\EventDispatcher\\ListenerProviderInterface', false));
var_dump(class_implements('SampleListenerProvider', false));
$provider = new SampleListenerProvider();
var_dump($provider instanceof SampleListenerProvider);
$event = new stdClass();
$return = $provider->getListenersForEvent($event);
var_dump(is_iterable($return));
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\EventDispatcher\ListenerProviderInterface"]=>
  string(48) "PsrExt\EventDispatcher\ListenerProviderInterface"
}
bool(true)
string(44) "SampleListenerProvider::getListenersForEvent"
bool(true)
bool(true)
tests/PsrHttpClientRequestExceptionInterface.phpt000064400000002232151731451550016425 0ustar00--TEST--
Psr\Http\Client\RequestExceptionInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Http\Message\RequestInterface;
use Psr\Http\Client\RequestExceptionInterface;
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleRequest.inc';
var_dump(is_subclass_of(RequestExceptionInterface::class, Psr\Http\Client\ClientExceptionInterface::class));
var_dump(is_subclass_of(RequestExceptionInterface::class, Throwable::class));
class MyException extends Exception implements RequestExceptionInterface {
    public function getRequest(): RequestInterface {
        var_dump(__METHOD__);
        return new SampleRequest();
    }
}
$ex = new MyException('test');
var_dump($ex instanceof RequestExceptionInterface);
var_dump($ex instanceof Psr\Http\Client\ClientExceptionInterface);
var_dump($ex instanceof Exception);
var_dump($ex instanceof Throwable);
try {
    throw $ex;
} catch( RequestExceptionInterface $e ) {
    var_dump($e->getMessage());
    var_dump($e->getRequest());
}
--EXPECTF--
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
string(4) "test"
string(23) "MyException::getRequest"
object(SampleRequest)#%d (0) {
}
tests/PsrHttpClientNetworkExceptionInterface.phpt000064400000002232151731451560016427 0ustar00--TEST--
Psr\Http\Client\NetworkExceptionInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Http\Message\RequestInterface;
use Psr\Http\Client\NetworkExceptionInterface;
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleRequest.inc';
var_dump(is_subclass_of(NetworkExceptionInterface::class, Psr\Http\Client\ClientExceptionInterface::class));
var_dump(is_subclass_of(NetworkExceptionInterface::class, Throwable::class));
class MyException extends Exception implements NetworkExceptionInterface {
    public function getRequest(): RequestInterface {
        var_dump(__METHOD__);
        return new SampleRequest();
    }
}
$ex = new MyException('test');
var_dump($ex instanceof NetworkExceptionInterface);
var_dump($ex instanceof Psr\Http\Client\ClientExceptionInterface);
var_dump($ex instanceof Exception);
var_dump($ex instanceof Throwable);
try {
    throw $ex;
} catch( NetworkExceptionInterface $e ) {
    var_dump($e->getMessage());
    var_dump($e->getRequest());
}
--EXPECTF--
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
string(4) "test"
string(23) "MyException::getRequest"
object(SampleRequest)#%d (0) {
}
tests/PsrCacheCacheItemInterface.phpt000064400000001535151731451570013674 0ustar00--TEST--
Psr\Cache\CacheItemInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleCacheItem.inc';
var_dump(interface_exists('\\Psr\\Cache\\CacheItemInterface', false));
var_dump(class_implements('SampleCacheItem', false));
$cacheItem = new SampleCacheItem();
$cacheItem->getKey();
$cacheItem->get();
$cacheItem->isHit();
$cacheItem->set('test set');
$cacheItem->expiresAt(1435364259);
$cacheItem->expiresAfter(1435364259);
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\Cache\CacheItemInterface"]=>
  string(31) "PsrExt\Cache\CacheItemInterface"
}
string(23) "SampleCacheItem::getKey"
string(20) "SampleCacheItem::get"
string(22) "SampleCacheItem::isHit"
string(20) "SampleCacheItem::set"
string(8) "test set"
string(26) "SampleCacheItem::expiresAt"
int(1435364259)
string(29) "SampleCacheItem::expiresAfter"
int(1435364259)

tests/PsrHttpMessageServerRequestFactoryInterface.phpt000064400000002263151731451610017434 0ustar00--TEST--
Psr\Http\Message\ServerRequestFactoryInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleUri.inc';
include __DIR__ . '/SampleRequest.inc';
include __DIR__ . '/SampleServerRequest.inc';
include __DIR__ . '/SampleServerRequestFactory.inc';
var_dump(interface_exists('\\Psr\\Http\\Message\\ServerRequestFactoryInterface', false));
var_dump(class_implements('SampleServerRequestFactory', false));
$factory = new SampleServerRequestFactory();
$request = $factory->createServerRequest('GET', 'http://domain.com');
var_dump($request instanceof \Psr\Http\Message\ServerRequestInterface);
$request = $factory->createServerRequest('POST', new SampleUri(), ['param' => 'value']);
--EXPECTF--
bool(true)
array(1) {
  ["PsrExt\Http\Message\ServerRequestFactoryInterface"]=>
  string(49) "PsrExt\Http\Message\ServerRequestFactoryInterface"
}
string(47) "SampleServerRequestFactory::createServerRequest"
string(3) "GET"
string(17) "http://domain.com"
array(0) {
}
bool(true)
string(47) "SampleServerRequestFactory::createServerRequest"
string(4) "POST"
object(SampleUri)#%d (0) {
}
array(1) {
  ["param"]=>
  string(5) "value"
}
tests/PsrSimpleCacheCacheInterface.phpt000064400000001157151731451620014223 0ustar00--TEST--
Psr\SimpleCache\CacheInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\SimpleCache\CacheInterface;
class MyImpl implements CacheInterface {
    public function get($key, $default = null) {}
    public function set($key, $value, $ttl = null) {}
    public function delete($key) {}
    public function clear() {}
    public function getMultiple($keys, $default = null) {}
    public function setMultiple($values, $ttl = null) {}
    public function deleteMultiple($keys) {}
    public function has($key) {}
}
$ex = new MyImpl();
var_dump($ex instanceof CacheInterface);
--EXPECT--
bool(true)
tests/PsrContainerContainerInterface.phpt000064400000000534151731451630014706 0ustar00--TEST--
Psr\Container\ContainerInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Container\ContainerInterface;
class MyImpl implements ContainerInterface {
    public function get(string $id) {}
    public function has(string $id) {}
}
$ex = new MyImpl();
var_dump($ex instanceof ContainerInterface);
--EXPECT--
bool(true)
tests/PsrHttpMessageUploadedFileInterface.phpt000064400000001672151731451640015630 0ustar00--TEST--
Psr\Http\Message\UploadedFileInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleUploadedFile.inc';
var_dump(interface_exists('\\Psr\\Http\\Message\\UploadedFileInterface', false));
var_dump(class_implements('SampleUploadedFile', false));
$uploadedFile = new SampleUploadedFile();
$uploadedFile->getStream();
$uploadedFile->moveTo('/dev/null');
$uploadedFile->getSize();
$uploadedFile->getError();
$uploadedFile->getClientFilename();
$uploadedFile->getClientMediaType();
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\Http\Message\UploadedFileInterface"]=>
  string(41) "PsrExt\Http\Message\UploadedFileInterface"
}
string(29) "SampleUploadedFile::getStream"
string(26) "SampleUploadedFile::moveTo"
string(9) "/dev/null"
string(27) "SampleUploadedFile::getSize"
string(28) "SampleUploadedFile::getError"
string(37) "SampleUploadedFile::getClientFilename"
string(38) "SampleUploadedFile::getClientMediaType"

tests/SampleUriFactory.inc000064400000000436151731451650011645 0ustar00<?php

use Psr\Http\Message\UriFactoryInterface;
use Psr\Http\Message\UriInterface;

class SampleUriFactory implements UriFactoryInterface
{
    public function createUri(string $uri = ''): UriInterface
    {
        var_dump(__METHOD__, $uri);
        return new SampleUri();
    }
}

tests/SampleMiddleware.inc000064400000000660151731451660011633 0ustar00<?php

use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;

class SampleMiddleware implements MiddlewareInterface {
    public function process(ServerRequestInterface $reqeust, RequestHandlerInterface $handler): ResponseInterface
    {
        var_dump(__METHOD__);

        return new SampleResponse();
    }
}

tests/PsrHttpClientClientExceptionInterface.phpt000064400000001162151731451670016217 0ustar00--TEST--
Psr\Http\Client\ClientExceptionInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Http\Client\ClientExceptionInterface;
var_dump(is_subclass_of(ClientExceptionInterface::class, Throwable::class));
class MyException extends Exception implements ClientExceptionInterface {}
$ex = new MyException('test');
var_dump($ex instanceof ClientExceptionInterface);
var_dump($ex instanceof Exception);
var_dump($ex instanceof Throwable);
try {
    throw $ex;
} catch( ClientExceptionInterface $e ) {
    var_dump($e->getMessage());
}
--EXPECT--
bool(true)
bool(true)
bool(true)
bool(true)
string(4) "test"
tests/PsrHttpMessageServerRequestInterface.phpt000064400000005015151731451700016102 0ustar00--TEST--
Psr\Http\Message\ServerRequestInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleRequest.inc';
include __DIR__ . '/SampleServerRequest.inc';
var_dump(interface_exists('\\Psr\\Http\\Message\\ServerRequestInterface', false));
var_dump(is_subclass_of('\\Psr\\Http\\Message\\ServerRequestInterface', '\\Psr\\Http\\Message\\MessageInterface'));
var_dump(is_subclass_of('\\Psr\\Http\\Message\\ServerRequestInterface', '\\Psr\\Http\\Message\\RequestInterface'));
$ifaces = class_implements('SampleServerRequest', false);
ksort($ifaces);
var_dump($ifaces);
$request = new SampleServerRequest();
var_dump($request instanceof \Psr\Http\Message\MessageInterface);
var_dump($request instanceof \Psr\Http\Message\RequestInterface);
$request->getServerParams();
$request->getCookieParams();
$request->withCookieParams(array('a' => 'b'));
$request->getQueryParams();
$request->withQueryParams(array('c' => 'd'));
$request->getUploadedFiles();
$request->withUploadedFiles(array());
$request->getParsedBody();
$request->withParsedBody('body');
$request->getAttributes();
$request->getAttribute('attr');
$request->getAttribute('attr', 'bar');
$request->withAttribute('foo', 'baz');
$request->withoutAttribute('bar');
--EXPECT--
bool(true)
bool(true)
bool(true)
array(3) {
  ["PsrExt\Http\Message\MessageInterface"]=>
  string(36) "PsrExt\Http\Message\MessageInterface"
  ["PsrExt\Http\Message\RequestInterface"]=>
  string(36) "PsrExt\Http\Message\RequestInterface"
  ["PsrExt\Http\Message\ServerRequestInterface"]=>
  string(42) "PsrExt\Http\Message\ServerRequestInterface"
}
bool(true)
bool(true)
string(36) "SampleServerRequest::getServerParams"
string(36) "SampleServerRequest::getCookieParams"
string(37) "SampleServerRequest::withCookieParams"
array(1) {
  ["a"]=>
  string(1) "b"
}
string(35) "SampleServerRequest::getQueryParams"
string(36) "SampleServerRequest::withQueryParams"
array(1) {
  ["c"]=>
  string(1) "d"
}
string(37) "SampleServerRequest::getUploadedFiles"
string(38) "SampleServerRequest::withUploadedFiles"
array(0) {
}
string(34) "SampleServerRequest::getParsedBody"
string(35) "SampleServerRequest::withParsedBody"
string(4) "body"
string(34) "SampleServerRequest::getAttributes"
string(33) "SampleServerRequest::getAttribute"
string(4) "attr"
NULL
string(33) "SampleServerRequest::getAttribute"
string(4) "attr"
string(3) "bar"
string(34) "SampleServerRequest::withAttribute"
string(3) "foo"
string(3) "baz"
string(37) "SampleServerRequest::withoutAttribute"
string(3) "bar"
tests/phpinfo_lt_php72.phpt000064400000001155151731451710011774 0ustar00--TEST--
psr phpinfo
--SKIPIF--
<?php
include('skip.inc');
if (PHP_VERSION_ID >= 70200) {
    print "skip Due to version incompatibility";
}
?>
--FILE--
<?php
phpinfo(INFO_MODULES);
--EXPECTF--
%A
psr
%A
Version => %s
Released => %s
Authors => %s
PSR-3 Log Version => %d.%d.%d
PSR-6 Cache Version => %d.%d.%d
PSR-7 Http Message Version => %d.%d.%d
PSR-11 Container Version => %d.%d.%d
PSR-13 Link Version => %d.%d.%d
PSR-15 HTTP Handlers (Server Handler) => %d.%d.%d
PSR-15 HTTP Handlers (Middleware) => %d.%d.%d
PSR-16 Simple Cache Version => %d.%d.%d
PSR-17 HTTP Factories => %d.%d.%d
PSR-18 HTTP Client => %d.%d.%d
%A
tests/PsrEventDispatcherStoppableEventInterface.phpt000064400000001271151731451720017064 0ustar00--TEST--
Psr\EventDispatcher\StoppableEventInterface
--SKIPIF--
<?php include('skip_lt_php72.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleStoppableEvent.inc';
var_dump(interface_exists('\\Psr\\EventDispatcher\\StoppableEventInterface', false));
var_dump(class_implements('SampleStoppableEvent', false));
$event = new SampleStoppableEvent();
var_dump($event instanceof SampleStoppableEvent);
$return = $event->isPropagationStopped();
var_dump(is_bool($return));
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\EventDispatcher\StoppableEventInterface"]=>
  string(46) "PsrExt\EventDispatcher\StoppableEventInterface"
}
bool(true)
string(42) "SampleStoppableEvent::isPropagationStopped"
bool(true)
tests/SampleLogger.inc000064400000002443151731451730010774 0ustar00<?php

use Psr\Log\LogLevel;
use Psr\Log\LoggerInterface;

class SampleLogger implements LoggerInterface {
    public function emergency($message, array $context = array()) {
        return $this->log(LogLevel::EMERGENCY, $message, $context);
    }
    public function alert($message, array $context = array()) {
        return $this->log(LogLevel::ALERT, $message, $context);
    }
    public function critical($message, array $context = array()) {
        return $this->log(LogLevel::CRITICAL, $message, $context);
    }
    public function error($message, array $context = array()) {
        return $this->log(LogLevel::ERROR, $message, $context);
    }
    public function warning($message, array $context = array()) {
        return $this->log(LogLevel::WARNING, $message, $context);
    }
    public function notice($message, array $context = array()) {
        return $this->log(LogLevel::NOTICE, $message, $context);
    }
    public function info($message, array $context = array()) {
        return $this->log(LogLevel::INFO, $message, $context);
    }
    public function debug($message, array $context = array()) {
        return $this->log(LogLevel::DEBUG, $message, $context);
    }
    public function log($level, $message, array $context = array()) {
	var_dump($level, $message, $context);
    }
}

tests/PsrLinkEvolvableLinkProviderInterface.phpt000064400000001151151731451740016205 0ustar00--TEST--
Psr\Link\EvolvableLinkProviderInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Link\LinkInterface;
use Psr\Link\LinkProviderInterface;
use Psr\Link\EvolvableLinkProviderInterface;
class MyImpl implements EvolvableLinkProviderInterface {
    public function getLinks() {}
    public function getLinksByRel($rel) {}
    public function withLink(LinkInterface $link) {}
    public function withoutLink(LinkInterface $link) {}
}
$ex = new MyImpl();
var_dump($ex instanceof LinkProviderInterface);
var_dump($ex instanceof EvolvableLinkProviderInterface);
--EXPECT--
bool(true)
bool(true)
tests/PsrHttpMessageStreamFactoryInterface.phpt000064400000002563151731451750016060 0ustar00--TEST--
Psr\Http\Message\StreamFactoryInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleStream.inc';
include __DIR__ . '/SampleStreamFactory.inc';
var_dump(interface_exists('\\Psr\\Http\\Message\\StreamFactoryInterface', false));
var_dump(class_implements('SampleStreamFactory', false));
$factory = new SampleStreamFactory();
$stream = $factory->createStream();
var_dump($stream instanceof \Psr\Http\Message\StreamInterface);
$factory->createStream('content');
$stream = $factory->createStreamFromFile('/tmp/file1');
var_dump($stream instanceof \Psr\Http\Message\StreamInterface);
$factory->createStreamFromFile('/tmp/file2', 'wb');
$stream = $factory->createStreamFromResource(fopen('php://memory', 'r'));
var_dump($stream instanceof \Psr\Http\Message\StreamInterface);
--EXPECTF--
bool(true)
array(1) {
  ["PsrExt\Http\Message\StreamFactoryInterface"]=>
  string(42) "PsrExt\Http\Message\StreamFactoryInterface"
}
string(33) "SampleStreamFactory::createStream"
string(0) ""
bool(true)
string(33) "SampleStreamFactory::createStream"
string(7) "content"
string(41) "SampleStreamFactory::createStreamFromFile"
string(10) "/tmp/file1"
string(1) "r"
bool(true)
string(41) "SampleStreamFactory::createStreamFromFile"
string(10) "/tmp/file2"
string(2) "wb"
string(45) "SampleStreamFactory::createStreamFromResource"
resource(%d) of type (stream)
bool(true)
tests/SampleLoggerAware.inc000064400000000571151731451760011757 0ustar00<?php

use Psr\Log\LoggerInterface;
use Psr\Log\LoggerAwareInterface;

class SampleLoggerAware implements LoggerAwareInterface {
    private $logger;
    public function setLogger(LoggerInterface $logger) {
        $this->logger = $logger;
        var_dump('got logger');
    }
    public function doSomethingThatLogs() {
        $this->logger->emergency('test log');
    }
}

tests/PsrContainerContainerExceptionInterface.phpt000064400000000766151731451760016600 0ustar00--TEST--
Psr\Container\ContainerExceptionInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Container\ContainerExceptionInterface;
class MyException extends Exception implements ContainerExceptionInterface {}
$ex = new MyException('test');
var_dump($ex instanceof ContainerExceptionInterface);
var_dump($ex instanceof Exception);
try {
    throw $ex;
} catch( ContainerExceptionInterface $e ) {
    var_dump($e->getMessage());
}
--EXPECT--
bool(true)
bool(true)
string(4) "test"
tests/SampleStoppableEvent.inc000064400000000354151731451770012513 0ustar00<?php

use Psr\EventDispatcher\StoppableEventInterface;

class SampleStoppableEvent implements StoppableEventInterface
{
    public function isPropagationStopped(): bool
    {
        var_dump(__METHOD__);

        return true;
    }
}
tests/PsrLogAbstractLogger.phpt000064400000002374151731451770012656 0ustar00--TEST--
Psr\Log\AbstractLogger
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleLogger2.inc';
$logger = new SampleLogger2;
$logger->emergency('msg emergency', array(1));
$logger->alert('msg alert', array(2));
$logger->critical('msg critical', array(3));
$logger->error('msg error', array(4));
$logger->warning('msg warning', array(5));
$logger->notice('msg notice', array(6));
$logger->info('msg info', array(7));
$logger->debug('msg debug', array(8));
$logger->log('level', 'msg', array(9));
$logger->log('level', 'no context');
--EXPECT--
string(9) "emergency"
string(13) "msg emergency"
array(1) {
  [0]=>
  int(1)
}
string(5) "alert"
string(9) "msg alert"
array(1) {
  [0]=>
  int(2)
}
string(8) "critical"
string(12) "msg critical"
array(1) {
  [0]=>
  int(3)
}
string(5) "error"
string(9) "msg error"
array(1) {
  [0]=>
  int(4)
}
string(7) "warning"
string(11) "msg warning"
array(1) {
  [0]=>
  int(5)
}
string(6) "notice"
string(10) "msg notice"
array(1) {
  [0]=>
  int(6)
}
string(4) "info"
string(8) "msg info"
array(1) {
  [0]=>
  int(7)
}
string(5) "debug"
string(9) "msg debug"
array(1) {
  [0]=>
  int(8)
}
string(5) "level"
string(3) "msg"
array(1) {
  [0]=>
  int(9)
}
string(5) "level"
string(10) "no context"
array(0) {
}
tests/PsrLogLoggerTrait.phpt000064400000003102151731451770012164 0ustar00--TEST--
Psr\Log\LoggerTrait
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Log\LoggerTrait;
include __DIR__ . '/SampleLogger.inc';
class SampleLoggerTraitUser {
    use LoggerTrait;
    public function log($level, $message, array $context = array()) {
        var_dump($level, $message, $context);
    }
}
$logger = new SampleLoggerTraitUser();
$logger->emergency('msg emergency', array(1));
$logger->alert('msg alert', array(2));
$logger->critical('msg critical', array(3));
$logger->error('msg error', array(4));
$logger->warning('msg warning', array(5));
$logger->notice('msg notice', array(6));
$logger->info('msg info', array(7));
$logger->debug('msg debug', array(8));
$logger->log('level', 'msg', array(9));
$logger->log('level', 'no context');
var_dump(class_uses($logger, false));
--EXPECT--
string(9) "emergency"
string(13) "msg emergency"
array(1) {
  [0]=>
  int(1)
}
string(5) "alert"
string(9) "msg alert"
array(1) {
  [0]=>
  int(2)
}
string(8) "critical"
string(12) "msg critical"
array(1) {
  [0]=>
  int(3)
}
string(5) "error"
string(9) "msg error"
array(1) {
  [0]=>
  int(4)
}
string(7) "warning"
string(11) "msg warning"
array(1) {
  [0]=>
  int(5)
}
string(6) "notice"
string(10) "msg notice"
array(1) {
  [0]=>
  int(6)
}
string(4) "info"
string(8) "msg info"
array(1) {
  [0]=>
  int(7)
}
string(5) "debug"
string(9) "msg debug"
array(1) {
  [0]=>
  int(8)
}
string(5) "level"
string(3) "msg"
array(1) {
  [0]=>
  int(9)
}
string(5) "level"
string(10) "no context"
array(0) {
}
array(1) {
  ["PsrExt\Log\LoggerTrait"]=>
  string(22) "PsrExt\Log\LoggerTrait"
}
tests/SampleCacheItem.inc000064400000001105151731452000011360 0ustar00<?php

use Psr\Cache\CacheItemInterface;

class SampleCacheItem implements CacheItemInterface
{
    public function getKey()
    {
        var_dump(__METHOD__);
    }

    public function get()
    {
        var_dump(__METHOD__);
    }

    public function isHit()
    {
        var_dump(__METHOD__);
    }

    public function set($value)
    {
        var_dump(__METHOD__, $value);
    }

    public function expiresAt($expiration)
    {
        var_dump(__METHOD__, $expiration);
    }

    public function expiresAfter($time)
    {
        var_dump(__METHOD__, $time);
    }
}
tests/SampleServerRequestFactory.inc000064400000000632151731452000013711 0ustar00<?php

use Psr\Http\Message\ServerRequestFactoryInterface;
use Psr\Http\Message\ServerRequestInterface;

class SampleServerRequestFactory implements ServerRequestFactoryInterface
{
    public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface
    {
        var_dump(__METHOD__, $method, $uri, $serverParams);
        return new SampleServerRequest();
    }
}

tests/PsrHttpMessageResponseInterface.phpt000064400000002013151731452000015046 0ustar00--TEST--
Psr\Http\Message\ResponseInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleResponse.inc';
var_dump(interface_exists('\\Psr\\Http\\Message\\ResponseInterface', false));
var_dump(is_subclass_of('\\Psr\\Http\\Message\\ResponseInterface', '\\Psr\\Http\\Message\\MessageInterface'));
var_dump(class_implements('SampleResponse', false));
$request = new SampleResponse();
var_dump($request instanceof \Psr\Http\Message\MessageInterface);
$request->getStatusCode();
$request->withStatus(400, 'BAD REQUEST');
$request->getReasonPhrase();
--EXPECT--
bool(true)
bool(true)
array(2) {
  ["PsrExt\Http\Message\MessageInterface"]=>
  string(36) "PsrExt\Http\Message\MessageInterface"
  ["PsrExt\Http\Message\ResponseInterface"]=>
  string(37) "PsrExt\Http\Message\ResponseInterface"
}
bool(true)
string(29) "SampleResponse::getStatusCode"
string(26) "SampleResponse::withStatus"
int(400)
string(11) "BAD REQUEST"
string(31) "SampleResponse::getReasonPhrase"
tests/PsrHttpServerMiddlewareInterface.phpt000064400000002071151731452010015214 0ustar00--TEST--
Psr\Http\Server\MiddlewareInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleRequest.inc';
include __DIR__ . '/SampleServerRequest.inc';
include __DIR__ . '/SampleResponse.inc';
include __DIR__ . '/SampleRequestHandler.inc';
include __DIR__ . '/SampleMiddleware.inc';
var_dump(interface_exists('\\Psr\\Http\\Server\\MiddlewareInterface', false));
var_dump(class_implements('SampleMiddleware', false));
$request = new SampleServerRequest();
var_dump($request instanceof \Psr\Http\Message\ServerRequestInterface);
$handler = new SampleRequestHandler();
var_dump($handler instanceof \Psr\Http\Server\RequestHandlerInterface);
$middleware = new SampleMiddleware();
$response = $middleware->process($request, $handler);
var_dump($response instanceof \Psr\Http\Message\ResponseInterface);
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\Http\Server\MiddlewareInterface"]=>
  string(38) "PsrExt\Http\Server\MiddlewareInterface"
}
bool(true)
bool(true)
string(25) "SampleMiddleware::process"
bool(true)
tests/skip_lt_php72.inc000064400000000153151731452010011064 0ustar00<?php
include 'skip.inc';
if (PHP_VERSION_ID < 70200) {
    print "skip Due to version incompatibility";
}
tests/PsrCacheInvalidArgumentException.phpt000064400000001117151731452020015164 0ustar00--TEST--
Psr\Cache\InvalidArgumentException
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Cache\CacheException;
use Psr\Cache\InvalidArgumentException;
class MyInvalidArgumentException extends Exception implements InvalidArgumentException {}
$ex = new MyInvalidArgumentException('test');
var_dump($ex instanceof InvalidArgumentException);
var_dump($ex instanceof Exception);
var_dump($ex instanceof CacheException);
try {
    throw $ex;
} catch( InvalidArgumentException $e ) {
    var_dump($e->getMessage());
}
--EXPECT--
bool(true)
bool(true)
bool(true)
string(4) "test"
tests/PsrCacheCacheException.phpt000064400000000667151731452030013110 0ustar00--TEST--
Psr\Cache\CacheException
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Cache\CacheException;
class MyCacheException extends Exception implements CacheException {}
$ex = new MyCacheException('test');
var_dump($ex instanceof CacheException);
var_dump($ex instanceof Exception);
try {
    throw $ex;
} catch( CacheException $e ) {
    var_dump($e->getMessage());
}
--EXPECT--
bool(true)
bool(true)
string(4) "test"
tests/PsrLinkEvolvableLinkInterface.phpt000064400000001322151731452040014464 0ustar00--TEST--
Psr\Link\EvolvableLinkInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Link\LinkInterface;
use Psr\Link\EvolvableLinkInterface;
class MyImpl implements EvolvableLinkInterface {
    public function getHref() {}
    public function isTemplated() {}
    public function getRels() {}
    public function getAttributes() {}
    public function withHref($href) {}
    public function withRel($rel) {}
    public function withoutRel($rel) {}
    public function withAttribute($attribute, $value) {}
    public function withoutAttribute($attribute) {}
}
$ex = new MyImpl();
var_dump($ex instanceof LinkInterface);
var_dump($ex instanceof EvolvableLinkInterface);
--EXPECT--
bool(true)
bool(true)
tests/PsrHttpMessageUriInterface.phpt000064400000002517151731452050014025 0ustar00--TEST--
Psr\Http\Message\UriInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Http\Message\UriInterface;
include __DIR__ . '/SampleUri.inc';
var_dump(interface_exists(UriInterface::class, false));
var_dump(is_subclass_of(SampleUri::class, UriInterface::class));
$uri = new SampleUri();
$uri->getScheme();
$uri->getAuthority();
$uri->getUserInfo();
$uri->getHost();
$uri->getPort();
$uri->getPath();
$uri->getQuery();
$uri->getFragment();
$uri->withScheme('http');
$uri->withUserInfo('foo', 'bar');
$uri->withHost('php.net');
$uri->withPort(8080);
$uri->withPath('/');
$uri->withQuery('');
$uri->withFragment('');
$uri->__toString();
--EXPECT--
bool(true)
bool(true)
string(20) "SampleUri::getScheme"
string(23) "SampleUri::getAuthority"
string(22) "SampleUri::getUserInfo"
string(18) "SampleUri::getHost"
string(18) "SampleUri::getPort"
string(18) "SampleUri::getPath"
string(19) "SampleUri::getQuery"
string(22) "SampleUri::getFragment"
string(21) "SampleUri::withScheme"
string(4) "http"
string(23) "SampleUri::withUserInfo"
string(3) "foo"
string(3) "bar"
string(19) "SampleUri::withHost"
string(7) "php.net"
string(19) "SampleUri::withPort"
int(8080)
string(19) "SampleUri::withPath"
string(1) "/"
string(20) "SampleUri::withQuery"
string(0) ""
string(23) "SampleUri::withFragment"
string(0) ""
string(21) "SampleUri::__toString"
tests/PsrLogLoggerAwareTrait.phpt000064400000001114151731452060013136 0ustar00--TEST--
Psr\Log\LoggerAwareTrait
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Log\LoggerAwareTrait;
include __DIR__ . '/SampleLogger.inc';
class SampleLoggerAwareTraitUser {
    use LoggerAwareTrait;
    public function getLogger() {
        return $this->logger;
    }
}

$aware = new SampleLoggerAwareTraitUser();
$logger = new SampleLogger();
$aware->setLogger($logger);
var_dump($logger === $aware->getLogger());
var_dump(class_uses($aware, false));
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\Log\LoggerAwareTrait"]=>
  string(27) "PsrExt\Log\LoggerAwareTrait"
}
tests/PsrSimpleCacheCacheException.phpt000064400000000671151731452070014261 0ustar00--TEST--
Psr\SimpleCache\CacheException
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\SimpleCache\CacheException;
class MyException extends Exception implements CacheException {}
$ex = new MyException('test');
var_dump($ex instanceof CacheException);
var_dump($ex instanceof Exception);
try {
    throw $ex;
} catch( CacheException $e ) {
    var_dump($e->getMessage());
}
--EXPECT--
bool(true)
bool(true)
string(4) "test"
tests/gh78_php7.phpt000064400000001211151731452100010310 0ustar00--TEST--
Psr\Log\LoggerInterface - Invalid context default value (PHP 7)
--SKIPIF--
<?php
include 'skip.inc';
if (PHP_VERSION_ID >= 80000) {
    print "skip Due to version incompatibility";
}
?>
--FILE--
<?php
$reflectionMethod = new \ReflectionMethod(\Psr\Log\LoggerInterface::class, "emergency");
$reflectionParameter = $reflectionMethod->getParameters()[1];
var_dump($reflectionParameter->isOptional());
var_dump($reflectionParameter->isDefaultValueAvailable());
var_dump($reflectionParameter->getDefaultValue());
--EXPECT--
bool(true)
bool(true)
array(0) {
}
--XFAIL--
PHP 7 internal functions cannot have default values reported via reflection
tests/PsrHttpMessageUriFactoryInterface.phpt000064400000001364151731452110015351 0ustar00--TEST--
Psr\Http\Message\UriFactoryInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleUri.inc';
include __DIR__ . '/SampleUriFactory.inc';
var_dump(interface_exists('\\Psr\\Http\\Message\\UriFactoryInterface', false));
var_dump(class_implements('SampleUriFactory', false));
$factory = new SampleUriFactory();
$uri = $factory->createUri();
var_dump($uri instanceof \Psr\Http\Message\UriInterface);
$factory->createUri('http://domain.com');
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\Http\Message\UriFactoryInterface"]=>
  string(39) "PsrExt\Http\Message\UriFactoryInterface"
}
string(27) "SampleUriFactory::createUri"
string(0) ""
bool(true)
string(27) "SampleUriFactory::createUri"
string(17) "http://domain.com"
tests/SampleUri.inc000064400000002637151731452110010312 0ustar00<?php

use Psr\Http\Message\UriInterface;

class SampleUri implements UriInterface
{
    public function getScheme()
    {
        var_dump(__METHOD__);
    }

    public function getAuthority()
    {
        var_dump(__METHOD__);
    }

    public function getUserInfo()
    {
        var_dump(__METHOD__);
    }

    public function getHost()
    {
        var_dump(__METHOD__);
    }

    public function getPort()
    {
        var_dump(__METHOD__);
    }

    public function getPath()
    {
        var_dump(__METHOD__);
    }

    public function getQuery()
    {
        var_dump(__METHOD__);
    }

    public function getFragment()
    {
        var_dump(__METHOD__);
    }

    public function withScheme($scheme)
    {
        var_dump(__METHOD__, $scheme);
    }

    public function withUserInfo($user, $password = null)
    {
        var_dump(__METHOD__, $user, $password);
    }

    public function withHost($host)
    {
        var_dump(__METHOD__, $host);
    }

    public function withPort($port)
    {
        var_dump(__METHOD__, $port);
    }

    public function withPath($path)
    {
        var_dump(__METHOD__, $path);
    }

    public function withQuery($query)
    {
        var_dump(__METHOD__, $query);
    }

    public function withFragment($fragment)
    {
        var_dump(__METHOD__, $fragment);
    }

    public function __toString()
    {
        var_dump(__METHOD__);
        return '';
    }

}

tests/PsrEventDispatcherEventDispatcherInterface.phpt000064400000001345151731452120017216 0ustar00--TEST--
Psr\EventDispatcher\EventDispatcherInterface
--SKIPIF--
<?php include('skip_lt_php72.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleEventDispatcher.inc';
var_dump(interface_exists('\\Psr\\EventDispatcher\\EventDispatcherInterface', false));
var_dump(class_implements('SampleEventDispatcher', false));
$dispatcher = new SampleEventDispatcher();
var_dump($dispatcher instanceof SampleEventDispatcher);
$event = new stdClass();
$return = $dispatcher->dispatch($event);
var_dump(is_object($return));
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\EventDispatcher\EventDispatcherInterface"]=>
  string(47) "PsrExt\EventDispatcher\EventDispatcherInterface"
}
bool(true)
string(31) "SampleEventDispatcher::dispatch"
bool(true)
bool(true)
tests/SampleStream.inc000064400000002441151731452130011001 0ustar00<?php

use Psr\Http\Message\StreamInterface;

class SampleStream implements StreamInterface
{
    public function __toString()
    {
        var_dump(__METHOD__);
        return __METHOD__;
    }

    public function close()
    {
        var_dump(__METHOD__);
    }

    public function detach()
    {
        var_dump(__METHOD__);
    }

    public function getSize()
    {
        var_dump(__METHOD__);
    }

    public function tell()
    {
        var_dump(__METHOD__);
    }

    public function eof()
    {
        var_dump(__METHOD__);
    }

    public function isSeekable()
    {
        var_dump(__METHOD__);
    }

    public function seek($offset, $whence = SEEK_SET)
    {
        var_dump(__METHOD__, $offset, $whence);
    }

    public function rewind()
    {
        var_dump(__METHOD__);
    }

    public function isWritable()
    {
        var_dump(__METHOD__);
    }

    public function write($string)
    {
        var_dump(__METHOD__, $string);
    }

    public function isReadable()
    {
        var_dump(__METHOD__);
    }

    public function read($length)
    {
        var_dump(__METHOD__, $length);
    }

    public function getContents()
    {
        var_dump(__METHOD__);
    }

    public function getMetadata($key = null)
    {
        var_dump(__METHOD__, $key);
    }
}

tests/SampleLogger2.inc000064400000000335151731452130011047 0ustar00<?php

use Psr\Log\LogLevel;
use Psr\Log\AbstractLogger;

class SampleLogger2 extends AbstractLogger {
    public function log($level, $message, array $context = array()) {
	var_dump($level, $message, $context);
    }
}

tests/SampleCacheItemPool.inc000064400000001662151731452140012227 0ustar00<?php

use Psr\Cache\CacheItemInterface;
use Psr\Cache\CacheItemPoolInterface;

class SampleCacheItemPool implements CacheItemPoolInterface
{
    public function getItem($key)
    {
        var_dump(__METHOD__, $key);
    }

    public function getItems(array $keys = array())
    {
        var_dump(__METHOD__, $keys);
    }

    public function hasItem($key)
    {
        var_dump(__METHOD__, $key);
    }

    public function clear()
    {
        var_dump(__METHOD__);
    }

    public function deleteItem($key)
    {
        var_dump(__METHOD__, $key);
    }

    public function deleteItems(array $keys)
    {
        var_dump(__METHOD__, $keys);
    }

    public function save(CacheItemInterface $item)
    {
        var_dump(__METHOD__, $item);
    }

    public function saveDeferred(CacheItemInterface $item)
    {
        var_dump(__METHOD__, $item);
    }

    public function commit()
    {
        var_dump(__METHOD__);
    }
}

tests/PsrLogLoggerAwareInterface.phpt000064400000001165151731452150013761 0ustar00--TEST--
Psr\Log\LoggerAwareInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleLogger.inc';
include __DIR__ . '/SampleLoggerAware.inc';
var_dump(interface_exists('\\Psr\\Log\\LoggerAwareInterface', false));
var_dump(class_implements('SampleLoggerAware', false));
$aware = new SampleLoggerAware();
$logger = new SampleLogger();
$aware->setLogger($logger);
$aware->doSomethingThatLogs();
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\Log\LoggerAwareInterface"]=>
  string(31) "PsrExt\Log\LoggerAwareInterface"
}
string(10) "got logger"
string(9) "emergency"
string(8) "test log"
array(0) {
}
tests/PsrLogInvalidArgumentException.phpt000064400000000637151731452150014714 0ustar00--TEST--
Psr\Log\InvalidArgumentException
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Log\InvalidArgumentException;
$ex = new InvalidArgumentException('test');
var_dump($ex instanceof \InvalidArgumentException);
var_dump($ex instanceof \Exception);
try {
    throw $ex;
} catch( InvalidArgumentException $e ) {
    var_dump($e->getMessage());
}
--EXPECT--
bool(true)
bool(true)
string(4) "test"
tests/SampleMessage.inc000064400000002170151731452160011134 0ustar00<?php

use Psr\Http\Message\MessageInterface;
use Psr\Http\Message\StreamInterface;

class SampleMessage implements MessageInterface
{
    public function getProtocolVersion()
    {
        var_dump(__METHOD__);
    }

    public function withProtocolVersion($version)
    {
        var_dump(__METHOD__, $version);
    }

    public function getHeaders()
    {
        var_dump(__METHOD__);
    }

    public function hasHeader($name)
    {
        var_dump(__METHOD__, $name);
    }

    public function getHeader($name)
    {
        var_dump(__METHOD__, $name);
    }

    public function getHeaderLine($name)
    {
        var_dump(__METHOD__, $name);
    }

    public function withHeader($name, $value)
    {
        var_dump(__METHOD__, $name, $value);
    }

    public function withAddedHeader($name, $value)
    {
        var_dump(__METHOD__, $name, $value);
    }

    public function withoutHeader($name)
    {
        var_dump(__METHOD__, $name);
    }

    public function getBody()
    {
        var_dump(__METHOD__);
    }

    public function withBody(StreamInterface $body)
    {
        var_dump(__METHOD__, $body);
    }
}

tests/SampleServerRequest.inc000064400000002515151731452170012373 0ustar00<?php

use Psr\Http\Message\ServerRequestInterface;

class SampleServerRequest extends SampleRequest implements ServerRequestInterface
{
    public function getServerParams()
    {
        var_dump(__METHOD__);
    }

    public function getCookieParams()
    {
        var_dump(__METHOD__);
    }

    public function withCookieParams(array $cookies)
    {
        var_dump(__METHOD__, $cookies);
    }

    public function getQueryParams()
    {
        var_dump(__METHOD__);
    }

    public function withQueryParams(array $query)
    {
        var_dump(__METHOD__, $query);
    }

    public function getUploadedFiles()
    {
        var_dump(__METHOD__);
    }

    public function withUploadedFiles(array $uploadedFiles)
    {
        var_dump(__METHOD__, $uploadedFiles);
    }

    public function getParsedBody()
    {
        var_dump(__METHOD__);
    }

    public function withParsedBody($data)
    {
        var_dump(__METHOD__, $data);
    }

    public function getAttributes()
    {
        var_dump(__METHOD__);
    }

    public function getAttribute($name, $default = null)
    {
        var_dump(__METHOD__, $name, $default);
    }

    public function withAttribute($name, $value)
    {
        var_dump(__METHOD__, $name, $value);
    }

    public function withoutAttribute($name)
    {
        var_dump(__METHOD__, $name);
    }
}

tests/SampleEventDispatcher.inc000064400000000377151731452200012642 0ustar00<?php

use Psr\EventDispatcher\EventDispatcherInterface;

class SampleEventDispatcher implements EventDispatcherInterface
{
    public function dispatch(object $event)
    {
        var_dump(__METHOD__, is_object($event));

        return $event;
    }
}
tests/SampleStreamFactory.inc000064400000001235151731452210012330 0ustar00<?php

use Psr\Http\Message\StreamFactoryInterface;
use Psr\Http\Message\StreamInterface;

class SampleStreamFactory implements StreamFactoryInterface
{
    public function createStream(string $content = ''): StreamInterface
    {
        var_dump(__METHOD__, $content);
        return new SampleStream();
    }

    public function createStreamFromFile(string $filename, string $mode = 'r'): StreamInterface
    {
        var_dump(__METHOD__, $filename, $mode);
        return new SampleStream();
    }

    public function createStreamFromResource($resource): StreamInterface
    {
        var_dump(__METHOD__, $resource);
        return new SampleStream();
    }
}

tests/PsrHttpMessageStreamInterface.phpt000064400000002341151731452230014514 0ustar00--TEST--
Psr\Http\Message\StreamInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Http\Message\StreamInterface;
include __DIR__ . '/SampleStream.inc';
var_dump(interface_exists(StreamInterface::class, false));
var_dump(is_subclass_of(SampleStream::class, StreamInterface::class));
$stream = new SampleStream();
$stream->__toString();
$stream->close();
$stream->detach();
$stream->getSize();
$stream->tell();
$stream->eof();
$stream->isSeekable();
$stream->seek(0);
$stream->rewind();
$stream->isWritable();
$stream->write('foo');
$stream->isReadable();
$stream->read(123);
$stream->getContents();
$stream->getMetadata();
--EXPECTF--
bool(true)
bool(true)
string(24) "SampleStream::__toString"
string(19) "SampleStream::close"
string(20) "SampleStream::detach"
string(21) "SampleStream::getSize"
string(18) "SampleStream::tell"
string(17) "SampleStream::eof"
string(24) "SampleStream::isSeekable"
string(18) "SampleStream::seek"
int(0)
int(0)
string(20) "SampleStream::rewind"
string(24) "SampleStream::isWritable"
string(19) "SampleStream::write"
string(3) "foo"
string(24) "SampleStream::isReadable"
string(18) "SampleStream::read"
int(123)
string(25) "SampleStream::getContents"
string(25) "SampleStream::getMetadata"
NULL
tests/SampleResponse.inc000064400000000630151731452240011344 0ustar00<?php

use Psr\Http\Message\ResponseInterface;

class SampleResponse extends SampleMessage implements ResponseInterface
{
    public function getStatusCode()
    {
        var_dump(__METHOD__);
    }

    public function withStatus($code, $reasonPhrase = '')
    {
        var_dump(__METHOD__, $code, $reasonPhrase);
    }

    public function getReasonPhrase()
    {
        var_dump(__METHOD__);
    }

}

tests/PsrHttpClientClientInterface.phpt000064400000001401151731452250014327 0ustar00--TEST--
Psr\Http\Client\ClientInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleRequest.inc';
include __DIR__ . '/SampleResponse.inc';
include __DIR__ . '/SampleClient.inc';
var_dump(interface_exists('\\Psr\\Http\\Client\\ClientInterface', false));
var_dump(class_implements('SampleClient', false));
$client = new SampleClient();
$request = new SampleRequest();
$response = $client->sendRequest($request);
var_dump($response instanceof \Psr\Http\Message\ResponseInterface);
--EXPECTF--
bool(true)
array(1) {
  ["PsrExt\Http\Client\ClientInterface"]=>
  string(34) "PsrExt\Http\Client\ClientInterface"
}
string(25) "SampleClient::sendRequest"
object(SampleRequest)#%d (0) {
}
bool(true)
tests/PsrHttpMessageRequestFactoryInterface.phpt000064400000001724151731452270016251 0ustar00--TEST--
Psr\Http\Message\RequestFactoryInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleRequest.inc';
include __DIR__ . '/SampleUri.inc';
include __DIR__ . '/SampleRequestFactory.inc';
var_dump(interface_exists('\\Psr\\Http\\Message\\RequestFactoryInterface', false));
var_dump(class_implements('SampleRequestFactory', false));
$factory = new SampleRequestFactory();
$request = $factory->createRequest('GET', 'http://domain.com');
var_dump($request instanceof \Psr\Http\Message\RequestInterface);
$factory->createRequest('POST', new SampleUri());
--EXPECTF--
bool(true)
array(1) {
  ["PsrExt\Http\Message\RequestFactoryInterface"]=>
  string(43) "PsrExt\Http\Message\RequestFactoryInterface"
}
string(35) "SampleRequestFactory::createRequest"
string(3) "GET"
string(17) "http://domain.com"
bool(true)
string(35) "SampleRequestFactory::createRequest"
string(4) "POST"
object(SampleUri)#%d (0) {
}
tests/SampleRequest.inc000064400000001324151731452300011174 0ustar00<?php

use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\UriInterface;

class SampleRequest extends SampleMessage implements RequestInterface
{
    public function getRequestTarget()
    {
        var_dump(__METHOD__);
    }

    public function withRequestTarget($requestTarget)
    {
        var_dump(__METHOD__, $requestTarget);
    }

    public function getMethod()
    {
        var_dump(__METHOD__);
    }

    public function withMethod($method)
    {
        var_dump(__METHOD__, $method);
    }

    public function getUri()
    {
        var_dump(__METHOD__);
    }

    public function withUri(UriInterface $uri, $preserveHost = false)
    {
        var_dump(__METHOD__, $uri, $preserveHost);
    }
}

tests/PsrSimpleCacheInvalidArgumentException.phpt000064400000000753151731452310016345 0ustar00--TEST--
Psr\SimpleCache\InvalidArgumentException
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\SimpleCache\InvalidArgumentException;
class MyException extends Exception implements InvalidArgumentException {}
$ex = new MyException('test');
var_dump($ex instanceof InvalidArgumentException);
var_dump($ex instanceof Exception);
try {
    throw $ex;
} catch( InvalidArgumentException $e ) {
    var_dump($e->getMessage());
}
--EXPECT--
bool(true)
bool(true)
string(4) "test"
tests/SampleRequestHandler.inc000064400000000554151731452320012500 0ustar00<?php

use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;

class SampleRequestHandler implements RequestHandlerInterface {
    public function handle(ServerRequestInterface $reqeust): ResponseInterface
    {
        var_dump(__METHOD__);

        return new SampleResponse();
    }
}

tests/skip.inc000064400000000131151731452330007346 0ustar00<?php
if (!extension_loaded("psr")) {
    die('skip The psr extension is not loaded');
}
tests/PsrLogNullLogger.phpt000064400000001253151731452330012011 0ustar00--TEST--
Psr\Log\NullLogger
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Log\NullLogger;
$logger = new NullLogger;
$logger->emergency('msg emergency', array(1));
$logger->alert('msg alert', array(2));
$logger->critical('msg critical', array(3));
$logger->error('msg error', array(4));
$logger->warning('msg warning', array(5));
$logger->notice('msg notice', array(6));
$logger->info('msg info', array(7));
$logger->debug('msg debug', array(8));
$logger->log('level', 'msg', array(9));
$logger->log('level', 'no context');
var_dump($logger instanceof \Psr\Log\LoggerInterface);
var_dump($logger instanceof \Psr\Log\AbstractLogger);
--EXPECT--
bool(true)
bool(true)
tests/PsrCacheCacheItemPoolInterface.phpt000064400000002717151731452340014525 0ustar00--TEST--
Psr\Cache\CacheItemPoolInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleCacheItem.inc';
include __DIR__ . '/SampleCacheItemPool.inc';
var_dump(interface_exists('\\Psr\\Cache\\CacheItemPoolInterface', false));
var_dump(class_implements('SampleCacheItemPool', false));
$cacheItem = new SampleCacheItemPool();
$cacheItem->getItem('key');
$cacheItem->getItems();
$cacheItem->getItems(array('keyA', 'keyB'));
$cacheItem->hasItem('key');
$cacheItem->clear();
$cacheItem->deleteItem('keyC');
$cacheItem->deleteItems(array('keyC'));
$cacheItem->save(new SampleCacheItem());
$cacheItem->saveDeferred(new SampleCacheItem());
$cacheItem->commit();
--EXPECTF--
bool(true)
array(1) {
  ["PsrExt\Cache\CacheItemPoolInterface"]=>
  string(35) "PsrExt\Cache\CacheItemPoolInterface"
}
string(28) "SampleCacheItemPool::getItem"
string(3) "key"
string(29) "SampleCacheItemPool::getItems"
array(0) {
}
string(29) "SampleCacheItemPool::getItems"
array(2) {
  [0]=>
  string(4) "keyA"
  [1]=>
  string(4) "keyB"
}
string(28) "SampleCacheItemPool::hasItem"
string(3) "key"
string(26) "SampleCacheItemPool::clear"
string(31) "SampleCacheItemPool::deleteItem"
string(4) "keyC"
string(32) "SampleCacheItemPool::deleteItems"
array(1) {
  [0]=>
  string(4) "keyC"
}
string(25) "SampleCacheItemPool::save"
object(SampleCacheItem)#%d (0) {
}
string(33) "SampleCacheItemPool::saveDeferred"
object(SampleCacheItem)#%d (0) {
}
string(27) "SampleCacheItemPool::commit"
tests/SampleResponseFactory.inc000064400000000553151731452350012702 0ustar00<?php

use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\ResponseInterface;

class SampleResponseFactory implements ResponseFactoryInterface
{
    public function createResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface
    {
        var_dump(__METHOD__, $code, $reasonPhrase);
        return new SampleResponse();
    }
}

tests/PsrHttpMessageResponseFactoryInterface.phpt000064400000001574151731452360016422 0ustar00--TEST--
Psr\Http\Message\ResponseFactoryInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleResponse.inc';
include __DIR__ . '/SampleResponseFactory.inc';
var_dump(interface_exists('\\Psr\\Http\\Message\\ResponseFactoryInterface', false));
var_dump(class_implements('SampleResponseFactory', false));
$factory = new SampleResponseFactory();
$response = $factory->createResponse();
var_dump($response instanceof \Psr\Http\Message\ResponseInterface);
$factory->createResponse(400, 'BAD REQUEST');
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\Http\Message\ResponseFactoryInterface"]=>
  string(44) "PsrExt\Http\Message\ResponseFactoryInterface"
}
string(37) "SampleResponseFactory::createResponse"
int(200)
string(0) ""
bool(true)
string(37) "SampleResponseFactory::createResponse"
int(400)
string(11) "BAD REQUEST"
tests/PsrHttpMessageMessageInterface.phpt000064400000003067151731452360014657 0ustar00--TEST--
Psr\Http\Message\MessageInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleStream.inc';
var_dump(interface_exists('\\Psr\\Http\\Message\\MessageInterface', false));
var_dump(class_implements('SampleMessage', false));
$message = new SampleMessage();
$message->getProtocolVersion();
$message->withProtocolVersion('1.0');
$message->getHeaders();
$message->hasHeader('content-type');
$message->getHeader('content-type');
$message->getHeaderLine('content-type');
$message->withHeader('content-type', 'text/plain');
$message->withAddedHeader('content-type', 'text/html');
$message->withoutHeader('content-type');
$message->getBody();
$message->withBody(new SampleStream());
--EXPECTF--
bool(true)
array(1) {
  ["PsrExt\Http\Message\MessageInterface"]=>
  string(36) "PsrExt\Http\Message\MessageInterface"
}
string(33) "SampleMessage::getProtocolVersion"
string(34) "SampleMessage::withProtocolVersion"
string(3) "1.0"
string(25) "SampleMessage::getHeaders"
string(24) "SampleMessage::hasHeader"
string(12) "content-type"
string(24) "SampleMessage::getHeader"
string(12) "content-type"
string(28) "SampleMessage::getHeaderLine"
string(12) "content-type"
string(25) "SampleMessage::withHeader"
string(12) "content-type"
string(10) "text/plain"
string(30) "SampleMessage::withAddedHeader"
string(12) "content-type"
string(9) "text/html"
string(28) "SampleMessage::withoutHeader"
string(12) "content-type"
string(22) "SampleMessage::getBody"
string(23) "SampleMessage::withBody"
object(SampleStream)#%d (0) {
}
tests/PsrLinkLinkInterface.phpt000064400000000576151731452370012644 0ustar00--TEST--
Psr\Link\LinkInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Link\LinkInterface;
class MyImpl implements LinkInterface {
    public function getHref() {}
    public function isTemplated() {}
    public function getRels() {}
    public function getAttributes() {}
}
$ex = new MyImpl();
var_dump($ex instanceof LinkInterface);
--EXPECT--
bool(true)
tests/PsrLogLevel.phpt000064400000000755151731452400011012 0ustar00--TEST--
Psr\Log\LogLevel
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Log\LogLevel;
var_dump(LogLevel::EMERGENCY);
var_dump(LogLevel::ALERT);
var_dump(LogLevel::CRITICAL);
var_dump(LogLevel::ERROR);
var_dump(LogLevel::WARNING);
var_dump(LogLevel::NOTICE);
var_dump(LogLevel::INFO);
var_dump(LogLevel::DEBUG);
--EXPECT--
string(9) "emergency"
string(5) "alert"
string(8) "critical"
string(5) "error"
string(7) "warning"
string(6) "notice"
string(4) "info"
string(5) "debug"
tests/PsrHttpServerRequestHandlerInterface.phpt000064400000001636151731452400016076 0ustar00--TEST--
Psr\Http\Server\RequestHandlerInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleRequest.inc';
include __DIR__ . '/SampleServerRequest.inc';
include __DIR__ . '/SampleResponse.inc';
include __DIR__ . '/SampleRequestHandler.inc';
var_dump(interface_exists('\\Psr\\Http\\Server\\RequestHandlerInterface', false));
var_dump(class_implements('SampleRequestHandler', false));
$request = new SampleServerRequest();
var_dump($request instanceof \Psr\Http\Message\ServerRequestInterface);
$handler = new SampleRequestHandler();
$response = $handler->handle($request);
var_dump($response instanceof \Psr\Http\Message\ResponseInterface);
--EXPECT--
bool(true)
array(1) {
  ["PsrExt\Http\Server\RequestHandlerInterface"]=>
  string(42) "PsrExt\Http\Server\RequestHandlerInterface"
}
bool(true)
string(28) "SampleRequestHandler::handle"
bool(true)
tests/PsrLogAbstractLogger_construct.phpt000064400000000525151731452410014746 0ustar00--TEST--
Psr\Log\AbstractLogger
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Log\AbstractLogger;
try {
     new AbstractLogger();
} catch( \EngineException $e ) {
    echo $e->getMessage();
} catch( \Throwable $e ) {
    echo $e->getMessage();
}
--EXPECTF--
%SCannot instantiate abstract class PsrExt\Log\AbstractLogger%S
tests/SampleClient.inc000064400000000526151731452410010767 0ustar00<?php

use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;

class SampleClient implements ClientInterface
{
    public function sendRequest(RequestInterface $request): ResponseInterface
    {
        var_dump(__METHOD__, $request);
        return new SampleResponse();
    }
}

tests/SampleRequestFactory.inc000064400000000507151731452420012531 0ustar00<?php

use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\RequestInterface;

class SampleRequestFactory implements RequestFactoryInterface
{
    public function createRequest(string $method, $uri): RequestInterface
    {
        var_dump(__METHOD__, $method, $uri);
        return new SampleRequest();
    }
}

tests/SampleListenerProvider.inc000064400000000447151731452430013055 0ustar00<?php

use Psr\EventDispatcher\ListenerProviderInterface;

class SampleListenerProvider implements ListenerProviderInterface
{
    public function getListenersForEvent(object $event): iterable
    {
        var_dump(__METHOD__, is_object($event));

        return new ArrayIterator([]);
    }
}
tests/PsrHttpMessageUploadedFileFactoryInterface.phpt000064400000002147151731452440017155 0ustar00--TEST--
Psr\Http\Message\UploadedFileFactoryInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleStream.inc';
include __DIR__ . '/SampleUploadedFile.inc';
include __DIR__ . '/SampleUploadedFileFactory.inc';
var_dump(interface_exists('\\Psr\\Http\\Message\\UploadedFileFactoryInterface', false));
var_dump(class_implements('SampleUploadedFileFactory', false));
$stream = new SampleStream();
$factory = new SampleUploadedFileFactory();
$uploadedFile = $factory->createUploadedFile($stream);
var_dump($uploadedFile instanceof \Psr\Http\Message\UploadedFileInterface);
$factory->createUploadedFile($stream, 100, UPLOAD_ERR_NO_FILE, 'image.png', 'image/png');
--EXPECTF--
bool(true)
array(1) {
  ["PsrExt\Http\Message\UploadedFileFactoryInterface"]=>
  string(48) "PsrExt\Http\Message\UploadedFileFactoryInterface"
}
string(45) "SampleUploadedFileFactory::createUploadedFile"
object(SampleStream)#%d (0) {
}
NULL
int(0)
NULL
NULL
bool(true)
string(45) "SampleUploadedFileFactory::createUploadedFile"
object(SampleStream)#%d (0) {
}
int(100)
int(4)
string(9) "image.png"
string(9) "image/png"
tests/PsrHttpMessageRequestInterface.phpt000064400000002602151731452450014715 0ustar00--TEST--
Psr\Http\Message\RequestInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
include __DIR__ . '/SampleMessage.inc';
include __DIR__ . '/SampleRequest.inc';
include __DIR__ . '/SampleUri.inc';
var_dump(interface_exists('\\Psr\\Http\\Message\\RequestInterface', false));
var_dump(is_subclass_of('\\Psr\\Http\\Message\\RequestInterface', '\\Psr\\Http\\Message\\MessageInterface'));
var_dump(class_implements('SampleRequest', false));
$request = new SampleRequest();
var_dump($request instanceof \Psr\Http\Message\MessageInterface);
$request->getRequestTarget();
$request->withRequestTarget('test');
$request->getMethod();
$request->withMethod('PUT');
$request->getUri();
$request->withUri(new SampleUri());
$request->withUri(new SampleUri(), true);
--EXPECTF--
bool(true)
bool(true)
array(2) {
  ["PsrExt\Http\Message\MessageInterface"]=>
  string(36) "PsrExt\Http\Message\MessageInterface"
  ["PsrExt\Http\Message\RequestInterface"]=>
  string(36) "PsrExt\Http\Message\RequestInterface"
}
bool(true)
string(31) "SampleRequest::getRequestTarget"
string(32) "SampleRequest::withRequestTarget"
string(4) "test"
string(24) "SampleRequest::getMethod"
string(25) "SampleRequest::withMethod"
string(3) "PUT"
string(21) "SampleRequest::getUri"
string(22) "SampleRequest::withUri"
object(SampleUri)#%d (0) {
}
bool(false)
string(22) "SampleRequest::withUri"
object(SampleUri)#%d (0) {
}
bool(true)
tests/PsrContainerNotFoundExceptionInterface.phpt000064400000001141151731452450016373 0ustar00--TEST--
Psr\Container\NotFoundExceptionInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class MyException extends Exception implements NotFoundExceptionInterface {}
$ex = new MyException('test');
var_dump($ex instanceof ContainerExceptionInterface);
var_dump($ex instanceof NotFoundExceptionInterface);
var_dump($ex instanceof Exception);
try {
    throw $ex;
} catch( NotFoundExceptionInterface $e ) {
    var_dump($e->getMessage());
}
--EXPECT--
bool(true)
bool(true)
bool(true)
string(4) "test"
tests/gh78_php8.phpt000064400000001062151731452460010326 0ustar00--TEST--
Psr\Log\LoggerInterface - Invalid context default value (PHP 8)
--SKIPIF--
<?php
include 'skip.inc';
if (PHP_VERSION_ID < 80000) {
    print "skip Due to version incompatibility";
}
?>
--FILE--
<?php
$reflectionMethod = new \ReflectionMethod(\Psr\Log\LoggerInterface::class, "emergency");
$reflectionParameter = $reflectionMethod->getParameters()[1];
var_dump($reflectionParameter->isOptional());
var_dump($reflectionParameter->isDefaultValueAvailable());
var_dump($reflectionParameter->getDefaultValue());
--EXPECT--
bool(true)
bool(true)
array(0) {
}
tests/PsrLinkLinkProviderInterface.phpt000064400000000535151731452470014353 0ustar00--TEST--
Psr\Link\LinkProviderInterface
--SKIPIF--
<?php include('skip.inc'); ?>
--FILE--
<?php
use Psr\Link\LinkProviderInterface;
class MyImpl implements LinkProviderInterface {
    public function getLinks() {}
    public function getLinksByRel($rel) {}
}
$ex = new MyImpl();
var_dump($ex instanceof LinkProviderInterface);
--EXPECT--
bool(true)
tests/SampleUploadedFile.inc000064400000001127151731452510012105 0ustar00<?php

use Psr\Http\Message\UploadedFileInterface;

class SampleUploadedFile implements UploadedFileInterface
{
    public function getStream()
    {
        var_dump(__METHOD__);
    }

    public function moveTo($targetPath)
    {
        var_dump(__METHOD__, $targetPath);
    }

    public function getSize()
    {
        var_dump(__METHOD__);
    }

    public function getError()
    {
        var_dump(__METHOD__);
    }

    public function getClientFilename()
    {
        var_dump(__METHOD__);
    }

    public function getClientMediaType()
    {
        var_dump(__METHOD__);
    }
}

tests/SampleUploadedFileFactory.inc000064400000001133151731452520013433 0ustar00<?php

use Psr\Http\Message\UploadedFileFactoryInterface;
use Psr\Http\Message\UploadedFileInterface;
use Psr\Http\Message\StreamInterface;

class SampleUploadedFileFactory implements UploadedFileFactoryInterface
{
    public function createUploadedFile(
        StreamInterface $stream,
        int $size = null,
        int $error = \UPLOAD_ERR_OK,
        string $clientFilename = null,
        string $clientMediaType = null
    ): UploadedFileInterface
    {
        var_dump(__METHOD__, $stream, $size, $error, $clientFilename, $clientMediaType);
        return new SampleUploadedFile();
    }
}