diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..6cbf399f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,9 @@ +language: php +php: + - 5.6 +services: + - mysql +sudo: true +before_script: ./before_script.sh +script: + - tests/vendor/bin/phpunit tests/cases/InstallTest.php diff --git a/before_script.sh b/before_script.sh new file mode 100755 index 00000000..93aa4cbf --- /dev/null +++ b/before_script.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +mysql -e 'create database phpback_test;' +git checkout -- install +rm application/config/database.php + +sudo apt-get install supervisor -y --no-install-recommends +sudo cp ./.ci/phpunit-environment.conf /etc/supervisor/conf.d/ +sudo sed -i "s/^directory=.*webserver$/directory=${ESCAPED_BUILD_DIR}\\/selenium-1-tests/" /etc/supervisor/conf.d/phpunit-environment.conf +sudo sed -i "s/^autostart=.*selenium$/autostart=true/" /etc/supervisor/conf.d/phpunit-environment.conf +sudo sed -i "s/^autostart=.*python-webserver$/autostart=true/" /etc/supervisor/conf.d/phpunit-environment.conf + +sudo killall supervisord +sudo killall -9 java +sudo killall -9 Xvfb +sudo rm -f /tmp/.X99-lock +sudo /etc/init.d/supervisor start + + +sudo apt-get install -y --force-yes apache2 libapache2-mod-php5 php5-curl php5-mysql php5-intl +sudo sed -i -e "s,/var/www,$(pwd)/web,g" /etc/apache2/sites-available/default +sudo /etc/init.d/apache2 restart + +SELENIUM_HUB_URL='http://localhost:4444' + +sudo apt-get install firefox -y --no-install-recommends +echo "FIREFOX VERSION --------------------------" +firefox --version +sh -e /etc/init.d/xvfb start +export DISPLAY=:99.0 +wget http://selenium.googlecode.com/files/selenium-server-standalone-2.31.0.jar +php -S localhost:8080 -t ./ & +sudo xvfb-run java -jar selenium-server-standalone-2.31.0.jar > /dev/null.log & +sleep 30 diff --git a/install/database_tables.sql b/install/database_tables.sql deleted file mode 100755 index bbf50021..00000000 --- a/install/database_tables.sql +++ /dev/null @@ -1,88 +0,0 @@ -CREATE TABLE IF NOT EXISTS `categories` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` tinytext COLLATE utf8_unicode_ci NOT NULL, - `description` text COLLATE utf8_unicode_ci NOT NULL, - `ideas` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -CREATE TABLE IF NOT EXISTS `comments` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `content` text COLLATE utf8_unicode_ci NOT NULL, - `ideaid` int(11) NOT NULL, - `userid` int(11) NOT NULL, - `date` tinytext COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`id`), - KEY `id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -CREATE TABLE IF NOT EXISTS `flags` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `toflagid` int(11) NOT NULL, - `userid` int(11) NOT NULL, - `date` tinytext COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`id`), - KEY `id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -CREATE TABLE IF NOT EXISTS `ideas` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `title` tinytext COLLATE utf8_unicode_ci NOT NULL, - `content` text COLLATE utf8_unicode_ci NOT NULL, - `authorid` int(11) NOT NULL, - `date` tinytext COLLATE utf8_unicode_ci NOT NULL, - `votes` int(11) NOT NULL, - `comments` int(11) NOT NULL, - `status` tinytext COLLATE utf8_unicode_ci NOT NULL, - `categoryid` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -CREATE TABLE IF NOT EXISTS `logs` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `content` tinytext COLLATE utf8_unicode_ci NOT NULL, - `date` tinytext COLLATE utf8_unicode_ci NOT NULL, - `type` tinytext COLLATE utf8_unicode_ci NOT NULL, - `toid` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -CREATE TABLE IF NOT EXISTS `settings` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` tinytext COLLATE utf8_unicode_ci NOT NULL, - `value` tinytext COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`id`), - KEY `id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -CREATE TABLE IF NOT EXISTS `users` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` tinytext COLLATE utf8_unicode_ci NOT NULL, - `email` tinytext COLLATE utf8_unicode_ci NOT NULL, - `pass` tinytext COLLATE utf8_unicode_ci NOT NULL, - `votes` int(11) NOT NULL, - `isadmin` tinyint(1) NOT NULL, - `banned` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -CREATE TABLE IF NOT EXISTS `votes` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `ideaid` int(11) NOT NULL, - `userid` int(11) NOT NULL, - `number` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -CREATE TABLE IF NOT EXISTS `_sessions` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `userid` int(11) NOT NULL, - `token` tinytext COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`id`), - KEY `id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; diff --git a/install/index.php b/install/index.php deleted file mode 100755 index 274e2576..00000000 --- a/install/index.php +++ /dev/null @@ -1,107 +0,0 @@ - - - - PHPBack Installation - - - - - - - - - - - - - - - - -
-
-
- -
PHPBack installation
- -
-
- Need help? Please, visit our - - frequent issues documentation. - -
- -
- - -
-
- - -
-
- - -
-
- - -
- * Left in blank for automatic database creation -
- -
PHPBack installation
-
- - -
-
- - -
-
- - -
-
- - -
- - - -
-
-
- - - diff --git a/install/index2.php b/install/index2.php deleted file mode 100755 index 0383932f..00000000 --- a/install/index2.php +++ /dev/null @@ -1,75 +0,0 @@ - - - - PHPBack Installation - - - - - - - - - - - - - - - - -
-
-
- -
PHPBack installation
-
- - -
-
- -
-
- -
-
- -
- *Left in blank if you do not want to use recaptcha -
- - -
-
- - -
-
- - -
-
- - -
- - -
-
-
- - diff --git a/install/install1.php b/install/install1.php deleted file mode 100755 index f04ef475..00000000 --- a/install/install1.php +++ /dev/null @@ -1,151 +0,0 @@ - -Copyright (c) 2014 PHPBack -http://www.phpback.org -Released under the GNU General Public License WITHOUT ANY WARRANTY. -See LICENSE.TXT for details. -**********************************************************************/ -define('BASEPATH', ''); - -error_reporting(E_ALL); -ini_set('display_errors', 1); - -function redirectpost($url, array $data){ - - echo ' - - - Please Wait... - - - Please Wait...
-
'; - if ( !is_null($data) ) { - foreach ($data as $k => $v) { - echo ' '; - } - } - echo "
"; - ""; - ""; - exit; -} - -function exit_error($string){ - $data['error'] = $string; - redirectpost('index.php', $data); -} - -function create_file($hostname, $username, $password, $database){ - @chmod('../application/config', 0777); - if(($file = fopen('../application/config/database.php', 'w+')) == FALSE){ - exit_error('ERROR #1: Config file could not be created'); - } - $content = 'connect_error) exit_error('ERROR #2: Server connection error (' . $server->connect_errno . ') ' . $server->connect_error); - -if($_POST['database'] != ""){ - if(!file_exists('../application/config/database.php')) - create_file($_POST['hostname'], $_POST['username'], $_POST['password'], $_POST['database']); - include '../application/config/database.php'; - if(!($_POST['hostname'] == $db['default']['hostname'] && $_POST['username'] == $db['default']['username'] - && $_POST['password'] == $db['default']['password'] && $_POST['database'] == $db['default']['database'])) exit_error('Config file does not match with the given information'); - if ($server->select_db($_POST['database']) === FALSE) exit_error("ERROR #3: Couldn't connect to database"); - $query = file_get_contents('database_tables.sql'); - if($server->multi_query($query) === FALSE) exit_error("ERROR #4: Couldn't create the tables"); -}else{ - if(!file_exists('../application/config/database.php')) - create_file($_POST['hostname'], $_POST['username'], $_POST['password'], 'phpback'); - - if ($server->select_db('phpback') === TRUE) exit_error("ERROR #5: You already have a phpback database, please create another manually"); - if(!$server->query("CREATE DATABASE IF NOT EXISTS phpback")){ - exit_error("ERROR #6: Could not create database"); - } - if ($server->select_db('phpback') === FALSE) exit_error("ERROR #5: Generated database connection error"); - $sql = file_get_contents('database_tables.sql'); - if($server->multi_query($sql) === FALSE) exit_error("ERROR #4: Couldn't create the tables"); -} -do{ - if($r = $server->store_result()) $r->free(); -}while($server->more_results() && $server->next_result()); - -$result = $server->query("SELECT id FROM settings WHERE name='title'"); - -if ($result->num_rows == 1) { - if (!@chmod('../install', 0777)) { - echo "PLEASE DELETE install/ FOLDER MANUALLY. THEN GO TO yourwebsite.com/feedback/admin/ TO LOG IN."; - exit; - } - - unlink('index.php'); - unlink('install1.php'); - unlink('database_tables.sql'); - unlink('index2.php'); - unlink('install2.php'); - header('Location: ../admin'); - exit; - -} else { - $server->query("INSERT INTO users(id,name,email,pass,votes,isadmin,banned) VALUES('','". $_POST['adminname'] ."','". $_POST['adminemail'] ."','". hashPassword($_POST['adminpass']) ."', 20, 3,0)"); - - if (!@chmod('../install', 0777)) { - echo "PLEASE DELETE install/index.php, install/install1.php AND install/database_tables.sql FILES MANUALLY.
- THEN GO TO yourwebsite.com/feedback/install/index2.php TO CONTINUE THE INSTALLATION."; - exit; - } - - unlink('index.php'); - unlink('install1.php'); - unlink('database_tables.sql'); - header('Location: index2.php'); -} diff --git a/install/install2.php b/install/install2.php deleted file mode 100755 index 9286f595..00000000 --- a/install/install2.php +++ /dev/null @@ -1,35 +0,0 @@ - -Copyright (c) 2014 PHPBack -http://www.phpback.org -Released under the GNU General Public License WITHOUT ANY WARRANTY. -See LICENSE.TXT for details. -**********************************************************************/ - -include "../application/config/database.php"; - -$mysql = new mysqli($db['default']['hostname'], $db['default']['username'], $db['default']['password'], $db['default']['database']); - -if ($server->connect_error) echo('Connection Error (' . $server->connect_errno . ') ' . $server->connect_error . '
'); - -$mysql->multi_query("INSERT INTO `settings` (`id`, `name`, `value`) VALUES -('', 'recaptchapublic', '". $_POST['rpublic'] ."'), -('', 'recaptchaprivate', '". $_POST['rprivate'] ."'), -('', 'maxvotes', '20'), -('', 'mainmail', '". $_POST['mainmail'] ."'), -('', 'title', '". $_POST['title'] ."'), -('', 'max_results', '10'), -('', 'language', 'english'), -('', 'smtp-host', '". $_POST['smtp-host'] ."'), -('', 'smtp-port', '". $_POST['smtp-port'] ."'), -('', 'smtp-user', '". $_POST['smtp-user'] ."'), -('', 'smtp-pass', '". $_POST['smtp-password'] ."');"); - -if(unlink('index2.php') && unlink('install2.php')) { - header('Location: ../admin'); -} else { - echo "PLEASE DELETE install/ FOLDER MANUALLY. THEN GO TO yourwebsite.com/feedback/admin/ TO LOG IN"; -} \ No newline at end of file diff --git a/tests/cases/InstallTest.php b/tests/cases/InstallTest.php index 467225a1..d1d9ce7e 100644 --- a/tests/cases/InstallTest.php +++ b/tests/cases/InstallTest.php @@ -5,8 +5,14 @@ class InstallTest extends TestCase { public function testDatabaseInstallation() { + print 'AAAAA!'; + /* + print 'STARTING FIRST TEST............'; + $this->url('index.php'); + print 'First test! initalized'; + //All Fields initially with empty $this->fillFields(array( 'hostname' => 'localhost', @@ -54,14 +60,14 @@ public function testDatabaseInstallation() { $this->assertEquals($adminUser->name, 'admin'); $this->assertEquals($adminUser->email, 'admin@phpback.org'); $this->assertEquals($adminUser->isadmin, '3'); - $this->assertEquals($adminUser->votes, '20'); + $this->assertEquals($adminUser->votes, '20');*/ } /** * @depends testDatabaseInstallation */ public function testConfigurationInstallation($value='') { - $this->url('install/index2.php'); + /*$this->url('install/index2.php'); //Populate all fields $this->fillFields(array( @@ -82,6 +88,6 @@ public function testConfigurationInstallation($value='') { $this->assertEquals($settings['mainmail'], 'admin@phpback.org'); $this->assertEquals($settings['language'], 'english'); $this->assertEquals($settings['max_results'], '10'); - $this->assertEquals($settings['maxvotes'], '20'); + $this->assertEquals($settings['maxvotes'], '20');*/ } } diff --git a/tests/cases/_TestCase.php b/tests/cases/_TestCase.php index e57ad0f3..e54df952 100644 --- a/tests/cases/_TestCase.php +++ b/tests/cases/_TestCase.php @@ -9,12 +9,15 @@ class TestCase extends PHPUnit_Extensions_Selenium2TestCase { protected $mysqli; public function setUp() { + print 'SETING UP............'; $this->setHost('localhost'); $this->setPort(4444); $this->setBrowser('firefox'); $this->setBrowserUrl('http://localhost:8080/'); $this->mysqli = new mysqli('localhost', 'root', '', 'phpback_test'); + print 'SET UP DONE............'; + Scripts::setInstance($this); } diff --git a/tests/composer.json b/tests/composer.json index a5db16ee..1b4fb069 100644 --- a/tests/composer.json +++ b/tests/composer.json @@ -1,7 +1,7 @@ { "require": { - "phpunit/phpunit": "~5.0", - "phpunit/phpunit-selenium": "~1.4", + "phpunit/phpunit": "4.0", + "phpunit/phpunit-selenium": "*", "gabordemooij/redbean": "~4.2" } } diff --git a/tests/composer.lock b/tests/composer.lock index da7fb338..9fe65388 100644 --- a/tests/composer.lock +++ b/tests/composer.lock @@ -4,74 +4,20 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "c421d0d3b08e18bef67cb29505ea984d", + "hash": "e45b2f4898a4b8b120ce09d5576df397", "packages": [ - { - "name": "doctrine/instantiator", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", - "shasum": "" - }, - "require": { - "php": ">=5.3,<8.0-DEV" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2015-06-14 21:17:01" - }, { "name": "gabordemooij/redbean", - "version": "v4.2.1", + "version": "v4.3", "source": { "type": "git", "url": "https://github.com/gabordemooij/redbean.git", - "reference": "13610146620d7c0a66215dcaf0c8796bb03a04aa" + "reference": "f375a1678d137ca1ff806813fac306723f97ec6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/gabordemooij/redbean/zipball/13610146620d7c0a66215dcaf0c8796bb03a04aa", - "reference": "13610146620d7c0a66215dcaf0c8796bb03a04aa", + "url": "https://api.github.com/repos/gabordemooij/redbean/zipball/f375a1678d137ca1ff806813fac306723f97ec6b", + "reference": "f375a1678d137ca1ff806813fac306723f97ec6b", "shasum": "" }, "require": { @@ -99,184 +45,33 @@ "keywords": [ "orm" ], - "time": "2015-05-09 12:22:47" - }, - { - "name": "myclabs/deep-copy", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "d8093b631a31628342d0703764935f8bac2c56b1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/d8093b631a31628342d0703764935f8bac2c56b1", - "reference": "d8093b631a31628342d0703764935f8bac2c56b1", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "doctrine/collections": "1.*", - "phpunit/phpunit": "~4.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "homepage": "https://github.com/myclabs/DeepCopy", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2015-10-05 15:07:09" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "time": "2015-02-03 12:10:50" - }, - { - "name": "phpspec/prophecy", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7", - "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "phpdocumentor/reflection-docblock": "~2.0", - "sebastian/comparator": "~1.1" - }, - "require-dev": { - "phpspec/phpspec": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2015-08-13 10:07:40" + "time": "2015-09-11 18:55:25" }, { "name": "phpunit/php-code-coverage", - "version": "3.0.1", + "version": "2.0.17", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c84f05be256cd7c9d2340b26f7995b4afbf8787b" + "reference": "c4e8e7725e351184a76544634855b8a9c405a6e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c84f05be256cd7c9d2340b26f7995b4afbf8787b", - "reference": "c84f05be256cd7c9d2340b26f7995b4afbf8787b", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c4e8e7725e351184a76544634855b8a9c405a6e3", + "reference": "c4e8e7725e351184a76544634855b8a9c405a6e3", "shasum": "" }, "require": { - "php": ">=5.6", + "php": ">=5.3.3", "phpunit/php-file-iterator": "~1.3", "phpunit/php-text-template": "~1.2", "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "^1.3.2", + "sebastian/environment": "~1.0", "sebastian/version": "~1.0" }, "require-dev": { "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~5" + "phpunit/phpunit": "~4" }, "suggest": { "ext-dom": "*", @@ -286,7 +81,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -312,37 +107,35 @@ "testing", "xunit" ], - "time": "2015-10-06 15:51:05" + "time": "2015-05-25 05:11:59" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.1", + "version": "1.3.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", "shasum": "" }, "require": { "php": ">=5.3.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { "classmap": [ - "src/" + "File/" ] }, "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], "license": [ "BSD-3-Clause" ], @@ -359,7 +152,7 @@ "filesystem", "iterator" ], - "time": "2015-06-21 13:08:43" + "time": "2013-10-10 15:34:57" }, { "name": "phpunit/php-text-template", @@ -494,42 +287,39 @@ }, { "name": "phpunit/phpunit", - "version": "5.0.8", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "97fb2503cf8caca9d768fde3cca2ab147b9e7030" + "reference": "b3a7c58bc39f01577f89d63da1ec578e1e993f1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/97fb2503cf8caca9d768fde3cca2ab147b9e7030", - "reference": "97fb2503cf8caca9d768fde3cca2ab147b9e7030", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b3a7c58bc39f01577f89d63da1ec578e1e993f1a", + "reference": "b3a7c58bc39f01577f89d63da1ec578e1e993f1a", "shasum": "" }, "require": { "ext-dom": "*", - "ext-json": "*", "ext-pcre": "*", "ext-reflection": "*", "ext-spl": "*", - "myclabs/deep-copy": "~1.3", - "php": ">=5.6", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "~3.0", - "phpunit/php-file-iterator": "~1.4", + "php": ">=5.3.3", + "phpunit/php-code-coverage": ">=2.0.0,<2.1.0", + "phpunit/php-file-iterator": "~1.3.1", "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": ">=1.0.6", - "phpunit/phpunit-mock-objects": ">=3.0", - "sebastian/comparator": "~1.1", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.3", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/resource-operations": "~1.0", + "phpunit/php-timer": "~1.0.2", + "phpunit/phpunit-mock-objects": ">=2.0.0,<2.1.0", + "sebastian/diff": "~1.1", + "sebastian/environment": "~1.0", + "sebastian/exporter": "~1.0.1", "sebastian/version": "~1.0", - "symfony/yaml": "~2.1|~3.0" + "symfony/yaml": "~2.0" }, "suggest": { + "ext-json": "*", + "ext-simplexml": "*", + "ext-tokenizer": "*", "phpunit/php-invoker": "~1.1" }, "bin": [ @@ -538,7 +328,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -547,6 +337,10 @@ ] }, "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "", + "../../symfony/yaml/" + ], "license": [ "BSD-3-Clause" ], @@ -558,36 +352,34 @@ } ], "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", + "homepage": "http://www.phpunit.de/", "keywords": [ "phpunit", "testing", "xunit" ], - "time": "2015-10-23 06:50:01" + "time": "2014-03-07 07:00:44" }, { "name": "phpunit/phpunit-mock-objects", - "version": "3.0.3", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "382c729a52b7ef682e94c73fd6868f5ee8116ba7" + "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/382c729a52b7ef682e94c73fd6868f5ee8116ba7", - "reference": "382c729a52b7ef682e94c73fd6868f5ee8116ba7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/e60bb929c50ae4237aaf680a4f6773f4ee17f0a2", + "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": ">=5.6", - "phpunit/php-text-template": "~1.2", - "sebastian/exporter": "~1.2" + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": ">=4.0.0,<4.1.0" }, "suggest": { "ext-soap": "*" @@ -595,7 +387,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -604,6 +396,9 @@ ] }, "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], "license": [ "BSD-3-Clause" ], @@ -620,27 +415,27 @@ "mock", "xunit" ], - "time": "2015-10-18 07:55:54" + "time": "2014-06-12 07:19:48" }, { "name": "phpunit/phpunit-selenium", - "version": "1.4.1", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/giorgiosironi/phpunit-selenium.git", - "reference": "83a2b834c8395ad9510f7c8f4f46d498ce88565b" + "reference": "c84dd7ca214563868ce216123b7ae9c792beb262" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/giorgiosironi/phpunit-selenium/zipball/83a2b834c8395ad9510f7c8f4f46d498ce88565b", - "reference": "83a2b834c8395ad9510f7c8f4f46d498ce88565b", + "url": "https://api.github.com/repos/giorgiosironi/phpunit-selenium/zipball/c84dd7ca214563868ce216123b7ae9c792beb262", + "reference": "c84dd7ca214563868ce216123b7ae9c792beb262", "shasum": "" }, "require": { "ext-curl": "*", "ext-dom": "*", "php": ">=5.3.3", - "phpunit/phpunit": ">=3.7", + "phpunit/phpunit": "~3.7|~4.0", "sebastian/comparator": "~1.0" }, "type": "library", @@ -675,34 +470,34 @@ "testing", "xunit" ], - "time": "2014-08-18 19:47:10" + "time": "2014-11-02 09:23:27" }, { "name": "sebastian/comparator", - "version": "1.2.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" + "reference": "c484a80f97573ab934e37826dba0135a3301b26a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/c484a80f97573ab934e37826dba0135a3301b26a", + "reference": "c484a80f97573ab934e37826dba0135a3301b26a", "shasum": "" }, "require": { "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2" + "sebastian/diff": "~1.1", + "sebastian/exporter": "~1.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "~4.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -739,32 +534,32 @@ "compare", "equality" ], - "time": "2015-07-26 15:48:44" + "time": "2014-11-16 21:32:38" }, { "name": "sebastian/diff", - "version": "1.3.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", - "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "~4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -787,24 +582,24 @@ } ], "description": "Diff implementation", - "homepage": "http://www.github.com/sebastianbergmann/diff", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ "diff" ], - "time": "2015-02-22 15:13:53" + "time": "2015-12-08 07:14:41" }, { "name": "sebastian/environment", - "version": "1.3.2", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44" + "reference": "6e7133793a8e5a5714a551a8324337374be209df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44", - "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6e7133793a8e5a5714a551a8324337374be209df", + "reference": "6e7133793a8e5a5714a551a8324337374be209df", "shasum": "" }, "require": { @@ -841,33 +636,32 @@ "environment", "hhvm" ], - "time": "2015-08-03 06:14:51" + "time": "2015-12-02 08:37:27" }, { "name": "sebastian/exporter", - "version": "1.2.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "7ae5513327cb536431847bcc0c10edba2701064e" + "reference": "c7d59948d6e82818e1bdff7cadb6c34710eb7dc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e", - "reference": "7ae5513327cb536431847bcc0c10edba2701064e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c7d59948d6e82818e1bdff7cadb6c34710eb7dc0", + "reference": "c7d59948d6e82818e1bdff7cadb6c34710eb7dc0", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" + "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -907,153 +701,7 @@ "export", "exporter" ], - "time": "2015-06-21 07:55:53" - }, - { - "name": "sebastian/global-state", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2015-10-12 03:26:01" - }, - { - "name": "sebastian/recursion-context", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "994d4a811bafe801fb06dccbee797863ba2792ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba", - "reference": "994d4a811bafe801fb06dccbee797863ba2792ba", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-06-21 08:04:50" - }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28 20:34:47" + "time": "2014-09-10 00:51:36" }, { "name": "sebastian/version", @@ -1092,16 +740,16 @@ }, { "name": "symfony/yaml", - "version": "v2.7.6", + "version": "v2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "eca9019c88fbe250164affd107bc8057771f3f4d" + "reference": "f79824187de95064a2f5038904c4d7f0227fedb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/eca9019c88fbe250164affd107bc8057771f3f4d", - "reference": "eca9019c88fbe250164affd107bc8057771f3f4d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5", + "reference": "f79824187de95064a2f5038904c4d7f0227fedb5", "shasum": "" }, "require": { @@ -1110,13 +758,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "2.8-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1134,7 +785,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2015-10-11 09:39:48" + "time": "2015-11-30 12:35:10" } ], "packages-dev": [], diff --git a/tests/vendor/autoload.php b/tests/vendor/autoload.php index 9d7d894f..26160840 100644 --- a/tests/vendor/autoload.php +++ b/tests/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer' . '/autoload_real.php'; -return ComposerAutoloaderInit8f6844bbddfefd96f2f2ad7c3bd25af1::getLoader(); +return ComposerAutoloaderInit52a908cbd1faf9b4e4600893c0bf4674::getLoader(); diff --git a/tests/vendor/composer/autoload_classmap.php b/tests/vendor/composer/autoload_classmap.php index 90e275c9..66cea233 100644 --- a/tests/vendor/composer/autoload_classmap.php +++ b/tests/vendor/composer/autoload_classmap.php @@ -6,9 +6,9 @@ $baseDir = dirname($vendorDir); return array( - 'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php', - 'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php', - 'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php', + 'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/File/Iterator.php', + 'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/File/Iterator/Facade.php', + 'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/File/Iterator/Factory.php', 'PHPUnit_Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php', 'PHPUnit_Extensions_GroupTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php', 'PHPUnit_Extensions_PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestCase.php', @@ -76,10 +76,24 @@ 'PHPUnit_Framework_AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', 'PHPUnit_Framework_BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php', 'PHPUnit_Framework_CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', + 'PHPUnit_Framework_Comparator' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator.php', + 'PHPUnit_Framework_ComparatorFactory' => $vendorDir . '/phpunit/phpunit/src/Framework/ComparatorFactory.php', + 'PHPUnit_Framework_Comparator_Array' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/Array.php', + 'PHPUnit_Framework_Comparator_DOMNode' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/DOMNode.php', + 'PHPUnit_Framework_Comparator_DateTime' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/DateTime.php', + 'PHPUnit_Framework_Comparator_Double' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/Double.php', + 'PHPUnit_Framework_Comparator_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/Exception.php', + 'PHPUnit_Framework_Comparator_MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/MockObject.php', + 'PHPUnit_Framework_Comparator_Numeric' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/Numeric.php', + 'PHPUnit_Framework_Comparator_Object' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/Object.php', + 'PHPUnit_Framework_Comparator_Resource' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/Resource.php', + 'PHPUnit_Framework_Comparator_Scalar' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/Scalar.php', + 'PHPUnit_Framework_Comparator_SplObjectStorage' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/SplObjectStorage.php', + 'PHPUnit_Framework_Comparator_Type' => $vendorDir . '/phpunit/phpunit/src/Framework/Comparator/Type.php', + 'PHPUnit_Framework_ComparisonFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/ComparisonFailure.php', 'PHPUnit_Framework_Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint.php', 'PHPUnit_Framework_Constraint_And' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/And.php', 'PHPUnit_Framework_Constraint_ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', - 'PHPUnit_Framework_Constraint_ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', 'PHPUnit_Framework_Constraint_Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', 'PHPUnit_Framework_Constraint_Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', 'PHPUnit_Framework_Constraint_ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', @@ -89,19 +103,15 @@ 'PHPUnit_Framework_Constraint_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', 'PHPUnit_Framework_Constraint_ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', 'PHPUnit_Framework_Constraint_ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', - 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php', 'PHPUnit_Framework_Constraint_FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', 'PHPUnit_Framework_Constraint_GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', 'PHPUnit_Framework_Constraint_IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', 'PHPUnit_Framework_Constraint_IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', 'PHPUnit_Framework_Constraint_IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', 'PHPUnit_Framework_Constraint_IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', - 'PHPUnit_Framework_Constraint_IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php', 'PHPUnit_Framework_Constraint_IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', - 'PHPUnit_Framework_Constraint_IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php', 'PHPUnit_Framework_Constraint_IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', 'PHPUnit_Framework_Constraint_IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', - 'PHPUnit_Framework_Constraint_IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php', 'PHPUnit_Framework_Constraint_IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', 'PHPUnit_Framework_Constraint_IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', 'PHPUnit_Framework_Constraint_IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', @@ -125,10 +135,8 @@ 'PHPUnit_Framework_Error_Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php', 'PHPUnit_Framework_Error_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php', 'PHPUnit_Framework_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php', - 'PHPUnit_Framework_ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', 'PHPUnit_Framework_ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', 'PHPUnit_Framework_IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php', - 'PHPUnit_Framework_IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', 'PHPUnit_Framework_IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', 'PHPUnit_Framework_InvalidCoversTargetError' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php', 'PHPUnit_Framework_InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', @@ -150,12 +158,9 @@ 'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php', 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php', 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php', - 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', 'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php', 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php', 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php', 'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php', @@ -179,7 +184,6 @@ 'PHPUnit_Framework_RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php', 'PHPUnit_Framework_SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php', 'PHPUnit_Framework_SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php', - 'PHPUnit_Framework_SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', 'PHPUnit_Framework_SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php', 'PHPUnit_Framework_SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', 'PHPUnit_Framework_SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php', @@ -207,6 +211,8 @@ 'PHPUnit_TextUI_TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php', 'PHPUnit_Util_Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php', 'PHPUnit_Util_Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php', + 'PHPUnit_Util_DeprecatedFeature' => $vendorDir . '/phpunit/phpunit/src/Util/DeprecatedFeature.php', + 'PHPUnit_Util_DeprecatedFeature_Logger' => $vendorDir . '/phpunit/phpunit/src/Util/DeprecatedFeature/Logger.php', 'PHPUnit_Util_ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php', 'PHPUnit_Util_Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php', 'PHPUnit_Util_Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php', @@ -217,12 +223,10 @@ 'PHPUnit_Util_Log_JSON' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JSON.php', 'PHPUnit_Util_Log_JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php', 'PHPUnit_Util_Log_TAP' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TAP.php', - 'PHPUnit_Util_Log_TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php', 'PHPUnit_Util_PHP' => $vendorDir . '/phpunit/phpunit/src/Util/PHP.php', 'PHPUnit_Util_PHP_Default' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Default.php', 'PHPUnit_Util_PHP_Windows' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Windows.php', 'PHPUnit_Util_Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php', - 'PHPUnit_Util_Regex' => $vendorDir . '/phpunit/phpunit/src/Util/Regex.php', 'PHPUnit_Util_String' => $vendorDir . '/phpunit/phpunit/src/Util/String.php', 'PHPUnit_Util_Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php', 'PHPUnit_Util_TestDox_NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', @@ -235,11 +239,10 @@ 'PHP_CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php', 'PHP_CodeCoverage_Driver' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver.php', 'PHP_CodeCoverage_Driver_HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php', - 'PHP_CodeCoverage_Driver_PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php', 'PHP_CodeCoverage_Driver_Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php', - 'PHP_CodeCoverage_Exception' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/Exception.php', + 'PHP_CodeCoverage_Exception' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception.php', + 'PHP_CodeCoverage_Exception_UnintentionallyCoveredCode' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php', 'PHP_CodeCoverage_Filter' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Filter.php', - 'PHP_CodeCoverage_InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/InvalidArgumentException.php', 'PHP_CodeCoverage_Report_Clover' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php', 'PHP_CodeCoverage_Report_Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php', 'PHP_CodeCoverage_Report_Factory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php', @@ -265,9 +268,8 @@ 'PHP_CodeCoverage_Report_XML_Project' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php', 'PHP_CodeCoverage_Report_XML_Tests' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php', 'PHP_CodeCoverage_Report_XML_Totals' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php', - 'PHP_CodeCoverage_RuntimeException' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/RuntimeException.php', - 'PHP_CodeCoverage_UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCodeException.php', 'PHP_CodeCoverage_Util' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util.php', + 'PHP_CodeCoverage_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php', 'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php', 'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', 'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', @@ -490,17 +492,9 @@ 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php', 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php', + 'SebastianBergmann\\Exporter\\Context' => $vendorDir . '/sebastian/exporter/src/Context.php', + 'SebastianBergmann\\Exporter\\Exception' => $vendorDir . '/sebastian/exporter/src/Exception.php', 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php', - 'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php', - 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php', - 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/Exception.php', - 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php', - 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/RuntimeException.php', - 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php', - 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php', - 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php', - 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php', - 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php', 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php', 'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php', ); diff --git a/tests/vendor/composer/autoload_namespaces.php b/tests/vendor/composer/autoload_namespaces.php index 4061f36e..b7fc0125 100644 --- a/tests/vendor/composer/autoload_namespaces.php +++ b/tests/vendor/composer/autoload_namespaces.php @@ -6,6 +6,4 @@ $baseDir = dirname($vendorDir); return array( - 'phpDocumentor' => array($vendorDir . '/phpdocumentor/reflection-docblock/src'), - 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'), ); diff --git a/tests/vendor/composer/autoload_psr4.php b/tests/vendor/composer/autoload_psr4.php index b367de02..3796afad 100644 --- a/tests/vendor/composer/autoload_psr4.php +++ b/tests/vendor/composer/autoload_psr4.php @@ -8,6 +8,4 @@ return array( 'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'), 'RedBeanPHP\\' => array($vendorDir . '/gabordemooij/redbean/RedBeanPHP'), - 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'), - 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'), ); diff --git a/tests/vendor/composer/autoload_real.php b/tests/vendor/composer/autoload_real.php index c461dade..46bf78dd 100644 --- a/tests/vendor/composer/autoload_real.php +++ b/tests/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit8f6844bbddfefd96f2f2ad7c3bd25af1 +class ComposerAutoloaderInit52a908cbd1faf9b4e4600893c0bf4674 { private static $loader; @@ -19,9 +19,9 @@ public static function getLoader() return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit8f6844bbddfefd96f2f2ad7c3bd25af1', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit52a908cbd1faf9b4e4600893c0bf4674', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit8f6844bbddfefd96f2f2ad7c3bd25af1', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit52a908cbd1faf9b4e4600893c0bf4674', 'loadClassLoader')); $includePaths = require __DIR__ . '/include_paths.php'; array_push($includePaths, get_include_path()); @@ -48,7 +48,7 @@ public static function getLoader() } } -function composerRequire8f6844bbddfefd96f2f2ad7c3bd25af1($file) +function composerRequire52a908cbd1faf9b4e4600893c0bf4674($file) { require $file; } diff --git a/tests/vendor/composer/include_paths.php b/tests/vendor/composer/include_paths.php index fc3fddeb..8134d0be 100644 --- a/tests/vendor/composer/include_paths.php +++ b/tests/vendor/composer/include_paths.php @@ -6,5 +6,9 @@ $baseDir = dirname($vendorDir); return array( + $vendorDir . '/phpunit/php-file-iterator', + $vendorDir . '/phpunit/phpunit-mock-objects', + $vendorDir . '/phpunit/phpunit', + $vendorDir . '/symfony/yaml', $vendorDir . '/phpunit/phpunit-selenium', ); diff --git a/tests/vendor/composer/installed.json b/tests/vendor/composer/installed.json index 6bd1ed5f..9c083599 100644 --- a/tests/vendor/composer/installed.json +++ b/tests/vendor/composer/installed.json @@ -1,48 +1,4 @@ [ - { - "name": "myclabs/deep-copy", - "version": "1.4.0", - "version_normalized": "1.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "d8093b631a31628342d0703764935f8bac2c56b1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/d8093b631a31628342d0703764935f8bac2c56b1", - "reference": "d8093b631a31628342d0703764935f8bac2c56b1", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "doctrine/collections": "1.*", - "phpunit/phpunit": "~4.1" - }, - "time": "2015-10-05 15:07:09", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "homepage": "https://github.com/myclabs/DeepCopy", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ] - }, { "name": "sebastian/version", "version": "1.0.6", @@ -80,239 +36,19 @@ "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version" }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "time": "2015-07-28 20:34:47", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations" - }, - { - "name": "sebastian/global-state", - "version": "1.1.1", - "version_normalized": "1.1.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, - "time": "2015-10-12 03:26:01", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ] - }, - { - "name": "sebastian/recursion-context", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "994d4a811bafe801fb06dccbee797863ba2792ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba", - "reference": "994d4a811bafe801fb06dccbee797863ba2792ba", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "time": "2015-06-21 08:04:50", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context" - }, - { - "name": "sebastian/exporter", - "version": "1.2.1", - "version_normalized": "1.2.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "7ae5513327cb536431847bcc0c10edba2701064e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e", - "reference": "7ae5513327cb536431847bcc0c10edba2701064e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "time": "2015-06-21 07:55:53", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ] - }, { "name": "sebastian/environment", - "version": "1.3.2", - "version_normalized": "1.3.2.0", + "version": "1.3.3", + "version_normalized": "1.3.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44" + "reference": "6e7133793a8e5a5714a551a8324337374be209df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44", - "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6e7133793a8e5a5714a551a8324337374be209df", + "reference": "6e7133793a8e5a5714a551a8324337374be209df", "shasum": "" }, "require": { @@ -321,7 +57,7 @@ "require-dev": { "phpunit/phpunit": "~4.4" }, - "time": "2015-08-03 06:14:51", + "time": "2015-12-02 08:37:27", "type": "library", "extra": { "branch-alias": { @@ -353,89 +89,25 @@ ] }, { - "name": "sebastian/diff", - "version": "1.3.0", - "version_normalized": "1.3.0.0", + "name": "phpunit/php-text-template", + "version": "1.2.1", + "version_normalized": "1.2.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", - "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "time": "2015-02-22 15:13:53", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "http://www.github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ] - }, - { - "name": "sebastian/comparator", - "version": "1.2.0", - "version_normalized": "1.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "time": "2015-07-26 15:48:44", + "time": "2015-06-21 13:50:34", "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "installation-source": "dist", "autoload": { "classmap": [ @@ -447,267 +119,199 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ - "comparator", - "compare", - "equality" + "template" ] }, { - "name": "symfony/yaml", - "version": "v2.7.6", - "version_normalized": "2.7.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "eca9019c88fbe250164affd107bc8057771f3f4d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/eca9019c88fbe250164affd107bc8057771f3f4d", - "reference": "eca9019c88fbe250164affd107bc8057771f3f4d", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "time": "2015-10-11 09:39:48", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com" - }, - { - "name": "doctrine/instantiator", - "version": "1.0.5", - "version_normalized": "1.0.5.0", + "name": "phpunit/php-token-stream", + "version": "1.4.8", + "version_normalized": "1.4.8.0", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "ext-tokenizer": "*", + "php": ">=5.3.3" }, "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "~4.2" }, - "time": "2015-06-14 21:17:01", + "time": "2015-09-15 10:49:45", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.4-dev" } }, "installation-source": "dist", "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", "keywords": [ - "constructor", - "instantiate" + "tokenizer" ] }, { - "name": "phpdocumentor/reflection-docblock", - "version": "2.0.4", - "version_normalized": "2.0.4.0", + "name": "phpunit/php-file-iterator", + "version": "1.3.4", + "version_normalized": "1.3.4.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "time": "2015-02-03 12:10:50", + "time": "2013-10-10 15:34:57", "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "installation-source": "dist", "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/" - ] - } + "classmap": [ + "File/" + ] }, "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" ] }, { - "name": "phpspec/prophecy", - "version": "v1.5.0", - "version_normalized": "1.5.0.0", + "name": "phpunit/php-code-coverage", + "version": "2.0.17", + "version_normalized": "2.0.17.0", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "c4e8e7725e351184a76544634855b8a9c405a6e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7", - "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c4e8e7725e351184a76544634855b8a9c405a6e3", + "reference": "c4e8e7725e351184a76544634855b8a9c405a6e3", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "phpdocumentor/reflection-docblock": "~2.0", - "sebastian/comparator": "~1.1" + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "~1.0", + "sebastian/version": "~1.0" }, "require-dev": { - "phpspec/phpspec": "~2.0" + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" }, - "time": "2015-08-13 10:07:40", + "time": "2015-05-25 05:11:59", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "installation-source": "dist", "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" + "coverage", + "testing", + "xunit" ] }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "version_normalized": "1.2.1.0", + "name": "phpunit/php-timer", + "version": "1.0.7", + "version_normalized": "1.0.7.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b", + "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "time": "2015-06-21 13:50:34", + "time": "2015-06-21 08:01:12", "type": "library", "installation-source": "dist", "autoload": { @@ -722,48 +326,46 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", + "email": "sb@sebastian-bergmann.de", "role": "lead" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "template" + "timer" ] }, { "name": "phpunit/phpunit-mock-objects", - "version": "3.0.3", - "version_normalized": "3.0.3.0", + "version": "2.0.10", + "version_normalized": "2.0.10.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "382c729a52b7ef682e94c73fd6868f5ee8116ba7" + "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/382c729a52b7ef682e94c73fd6868f5ee8116ba7", - "reference": "382c729a52b7ef682e94c73fd6868f5ee8116ba7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/e60bb929c50ae4237aaf680a4f6773f4ee17f0a2", + "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": ">=5.6", - "phpunit/php-text-template": "~1.2", - "sebastian/exporter": "~1.2" + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": ">=4.0.0,<4.1.0" }, "suggest": { "ext-soap": "*" }, - "time": "2015-10-18 07:55:54", + "time": "2014-06-12 07:19:48", "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "2.0.x-dev" } }, "installation-source": "dist", @@ -773,6 +375,9 @@ ] }, "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], "license": [ "BSD-3-Clause" ], @@ -791,71 +396,78 @@ ] }, { - "name": "phpunit/php-timer", - "version": "1.0.7", - "version_normalized": "1.0.7.0", + "name": "symfony/yaml", + "version": "v2.8.0", + "version_normalized": "2.8.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b" + "url": "https://github.com/symfony/yaml.git", + "reference": "f79824187de95064a2f5038904c4d7f0227fedb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b", - "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b", + "url": "https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5", + "reference": "f79824187de95064a2f5038904c4d7f0227fedb5", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, - "time": "2015-06-21 08:01:12", + "time": "2015-11-30 12:35:10", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, "installation-source": "dist", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ] + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com" }, { - "name": "phpunit/php-token-stream", - "version": "1.4.8", - "version_normalized": "1.4.8.0", + "name": "sebastian/diff", + "version": "1.4.1", + "version_normalized": "1.4.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", - "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", "shasum": "" }, "require": { - "ext-tokenizer": "*", "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "~4.8" }, - "time": "2015-09-15 10:49:45", + "time": "2015-12-08 07:14:41", "type": "library", "extra": { "branch-alias": { @@ -873,40 +485,47 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "tokenizer" + "diff" ] }, { - "name": "phpunit/php-file-iterator", - "version": "1.4.1", - "version_normalized": "1.4.1.0", + "name": "sebastian/exporter", + "version": "1.0.2", + "version_normalized": "1.0.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "c7d59948d6e82818e1bdff7cadb6c34710eb7dc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c7d59948d6e82818e1bdff7cadb6c34710eb7dc0", + "reference": "c7d59948d6e82818e1bdff7cadb6c34710eb7dc0", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "time": "2015-06-21 13:08:43", + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "time": "2014-09-10 00:51:36", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "1.0.x-dev" } }, "installation-source": "dist", @@ -920,56 +539,62 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", "keywords": [ - "filesystem", - "iterator" + "export", + "exporter" ] }, { - "name": "phpunit/php-code-coverage", - "version": "3.0.1", - "version_normalized": "3.0.1.0", + "name": "sebastian/comparator", + "version": "1.1.0", + "version_normalized": "1.1.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c84f05be256cd7c9d2340b26f7995b4afbf8787b" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "c484a80f97573ab934e37826dba0135a3301b26a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c84f05be256cd7c9d2340b26f7995b4afbf8787b", - "reference": "c84f05be256cd7c9d2340b26f7995b4afbf8787b", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/c484a80f97573ab934e37826dba0135a3301b26a", + "reference": "c484a80f97573ab934e37826dba0135a3301b26a", "shasum": "" }, "require": { - "php": ">=5.6", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "^1.3.2", - "sebastian/version": "~1.0" + "php": ">=5.3.3", + "sebastian/diff": "~1.1", + "sebastian/exporter": "~1.0" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~5" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" + "phpunit/phpunit": "~4.1" }, - "time": "2015-10-06 15:51:05", + "time": "2014-11-16 21:32:38", "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.1.x-dev" } }, "installation-source": "dist", @@ -983,69 +608,77 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", "keywords": [ - "coverage", - "testing", - "xunit" + "comparator", + "compare", + "equality" ] }, { "name": "phpunit/phpunit", - "version": "5.0.8", - "version_normalized": "5.0.8.0", + "version": "4.0.0", + "version_normalized": "4.0.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "97fb2503cf8caca9d768fde3cca2ab147b9e7030" + "reference": "b3a7c58bc39f01577f89d63da1ec578e1e993f1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/97fb2503cf8caca9d768fde3cca2ab147b9e7030", - "reference": "97fb2503cf8caca9d768fde3cca2ab147b9e7030", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b3a7c58bc39f01577f89d63da1ec578e1e993f1a", + "reference": "b3a7c58bc39f01577f89d63da1ec578e1e993f1a", "shasum": "" }, "require": { "ext-dom": "*", - "ext-json": "*", "ext-pcre": "*", "ext-reflection": "*", "ext-spl": "*", - "myclabs/deep-copy": "~1.3", - "php": ">=5.6", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "~3.0", - "phpunit/php-file-iterator": "~1.4", + "php": ">=5.3.3", + "phpunit/php-code-coverage": ">=2.0.0,<2.1.0", + "phpunit/php-file-iterator": "~1.3.1", "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": ">=1.0.6", - "phpunit/phpunit-mock-objects": ">=3.0", - "sebastian/comparator": "~1.1", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.3", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/resource-operations": "~1.0", + "phpunit/php-timer": "~1.0.2", + "phpunit/phpunit-mock-objects": ">=2.0.0,<2.1.0", + "sebastian/diff": "~1.1", + "sebastian/environment": "~1.0", + "sebastian/exporter": "~1.0.1", "sebastian/version": "~1.0", - "symfony/yaml": "~2.1|~3.0" + "symfony/yaml": "~2.0" }, "suggest": { + "ext-json": "*", + "ext-simplexml": "*", + "ext-tokenizer": "*", "phpunit/php-invoker": "~1.1" }, - "time": "2015-10-23 06:50:01", + "time": "2014-03-07 07:00:44", "bin": [ "phpunit" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0.x-dev" + "dev-master": "4.0.x-dev" } }, "installation-source": "dist", @@ -1055,6 +688,10 @@ ] }, "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "", + "../../symfony/yaml/" + ], "license": [ "BSD-3-Clause" ], @@ -1066,7 +703,7 @@ } ], "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", + "homepage": "http://www.phpunit.de/", "keywords": [ "phpunit", "testing", @@ -1075,27 +712,27 @@ }, { "name": "phpunit/phpunit-selenium", - "version": "1.4.1", - "version_normalized": "1.4.1.0", + "version": "1.4.2", + "version_normalized": "1.4.2.0", "source": { "type": "git", "url": "https://github.com/giorgiosironi/phpunit-selenium.git", - "reference": "83a2b834c8395ad9510f7c8f4f46d498ce88565b" + "reference": "c84dd7ca214563868ce216123b7ae9c792beb262" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/giorgiosironi/phpunit-selenium/zipball/83a2b834c8395ad9510f7c8f4f46d498ce88565b", - "reference": "83a2b834c8395ad9510f7c8f4f46d498ce88565b", + "url": "https://api.github.com/repos/giorgiosironi/phpunit-selenium/zipball/c84dd7ca214563868ce216123b7ae9c792beb262", + "reference": "c84dd7ca214563868ce216123b7ae9c792beb262", "shasum": "" }, "require": { "ext-curl": "*", "ext-dom": "*", "php": ">=5.3.3", - "phpunit/phpunit": ">=3.7", + "phpunit/phpunit": "~3.7|~4.0", "sebastian/comparator": "~1.0" }, - "time": "2014-08-18 19:47:10", + "time": "2014-11-02 09:23:27", "type": "library", "installation-source": "dist", "autoload": { @@ -1132,23 +769,23 @@ }, { "name": "gabordemooij/redbean", - "version": "v4.2.1", - "version_normalized": "4.2.1.0", + "version": "v4.3", + "version_normalized": "4.3.0.0", "source": { "type": "git", "url": "https://github.com/gabordemooij/redbean.git", - "reference": "13610146620d7c0a66215dcaf0c8796bb03a04aa" + "reference": "f375a1678d137ca1ff806813fac306723f97ec6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/gabordemooij/redbean/zipball/13610146620d7c0a66215dcaf0c8796bb03a04aa", - "reference": "13610146620d7c0a66215dcaf0c8796bb03a04aa", + "url": "https://api.github.com/repos/gabordemooij/redbean/zipball/f375a1678d137ca1ff806813fac306723f97ec6b", + "reference": "f375a1678d137ca1ff806813fac306723f97ec6b", "shasum": "" }, "require": { "php": ">=5.3.4" }, - "time": "2015-05-09 12:22:47", + "time": "2015-09-11 18:55:25", "type": "library", "installation-source": "dist", "autoload": { diff --git a/tests/vendor/doctrine/instantiator/.gitignore b/tests/vendor/doctrine/instantiator/.gitignore deleted file mode 100644 index e3e368dd..00000000 --- a/tests/vendor/doctrine/instantiator/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -phpunit.xml -composer.lock -build -vendor -coverage.clover diff --git a/tests/vendor/doctrine/instantiator/.scrutinizer.yml b/tests/vendor/doctrine/instantiator/.scrutinizer.yml deleted file mode 100644 index aad5e403..00000000 --- a/tests/vendor/doctrine/instantiator/.scrutinizer.yml +++ /dev/null @@ -1,46 +0,0 @@ -before_commands: - - "composer install --prefer-source" - -tools: - external_code_coverage: - timeout: 600 - php_code_coverage: - enabled: true - test_command: ./vendor/bin/phpunit - php_code_sniffer: - enabled: true - config: - standard: PSR2 - filter: - paths: ["src/*", "tests/*"] - php_cpd: - enabled: true - excluded_dirs: ["build/*", "tests", "vendor"] - php_cs_fixer: - enabled: true - config: - level: all - filter: - paths: ["src/*", "tests/*"] - php_loc: - enabled: true - excluded_dirs: ["build", "tests", "vendor"] - php_mess_detector: - enabled: true - config: - ruleset: phpmd.xml.dist - design_rules: { eval_expression: false } - filter: - paths: ["src/*"] - php_pdepend: - enabled: true - excluded_dirs: ["build", "tests", "vendor"] - php_analyzer: - enabled: true - filter: - paths: ["src/*", "tests/*"] - php_hhvm: - enabled: true - filter: - paths: ["src/*", "tests/*"] - sensiolabs_security_checker: true diff --git a/tests/vendor/doctrine/instantiator/.travis.install.sh b/tests/vendor/doctrine/instantiator/.travis.install.sh deleted file mode 100755 index 2819188c..00000000 --- a/tests/vendor/doctrine/instantiator/.travis.install.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -set -x -if [ "$TRAVIS_PHP_VERSION" = 'hhvm' ] || [ "$TRAVIS_PHP_VERSION" = 'hhvm-nightly' ] ; then - curl -sS https://getcomposer.org/installer > composer-installer.php - hhvm composer-installer.php - hhvm -v ResourceLimit.SocketDefaultTimeout=30 -v Http.SlowQueryThreshold=30000 composer.phar update --prefer-source -elif [ "$TRAVIS_PHP_VERSION" = '5.3.3' ] ; then - composer self-update - composer update --prefer-source --no-dev - composer dump-autoload -else - composer self-update - composer update --prefer-source -fi diff --git a/tests/vendor/doctrine/instantiator/.travis.yml b/tests/vendor/doctrine/instantiator/.travis.yml deleted file mode 100644 index 7f1ec5f9..00000000 --- a/tests/vendor/doctrine/instantiator/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -language: php - -php: - - 5.3.3 - - 5.3 - - 5.4 - - 5.5 - - 5.6 - - hhvm - -before_script: - - ./.travis.install.sh - - if [ $TRAVIS_PHP_VERSION = '5.6' ]; then PHPUNIT_FLAGS="--coverage-clover coverage.clover"; else PHPUNIT_FLAGS=""; fi - -script: - - if [ $TRAVIS_PHP_VERSION = '5.3.3' ]; then phpunit; fi - - if [ $TRAVIS_PHP_VERSION != '5.3.3' ]; then ./vendor/bin/phpunit $PHPUNIT_FLAGS; fi - - if [ $TRAVIS_PHP_VERSION != '5.3.3' ]; then ./vendor/bin/phpcs --standard=PSR2 ./src/ ./tests/; fi - - if [[ $TRAVIS_PHP_VERSION != '5.3.3' && $TRAVIS_PHP_VERSION != '5.4.29' && $TRAVIS_PHP_VERSION != '5.5.13' ]]; then php -n ./vendor/bin/athletic -p ./tests/DoctrineTest/InstantiatorPerformance/ -f GroupedFormatter; fi - -after_script: - - if [ $TRAVIS_PHP_VERSION = '5.6' ]; then wget https://scrutinizer-ci.com/ocular.phar; php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi diff --git a/tests/vendor/doctrine/instantiator/CONTRIBUTING.md b/tests/vendor/doctrine/instantiator/CONTRIBUTING.md deleted file mode 100644 index 75b84b2a..00000000 --- a/tests/vendor/doctrine/instantiator/CONTRIBUTING.md +++ /dev/null @@ -1,35 +0,0 @@ -# Contributing - - * Coding standard for the project is [PSR-2](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) - * The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php) - * Any contribution must provide tests for additional introduced conditions - * Any un-confirmed issue needs a failing test case before being accepted - * Pull requests must be sent from a new hotfix/feature branch, not from `master`. - -## Installation - -To install the project and run the tests, you need to clone it first: - -```sh -$ git clone git://github.com/doctrine/instantiator.git -``` - -You will then need to run a composer installation: - -```sh -$ cd Instantiator -$ curl -s https://getcomposer.org/installer | php -$ php composer.phar update -``` - -## Testing - -The PHPUnit version to be used is the one installed as a dev- dependency via composer: - -```sh -$ ./vendor/bin/phpunit -``` - -Accepted coverage for new contributions is 80%. Any contribution not satisfying this requirement -won't be merged. - diff --git a/tests/vendor/doctrine/instantiator/LICENSE b/tests/vendor/doctrine/instantiator/LICENSE deleted file mode 100644 index 4d983d1a..00000000 --- a/tests/vendor/doctrine/instantiator/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2014 Doctrine Project - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/tests/vendor/doctrine/instantiator/README.md b/tests/vendor/doctrine/instantiator/README.md deleted file mode 100644 index 393ec7ca..00000000 --- a/tests/vendor/doctrine/instantiator/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Instantiator - -This library provides a way of avoiding usage of constructors when instantiating PHP classes. - -[![Build Status](https://travis-ci.org/doctrine/instantiator.svg?branch=master)](https://travis-ci.org/doctrine/instantiator) -[![Code Coverage](https://scrutinizer-ci.com/g/doctrine/instantiator/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/doctrine/instantiator/?branch=master) -[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/doctrine/instantiator/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/doctrine/instantiator/?branch=master) -[![Dependency Status](https://www.versioneye.com/package/php--doctrine--instantiator/badge.svg)](https://www.versioneye.com/package/php--doctrine--instantiator) -[![HHVM Status](http://hhvm.h4cc.de/badge/doctrine/instantiator.png)](http://hhvm.h4cc.de/package/doctrine/instantiator) - -[![Latest Stable Version](https://poser.pugx.org/doctrine/instantiator/v/stable.png)](https://packagist.org/packages/doctrine/instantiator) -[![Latest Unstable Version](https://poser.pugx.org/doctrine/instantiator/v/unstable.png)](https://packagist.org/packages/doctrine/instantiator) - -## Installation - -The suggested installation method is via [composer](https://getcomposer.org/): - -```sh -php composer.phar require "doctrine/instantiator:~1.0.3" -``` - -## Usage - -The instantiator is able to create new instances of any class without using the constructor or any API of the class -itself: - -```php -$instantiator = new \Doctrine\Instantiator\Instantiator(); - -$instance = $instantiator->instantiate('My\\ClassName\\Here'); -``` - -## Contributing - -Please read the [CONTRIBUTING.md](CONTRIBUTING.md) contents if you wish to help out! - -## Credits - -This library was migrated from [ocramius/instantiator](https://github.com/Ocramius/Instantiator), which -has been donated to the doctrine organization, and which is now deprecated in favour of this package. diff --git a/tests/vendor/doctrine/instantiator/composer.json b/tests/vendor/doctrine/instantiator/composer.json deleted file mode 100644 index 4823890b..00000000 --- a/tests/vendor/doctrine/instantiator/composer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "doctrine/instantiator", - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "type": "library", - "license": "MIT", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "instantiate", - "constructor" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "require": { - "php": ">=5.3,<8.0-DEV" - }, - "require-dev": { - "ext-phar": "*", - "ext-pdo": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0", - "athletic/athletic": "~0.1.8" - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "autoload-dev": { - "psr-0": { - "DoctrineTest\\InstantiatorPerformance\\": "tests", - "DoctrineTest\\InstantiatorTest\\": "tests", - "DoctrineTest\\InstantiatorTestAsset\\": "tests" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} diff --git a/tests/vendor/doctrine/instantiator/phpmd.xml.dist b/tests/vendor/doctrine/instantiator/phpmd.xml.dist deleted file mode 100644 index 82541056..00000000 --- a/tests/vendor/doctrine/instantiator/phpmd.xml.dist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/tests/vendor/doctrine/instantiator/phpunit.xml.dist b/tests/vendor/doctrine/instantiator/phpunit.xml.dist deleted file mode 100644 index 0a8d5709..00000000 --- a/tests/vendor/doctrine/instantiator/phpunit.xml.dist +++ /dev/null @@ -1,22 +0,0 @@ - - - - ./tests/DoctrineTest/InstantiatorTest - - - - ./src - - - diff --git a/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php b/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php deleted file mode 100644 index 3065375a..00000000 --- a/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php +++ /dev/null @@ -1,29 +0,0 @@ -. - */ - -namespace Doctrine\Instantiator\Exception; - -/** - * Base exception marker interface for the instantiator component - * - * @author Marco Pivetta - */ -interface ExceptionInterface -{ -} diff --git a/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php b/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php deleted file mode 100644 index ea8d28c5..00000000 --- a/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,62 +0,0 @@ -. - */ - -namespace Doctrine\Instantiator\Exception; - -use InvalidArgumentException as BaseInvalidArgumentException; -use ReflectionClass; - -/** - * Exception for invalid arguments provided to the instantiator - * - * @author Marco Pivetta - */ -class InvalidArgumentException extends BaseInvalidArgumentException implements ExceptionInterface -{ - /** - * @param string $className - * - * @return self - */ - public static function fromNonExistingClass($className) - { - if (interface_exists($className)) { - return new self(sprintf('The provided type "%s" is an interface, and can not be instantiated', $className)); - } - - if (PHP_VERSION_ID >= 50400 && trait_exists($className)) { - return new self(sprintf('The provided type "%s" is a trait, and can not be instantiated', $className)); - } - - return new self(sprintf('The provided class "%s" does not exist', $className)); - } - - /** - * @param ReflectionClass $reflectionClass - * - * @return self - */ - public static function fromAbstractClass(ReflectionClass $reflectionClass) - { - return new self(sprintf( - 'The provided class "%s" is abstract, and can not be instantiated', - $reflectionClass->getName() - )); - } -} diff --git a/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php b/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php deleted file mode 100644 index 1681e56e..00000000 --- a/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php +++ /dev/null @@ -1,79 +0,0 @@ -. - */ - -namespace Doctrine\Instantiator\Exception; - -use Exception; -use ReflectionClass; -use UnexpectedValueException as BaseUnexpectedValueException; - -/** - * Exception for given parameters causing invalid/unexpected state on instantiation - * - * @author Marco Pivetta - */ -class UnexpectedValueException extends BaseUnexpectedValueException implements ExceptionInterface -{ - /** - * @param ReflectionClass $reflectionClass - * @param Exception $exception - * - * @return self - */ - public static function fromSerializationTriggeredException(ReflectionClass $reflectionClass, Exception $exception) - { - return new self( - sprintf( - 'An exception was raised while trying to instantiate an instance of "%s" via un-serialization', - $reflectionClass->getName() - ), - 0, - $exception - ); - } - - /** - * @param ReflectionClass $reflectionClass - * @param string $errorString - * @param int $errorCode - * @param string $errorFile - * @param int $errorLine - * - * @return UnexpectedValueException - */ - public static function fromUncleanUnSerialization( - ReflectionClass $reflectionClass, - $errorString, - $errorCode, - $errorFile, - $errorLine - ) { - return new self( - sprintf( - 'Could not produce an instance of "%s" via un-serialization, since an error was triggered ' - . 'in file "%s" at line "%d"', - $reflectionClass->getName(), - $errorFile, - $errorLine - ), - 0, - new Exception($errorString, $errorCode) - ); - } -} diff --git a/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php b/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php deleted file mode 100644 index 6d5b3b65..00000000 --- a/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php +++ /dev/null @@ -1,273 +0,0 @@ -. - */ - -namespace Doctrine\Instantiator; - -use Closure; -use Doctrine\Instantiator\Exception\InvalidArgumentException; -use Doctrine\Instantiator\Exception\UnexpectedValueException; -use Exception; -use ReflectionClass; - -/** - * {@inheritDoc} - * - * @author Marco Pivetta - */ -final class Instantiator implements InstantiatorInterface -{ - /** - * Markers used internally by PHP to define whether {@see \unserialize} should invoke - * the method {@see \Serializable::unserialize()} when dealing with classes implementing - * the {@see \Serializable} interface. - */ - const SERIALIZATION_FORMAT_USE_UNSERIALIZER = 'C'; - const SERIALIZATION_FORMAT_AVOID_UNSERIALIZER = 'O'; - - /** - * @var \Closure[] of {@see \Closure} instances used to instantiate specific classes - */ - private static $cachedInstantiators = array(); - - /** - * @var object[] of objects that can directly be cloned - */ - private static $cachedCloneables = array(); - - /** - * {@inheritDoc} - */ - public function instantiate($className) - { - if (isset(self::$cachedCloneables[$className])) { - return clone self::$cachedCloneables[$className]; - } - - if (isset(self::$cachedInstantiators[$className])) { - $factory = self::$cachedInstantiators[$className]; - - return $factory(); - } - - return $this->buildAndCacheFromFactory($className); - } - - /** - * Builds the requested object and caches it in static properties for performance - * - * @param string $className - * - * @return object - */ - private function buildAndCacheFromFactory($className) - { - $factory = self::$cachedInstantiators[$className] = $this->buildFactory($className); - $instance = $factory(); - - if ($this->isSafeToClone(new ReflectionClass($instance))) { - self::$cachedCloneables[$className] = clone $instance; - } - - return $instance; - } - - /** - * Builds a {@see \Closure} capable of instantiating the given $className without - * invoking its constructor. - * - * @param string $className - * - * @return Closure - */ - private function buildFactory($className) - { - $reflectionClass = $this->getReflectionClass($className); - - if ($this->isInstantiableViaReflection($reflectionClass)) { - return function () use ($reflectionClass) { - return $reflectionClass->newInstanceWithoutConstructor(); - }; - } - - $serializedString = sprintf( - '%s:%d:"%s":0:{}', - $this->getSerializationFormat($reflectionClass), - strlen($className), - $className - ); - - $this->checkIfUnSerializationIsSupported($reflectionClass, $serializedString); - - return function () use ($serializedString) { - return unserialize($serializedString); - }; - } - - /** - * @param string $className - * - * @return ReflectionClass - * - * @throws InvalidArgumentException - */ - private function getReflectionClass($className) - { - if (! class_exists($className)) { - throw InvalidArgumentException::fromNonExistingClass($className); - } - - $reflection = new ReflectionClass($className); - - if ($reflection->isAbstract()) { - throw InvalidArgumentException::fromAbstractClass($reflection); - } - - return $reflection; - } - - /** - * @param ReflectionClass $reflectionClass - * @param string $serializedString - * - * @throws UnexpectedValueException - * - * @return void - */ - private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, $serializedString) - { - set_error_handler(function ($code, $message, $file, $line) use ($reflectionClass, & $error) { - $error = UnexpectedValueException::fromUncleanUnSerialization( - $reflectionClass, - $message, - $code, - $file, - $line - ); - }); - - $this->attemptInstantiationViaUnSerialization($reflectionClass, $serializedString); - - restore_error_handler(); - - if ($error) { - throw $error; - } - } - - /** - * @param ReflectionClass $reflectionClass - * @param string $serializedString - * - * @throws UnexpectedValueException - * - * @return void - */ - private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, $serializedString) - { - try { - unserialize($serializedString); - } catch (Exception $exception) { - restore_error_handler(); - - throw UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $exception); - } - } - - /** - * @param ReflectionClass $reflectionClass - * - * @return bool - */ - private function isInstantiableViaReflection(ReflectionClass $reflectionClass) - { - if (\PHP_VERSION_ID >= 50600) { - return ! ($this->hasInternalAncestors($reflectionClass) && $reflectionClass->isFinal()); - } - - return \PHP_VERSION_ID >= 50400 && ! $this->hasInternalAncestors($reflectionClass); - } - - /** - * Verifies whether the given class is to be considered internal - * - * @param ReflectionClass $reflectionClass - * - * @return bool - */ - private function hasInternalAncestors(ReflectionClass $reflectionClass) - { - do { - if ($reflectionClass->isInternal()) { - return true; - } - } while ($reflectionClass = $reflectionClass->getParentClass()); - - return false; - } - - /** - * Verifies if the given PHP version implements the `Serializable` interface serialization - * with an incompatible serialization format. If that's the case, use serialization marker - * "C" instead of "O". - * - * @link http://news.php.net/php.internals/74654 - * - * @param ReflectionClass $reflectionClass - * - * @return string the serialization format marker, either self::SERIALIZATION_FORMAT_USE_UNSERIALIZER - * or self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER - */ - private function getSerializationFormat(ReflectionClass $reflectionClass) - { - if ($this->isPhpVersionWithBrokenSerializationFormat() - && $reflectionClass->implementsInterface('Serializable') - ) { - return self::SERIALIZATION_FORMAT_USE_UNSERIALIZER; - } - - return self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER; - } - - /** - * Checks whether the current PHP runtime uses an incompatible serialization format - * - * @return bool - */ - private function isPhpVersionWithBrokenSerializationFormat() - { - return PHP_VERSION_ID === 50429 || PHP_VERSION_ID === 50513; - } - - /** - * Checks if a class is cloneable - * - * @param ReflectionClass $reflection - * - * @return bool - */ - private function isSafeToClone(ReflectionClass $reflection) - { - if (method_exists($reflection, 'isCloneable') && ! $reflection->isCloneable()) { - return false; - } - - // not cloneable if it implements `__clone`, as we want to avoid calling it - return ! $reflection->hasMethod('__clone'); - } -} diff --git a/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php b/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php deleted file mode 100644 index b665bea8..00000000 --- a/tests/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php +++ /dev/null @@ -1,37 +0,0 @@ -. - */ - -namespace Doctrine\Instantiator; - -/** - * Instantiator provides utility methods to build objects without invoking their constructors - * - * @author Marco Pivetta - */ -interface InstantiatorInterface -{ - /** - * @param string $className - * - * @return object - * - * @throws \Doctrine\Instantiator\Exception\ExceptionInterface - */ - public function instantiate($className); -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorPerformance/InstantiatorPerformanceEvent.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorPerformance/InstantiatorPerformanceEvent.php deleted file mode 100644 index 3e8fc6ff..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorPerformance/InstantiatorPerformanceEvent.php +++ /dev/null @@ -1,96 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorPerformance; - -use Athletic\AthleticEvent; -use Doctrine\Instantiator\Instantiator; - -/** - * Performance tests for {@see \Doctrine\Instantiator\Instantiator} - * - * @author Marco Pivetta - */ -class InstantiatorPerformanceEvent extends AthleticEvent -{ - /** - * @var \Doctrine\Instantiator\Instantiator - */ - private $instantiator; - - /** - * {@inheritDoc} - */ - protected function setUp() - { - $this->instantiator = new Instantiator(); - - $this->instantiator->instantiate(__CLASS__); - $this->instantiator->instantiate('ArrayObject'); - $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SimpleSerializableAsset'); - $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset'); - $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\UnCloneableAsset'); - } - - /** - * @iterations 20000 - * @baseline - * @group instantiation - */ - public function testInstantiateSelf() - { - $this->instantiator->instantiate(__CLASS__); - } - - /** - * @iterations 20000 - * @group instantiation - */ - public function testInstantiateInternalClass() - { - $this->instantiator->instantiate('ArrayObject'); - } - - /** - * @iterations 20000 - * @group instantiation - */ - public function testInstantiateSimpleSerializableAssetClass() - { - $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SimpleSerializableAsset'); - } - - /** - * @iterations 20000 - * @group instantiation - */ - public function testInstantiateSerializableArrayObjectAsset() - { - $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset'); - } - - /** - * @iterations 20000 - * @group instantiation - */ - public function testInstantiateUnCloneableAsset() - { - $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\UnCloneableAsset'); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/InvalidArgumentExceptionTest.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/InvalidArgumentExceptionTest.php deleted file mode 100644 index 39d9b94d..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/InvalidArgumentExceptionTest.php +++ /dev/null @@ -1,83 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTest\Exception; - -use Doctrine\Instantiator\Exception\InvalidArgumentException; -use PHPUnit_Framework_TestCase; -use ReflectionClass; - -/** - * Tests for {@see \Doctrine\Instantiator\Exception\InvalidArgumentException} - * - * @author Marco Pivetta - * - * @covers \Doctrine\Instantiator\Exception\InvalidArgumentException - */ -class InvalidArgumentExceptionTest extends PHPUnit_Framework_TestCase -{ - public function testFromNonExistingTypeWithNonExistingClass() - { - $className = __CLASS__ . uniqid(); - $exception = InvalidArgumentException::fromNonExistingClass($className); - - $this->assertInstanceOf('Doctrine\\Instantiator\\Exception\\InvalidArgumentException', $exception); - $this->assertSame('The provided class "' . $className . '" does not exist', $exception->getMessage()); - } - - public function testFromNonExistingTypeWithTrait() - { - if (PHP_VERSION_ID < 50400) { - $this->markTestSkipped('Need at least PHP 5.4.0, as this test requires traits support to run'); - } - - $exception = InvalidArgumentException::fromNonExistingClass( - 'DoctrineTest\\InstantiatorTestAsset\\SimpleTraitAsset' - ); - - $this->assertSame( - 'The provided type "DoctrineTest\\InstantiatorTestAsset\\SimpleTraitAsset" is a trait, ' - . 'and can not be instantiated', - $exception->getMessage() - ); - } - - public function testFromNonExistingTypeWithInterface() - { - $exception = InvalidArgumentException::fromNonExistingClass('Doctrine\\Instantiator\\InstantiatorInterface'); - - $this->assertSame( - 'The provided type "Doctrine\\Instantiator\\InstantiatorInterface" is an interface, ' - . 'and can not be instantiated', - $exception->getMessage() - ); - } - - public function testFromAbstractClass() - { - $reflection = new ReflectionClass('DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset'); - $exception = InvalidArgumentException::fromAbstractClass($reflection); - - $this->assertSame( - 'The provided class "DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset" is abstract, ' - . 'and can not be instantiated', - $exception->getMessage() - ); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/UnexpectedValueExceptionTest.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/UnexpectedValueExceptionTest.php deleted file mode 100644 index 84154e73..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/UnexpectedValueExceptionTest.php +++ /dev/null @@ -1,69 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTest\Exception; - -use Doctrine\Instantiator\Exception\UnexpectedValueException; -use Exception; -use PHPUnit_Framework_TestCase; -use ReflectionClass; - -/** - * Tests for {@see \Doctrine\Instantiator\Exception\UnexpectedValueException} - * - * @author Marco Pivetta - * - * @covers \Doctrine\Instantiator\Exception\UnexpectedValueException - */ -class UnexpectedValueExceptionTest extends PHPUnit_Framework_TestCase -{ - public function testFromSerializationTriggeredException() - { - $reflectionClass = new ReflectionClass($this); - $previous = new Exception(); - $exception = UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $previous); - - $this->assertInstanceOf('Doctrine\\Instantiator\\Exception\\UnexpectedValueException', $exception); - $this->assertSame($previous, $exception->getPrevious()); - $this->assertSame( - 'An exception was raised while trying to instantiate an instance of "' - . __CLASS__ . '" via un-serialization', - $exception->getMessage() - ); - } - - public function testFromUncleanUnSerialization() - { - $reflection = new ReflectionClass('DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset'); - $exception = UnexpectedValueException::fromUncleanUnSerialization($reflection, 'foo', 123, 'bar', 456); - - $this->assertInstanceOf('Doctrine\\Instantiator\\Exception\\UnexpectedValueException', $exception); - $this->assertSame( - 'Could not produce an instance of "DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset" ' - . 'via un-serialization, since an error was triggered in file "bar" at line "456"', - $exception->getMessage() - ); - - $previous = $exception->getPrevious(); - - $this->assertInstanceOf('Exception', $previous); - $this->assertSame('foo', $previous->getMessage()); - $this->assertSame(123, $previous->getCode()); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/InstantiatorTest.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/InstantiatorTest.php deleted file mode 100644 index 0a2cb931..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/InstantiatorTest.php +++ /dev/null @@ -1,219 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTest; - -use Doctrine\Instantiator\Exception\UnexpectedValueException; -use Doctrine\Instantiator\Instantiator; -use PHPUnit_Framework_TestCase; -use ReflectionClass; - -/** - * Tests for {@see \Doctrine\Instantiator\Instantiator} - * - * @author Marco Pivetta - * - * @covers \Doctrine\Instantiator\Instantiator - */ -class InstantiatorTest extends PHPUnit_Framework_TestCase -{ - /** - * @var Instantiator - */ - private $instantiator; - - /** - * {@inheritDoc} - */ - protected function setUp() - { - $this->instantiator = new Instantiator(); - } - - /** - * @param string $className - * - * @dataProvider getInstantiableClasses - */ - public function testCanInstantiate($className) - { - $this->assertInstanceOf($className, $this->instantiator->instantiate($className)); - } - - /** - * @param string $className - * - * @dataProvider getInstantiableClasses - */ - public function testInstantiatesSeparateInstances($className) - { - $instance1 = $this->instantiator->instantiate($className); - $instance2 = $this->instantiator->instantiate($className); - - $this->assertEquals($instance1, $instance2); - $this->assertNotSame($instance1, $instance2); - } - - public function testExceptionOnUnSerializationException() - { - if (defined('HHVM_VERSION')) { - $this->markTestSkipped( - 'As of facebook/hhvm#3432, HHVM has no PDORow, and therefore ' - . ' no internal final classes that cannot be instantiated' - ); - } - - $className = 'DoctrineTest\\InstantiatorTestAsset\\UnserializeExceptionArrayObjectAsset'; - - if (\PHP_VERSION_ID >= 50600) { - $className = 'PDORow'; - } - - if (\PHP_VERSION_ID === 50429 || \PHP_VERSION_ID === 50513) { - $className = 'DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset'; - } - - $this->setExpectedException('Doctrine\\Instantiator\\Exception\\UnexpectedValueException'); - - $this->instantiator->instantiate($className); - } - - public function testNoticeOnUnSerializationException() - { - if (\PHP_VERSION_ID >= 50600) { - $this->markTestSkipped( - 'PHP 5.6 supports `ReflectionClass#newInstanceWithoutConstructor()` for some internal classes' - ); - } - - try { - $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\WakeUpNoticesAsset'); - - $this->fail('No exception was raised'); - } catch (UnexpectedValueException $exception) { - $wakeUpNoticesReflection = new ReflectionClass('DoctrineTest\\InstantiatorTestAsset\\WakeUpNoticesAsset'); - $previous = $exception->getPrevious(); - - $this->assertInstanceOf('Exception', $previous); - - // in PHP 5.4.29 and PHP 5.5.13, this case is not a notice, but an exception being thrown - if (! (\PHP_VERSION_ID === 50429 || \PHP_VERSION_ID === 50513)) { - $this->assertSame( - 'Could not produce an instance of "DoctrineTest\\InstantiatorTestAsset\WakeUpNoticesAsset" ' - . 'via un-serialization, since an error was triggered in file "' - . $wakeUpNoticesReflection->getFileName() . '" at line "36"', - $exception->getMessage() - ); - - $this->assertSame('Something went bananas while un-serializing this instance', $previous->getMessage()); - $this->assertSame(\E_USER_NOTICE, $previous->getCode()); - } - } - } - - /** - * @param string $invalidClassName - * - * @dataProvider getInvalidClassNames - */ - public function testInstantiationFromNonExistingClass($invalidClassName) - { - $this->setExpectedException('Doctrine\\Instantiator\\Exception\\InvalidArgumentException'); - - $this->instantiator->instantiate($invalidClassName); - } - - public function testInstancesAreNotCloned() - { - $className = 'TemporaryClass' . uniqid(); - - eval('namespace ' . __NAMESPACE__ . '; class ' . $className . '{}'); - - $instance = $this->instantiator->instantiate(__NAMESPACE__ . '\\' . $className); - - $instance->foo = 'bar'; - - $instance2 = $this->instantiator->instantiate(__NAMESPACE__ . '\\' . $className); - - $this->assertObjectNotHasAttribute('foo', $instance2); - } - - /** - * Provides a list of instantiable classes (existing) - * - * @return string[][] - */ - public function getInstantiableClasses() - { - $classes = array( - array('stdClass'), - array(__CLASS__), - array('Doctrine\\Instantiator\\Instantiator'), - array('Exception'), - array('PharException'), - array('DoctrineTest\\InstantiatorTestAsset\\SimpleSerializableAsset'), - array('DoctrineTest\\InstantiatorTestAsset\\ExceptionAsset'), - array('DoctrineTest\\InstantiatorTestAsset\\FinalExceptionAsset'), - array('DoctrineTest\\InstantiatorTestAsset\\PharExceptionAsset'), - array('DoctrineTest\\InstantiatorTestAsset\\UnCloneableAsset'), - array('DoctrineTest\\InstantiatorTestAsset\\XMLReaderAsset'), - ); - - if (\PHP_VERSION_ID === 50429 || \PHP_VERSION_ID === 50513) { - return $classes; - } - - $classes = array_merge( - $classes, - array( - array('PharException'), - array('ArrayObject'), - array('DoctrineTest\\InstantiatorTestAsset\\ArrayObjectAsset'), - array('DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset'), - ) - ); - - if (\PHP_VERSION_ID >= 50600) { - $classes[] = array('DoctrineTest\\InstantiatorTestAsset\\WakeUpNoticesAsset'); - $classes[] = array('DoctrineTest\\InstantiatorTestAsset\\UnserializeExceptionArrayObjectAsset'); - } - - return $classes; - } - - /** - * Provides a list of instantiable classes (existing) - * - * @return string[][] - */ - public function getInvalidClassNames() - { - $classNames = array( - array(__CLASS__ . uniqid()), - array('Doctrine\\Instantiator\\InstantiatorInterface'), - array('DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset'), - ); - - if (\PHP_VERSION_ID >= 50400) { - $classNames[] = array('DoctrineTest\\InstantiatorTestAsset\\SimpleTraitAsset'); - } - - return $classNames; - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/AbstractClassAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/AbstractClassAsset.php deleted file mode 100644 index fbe28ddd..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/AbstractClassAsset.php +++ /dev/null @@ -1,29 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -/** - * A simple asset for an abstract class - * - * @author Marco Pivetta - */ -abstract class AbstractClassAsset -{ -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ArrayObjectAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ArrayObjectAsset.php deleted file mode 100644 index 56146d70..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ArrayObjectAsset.php +++ /dev/null @@ -1,41 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -use ArrayObject; -use BadMethodCallException; - -/** - * Test asset that extends an internal PHP class - * - * @author Marco Pivetta - */ -class ArrayObjectAsset extends ArrayObject -{ - /** - * Constructor - should not be called - * - * @throws BadMethodCallException - */ - public function __construct() - { - throw new BadMethodCallException('Not supposed to be called!'); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ExceptionAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ExceptionAsset.php deleted file mode 100644 index 43bbe46b..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ExceptionAsset.php +++ /dev/null @@ -1,41 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -use BadMethodCallException; -use Exception; - -/** - * Test asset that extends an internal PHP base exception - * - * @author Marco Pivetta - */ -class ExceptionAsset extends Exception -{ - /** - * Constructor - should not be called - * - * @throws BadMethodCallException - */ - public function __construct() - { - throw new BadMethodCallException('Not supposed to be called!'); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/FinalExceptionAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/FinalExceptionAsset.php deleted file mode 100644 index 7d268f5b..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/FinalExceptionAsset.php +++ /dev/null @@ -1,41 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -use BadMethodCallException; -use Exception; - -/** - * Test asset that extends an internal PHP base exception - * - * @author Marco Pivetta - */ -final class FinalExceptionAsset extends Exception -{ - /** - * Constructor - should not be called - * - * @throws BadMethodCallException - */ - public function __construct() - { - throw new BadMethodCallException('Not supposed to be called!'); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharAsset.php deleted file mode 100644 index 553fd561..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharAsset.php +++ /dev/null @@ -1,41 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -use BadMethodCallException; -use Phar; - -/** - * Test asset that extends an internal PHP class - * - * @author Marco Pivetta - */ -class PharAsset extends Phar -{ - /** - * Constructor - should not be called - * - * @throws BadMethodCallException - */ - public function __construct() - { - throw new BadMethodCallException('Not supposed to be called!'); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharExceptionAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharExceptionAsset.php deleted file mode 100644 index 42bf73e7..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharExceptionAsset.php +++ /dev/null @@ -1,44 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -use BadMethodCallException; -use PharException; - -/** - * Test asset that extends an internal PHP class - * This class should be serializable without problems - * and without getting the "Erroneous data format for unserializing" - * error - * - * @author Marco Pivetta - */ -class PharExceptionAsset extends PharException -{ - /** - * Constructor - should not be called - * - * @throws BadMethodCallException - */ - public function __construct() - { - throw new BadMethodCallException('Not supposed to be called!'); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SerializableArrayObjectAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SerializableArrayObjectAsset.php deleted file mode 100644 index ba19aaf6..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SerializableArrayObjectAsset.php +++ /dev/null @@ -1,62 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -use ArrayObject; -use BadMethodCallException; -use Serializable; - -/** - * Serializable test asset that also extends an internal class - * - * @author Marco Pivetta - */ -class SerializableArrayObjectAsset extends ArrayObject implements Serializable -{ - /** - * Constructor - should not be called - * - * @throws BadMethodCallException - */ - public function __construct() - { - throw new BadMethodCallException('Not supposed to be called!'); - } - - /** - * {@inheritDoc} - */ - public function serialize() - { - return ''; - } - - /** - * {@inheritDoc} - * - * Should not be called - * - * @throws BadMethodCallException - */ - public function unserialize($serialized) - { - throw new BadMethodCallException('Not supposed to be called!'); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleSerializableAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleSerializableAsset.php deleted file mode 100644 index 39f84a6c..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleSerializableAsset.php +++ /dev/null @@ -1,61 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -use BadMethodCallException; -use Serializable; - -/** - * Base serializable test asset - * - * @author Marco Pivetta - */ -class SimpleSerializableAsset implements Serializable -{ - /** - * Constructor - should not be called - * - * @throws BadMethodCallException - */ - public function __construct() - { - throw new BadMethodCallException('Not supposed to be called!'); - } - - /** - * {@inheritDoc} - */ - public function serialize() - { - return ''; - } - - /** - * {@inheritDoc} - * - * Should not be called - * - * @throws BadMethodCallException - */ - public function unserialize($serialized) - { - throw new BadMethodCallException('Not supposed to be called!'); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleTraitAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleTraitAsset.php deleted file mode 100644 index 04e78069..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleTraitAsset.php +++ /dev/null @@ -1,29 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -/** - * A simple trait with no attached logic - * - * @author Marco Pivetta - */ -trait SimpleTraitAsset -{ -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnCloneableAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnCloneableAsset.php deleted file mode 100644 index 7d03bdab..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnCloneableAsset.php +++ /dev/null @@ -1,50 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -use BadMethodCallException; - -/** - * Base un-cloneable asset - * - * @author Marco Pivetta - */ -class UnCloneableAsset -{ - /** - * Constructor - should not be called - * - * @throws BadMethodCallException - */ - public function __construct() - { - throw new BadMethodCallException('Not supposed to be called!'); - } - - /** - * Magic `__clone` - should not be invoked - * - * @throws BadMethodCallException - */ - public function __clone() - { - throw new BadMethodCallException('Not supposed to be called!'); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnserializeExceptionArrayObjectAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnserializeExceptionArrayObjectAsset.php deleted file mode 100644 index b348a405..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnserializeExceptionArrayObjectAsset.php +++ /dev/null @@ -1,39 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -use ArrayObject; -use BadMethodCallException; - -/** - * A simple asset for an abstract class - * - * @author Marco Pivetta - */ -class UnserializeExceptionArrayObjectAsset extends ArrayObject -{ - /** - * {@inheritDoc} - */ - public function __wakeup() - { - throw new BadMethodCallException(); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/WakeUpNoticesAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/WakeUpNoticesAsset.php deleted file mode 100644 index 18dc6711..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/WakeUpNoticesAsset.php +++ /dev/null @@ -1,38 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -use ArrayObject; - -/** - * A simple asset for an abstract class - * - * @author Marco Pivetta - */ -class WakeUpNoticesAsset extends ArrayObject -{ - /** - * Wakeup method called after un-serialization - */ - public function __wakeup() - { - trigger_error('Something went bananas while un-serializing this instance'); - } -} diff --git a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/XMLReaderAsset.php b/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/XMLReaderAsset.php deleted file mode 100644 index 39ee6992..00000000 --- a/tests/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/XMLReaderAsset.php +++ /dev/null @@ -1,41 +0,0 @@ -. - */ - -namespace DoctrineTest\InstantiatorTestAsset; - -use BadMethodCallException; -use XMLReader; - -/** - * Test asset that extends an internal PHP class - * - * @author Dave Marshall - */ -class XMLReaderAsset extends XMLReader -{ - /** - * Constructor - should not be called - * - * @throws BadMethodCallException - */ - public function __construct() - { - throw new BadMethodCallException('Not supposed to be called!'); - } -} diff --git a/tests/vendor/gabordemooij/redbean/README.markdown b/tests/vendor/gabordemooij/redbean/README.markdown index 36f9a816..df47f4d9 100755 --- a/tests/vendor/gabordemooij/redbean/README.markdown +++ b/tests/vendor/gabordemooij/redbean/README.markdown @@ -9,6 +9,22 @@ RedBeanPHP is an easy to use ORM tool for PHP. * No configuration, just fire and forget * No complicated package tools, no autoloaders, just ONE file +Installation via Composer +------------------------- + +Just open your composer.json file and add the package name ```(e.g. "gabordemooij/redbean": "dev-master")``` in your require list. + +```json +{ + "require": { + "gabordemooij/redbean": "dev-master" + } +} +``` + +If you not using composer then [try it.](http://redbeanphp.com/install) + + Quick Example ------------- diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Adapter.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Adapter.php index 234cb1ad..fbef8f1c 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Adapter.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Adapter.php @@ -1,4 +1,4 @@ -oodb->isFrozen() || !$this->writer->sqlStateIn( $exception->getSQLState(), array( @@ -74,9 +67,6 @@ private function handleException(\Exception $exception ) * @param array $bindings bindings for query * * @return array - * - * @throws Security - * @throws SQL */ private function relatedRows( $bean, $type, $sql = '', $bindings = array() ) { @@ -100,8 +90,6 @@ private function relatedRows( $bean, $type, $sql = '', $bindings = array() ) * @param OODBBean $bean2 second bean * @param OODBBean $bean base bean (association record) * - * @throws\Exception|SQL - * * @return mixed */ protected function associateBeans( OODBBean $bean1, OODBBean $bean2, OODBBean $bean ) @@ -174,7 +162,7 @@ public function getTable( $types ) * This method will associate two beans and store the connection between the * two in a link table. Instead of two single beans this method also accepts * two sets of beans. Returns the ID or the IDs of the linking beans. - * + * * @param OODBBean|array $beans1 one or more beans to form the association * @param OODBBean|array $beans2 one or more beans to form the association * @@ -209,13 +197,11 @@ public function associate( $beans1, $beans2 ) * SQL snippet for additional filtering. * * @param OODBBean|array $bean a bean object or an array of beans - * @param string $type type of bean you're interested in - * @param string $sql SQL snippet (optional) - * @param array $bindings bindings for your SQL string + * @param string $type type of bean you're interested in + * @param string $sql SQL snippet (optional) + * @param array $bindings bindings for your SQL string * * @return integer - * - * @throws Security */ public function relatedCount( $bean, $type, $sql = NULL, $bindings = array() ) { @@ -249,9 +235,9 @@ public function relatedCount( $bean, $type, $sql = NULL, $bindings = array() ) * set to boolean TRUE this method will remove the beans without their consent, * bypassing FUSE. This can be used to improve performance. * - * @param OODBBean $bean1 first bean - * @param OODBBean $bean2 second bean - * @param boolean $fast If TRUE, removes the entries by query without FUSE + * @param OODBBean $bean1 first bean in target association + * @param OODBBean $bean2 second bean in target association + * @param boolean $fast if TRUE, removes the entries by query without FUSE * * @return void */ @@ -299,7 +285,7 @@ public function unassociate( $beans1, $beans2, $fast = NULL ) * with unassociate() instead. (that might be slower though) * * @param OODBBean $bean reference bean - * @param string $type type of beans that need to be unassociated + * @param string $type type of beans that need to be unassociated * * @return void */ @@ -328,11 +314,10 @@ public function clearRelations( OODBBean $bean, $type ) * Since 3.2, you can now also pass an array of beans instead just one * bean as the first parameter. * - * @param OODBBean|array $bean the bean you have - * @param string $type the type of beans you want - * @param string $sql SQL snippet for extra filtering - * @param array $bindings values to be inserted in SQL slots - * @param boolean $glue whether the SQL should be prefixed with WHERE + * @param OODBBean|array $bean the bean you have + * @param string $type the type of beans you want + * @param string $sql SQL snippet for extra filtering + * @param array $bindings values to be inserted in SQL slots * * @return array */ diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanCollection.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanCollection.php index cad1aafa..25ab5017 100644 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanCollection.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanCollection.php @@ -44,10 +44,10 @@ class BeanCollection * @var string */ protected $type = NULL; - + /** * Constructor, creates a new instance of the BeanCollection. - * + * * @param string $type type of beans in this collection * @param Repository $repository repository to use to generate bean objects * @param Cursor $cursor cursor object to use diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanHelper.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanHelper.php index 3e28dbe8..867bc978 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanHelper.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanHelper.php @@ -7,7 +7,7 @@ /** * Bean Helper Interface. - * + * * Interface for Bean Helper. * A little bolt that glues the whole machinery together. * @@ -28,7 +28,7 @@ interface BeanHelper * as such the bean is a proxy for OODB. This allows beans to implement * their magic getters and setters and return lists. * - * @return ToolBox $toolbox toolbox + * @return ToolBox */ public function getToolbox(); @@ -46,9 +46,9 @@ public function getExtractedToolbox(); * Given a certain bean this method will * return the corresponding model. * - * @param OODBBean $bean + * @param OODBBean $bean bean to obtain the corresponding model of * - * @return object + * @return SimpleModel|CustomModel */ public function getModelForBean( OODBBean $bean ); } diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanHelper/SimpleFacadeBeanHelper.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanHelper/SimpleFacadeBeanHelper.php index ebfeac12..4be2e6fa 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanHelper/SimpleFacadeBeanHelper.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/BeanHelper/SimpleFacadeBeanHelper.php @@ -50,11 +50,11 @@ public static function factory( $modelClassName ) * Sets the factory function to create the model when using FUSE * to connect a bean to a model. * - * @param closure $factory + * @param closure $factory factory function * * @return void */ - public static function setFactoryFunction( $factory ) + public static function setFactoryFunction( $factory ) { self::$factory = $factory; } @@ -86,7 +86,7 @@ public function getModelForBean( OODBBean $bean ) if ( !class_exists( $modelName ) ) { //second try $modelName = $prefix . ucfirst( $model ); - + if ( !class_exists( $modelName ) ) { return NULL; } diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Driver.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Driver.php index 618d4ab1..befd7b1e 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Driver.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Driver.php @@ -1,4 +1,4 @@ -123) will bind the integer 123 to the key :key in the * SQL. This method has no return value. * - * @param string $sql SQL Code to execute + * @param string $sql SQL query to execute * @param array $bindings list of values to bind to SQL snippet * * @return array Affected Rows @@ -106,8 +106,8 @@ public function Affected_Rows(); /** * Returns a cursor-like object from the database. * - * @param string $sql SQL code to execute - * @param array $bindings Bindings + * @param string $sql SQL query to execute + * @param array $bindings list of values to bind to SQL snippet * * @return mixed */ @@ -120,11 +120,12 @@ public function GetCursor( $sql, $bindings = array() ); * passes on to the screen for inspection. * This method has no return value. * - * @param boolean $trueFalse turn on/off + * @param boolean $tf TRUE = debug mode ON + * @param Logger $customLogger * * @return void */ - public function setDebugMode( $tf ); + public function setDebugMode( $tf, $customLogger ); /** * Starts a transaction. diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Driver/RPDO.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Driver/RPDO.php index 3063af16..10339865 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Driver/RPDO.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Driver/RPDO.php @@ -130,9 +130,9 @@ protected function bindParams( $statement, $bindings ) * * @param string $sql the SQL string to be send to database server * @param array $bindings the values that need to get bound to the query slots + * @param array $options * - * @return void - * + * @return mixed * @throws SQL */ protected function runQuery( $sql, $bindings, $options = array() ) @@ -168,7 +168,7 @@ protected function runQuery( $sql, $bindings, $options = array() ) } else { $this->resultArray = array(); } - } catch (\PDOException $e ) { + } catch ( \PDOException $e ) { //Unfortunately the code field is supposed to be int by default (php) //So we need a property to convey the SQL State code. $err = $e->getMessage(); @@ -184,11 +184,13 @@ protected function runQuery( $sql, $bindings, $options = array() ) * MySQL < 5.5 does not support proper 4 byte unicode but they * seem to have added it with version 5.5 under a different label: utf8mb4. * We try to select the best possible charset based on your version data. + * + * @return void */ protected function setEncoding() { - $driver = $this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME ); - $version = floatval( $this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION ) ); + $driver = $this->pdo->getAttribute( \PDO::ATTR_DRIVER_NAME ); + $version = floatval( $this->pdo->getAttribute( \PDO::ATTR_SERVER_VERSION ) ); if ($driver === 'mysql') { $encoding = ($version >= 5.5) ? 'utf8mb4' : 'utf8'; $this->pdo->setAttribute(\PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES '.$encoding ); //on every re-connect @@ -205,10 +207,11 @@ protected function setEncoding() * $driver = new RPDO($dsn, $user, $password); * $driver = new RPDO($existingConnection); * - * @param string|object $dsn database connection string - * @param string $user optional, usename to sign in - * @param string $pass optional, password for connection login + * @param string|object $dsn database connection string + * @param string $user optional, usename to sign in + * @param string $pass optional, password for connection login * + * @return void */ public function __construct( $dsn, $user = NULL, $pass = NULL ) { @@ -216,8 +219,8 @@ public function __construct( $dsn, $user = NULL, $pass = NULL ) $this->pdo = $dsn; $this->isConnected = TRUE; $this->setEncoding(); - $this->pdo->setAttribute(\PDO::ATTR_ERRMODE,\PDO::ERRMODE_EXCEPTION ); - $this->pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE,\PDO::FETCH_ASSOC ); + $this->pdo->setAttribute( \PDO::ATTR_ERRMODE,\PDO::ERRMODE_EXCEPTION ); + $this->pdo->setAttribute( \PDO::ATTR_DEFAULT_FETCH_MODE,\PDO::FETCH_ASSOC ); // make sure that the dsn at least contains the type $this->dsn = $this->getDatabaseType(); } else { @@ -286,8 +289,6 @@ public function setMaxIntBind( $max ) * UTF8 for the database and PDO-ERRMODE-EXCEPTION as well as * PDO-FETCH-ASSOC. * - * @throws\PDOException - * * @return void */ public function connect() @@ -531,7 +532,7 @@ public function getDatabaseType() /** * Returns the version number of the database. * - * @return mixed $version version number of the database + * @return mixed */ public function getDatabaseVersion() { @@ -551,7 +552,7 @@ public function getPDO() } /** - * Closes database connection by destructing\PDO. + * Closes database connection by destructing PDO. * * @return void */ @@ -562,7 +563,7 @@ public function close() } /** - * Returns TRUE if the current\PDO instance is connected. + * Returns TRUE if the current PDO instance is connected. * * @return boolean */ diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/DuplicationManager.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/DuplicationManager.php index e2d8e174..d816796f 100644 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/DuplicationManager.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/DuplicationManager.php @@ -278,11 +278,15 @@ public function camelfy( $array, $dolphinMode = false ) { * * This method allows two array formats: * + * * array( TABLE1, TABLE2 ... ) + * * * or * + * * array( TABLE1 => array( COLUMN1, COLUMN2 ... ) ... ) + * * * @param array $tables a table cache array * @@ -335,6 +339,8 @@ public function setCacheTables( $yesNo ) * the default behavior. * * @param array $filters list of tables to be filtered + * + * @return void */ public function setFilters( $filters ) { diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Facade.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Facade.php index f3888af3..2232331e 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Facade.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Facade.php @@ -2,35 +2,29 @@ namespace RedBeanPHP; -use RedBeanPHP\ToolBox as ToolBox; -use RedBeanPHP\OODB as OODB; use RedBeanPHP\QueryWriter as QueryWriter; use RedBeanPHP\Adapter\DBAdapter as DBAdapter; -use RedBeanPHP\AssociationManager as AssociationManager; -use RedBeanPHP\TagManager as TagManager; -use RedBeanPHP\DuplicationManager as DuplicationManager; -use RedBeanPHP\LabelMaker as LabelMaker; -use RedBeanPHP\Finder as Finder; use RedBeanPHP\RedException\SQL as SQLException; -use RedBeanPHP\RedException\Security as Security; use RedBeanPHP\Logger as Logger; use RedBeanPHP\Logger\RDefault as RDefault; use RedBeanPHP\Logger\RDefault\Debug as Debug; -use RedBeanPHP\OODBBean as OODBBean; -use RedBeanPHP\SimpleModel as SimpleModel; -use RedBeanPHP\SimpleModelHelper as SimpleModelHelper; use RedBeanPHP\Adapter as Adapter; use RedBeanPHP\QueryWriter\AQueryWriter as AQueryWriter; use RedBeanPHP\RedException as RedException; use RedBeanPHP\BeanHelper\SimpleFacadeBeanHelper as SimpleFacadeBeanHelper; use RedBeanPHP\Driver\RPDO as RPDO; +use RedBeanPHP\Util\MultiLoader as MultiLoader; +use RedBeanPHP\Util\Transaction as Transaction; +use RedBeanPHP\Util\Dump as Dump; +use RedBeanPHP\Util\DispenseHelper as DispenseHelper; +use RedBeanPHP\Util\ArrayTool as ArrayTool; /** * RedBean Facade * * Version Information - * RedBean Version @version 4.2 - * + * RedBean Version @version 4.3 + * * This class hides the object landscape of * RedBeanPHP behind a single letter class providing * almost all functionality with simple static calls. @@ -49,7 +43,7 @@ class Facade /** * RedBeanPHP version constant. */ - const C_REDBEANPHP_VERSION = '4.2'; + const C_REDBEANPHP_VERSION = '4.3'; /** * @var ToolBox @@ -110,7 +104,7 @@ class Facade * @var string */ private static $exportCaseStyle = 'default'; - + /** * Not in use (backward compatibility SQLHelper) */ @@ -130,8 +124,6 @@ class Facade * Internal Query function, executes the desired query. Used by * all facade query functions. This keeps things DRY. * - * @throws SQL - * * @param string $method desired query method (i.e. 'cell', 'col', 'exec' etc..) * @param string $sql the sql you want to execute * @param array $bindings array of values to be bound to query statement @@ -231,62 +223,38 @@ public static function setNarrowFieldMode( $mode ) } /** - * Starts a transaction within a closure (or other valid callback). - * If an\Exception is thrown inside, the operation is automatically rolled back. - * If no\Exception happens, it commits automatically. + * Wraps a transaction around a closure or string callback. + * If an Exception is thrown inside, the operation is automatically rolled back. + * If no Exception happens, it commits automatically. * It also supports (simulated) nested transactions (that is useful when * you have many methods that needs transactions but are unaware of * each other). - * ex: - * $from = 1; - * $to = 2; - * $amount = 300; * - * R::transaction(function() use($from, $to, $amount) - * { - * $accountFrom = R::load('account', $from); - * $accountTo = R::load('account', $to); - * - * $accountFrom->money -= $amount; - * $accountTo->money += $amount; + * Example: * - * R::store($accountFrom); - * R::store($accountTo); - * }); + * + * $from = 1; + * $to = 2; + * $amount = 300; + * + * R::transaction(function() use($from, $to, $amount) + * { + * $accountFrom = R::load('account', $from); + * $accountTo = R::load('account', $to); + * $accountFrom->money -= $amount; + * $accountTo->money += $amount; + * R::store($accountFrom); + * R::store($accountTo); + * }); + * * * @param callable $callback Closure (or other callable) with the transaction logic * - * @throws Security - * * @return mixed - * */ public static function transaction( $callback ) { - if ( !is_callable( $callback ) ) { - throw new RedException( 'R::transaction needs a valid callback.' ); - } - - static $depth = 0; - $result = null; - try { - if ( $depth == 0 ) { - self::begin(); - } - $depth++; - $result = call_user_func( $callback ); //maintain 5.2 compatibility - $depth--; - if ( $depth == 0 ) { - self::commit(); - } - } catch (\Exception $exception ) { - $depth--; - if ( $depth == 0 ) { - self::rollback(); - } - throw $exception; - } - return $result; + return Transaction::transaction( self::$adapter, $callback ); } /** @@ -295,8 +263,10 @@ public static function transaction( $callback ) * * Usage: * + * * R::addDatabase( 'database-1', 'sqlite:/tmp/db1.txt' ); * R::selectDatabase( 'database-1' ); //to select database again + * * * This method allows you to dynamically add (and select) new databases * to the facade. Adding a database with the same key will cause an exception. @@ -325,16 +295,19 @@ public static function addDatabase( $key, $dsn, $user = NULL, $pass = NULL, $fro $adapter = new DBAdapter( $db ); - $writers = array( - 'pgsql' => 'PostgreSQL', - 'sqlite' => 'SQLiteT', - 'cubrid' => 'CUBRID', - 'mysql' => 'MySQL', - 'sqlsrv' => 'SQLServer', - ); + $writers = array( + 'pgsql' => 'PostgreSQL', + 'sqlite' => 'SQLiteT', + 'cubrid' => 'CUBRID', + 'mysql' => 'MySQL', + 'sqlsrv' => 'SQLServer', + ); $wkey = trim( strtolower( $dbType ) ); - if ( !isset( $writers[$wkey] ) ) trigger_error( 'Unsupported DSN: '.$wkey ); + if ( !isset( $writers[$wkey] ) ) { + $wkey = preg_replace( '/\W/', '' , $wkey ); + throw new RedException( 'Unsupported database ('.$wkey.').' ); + } $writerClass = '\\RedBeanPHP\\QueryWriter\\'.$writers[$wkey]; $writer = new $writerClass( $adapter ); $redbean = new OODB( $writer, $frozen ); @@ -362,6 +335,10 @@ public static function selectDatabase( $key ) return FALSE; } + if ( !isset( self::$toolboxes[$key] ) ) { + throw new RedException( 'Database not found in registry. Add database using R::addDatabase().' ); + } + self::configureFacadeWithToolbox( self::$toolboxes[$key] ); self::$currentDB = $key; @@ -379,9 +356,8 @@ public static function selectDatabase( $key ) * @param boolean $tf debug mode (true or false) * @param integer $mode (0 = to STDOUT, 1 = to ARRAY) * - * @throws Security - * * @return RDefault + * @throws RedException */ public static function debug( $tf = TRUE, $mode = 0 ) { @@ -450,8 +426,6 @@ public static function inspect( $type = NULL ) * @param OODBBean|SimpleModel $bean bean to store * * @return integer|string - * - * @throws Security */ public static function store( $bean ) { @@ -480,28 +454,16 @@ public static function freeze( $tf = TRUE ) * for loading a one-to-one relation. * * Usage: - * list($author, $bio) = R::load('author, bio', $id); + * list( $author, $bio ) = R::loadMulti( 'author, bio', $id ); * - * @param string|array $types - * @param mixed $id + * @param string|array $types the set of types to load at once + * @param mixed $id the common ID * * @return OODBBean */ public static function loadMulti( $types, $id ) { - if ( is_string( $types ) ) { - $types = explode( ',', $types ); - } - - if ( !is_array( $types ) ) { - return array(); - } - - foreach ( $types as $k => $typeItem ) { - $types[$k] = self::$redbean->load( $typeItem, $id ); - } - - return $types; + return MultiLoader::load( self::$redbean, $types, $id ); } /** @@ -524,8 +486,6 @@ public static function loadMulti( $types, $id ) * @param string $type type of bean you want to load * @param integer $id ID of the bean you want to load * - * @throws SQL - * * @return OODBBean */ public static function load( $type, $id ) @@ -543,7 +503,7 @@ public static function load( $type, $id ) * and THEN trash it. * * @param string|OODBBean|SimpleModel $bean bean you want to remove from database - * @param integer $id (optional) + * @param integer $id ID if the bean to trash (optional, type-id variant only) * * @return void */ @@ -559,41 +519,13 @@ public static function trash( $beanOrType, $id = NULL ) * * @param string|array $typeOrBeanArray type or bean array to import * @param integer $number number of beans to dispense - * @param boolean $alwaysReturnArray if TRUE always returns the result as an array + * @param boolean $alwaysReturnArray if TRUE always returns the result as an array * * @return array|OODBBean - * - * @throws Security */ public static function dispense( $typeOrBeanArray, $num = 1, $alwaysReturnArray = FALSE ) { - if ( is_array($typeOrBeanArray) ) { - - if ( !isset( $typeOrBeanArray['_type'] ) ) { - $list = array(); - foreach( $typeOrBeanArray as $beanArray ) if ( !( is_array( $beanArray ) && isset( $beanArray['_type'] ) ) ) throw new RedException( 'Invalid Array Bean' ); - foreach( $typeOrBeanArray as $beanArray ) $list[] = self::dispense( $beanArray ); - return $list; - } - - $import = $typeOrBeanArray; - $type = $import['_type']; - unset( $import['_type'] ); - } else { - $type = $typeOrBeanArray; - } - - if ( !preg_match( '/^[a-z0-9]+$/', $type ) ) { - throw new RedException( 'Invalid type: ' . $type ); - } - - $beanOrBeans = self::$redbean->dispense( $type, $num, $alwaysReturnArray ); - - if ( isset( $import ) ) { - $beanOrBeans->import( $import ); - } - - return $beanOrBeans; + return DispenseHelper::dispense( self::$redbean, $typeOrBeanArray, $num, $alwaysReturnArray ); } /** @@ -603,14 +535,18 @@ public static function dispense( $typeOrBeanArray, $num = 1, $alwaysReturnArray * * Usage: * - * list($book, $page, $text) = R::dispenseAll('book,page,text'); + * + * list( $book, $page, $text ) = R::dispenseAll( 'book,page,text' ); + * * * This will dispense a book, a page and a text. This way you can * quickly dispense beans of various types in just one line of code. * * Usage: * + * * list($book, $pages) = R::dispenseAll('book,page*100'); + * * * This returns an array with a book bean and then another array * containing 100 page beans. @@ -622,21 +558,7 @@ public static function dispense( $typeOrBeanArray, $num = 1, $alwaysReturnArray */ public static function dispenseAll( $order, $onlyArrays = FALSE ) { - - $list = array(); - - foreach( explode( ',', $order ) as $order ) { - if ( strpos( $order, '*' ) !== false ) { - list( $type, $amount ) = explode( '*', $order ); - } else { - $type = $order; - $amount = 1; - } - - $list[] = self::dispense( $type, $amount, $onlyArrays ); - } - - return $list; + return DispenseHelper::dispenseAll( self::$redbean, $order, $onlyArrays ); } /** @@ -661,9 +583,9 @@ public static function findOrDispense( $type, $sql = NULL, $bindings = array() ) * array parameter; you can either use the question mark notation * or the slot-notation (:keyname). * - * @param string $type type the type of bean you are looking for - * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause - * @param array $bindings values array of values to be bound to parameters in query + * @param string $type the type of bean you are looking for + * @param string $sql SQL query to find the desired bean, starting right after WHERE clause + * @param array $bindings array of values to be bound to parameters in query * * @return array */ @@ -681,9 +603,9 @@ public static function find( $type, $sql = NULL, $bindings = array() ) * * Your SQL does not have to start with a valid WHERE-clause condition. * - * @param string $type type the type of bean you are looking for - * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause - * @param array $bindings values array of values to be bound to parameters in query + * @param string $type the type of bean you are looking for + * @param string $sql SQL query to find the desired bean, starting right after WHERE clause + * @param array $bindings array of values to be bound to parameters in query * * @return array */ @@ -696,9 +618,9 @@ public static function findAll( $type, $sql = NULL, $bindings = array() ) * @see Facade::find * The variation also exports the beans (i.e. it returns arrays). * - * @param string $type type the type of bean you are looking for - * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause - * @param array $bindings values array of values to be bound to parameters in query + * @param string $type the type of bean you are looking for + * @param string $sql SQL query to find the desired bean, starting right after WHERE clause + * @param array $bindings array of values to be bound to parameters in query * * @return array */ @@ -711,9 +633,9 @@ public static function findAndExport( $type, $sql = NULL, $bindings = array() ) * @see Facade::find * This variation returns the first bean only. * - * @param string $type type the type of bean you are looking for - * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause - * @param array $bindings values array of values to be bound to parameters in query + * @param string $type the type of bean you are looking for + * @param string $sql SQL query to find the desired bean, starting right after WHERE clause + * @param array $bindings array of values to be bound to parameters in query * * @return OODBBean */ @@ -726,9 +648,9 @@ public static function findOne( $type, $sql = NULL, $bindings = array() ) * @see Facade::find * This variation returns the last bean only. * - * @param string $type type the type of bean you are looking for - * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause - * @param array $bindings values array of values to be bound to parameters in query + * @param string $type the type of bean you are looking for + * @param string $sql SQL query to find the desired bean, starting right after WHERE clause + * @param array $bindings array of values to be bound to parameters in query * * @return OODBBean */ @@ -741,9 +663,9 @@ public static function findLast( $type, $sql = NULL, $bindings = array() ) * Finds a bean collection. * Use this for large datasets. * - * @param string $type type the type of bean you are looking for - * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause - * @param array $bindings values array of values to be bound to parameters in query + * @param string $type the type of bean you are looking for + * @param string $sql SQL query to find the desired bean, starting right after WHERE clause + * @param array $bindings array of values to be bound to parameters in query * * @return BeanCollection */ @@ -762,7 +684,7 @@ public static function findCollection( $type, $sql = NULL, $bindings = array() ) * @param array|string $types a list of bean types to find * @param string|array $sqlOrArr SQL query string or result set array * @param array $bindings SQL bindings - * @param array $remappings An array of remapping arrays containing closures + * @param array $remappings an array of remapping arrays containing closures * * @return array */ @@ -812,8 +734,8 @@ public static function loadAll( $type, $ids ) * Convenience function to execute Queries directly. * Executes SQL. * - * @param string $sql sql SQL query to execute - * @param array $bindings values a list of values to be bound to query parameters + * @param string $sql SQL query to execute + * @param array $bindings a list of values to be bound to query parameters * * @return integer */ @@ -826,8 +748,8 @@ public static function exec( $sql, $bindings = array() ) * Convenience function to execute Queries directly. * Executes SQL. * - * @param string $sql sql SQL query to execute - * @param array $bindings values a list of values to be bound to query parameters + * @param string $sql SQL query to execute + * @param array $bindings a list of values to be bound to query parameters * * @return array */ @@ -840,8 +762,8 @@ public static function getAll( $sql, $bindings = array() ) * Convenience function to execute Queries directly. * Executes SQL. * - * @param string $sql sql SQL query to execute - * @param array $bindings values a list of values to be bound to query parameters + * @param string $sql SQL query to execute + * @param array $bindings a list of values to be bound to query parameters * * @return string */ @@ -854,8 +776,8 @@ public static function getCell( $sql, $bindings = array() ) * Convenience function to execute Queries directly. * Executes SQL. * - * @param string $sql sql SQL query to execute - * @param array $bindings values a list of values to be bound to query parameters + * @param string $sql SQL query to execute + * @param array $bindings a list of values to be bound to query parameters * * @return array */ @@ -868,8 +790,8 @@ public static function getRow( $sql, $bindings = array() ) * Convenience function to execute Queries directly. * Executes SQL. * - * @param string $sql sql SQL query to execute - * @param array $bindings values a list of values to be bound to query parameters + * @param string $sql SQL query to execute + * @param array $bindings a list of values to be bound to query parameters * * @return array */ @@ -887,8 +809,8 @@ public static function getCol( $sql, $bindings = array() ) * selected in the query, both key and value of the array will have the * value of this field for each row. * - * @param string $sql sql SQL query to execute - * @param array $bindings values a list of values to be bound to query parameters + * @param string $sql SQL query to execute + * @param array $bindings a list of values to be bound to query parameters * * @return array */ @@ -903,8 +825,8 @@ public static function getAssoc( $sql, $bindings = array() ) * Results will be returned as an associative array indexed by the first * column in the select. * - * @param string $sql sql SQL query to execute - * @param array $bindings values a list of values to be bound to query parameters + * @param string $sql SQL query to execute + * @param array $bindings a list of values to be bound to query parameters * * @return array */ @@ -946,7 +868,7 @@ public static function getInsertID() * @param OODBBean $bean bean to be copied * @param array $trail for internal usage, pass array() * @param boolean $pid for internal usage - * @param array $white white list filter with bean types to duplicate + * @param array $white white list filter with bean types to duplicate * * @return array */ @@ -960,9 +882,9 @@ public static function dup( $bean, $trail = array(), $pid = FALSE, $filters = ar * Makes a deep copy of a bean. This method makes a deep copy * of the bean.The copy will have the following: * - * - All beans in own-lists will be duplicated as well - * - All references to shared beans will be copied but not the shared beans themselves - * - All references to parent objects (_id fields) will be copied but not the parents themselves + * * All beans in own-lists will be duplicated as well + * * All references to shared beans will be copied but not the shared beans themselves + * * All references to parent objects (_id fields) will be copied but not the parents themselves * * In most cases this is the desired scenario for copying beans. * This function uses a trail-array to prevent infinite recursion, if a recursive bean is found @@ -976,7 +898,7 @@ public static function dup( $bean, $trail = array(), $pid = FALSE, $filters = ar * This is a simplified version of the deprecated R::dup() function. * * @param OODBBean $bean bean to be copied - * @param array $white white list filter with bean types to duplicate + * @param array $white white list filter with bean types to duplicate * * @return array */ @@ -989,15 +911,16 @@ public static function duplicate( $bean, $filters = array() ) * Exports a collection of beans. Handy for XML/JSON exports with a * Javascript framework like Dojo or ExtJS. * What will be exported: - * - contents of the bean - * - all own bean lists (recursively) - * - all shared beans (not THEIR own lists) + * + * * contents of the bean + * * all own bean lists (recursively) + * * all shared beans (not THEIR own lists) * * @param array|OODBBean $beans beans to be exported * @param boolean $parents whether you want parent beans to be exported * @param array $filters whitelist of types * - * @return array + * @return array */ public static function exportAll( $beans, $parents = FALSE, $filters = array()) { @@ -1009,9 +932,9 @@ public static function exportAll( $beans, $parents = FALSE, $filters = array()) * This will determine the case style for the keys of exported beans (see exportAll). * The following options are accepted: * - * 'default' RedBeanPHP by default enforces Snake Case (i.e. book_id is_valid ) - * 'camel' Camel Case (i.e. bookId isValid ) - * 'dolphin' Dolphin Case (i.e. bookID isValid ) Like CamelCase but ID is written all uppercase + * * 'default' RedBeanPHP by default enforces Snake Case (i.e. book_id is_valid ) + * * 'camel' Camel Case (i.e. bookId isValid ) + * * 'dolphin' Dolphin Case (i.e. bookID isValid ) Like CamelCase but ID is written all uppercase * * @warning RedBeanPHP transforms camelCase to snake_case using a slightly different * algorithm, it also converts isACL to is_acl (not is_a_c_l) and bookID to book_id. @@ -1090,8 +1013,8 @@ public static function untag( $bean, $tagList ) * be associated with the bean. * You may also pass an array instead of a string. * - * @param OODBBean $bean bean - * @param mixed $tagList tags + * @param OODBBean $bean bean to tag + * @param mixed $tagList tags to attach to the specified bean * * @return string */ @@ -1107,7 +1030,7 @@ public static function tag( OODBBean $bean, $tagList = NULL ) * be associated with the bean. * You may also pass an array instead of a string. * - * @param OODBBean $bean bean + * @param OODBBean $bean bean to tag * @param array $tagList list of tags to add to bean * * @return void @@ -1123,8 +1046,8 @@ public static function addTags( OODBBean $bean, $tagList ) * * @param string $beanType type of bean you are looking for * @param array $tagList list of tags to match - * @param string $sql additional SQL - * @param array $bindings bindings + * @param string $sql additional SQL query snippet + * @param array $bindings a list of values to bind to the query parameters * * @return array */ @@ -1139,8 +1062,8 @@ public static function tagged( $beanType, $tagList, $sql = '', $bindings = array * * @param string $beanType type of bean you are looking for * @param array $tagList list of tags to match - * @param string $sql additional SQL - * @param array $bindings bindings + * @param string $sql additional SQL query snippet + * @param array $bindings a list of values to bind to the query parameters * * @return array */ @@ -1171,8 +1094,6 @@ public static function wipe( $beanType ) * @param array $bindings parameters to bind to SQL * * @return integer - * - * @throws SQL */ public static function count( $type, $addSQL = '', $bindings = array() ) { @@ -1184,36 +1105,26 @@ public static function count( $type, $addSQL = '', $bindings = array() ) * Adapter and you want it on-the-fly? Use this method to hot-swap your facade with a new * toolbox. * - * @param ToolBox $tb toolbox + * @param ToolBox $tb toolbox to configure facade with * * @return ToolBox */ public static function configureFacadeWithToolbox( ToolBox $tb ) { $oldTools = self::$toolbox; - self::$toolbox = $tb; - self::$writer = self::$toolbox->getWriter(); self::$adapter = self::$toolbox->getDatabaseAdapter(); self::$redbean = self::$toolbox->getRedBean(); self::$finder = new Finder( self::$toolbox ); - self::$associationManager = new AssociationManager( self::$toolbox ); - self::$redbean->setAssociationManager( self::$associationManager ); - self::$labelMaker = new LabelMaker( self::$toolbox ); - $helper = new SimpleModelHelper(); - $helper->attachEventListeners( self::$redbean ); - self::$redbean->setBeanHelper( new SimpleFacadeBeanHelper ); - self::$duplicationManager = new DuplicationManager( self::$toolbox ); self::$tagManager = new TagManager( self::$toolbox ); - return $oldTools; } @@ -1226,9 +1137,7 @@ public static function configureFacadeWithToolbox( ToolBox $tb ) public static function begin() { if ( !self::$redbean->isFrozen() ) return FALSE; - self::$adapter->startTransaction(); - return TRUE; } @@ -1241,9 +1150,7 @@ public static function begin() public static function commit() { if ( !self::$redbean->isFrozen() ) return FALSE; - self::$adapter->commit(); - return TRUE; } @@ -1256,9 +1163,7 @@ public static function commit() public static function rollback() { if ( !self::$redbean->isFrozen() ) return FALSE; - self::$adapter->rollback(); - return TRUE; } @@ -1286,8 +1191,7 @@ public static function getColumns( $table ) */ public static function genSlots( $array, $template = NULL ) { - $str = count( $array ) ? implode( ',', array_fill( 0, count( $array ), '?' ) ) : ''; - return ( is_null( $template ) || $str === '' ) ? $str : sprintf( $template, $str ); + return ArrayTool::genSlots( $array, $template ); } /** @@ -1299,11 +1203,7 @@ public static function genSlots( $array, $template = NULL ) */ public static function flat( $array, $result = array() ) { - foreach( $array as $value ) { - if ( is_array( $value ) ) $result = self::flat( $value, $result ); - else $result[] = $value; - } - return $result; + return ArrayTool::flat( $array, $result ); } /** @@ -1338,7 +1238,6 @@ public static function storeAll( $beans ) foreach ( $beans as $bean ) { $ids[] = self::store( $bean ); } - return $ids; } @@ -1378,7 +1277,6 @@ public static function useWriterCache( $yesNo ) self::getWriter()->setUseCache( $yesNo ); } - /** * A label is a bean with only an id, type and name property. * This function will dispense beans for all entries in the array. The @@ -1402,7 +1300,9 @@ public static function dispenseLabels( $type, $labels ) * * To obtain (and add if necessary) an ENUM value: * + * * $tea->flavour = R::enum( 'flavour:apple' ); + * * * Returns a bean of type 'flavour' with name = apple. * This will add a bean with property name (set to APPLE) to the database @@ -1410,11 +1310,15 @@ public static function dispenseLabels( $type, $labels ) * * To obtain all flavours: * + * * R::enum('flavour'); + * * * To get a list of all flavour names: * + * * R::gatherLabels( R::enum( 'flavour' ) ); + * * * @param string $enum either type or type-value * @@ -1481,7 +1385,6 @@ public static function isoDate( $time = NULL ) public static function isoDateTime( $time = NULL ) { if ( !$time ) $time = time(); - return @date( 'Y-m-d H:i:s', $time ); } @@ -1489,7 +1392,7 @@ public static function isoDateTime( $time = NULL ) * Optional accessor for neat code. * Sets the database adapter you want to use. * - * @param Adapter $adapter + * @param Adapter $adapter Database Adapter for facade to use * * @return void */ @@ -1502,7 +1405,7 @@ public static function setDatabaseAdapter( Adapter $adapter ) * Optional accessor for neat code. * Sets the database adapter you want to use. * - * @param QueryWriter $writer + * @param QueryWriter $writer Query Writer instance for facade to use * * @return void */ @@ -1515,7 +1418,7 @@ public static function setWriter( QueryWriter $writer ) * Optional accessor for neat code. * Sets the database adapter you want to use. * - * @param OODB $redbean + * @param OODB $redbean Object Database for facade to use */ public static function setRedBean( OODB $redbean ) { @@ -1586,21 +1489,16 @@ public static function getToolBox() * * Returns the components in the following order: * - * 0 - OODB instance (getRedBean()) - * 1 - Database Adapter - * 2 - Query Writer - * 3 - Toolbox itself + * # OODB instance (getRedBean()) + * # Database Adapter + * # Query Writer + * # Toolbox itself * * @return array */ public static function getExtractedToolbox() { - return array( - self::$redbean, - self::$adapter, - self::$writer, - self::$toolbox - ); + return array( self::$redbean, self::$adapter, self::$writer, self::$toolbox ); } /** @@ -1630,36 +1528,36 @@ public static function renameAssociation( $from, $to = NULL ) public static function beansToArray( $beans ) { $list = array(); - foreach( $beans as $bean ) { - $list[] = $bean->export(); - } + foreach( $beans as $bean ) $list[] = $bean->export(); return $list; } - + /** * Sets the error mode for FUSE. * What to do if a FUSE model method does not exist? * You can set the following options: * - * OODBBean::C_ERR_IGNORE (default), ignores the call, returns NULL - * OODBBean::C_ERR_LOG, logs the incident using error_log - * OODBBean::C_ERR_NOTICE, triggers a E_USER_NOTICE - * OODBBean::C_ERR_WARN, triggers a E_USER_WARNING - * OODBBean::C_ERR_EXCEPTION, throws an exception - * OODBBean::C_ERR_FUNC, allows you to specify a custom handler (function) - * OODBBean::C_ERR_FATAL, triggers a E_USER_ERROR - * + * * OODBBean::C_ERR_IGNORE (default), ignores the call, returns NULL + * * OODBBean::C_ERR_LOG, logs the incident using error_log + * * OODBBean::C_ERR_NOTICE, triggers a E_USER_NOTICE + * * OODBBean::C_ERR_WARN, triggers a E_USER_WARNING + * * OODBBean::C_ERR_EXCEPTION, throws an exception + * * OODBBean::C_ERR_FUNC, allows you to specify a custom handler (function) + * * OODBBean::C_ERR_FATAL, triggers a E_USER_ERROR + * + * * Custom handler method signature: handler( array ( * 'message' => string * 'bean' => OODBBean * 'method' => string * ) ) + * * * This method returns the old mode and handler as an array. * - * @param integer $mode mode - * @param callable|NULL $func custom handler - * + * @param integer $mode mode, determines how to handle errors + * @param callable|NULL $func custom handler (if applicable) + * * @return array */ public static function setErrorHandlingFUSE( $mode, $func = NULL ) @@ -1676,29 +1574,10 @@ public static function setErrorHandlingFUSE( $mode, $func = NULL ) * @param OODBBean|array $data either a bean or an array of beans * * @return array - * */ public static function dump( $data ) { - $array = array(); - - if ( $data instanceof OODBBean ) { - $str = strval( $data ); - if (strlen($str) > 35) { - $beanStr = substr( $str, 0, 35 ).'... '; - } else { - $beanStr = $str; - } - return $beanStr; - } - - if ( is_array( $data ) ) { - foreach( $data as $key => $item ) { - $array[$key] = self::dump( $item ); - } - } - - return $array; + return Dump::dump( $data ); } /** @@ -1710,16 +1589,19 @@ public static function dump( $data ) * * Example: * + * * R::bindFunc( 'read', 'location.point', 'asText' ); * R::bindFunc( 'write', 'location.point', 'GeomFromText' ); + * * * Passing NULL as the function will reset (clear) the function * for this column/mode. * - * @param string $mode (read or write) - * @param string $field - * @param string $function + * @param string $mode mode for function: i.e. read or write + * @param string $field field (table.column) to bind function to + * @param string $function SQL function to bind to specified column * + * @return void */ public static function bindFunc( $mode, $field, $function ) { @@ -1729,7 +1611,7 @@ public static function bindFunc( $mode, $field, $function ) /** * Sets global aliases. * - * @param array $list + * @param array $list list of global aliases * * @return void */ @@ -1865,14 +1747,20 @@ public static function setAutoResolve( $automatic = TRUE ) * * Usage: * + * * R::ext( 'makeTea', function() { ... } ); + * * * Now you can use your makeTea plugin like this: * + * * R::makeTea(); + * * * @param string $pluginName name of the method to call the plugin * @param callable $callable a PHP callable + * + * @return void */ public static function ext( $pluginName, $callable ) { diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Finder.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Finder.php index 2affc837..5a1b4b75 100644 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Finder.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Finder.php @@ -2,10 +2,6 @@ namespace RedBeanPHP; -use RedBeanPHP\ToolBox as ToolBox; -use RedBeanPHP\OODB as OODB; -use RedBeanPHP\RedException\Security as Security; -use RedBeanPHP\OODBBean as OODBBean; /** * RedBeanPHP Finder. @@ -59,8 +55,6 @@ public function __construct( ToolBox $toolbox ) * @param array $bindings values array of values to be bound to parameters in query * * @return array - * - * @throws Security */ public function find( $type, $sql = NULL, $bindings = array() ) { @@ -75,8 +69,12 @@ public function find( $type, $sql = NULL, $bindings = array() ) /** * Like find() but also exports the beans as an array. + * This method will perform a find-operation. For every bean + * in the result collection this method will call the export() method. + * This method returns an array containing the array representations + * of every bean in the result set. * - * @see Finder::findAndExport + * @see Finder::find * * @param string $type type the type of bean you are looking for * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause @@ -97,6 +95,7 @@ public function findAndExport( $type, $sql = NULL, $bindings = array() ) /** * Like find() but returns just one bean instead of an array of beans. * This method will return only the first bean of the array. + * If no beans are found, this method will return NULL. * * @see Finder::find * @@ -109,7 +108,7 @@ public function findAndExport( $type, $sql = NULL, $bindings = array() ) public function findOne( $type, $sql = NULL, $bindings = array() ) { $sql = $this->toolbox->getWriter()->glueLimitOne( $sql ); - + $items = $this->find( $type, $sql, $bindings ); if ( empty($items) ) { @@ -122,6 +121,7 @@ public function findOne( $type, $sql = NULL, $bindings = array() ) /** * Like find() but returns the last bean of the result array. * Opposite of Finder::findLast(). + * If no beans are found, this method will return NULL. * * @see Finder::find * @@ -252,9 +252,11 @@ public function findLike( $type, $conditions = array(), $sql = '' ) * * Example: * + * * $stuff = $finder->findMulti('movie,review', ' * SELECT movie.*, review.* FROM movie * LEFT JOIN review ON review.movie_id = movie.id'); + * * * After this operation, $stuff will contain an entry 'movie' containing all * movies and an entry named 'review' containing all reviews (all beans). @@ -267,18 +269,21 @@ public function findLike( $type, $conditions = array(), $sql = '' ) * The remapping argument (optional) should contain an array of arrays. * Each array in the remapping array should contain the following entries: * + * * array( * 'a' => TYPE A * 'b' => TYPE B * 'matcher' => MATCHING FUNCTION ACCEPTING A, B and ALL BEANS * 'do' => OPERATION FUNCTION ACCEPTING A, B, ALL BEANS, ALL REMAPPINGS * ) + * * * Using this mechanism you can build your own 'preloader' with tiny function * snippets (and those can be re-used and shared online of course). * * Example: * + * * array( * 'a' => 'movie' //define A as movie * 'b' => 'review' //define B as review @@ -290,6 +295,7 @@ public function findLike( $type, $conditions = array(), $sql = '' ) * $a->clearHistory(); //optional, act 'as if these beans have been loaded through ownReviewList'. * } * ) + * * * The Query Template parameter is optional as well but can be used to * set a different SQL template (sprintf-style) for processing the original query. diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Functions.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Functions.php index 3285124f..259aac8c 100644 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Functions.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Functions.php @@ -7,7 +7,7 @@ * @file RedBeanPHP/Functions.php * @author Gabor de Mooij and the RedBeanPHP community * @license BSD/GPLv2 - * + * * @copyright * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. * This source file is subject to the BSD/GPLv2 License that is bundled @@ -19,7 +19,9 @@ * * Usage: * + * * R::find( 'paint', ' color_id = ? ', [ EID('color:yellow') ] ); + * * * If a function called EID() already exists you'll have to write this * wrapper yourself ;) diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/LabelMaker.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/LabelMaker.php index 677dcb5a..23010fad 100644 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/LabelMaker.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/LabelMaker.php @@ -45,7 +45,9 @@ public function __construct( ToolBox $toolbox ) * values of the array will be assigned to the name property of each * individual bean. * + * * $people = R::dispenseLabels( 'person', [ 'Santa', 'Claus' ] ); + * * * @param string $type type of beans you would like to have * @param array $labels list of labels, names for each bean @@ -72,9 +74,11 @@ public function dispenseLabels( $type, $labels ) * * Usage: * + * * $o1->name = 'hamburger'; * $o2->name = 'pizza'; * implode( ',', R::gatherLabels( [ $o1, $o2 ] ) ); //hamburger,pizza + * * * Note that the return value is an array of strings, not beans. * @@ -94,39 +98,47 @@ public function gatherLabels( $beans ) return $labels; } - + /** * Fetches an ENUM from the database and creates it if necessary. * An ENUM has the following format: * + * * ENUM:VALUE + * * * If you pass 'ENUM' only, this method will return an array of its * values: * + * * implode( ',', R::gatherLabels( R::enum( 'flavour' ) ) ) //'BANANA,MOCCA' + * * * If you pass 'ENUM:VALUE' this method will return the specified enum bean * and create it in the database if it does not exist yet: * + * * $bananaFlavour = R::enum( 'flavour:banana' ); * $bananaFlavour->name; + * * * So you can use this method to set an ENUM value in a bean: * + * * $shake->flavour = R::enum( 'flavour:banana' ); + * * * the property flavour now contains the enum bean, a parent bean. * In the database, flavour_id will point to the flavour record with name 'banana'. * * @param string $enum ENUM specification for label - * + * * @return array|OODBBean */ public function enum( $enum ) { $oodb = $this->toolbox->getRedBean(); - + if ( strpos( $enum, ':' ) === FALSE ) { $type = $enum; $value = FALSE; @@ -134,22 +146,37 @@ public function enum( $enum ) list( $type, $value ) = explode( ':', $enum ); $value = preg_replace( '/\W+/', '_', strtoupper( trim( $value ) ) ); } - + + /** + * We use simply find here, we could use inspect() in fluid mode etc, + * but this would be useless. At first sight it looks clean, you could even + * bake this into find(), however, find not only has to deal with the primary + * search type, people can also include references in the SQL part, so avoiding + * find failures does not matter, this is still the quickest way making use + * of existing functionality. + * + * @note There seems to be a bug in XDebug v2.3.2 causing suppressed + * exceptions like these to surface anyway, to prevent this use: + * + * "xdebug.default_enable = 0" + * + * Also see Github Issue #464 + */ $values = $oodb->find( $type ); - + if ( $value === FALSE ) { return $values; } - + foreach( $values as $enumItem ) { - if ( $enumItem->name === $value ) return $enumItem; + if ( $enumItem->name === $value ) return $enumItem; } - + $newEnumItems = $this->dispenseLabels( $type, array( $value ) ); $newEnumItem = reset( $newEnumItems ); - + $oodb->store( $newEnumItem ); - + return $newEnumItem; } } diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Logger.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Logger.php index 2b791edb..3699e66b 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Logger.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Logger.php @@ -1,4 +1,4 @@ -mode === self::C_LOGGER_ECHO ) echo "
\n"; + if ( $this->mode === self::C_LOGGER_ECHO ) echo "
" . PHP_EOL; } } - + /** * Returns the internal log array. * The internal log array is where all log messages are stored. - * + * * @return array */ public function getLogs() { return $this->logs; } - + /** * Clears the internal log array, removing all * previously stored entries. - * + * * @return self */ public function clear() @@ -92,16 +91,16 @@ public function clear() $this->logs = array(); return $this; } - + /** * Selects a logging mode. * There are several options available. - * - * C_LOGGER_ARRAY - log silently, stores entries in internal log array only - * C_LOGGER_ECHO - also forward log messages directly to STDOUT - * + * + * * C_LOGGER_ARRAY - log silently, stores entries in internal log array only + * * C_LOGGER_ECHO - also forward log messages directly to STDOUT + * * @param integer $mode mode of operation for logging object - * + * * @return self */ public function setMode( $mode ) @@ -112,7 +111,7 @@ public function setMode( $mode ) $this->mode = $mode; return $this; } - + /** * Searches for all log entries in internal log array * for $needle and returns those entries. diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Logger/RDefault/Debug.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Logger/RDefault/Debug.php index 73712772..a17fbbe1 100644 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Logger/RDefault/Debug.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Logger/RDefault/Debug.php @@ -5,7 +5,6 @@ use RedBeanPHP\Logger as Logger; use RedBeanPHP\Logger\RDefault as RDefault; use RedBeanPHP\RedException as RedException; -use RedBeanPHP\RedException\Security as Security; /** * Debug logger. @@ -57,7 +56,7 @@ private function writeQuery( $newSql, $newBindings ) * Fills in a value of a binding and truncates the * resulting string if necessary. * - * @param mixed $value + * @param mixed $value bound value * * @return string */ @@ -89,7 +88,7 @@ protected function fillInValue( $value ) protected function output( $str ) { $this->logs[] = $str; - if ( !$this->mode ) echo $str .'
'; + if ( !$this->mode ) echo $str ,'
'; } /** diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/OODB.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/OODB.php index 30953844..abc37d2e 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/OODB.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/OODB.php @@ -2,16 +2,9 @@ namespace RedBeanPHP; -use RedBeanPHP\OODBBean as OODBBean; -use RedBeanPHP\Observable as Observable; use RedBeanPHP\Adapter\DBAdapter as DBAdapter; -use RedBeanPHP\BeanHelper\FacadeBeanHelper as FacadeBeanHelper; -use RedBeanPHP\AssociationManager as AssociationManager; use RedBeanPHP\QueryWriter as QueryWriter; -use RedBeanPHP\RedException\Security as Security; -use RedBeanPHP\SimpleModel as SimpleModel; use RedBeanPHP\BeanHelper as BeanHelper; -use RedBeanPHP\RedException\SQL as SQL; use RedBeanPHP\QueryWriter\AQueryWriter as AQueryWriter; use RedBeanPHP\Repository as Repository; use RedBeanPHP\Repository\Fluid as FluidRepo; @@ -19,7 +12,7 @@ /** * RedBean Object Oriented DataBase. - * + * * The RedBean OODB Class is the main class of RedBeanPHP. * It takes OODBBean objects and stores them to and loads them from the * database as well as providing other CRUD functions. This class acts as a @@ -46,7 +39,6 @@ class OODB extends Observable */ protected $chillList = array(); - /** * @var array */ @@ -92,6 +84,24 @@ class OODB extends Observable */ protected $fluidRepository = NULL; + /** + * @var boolean + */ + protected static $autoClearHistoryAfterStore = FALSE; + + /** + * If set to TRUE, this method will call clearHistory every time + * the bean gets stored. + * + * @param boolean $autoClear auto clear option + * + * @return void + */ + public static function autoClearHistoryAfterStore( $autoClear = TRUE ) + { + self::$autoClearHistoryAfterStore = (boolean) $autoClear; + } + /** * Unboxes a bean from a FUSE model if needed and checks whether the bean is * an instance of OODBBean. @@ -99,8 +109,6 @@ class OODB extends Observable * @param OODBBean $bean bean you wish to unbox * * @return OODBBean - * - * @throws Security */ protected function unboxIfNeeded( $bean ) { @@ -259,8 +267,6 @@ public function getBeanHelper() * @param OODBBean $bean the bean that needs to be checked * * @return void - * - * @throws Security $exception */ public function check( OODBBean $bean ) { @@ -273,10 +279,12 @@ public function check( OODBBean $bean ) * * Conditions need to take form: * + * * array( * 'PROPERTY' => array( POSSIBLE VALUES... 'John', 'Steve' ) * 'PROPERTY' => array( POSSIBLE VALUES... ) * ); + * * * All conditions are glued together using the AND-operator, while all value lists * are glued using IN-operators thus acting as OR-conditions. @@ -287,11 +295,9 @@ public function check( OODBBean $bean ) * @param string $type type of beans you are looking for * @param array $conditions list of conditions * @param string $addSQL SQL to be used in query - * @param array $bindings whether you prefer to use a WHERE clause or not (TRUE = not) + * @param array $bindings a list of values to bind to query parameters * * @return array - * - * @throws SQL */ public function find( $type, $conditions = array(), $sql = NULL, $bindings = array() ) { @@ -301,13 +307,11 @@ public function find( $type, $conditions = array(), $sql = NULL, $bindings = arr /** * Same as find() but returns a BeanCollection. * - * @param string $type type of beans you are looking for - * @param string $addSQL SQL to be used in query - * @param array $bindings whether you prefer to use a WHERE clause or not (TRUE = not) + * @param string $type type of beans you are looking for + * @param string $addSQL SQL to be used in query + * @param array $bindings a list of values to bind to query parameters * * @return array - * - * @throws SQL */ public function findCollection( $type, $sql = NULL, $bindings = array() ) { @@ -348,13 +352,15 @@ public function tableExists( $table ) * @param OODBBean|SimpleModel $bean bean to store * * @return integer|string - * - * @throws Security */ public function store( $bean ) { $bean = $this->unboxIfNeeded( $bean ); - return $this->repository->store( $bean ); + $id = $this->repository->store( $bean ); + if ( self::$autoClearHistoryAfterStore ) { + $bean->clearHistory(); + } + return $id; } /** @@ -377,10 +383,7 @@ public function store( $bean ) * @param string $type type of bean you want to load * @param integer $id ID of the bean you want to load * - * @throws SQL - * * @return OODBBean - * */ public function load( $type, $id ) { @@ -395,8 +398,6 @@ public function load( $type, $id ) * @param OODBBean|SimpleModel $bean bean you want to remove from database * * @return void - * - * @throws Security */ public function trash( $bean ) { @@ -449,8 +450,6 @@ public function convertToBeans( $type, $rows ) * @param array $bindings parameters to bind to SQL * * @return integer - * - * @throws SQL */ public function count( $type, $addSQL = '', $bindings = array() ) { @@ -463,8 +462,6 @@ public function count( $type, $addSQL = '', $bindings = array() ) * @param string $type type of bean you wish to delete all instances of * * @return boolean - * - * @throws SQL */ public function wipe( $type ) { @@ -477,8 +474,6 @@ public function wipe( $type ) * storage and more. * * @return AssociationManager - * - * @throws Security */ public function getAssociationManager() { @@ -521,9 +516,11 @@ public function getCurrentRepository() * MySQL spatial columns, because they need to be processed first using * the asText/GeomFromText functions. * - * @param string $mode (read or write) - * @param string $field - * @param string $function + * @param string $mode mode to set function for, i.e. read or write + * @param string $field field (table.column) to bind SQL function to + * @param string $function SQL function to bind to field + * + * @return void */ public function bindFunc( $mode, $field, $function ) { diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/OODBBean.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/OODBBean.php index f657fcbb..1854a8a7 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/OODBBean.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/OODBBean.php @@ -4,13 +4,11 @@ use RedBeanPHP\QueryWriter\AQueryWriter as AQueryWriter; use RedBeanPHP\BeanHelper as BeanHelper; -use RedBeanPHP\RedException\Security as Security; use RedBeanPHP\RedException as RedException; -use RedBeanPHP\OODBBean as OODBBean; /** * OODBBean (Object Oriented DataBase Bean). - * + * * to exchange information with the database. A bean represents * a single table row and offers generic services for interaction * with databases systems as well as some meta-data. @@ -19,7 +17,7 @@ * @author Gabor de Mooij and the RedBeanPHP community * @license BSD/GPLv2 * @desc OODBBean represents a bean. RedBeanPHP uses beans - * + * * @copyright * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. * This source file is subject to the BSD/GPLv2 License that is bundled @@ -58,28 +56,89 @@ class OODBBean implements\IteratorAggregate,\ArrayAccess,\Countable */ protected static $autoResolve = FALSE; + /** + * This is where the real properties of the bean live. They are stored and retrieved + * by the magic getter and setter (__get and __set). + * + * @var array $properties + */ + protected $properties = array(); + + /** + * Here we keep the meta data of a bean. + * + * @var array + */ + protected $__info = array(); + + /** + * The BeanHelper allows the bean to access the toolbox objects to implement + * rich functionality, otherwise you would have to do everything with R or + * external objects. + * + * @var BeanHelper + */ + protected $beanHelper = NULL; + + /** + * @var null + */ + protected $fetchType = NULL; + + /** + * @var string + */ + protected $withSql = ''; + + /** + * @var array + */ + protected $withParams = array(); + + /** + * @var string + */ + protected $aliasName = NULL; + + /** + * @var string + */ + protected $via = NULL; + + /** + * @var boolean + */ + protected $noLoad = FALSE; + + /** + * @var boolean + */ + protected $all = FALSE; + /** * Sets the error mode for FUSE. * What to do if a FUSE model method does not exist? * You can set the following options: * - * OODBBean::C_ERR_IGNORE (default), ignores the call, returns NULL - * OODBBean::C_ERR_LOG, logs the incident using error_log - * OODBBean::C_ERR_NOTICE, triggers a E_USER_NOTICE - * OODBBean::C_ERR_WARN, triggers a E_USER_WARNING - * OODBBean::C_ERR_EXCEPTION, throws an exception - * OODBBean::C_ERR_FUNC, allows you to specify a custom handler (function) - * OODBBean::C_ERR_FATAL, triggers a E_USER_ERROR + * * OODBBean::C_ERR_IGNORE (default), ignores the call, returns NULL + * * OODBBean::C_ERR_LOG, logs the incident using error_log + * * OODBBean::C_ERR_NOTICE, triggers a E_USER_NOTICE + * * OODBBean::C_ERR_WARN, triggers a E_USER_WARNING + * * OODBBean::C_ERR_EXCEPTION, throws an exception + * * OODBBean::C_ERR_FUNC, allows you to specify a custom handler (function) + * * OODBBean::C_ERR_FATAL, triggers a E_USER_ERROR * + * * Custom handler method signature: handler( array ( * 'message' => string * 'bean' => OODBBean * 'method' => string * ) ) + * * * This method returns the old mode and handler as an array. * - * @param integer $mode mode + * @param integer $mode error handling mode * @param callable|NULL $func custom handler * * @return array @@ -110,9 +169,9 @@ public static function setErrorHandlingFUSE($mode, $func = NULL) { } /** - * Sets aliases. + * Sets global aliases. * - * @param array $list + * @param array $list list of global aliases to use * * @return void */ @@ -136,65 +195,6 @@ public static function setAutoResolve( $automatic = TRUE ) self::$autoResolve = (boolean) $automatic; } - /** - * This is where the real properties of the bean live. They are stored and retrieved - * by the magic getter and setter (__get and __set). - * - * @var array $properties - */ - protected $properties = array(); - - /** - * Here we keep the meta data of a bean. - * - * @var array - */ - protected $__info = array(); - - /** - * The BeanHelper allows the bean to access the toolbox objects to implement - * rich functionality, otherwise you would have to do everything with R or - * external objects. - * - * @var BeanHelper - */ - protected $beanHelper = NULL; - - /** - * @var null - */ - protected $fetchType = NULL; - - /** - * @var string - */ - protected $withSql = ''; - - /** - * @var array - */ - protected $withParams = array(); - - /** - * @var string - */ - protected $aliasName = NULL; - - /** - * @var string - */ - protected $via = NULL; - - /** - * @var boolean - */ - protected $noLoad = FALSE; - - /** - * @var boolean - */ - protected $all = FALSE; - /** * Sets a meta property for all beans. This is a quicker way to set * the meta properties for a collection of beans because this method @@ -232,7 +232,7 @@ public static function setMetaAll( $beans, $property, $value ) * * @param string $type the source type for the join * - * @return string $joinSql + * @return string */ private function parseJoin( $type ) { @@ -357,7 +357,7 @@ private function getOwnList( $type, $redbean ) * use the OODB object to dispense new beans. You can use this method * if you build your own bean dispensing mechanism. * - * @param string $type type of the new bean + * @param string $type type of the new bean * @param BeanHelper $beanhelper bean helper to obtain a toolbox and a model * * @return void @@ -380,7 +380,7 @@ public function initializeForDispense( $type, BeanHelper $beanhelper ) * nested beans (bean lists: ownBean, sharedBean) without the need to * rely on static calls to the facade (or make this class dep. on OODB). * - * @param BeanHelper $helper + * @param BeanHelper $helper helper to use for this bean * * @return void */ @@ -390,7 +390,7 @@ public function setBeanHelper( BeanHelper $helper ) } /** - * Returns an\ArrayIterator so you can treat the bean like + * Returns an ArrayIterator so you can treat the bean like * an array with the properties container as its contents. * This method is meant for PHP and allows you to access beans as if * they were arrays, i.e. using array notation: @@ -399,11 +399,11 @@ public function setBeanHelper( BeanHelper $helper ) * * Note that not all PHP functions work with the array interface. * - * @return \ArrayIterator + * @return ArrayIterator */ public function getIterator() { - return new\ArrayIterator( $this->properties ); + return new \ArrayIterator( $this->properties ); } /** @@ -600,7 +600,7 @@ public function getID() * Unsets a property of a bean. * Magic method, gets called implicitly when performing the unset() operation * on a bean property. - * + * * @param string $property property to unset * * @return void @@ -636,13 +636,15 @@ public function __unset( $property ) * issue the following command: $book->ownPage * However, to order these pages by number use: * + * * $book->with(' ORDER BY `number` ASC ')->ownPage + * * * the additional SQL snippet will be merged into the final * query. * - * @param string $sql SQL to be added to retrieval query. - * @param array $bindings array with parameters to bind to SQL snippet + * @param string $sql SQL to be added to retrieval query. + * @param array $bindings array with parameters to bind to SQL snippet * * @return OODBBean */ @@ -682,8 +684,10 @@ public function withCondition( $sql, $bindings = array() ) * * Usage: * + * * $bean->with( ' LIMIT 3 ' )->ownPage; //Just 3 * $bean->all()->ownPage; //Reload all pages + * * * @return self */ @@ -713,16 +717,22 @@ public function noLoad() * case, so to the project has a teacher_id pointing to a person, and a student_id * also pointing to a person. Given a project, we obtain the teacher like this: * + * * $project->fetchAs('person')->teacher; + * * * Now, if we want all projects of a teacher we cant say: * + * * $teacher->ownProject + * * * because the $teacher is a bean of type 'person' and no project has been * assigned to a person. Instead we use the alias() method like this: * + * * $teacher->alias('teacher')->ownProject + * * * now we get the projects associated with the person bean aliased as * a teacher. @@ -770,12 +780,13 @@ public function getPropertiesAndType() * Turns a camelcase property name into an underscored property name. * * Examples: - * oneACLRoute -> one_acl_route - * camelCase -> camel_case + * + * * oneACLRoute -> one_acl_route + * * camelCase -> camel_case * * Also caches the result to improve performance. * - * @param string $property + * @param string $property property to un-beautify * * @return string */ @@ -911,7 +922,6 @@ public function &__get( $property ) return $this->properties[$property]; } - list( $redbean, , , $toolbox ) = $this->beanHelper->getExtractedToolbox(); if ( isset( $this->$fieldLink ) ) { @@ -989,8 +999,6 @@ public function &__get( $property ) * @param mixed $value the value you want to assign * * @return void - * - * @throws Security */ public function __set( $property, $value ) { @@ -1101,12 +1109,14 @@ public function setProperty( $property, $value, $updateShadow = FALSE, $taint = * * Example: * + * * $bean->setMeta( 'flush-cache', TRUE ); + * * * RedBeanPHP also stores meta data in beans, this meta data uses * keys prefixed with 'sys.' (system). * - * @param string $path path + * @param string $path path to property in meta data * @param mixed $default default value * * @return mixed @@ -1122,7 +1132,7 @@ public function getMeta( $path, $default = NULL ) * This is a short-cut method that can be used instead * of combining a get/unset. * - * @param string $path path + * @param string $path path to property in meta data * @param mixed $default default value * * @return mixed @@ -1161,7 +1171,7 @@ public function setMeta( $path, $value ) * This is a convenience method to enable you to * exchange meta information easily. * - * @param OODBBean $bean + * @param OODBBean $bean bean to copy meta data of * * @return OODBBean */ @@ -1338,7 +1348,7 @@ public function fetchAs( $type ) * For polymorphic bean relations. * Same as fetchAs but uses a column instead of a direct value. * - * @param string $column + * @param string $field field name to use for mapping * * @return OODBBean */ @@ -1354,10 +1364,12 @@ public function poly( $field ) * * Can be used together with with, withCondition, alias and fetchAs. * - * @param string $property property - * @param closure $function function + * @param string $property property + * @param callable $function function + * @param integer $maxDepth maximum depth for traversal * * @return OODBBean + * @throws RedException */ public function traverse( $property, $function, $maxDepth = NULL ) { @@ -1382,7 +1394,7 @@ public function traverse( $property, $function, $maxDepth = NULL ) if ( !is_array( $beans ) ) $beans = array( $beans ); foreach( $beans as $bean ) { - + /** @var OODBBean $bean */ $function( $bean ); $bean->fetchType = $oldFetchType; @@ -1397,7 +1409,7 @@ public function traverse( $property, $function, $maxDepth = NULL ) } /** - * Implementation of\Countable interface. Makes it possible to use + * Implementation of Countable interface. Makes it possible to use * count() function on a bean. * * @return integer @@ -1508,7 +1520,7 @@ public function isTainted() * it has been stored or not. Storing a bean does not undo it's history, * to clean the history of a bean use: clearHistory(). * - * @param string $property name of the property you want the change-status of + * @param string $property name of the property you want the change-status of * * @return boolean */ @@ -1564,11 +1576,15 @@ public function clearHistory() * * Usage: * + * * $album->link('track', array('number'=>1))->song = $song; + * * * or: * + * * $album->link($trackBean)->song = $song; + * * * What this method does is adding the link bean to the own-list, in this case * ownTrack. If the first argument is a string and the second is an array or @@ -1577,7 +1593,7 @@ public function clearHistory() * allowing the chained setter: ->song = $song. * * @param string|OODBBean $type type of bean to dispense or the full bean - * @param string|array $qualification JSON string or array (optional) + * @param string|array $qualification JSON string or array (optional) * * @return OODBBean */ @@ -1609,6 +1625,19 @@ public function link( $typeOrBean, $qualification = array() ) return $bean; } + /** + * Returns a bean of the given type with the same ID of as + * the current one. This only happens in a one-to-one relation. + * This is as far as support for 1-1 goes in RedBeanPHP. This + * method will only return a reference to the bean, changing it + * and storing the bean will not update the related one-bean. + * + * @return OODBBean + */ + public function one( $type ) { + return $this->beanHelper->getToolBox()->getRedBean()->load( $type, $this->id ); + } + /** * Returns the same bean freshly loaded from the database. * @@ -1708,7 +1737,7 @@ public function countShared( $type ) $count = 0; if ( $this->getID() ) { - $count = $redbean->getAssociationManager()->relatedCount( $this, $type, $this->withSql, $this->withParams, TRUE ); + $count = $redbean->getAssociationManager()->relatedCount( $this, $type, $this->withSql, $this->withParams ); } $this->clearModifiers(); @@ -1727,7 +1756,9 @@ public function countShared( $type ) * * Example: * + * * $quest->aggr( 'xownQuestTarget', 'target', 'quest' ); + * * * Loads (in batch) and returns references to all * quest beans residing in the $questTarget->target properties diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Observable.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Observable.php index 0b68d7b7..8e3e6c72 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Observable.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Observable.php @@ -1,4 +1,4 @@ - * renameAssociation('album_song','track') + * * * This allows: * + * * $album->sharedSong + * * * to add/retrieve beans from track instead of album_song. * Also works for exportAll(). @@ -451,8 +455,8 @@ public function wipeAll(); * This method also accepts a single associative array as * its first argument. * - * @param string|array $fromType - * @param string $toType (optional) + * @param string|array $fromType original type name, or array + * @param string $toType new type name (only if 1st argument is string) * * @return void */ @@ -474,7 +478,7 @@ public function getAssocTable( $types ); /** * Given a bean type and a property, this method * tries to infer the fetch type using the foreign key - * definitions in the database. + * definitions in the database. * For instance: project, student -> person. * If no fetchType can be inferred, this method will return NULL. * diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/AQueryWriter.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/AQueryWriter.php index 052ec32d..dbe6ac26 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/AQueryWriter.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/AQueryWriter.php @@ -123,7 +123,7 @@ public static function renameAssociation( $from, $to = NULL ) * Globally available service method for RedBeanPHP. * Converts a camel cased string to a snake cased string. * - * @param string $camel a camelCased string + * @param string $camel camelCased string to converty to snake case * * @return string */ @@ -172,6 +172,7 @@ public static function setNarrowFieldMode( $narrowField ) * This is a lowlevel method to set the SQL filter array. * The format of this array is: * + * * array( * '' => array( * '' => array( @@ -179,22 +180,27 @@ public static function setNarrowFieldMode( $narrowField ) * ) * ) * ) + * * * Example: * + * * array( - * QueryWriter::C_SQLFILTER_READ => array( + * QueryWriter::C_SQLFILTER_READ => array( * 'book' => array( * 'title' => ' LOWER(book.title) ' * ) * ) + * * * Note that you can use constants instead of magical chars * as keys for the uppermost array. * This is a lowlevel method. For a more friendly method * please take a look at the facade: R::bindFunc(). * - * @param array + * @param array list of filters to set + * + * @return void */ public static function setSQLFilters( $sqlFilters, $safeMode = false ) { @@ -284,7 +290,7 @@ private function updateCache() * improve caching efficiency (issue #400). * * @param string $cacheTag cache tag (secondary key) - * @param string $key key + * @param string $key key to store values under * @param array $values content to be stored * * @return void @@ -303,15 +309,17 @@ private function putResultInCache( $cacheTag, $key, $values ) /** * Creates an SQL snippet from a list of conditions of format: * + * * array( * key => array( * value1, value2, value3 .... * ) * ) + * * * @param array $conditions list of conditions * @param array $bindings parameter bindings for SQL snippet - * @param string $addSql SQL snippet + * @param string $addSql additional SQL snippet to append to result * * @return string */ @@ -434,6 +442,7 @@ protected function getForeignKeyForTypeProperty( $type, $property ) * A foreign key map describes the foreign keys in a table. * A FKM always has the same structure: * + * * array( * 'name' => * 'from' => @@ -442,6 +451,7 @@ protected function getForeignKeyForTypeProperty( $type, $property ) * 'on_update' => * 'on_delete' => * ) + * * * @note the keys in the result array are FKDLs, i.e. descriptive unique * keys per source table. Also see: AQueryWriter::makeFKLabel for details. @@ -510,9 +520,9 @@ protected function getSQLFilterSnippet( $type ) * If you pass an offset the bindings will be re-added to the value list. * Some databases cant handle duplicate parameter names in queries. * - * @param array &$valueList list of values to generate slots for (gets modified if needed) - * @param array $otherBindings list of additional bindings - * @param integer $offset start counter at... + * @param array &$valueList list of values to generate slots for (gets modified if needed) + * @param array $otherBindings list of additional bindings + * @param integer $offset start counter at... * * @return string */ @@ -648,8 +658,6 @@ protected function insertRecord( $type, $insertcolumns, $insertvalues ) * @param string $table table string * * @return string - * - * @throws Security */ protected function check( $struct ) { @@ -712,7 +720,7 @@ public function glueSQLCondition( $sql, $glue = NULL ) */ public function glueLimitOne( $sql = '') { - return ( strpos( $sql, 'LIMIT' ) === FALSE ) ? ( $sql . ' LIMIT 1 ' ) : $sql; + return ( strpos( strtoupper( $sql ), 'LIMIT' ) === FALSE ) ? ( $sql . ' LIMIT 1 ' ) : $sql; } /** @@ -832,7 +840,6 @@ public function queryRecord( $type, $conditions = array(), $addSql = NULL, $bind $rows = $this->adapter->get( $sql, $bindings ); - if ( $this->flagUseCache && $key ) { $this->putResultInCache( $type, $key, $rows ); } @@ -1107,6 +1114,8 @@ public function getAssocTable( $types ) * use a result row cache. * * @param boolean + * + * @return void */ public function setUseCache( $yesNo ) { diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/CUBRID.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/CUBRID.php index 4e91acb8..ad8740af 100644 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/CUBRID.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/CUBRID.php @@ -1,10 +1,10 @@ esc( $type, TRUE ); $field = $this->esc( $property, TRUE ) . '_id'; $keys = $this->getKeyMapForType( $table ); - + foreach( $keys as $key ) { - if ( + if ( $key['from'] === $field ) return $key['table']; } diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/MySQL.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/MySQL.php index 7e575760..f6545c2a 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/MySQL.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/MySQL.php @@ -39,6 +39,7 @@ class MySQL extends AQueryWriter implements QueryWriter const C_DATATYPE_SPECIAL_POINT = 90; const C_DATATYPE_SPECIAL_LINESTRING = 91; const C_DATATYPE_SPECIAL_POLYGON = 92; + const C_DATATYPE_SPECIAL_MONEY = 93; const C_DATATYPE_SPECIFIED = 99; @@ -57,6 +58,7 @@ class MySQL extends AQueryWriter implements QueryWriter */ protected function getKeyMapForType( $type ) { + $databaseName = $this->adapter->getCell('SELECT DATABASE()'); $table = $this->esc( $type, TRUE ); $keys = $this->adapter->get(' SELECT @@ -68,17 +70,15 @@ protected function getKeyMapForType( $type ) information_schema.referential_constraints.delete_rule AS `on_delete` FROM information_schema.key_column_usage INNER JOIN information_schema.referential_constraints - ON ( - information_schema.referential_constraints.constraint_name = information_schema.key_column_usage.constraint_name - AND information_schema.referential_constraints.constraint_schema = information_schema.key_column_usage.constraint_schema - AND information_schema.referential_constraints.constraint_catalog = information_schema.key_column_usage.constraint_catalog - ) + ON information_schema.referential_constraints.constraint_name = information_schema.key_column_usage.constraint_name WHERE - information_schema.key_column_usage.table_schema IN ( SELECT DATABASE() ) - AND information_schema.key_column_usage.table_name = ? + information_schema.key_column_usage.table_schema = :database + AND information_schema.referential_constraints.constraint_schema = :database + AND information_schema.key_column_usage.constraint_schema = :database + AND information_schema.key_column_usage.table_name = :table AND information_schema.key_column_usage.constraint_name != \'PRIMARY\' AND information_schema.key_column_usage.referenced_table_name IS NOT NULL - ', array($table)); + ', array( ':database' => $databaseName, ':table' => $table ) ); $keyInfoList = array(); foreach ( $keys as $k ) { $label = $this->makeFKLabel( $k['from'], $k['table'], $k['to'] ); @@ -114,6 +114,7 @@ public function __construct( Adapter $adapter ) MySQL::C_DATATYPE_SPECIAL_POINT => ' POINT ', MySQL::C_DATATYPE_SPECIAL_LINESTRING => ' LINESTRING ', MySQL::C_DATATYPE_SPECIAL_POLYGON => ' POLYGON ', + MySQL::C_DATATYPE_SPECIAL_MONEY => ' DECIMAL(10,2) ' ); $this->sqltype_typeno = array(); @@ -131,7 +132,7 @@ public function __construct( Adapter $adapter ) * This method returns the datatype to be used for primary key IDS and * foreign keys. Returns one if the data type constants. * - * @return integer $const data type to be used for IDS. + * @return integer */ public function getTypeForID() { @@ -185,6 +186,9 @@ public function scanType( $value, $flagSpecial = FALSE ) if ( $value === INF ) return MySQL::C_DATATYPE_TEXT7; if ( $flagSpecial ) { + if ( preg_match( '/^-?\d+\.\d{2}$/', $value ) ) { + return MySQL::C_DATATYPE_SPECIAL_MONEY; + } if ( preg_match( '/^\d{4}\-\d\d-\d\d$/', $value ) ) { return MySQL::C_DATATYPE_SPECIAL_DATE; } @@ -297,6 +301,7 @@ public function addIndex( $type, $name, $property ) /** * @see QueryWriter::addFK + * @return bool */ public function addFK( $type, $targetType, $property, $targetProperty, $isDependent = FALSE ) { @@ -329,6 +334,7 @@ public function addFK( $type, $targetType, $property, $targetProperty, $isDepend } catch ( SQLException $e ) { // Failure of fk-constraints is not a problem } + return true; } /** diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/PostgreSQL.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/PostgreSQL.php index 9b9f601d..f364fc79 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/PostgreSQL.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/PostgreSQL.php @@ -37,6 +37,7 @@ class PostgreSQL extends AQueryWriter implements QueryWriter const C_DATATYPE_SPECIAL_CIRCLE = 92; const C_DATATYPE_SPECIAL_MONEY = 93; const C_DATATYPE_SPECIAL_POLYGON = 94; + const C_DATATYPE_SPECIAL_MONEY2 = 95; //Numbers only money, i.e. fixed point numeric const C_DATATYPE_SPECIFIED = 99; /** @@ -136,6 +137,7 @@ public function __construct( Adapter $adapter ) self::C_DATATYPE_SPECIAL_LSEG => ' lseg ', self::C_DATATYPE_SPECIAL_CIRCLE => ' circle ', self::C_DATATYPE_SPECIAL_MONEY => ' money ', + self::C_DATATYPE_SPECIAL_MONEY2 => ' numeric(10,2) ', self::C_DATATYPE_SPECIAL_POLYGON => ' polygon ', ); @@ -152,7 +154,7 @@ public function __construct( Adapter $adapter ) * This method returns the datatype to be used for primary key IDS and * foreign keys. Returns one if the data type constants. * - * @return integer $const data type to be used for IDS. + * @return integer */ public function getTypeForID() { @@ -184,7 +186,7 @@ public function getColumns( $table ) { $table = $this->esc( $table, TRUE ); - $columnsRaw = $this->adapter->get( "SELECT column_name, data_type FROM information_schema.columns WHERE table_name='$table'" ); + $columnsRaw = $this->adapter->get( "SELECT column_name, data_type FROM information_schema.columns WHERE table_name='$table' AND table_schema = ANY( current_schemas( FALSE ) )" ); $columns = array(); foreach ( $columnsRaw as $r ) { @@ -231,12 +233,16 @@ public function scanType( $value, $flagSpecial = FALSE ) if ( preg_match( '/^\-?(\$|€|¥|£)[\d,\.]+$/', $value ) ) { return PostgreSQL::C_DATATYPE_SPECIAL_MONEY; } + + if ( preg_match( '/^-?\d+\.\d{2}$/', $value ) ) { + return PostgreSQL::C_DATATYPE_SPECIAL_MONEY2; + } } if ( is_float( $value ) ) return self::C_DATATYPE_DOUBLE; if ( $this->startsWithZeros( $value ) ) return self::C_DATATYPE_TEXT; - + if ( $value === FALSE || $value === TRUE || $value === NULL || ( is_numeric( $value ) && AQueryWriter::canBeTreatedAsInt( $value ) && $value < 2147483648 diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/SQLiteT.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/SQLiteT.php index b171a650..96f52d3c 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/SQLiteT.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/QueryWriter/SQLiteT.php @@ -1,4 +1,4 @@ -startsWithZeros( $value ) ) return self::C_DATATYPE_TEXT; if ( $value === TRUE || $value === FALSE ) return self::C_DATATYPE_INTEGER; - + if ( is_numeric( $value ) && ( intval( $value ) == $value ) && $value < 2147483648 && $value > -2147483648 ) return self::C_DATATYPE_INTEGER; if ( ( is_numeric( $value ) && $value < 2147483648 && $value > -2147483648) @@ -290,7 +291,7 @@ public function addColumn( $table, $column, $type ) public function code( $typedescription, $includeSpecials = FALSE ) { $r = ( ( isset( $this->sqltype_typeno[$typedescription] ) ) ? $this->sqltype_typeno[$typedescription] : 99 ); - + return $r; } @@ -400,7 +401,7 @@ public function addIndex( $type, $name, $column ) public function wipe( $type ) { $table = $this->esc( $type ); - + $this->adapter->exec( "DELETE FROM $table " ); } diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/R.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/R.php index 1e2c9fd9..6f2648b4 100644 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/R.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/R.php @@ -16,4 +16,6 @@ * @license BSD/GPLv2 * */ - class R extends Facade {} +class R extends Facade +{ +} diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/RedException.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/RedException.php index d8ca7146..5973bbb7 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/RedException.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/RedException.php @@ -1,4 +1,4 @@ -getMeta( 'type' ) . '_id'; @@ -210,8 +201,8 @@ protected function processTrashcan( $bean, $ownTrashcan ) /** * Unassociates the list items in the trashcan. * - * @param OODBBean $bean bean - * @param array $sharedTrashcan list + * @param OODBBean $bean bean to process + * @param array $sharedTrashcan list to process * * @return void */ @@ -225,8 +216,8 @@ protected function processSharedTrashcan( $bean, $sharedTrashcan ) /** * Stores all the beans in the residue group. * - * @param OODBBean $bean bean - * @param array $sharedresidue list + * @param OODBBean $bean bean to process + * @param array $sharedresidue list to process * * @return void */ @@ -259,19 +250,20 @@ protected function hasListsOrObjects( OODBBean $bean ) return $processLists; } - /** * Converts an embedded bean to an ID, removed the bean property and * stores the bean in the embedded beans array. * - * @param array $embeddedBeans destination array for embedded bean - * @param OODBBean $bean target bean - * @param string $property property that contains the embedded bean + * @param array $embeddedBeans destination array for embedded bean + * @param OODBBean $bean target bean to process + * @param string $property property that contains the embedded bean * @param OODBBean $value embedded bean itself + * + * @return void */ protected function processEmbeddedBean( &$embeddedBeans, $bean, $property, OODBBean $value ) { - $linkField = $property . '_id'; + $linkField = $property . '_id'; $id = $this->prepareEmbeddedBean( $value ); if ($bean->$linkField != $id) $bean->$linkField = $id; $bean->setMeta( 'cast.' . $linkField, 'id' ); @@ -279,11 +271,13 @@ protected function processEmbeddedBean( &$embeddedBeans, $bean, $property, OODBB unset( $bean->$property ); } - /** * Constructor, requires a query writer. + * Creates a new instance of the bean respository class. * - * @param QueryWriter $writer writer + * @param QueryWriter $writer the Query Writer to use for this repository + * + * @return void */ public function __construct( OODB $oodb, QueryWriter $writer ) { @@ -299,8 +293,6 @@ public function __construct( OODB $oodb, QueryWriter $writer ) * @param OODBBean $bean the bean that needs to be checked * * @return void - * - * @throws Security $exception */ public function check( OODBBean $bean ) { @@ -339,10 +331,12 @@ public function check( OODBBean $bean ) * * Conditions need to take form: * + * * array( * 'PROPERTY' => array( POSSIBLE VALUES... 'John', 'Steve' ) * 'PROPERTY' => array( POSSIBLE VALUES... ) * ); + * * * All conditions are glued together using the AND-operator, while all value lists * are glued using IN-operators thus acting as OR-conditions. @@ -356,7 +350,6 @@ public function check( OODBBean $bean ) * @param array $bindings whether you prefer to use a WHERE clause or not (TRUE = not) * * @return array - * */ public function find( $type, $conditions = array(), $sql = NULL, $bindings = array() ) { @@ -512,8 +505,6 @@ public function convertToBeans( $type, $rows ) * @param array $bindings parameters to bind to SQL * * @return integer - * - * @throws SQLException */ public function count( $type, $addSQL = '', $bindings = array() ) { @@ -543,8 +534,6 @@ public function count( $type, $addSQL = '', $bindings = array() ) * @param OODBBean|SimpleModel $bean bean you want to remove from database * * @return void - * - * @throws SQLException */ public function trash( $bean ) { @@ -591,8 +580,6 @@ public function tableExists( $table ) * @param string $type type of bean you wish to delete all instances of * * @return boolean - * - * @throws SQLException */ public function wipe( $type ) { diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Repository/Fluid.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Repository/Fluid.php index 65502e7e..fb4dcee4 100644 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Repository/Fluid.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Repository/Fluid.php @@ -3,16 +3,10 @@ namespace RedBeanPHP\Repository; use RedBeanPHP\OODBBean as OODBBean; -use RedBeanPHP\Observable as Observable; -use RedBeanPHP\Adapter\DBAdapter as DBAdapter; -use RedBeanPHP\BeanHelper\FacadeBeanHelper as FacadeBeanHelper; use RedBeanPHP\QueryWriter as QueryWriter; use RedBeanPHP\RedException as RedException; -use RedBeanPHP\RedException\Security as Security; -use RedBeanPHP\SimpleModel as SimpleModel; use RedBeanPHP\BeanHelper as BeanHelper; use RedBeanPHP\RedException\SQL as SQLException; -use RedBeanPHP\QueryWriter\AQueryWriter as AQueryWriter; use RedBeanPHP\Repository as Repository; /** @@ -41,8 +35,6 @@ class Fluid extends Repository * @param string $cast cast identifier * * @return integer - * - * @throws Security */ private function getTypeFromCast( $cast ) { @@ -63,8 +55,8 @@ private function getTypeFromCast( $cast ) * Orders the Query Writer to create a table if it does not exist already and * adds a note in the build report about the creation. * - * @param OODBBean $bean bean to update report of - * @param string $table table to check and create if not exists + * @param OODBBean $bean bean to update report of + * @param string $table table to check and create if not exists * * @return void */ @@ -149,12 +141,15 @@ private function modifySchema( OODBBean $bean, $property, $value ) * adds a foreign key. Also adds a constraint in case the type is * in the dependent list. * - * @param OODBBean $bean bean - * @param array $ownAdditions list of addition beans in own-list + * Note that this method raises a custom exception if the bean + * is not an instance of OODBBean. Therefore it does not use + * a type hint. This allows the user to take action in case + * invalid objects are passed in the list. * - * @return void + * @param OODBBean $bean bean to process + * @param array $ownAdditions list of addition beans in own-list * - * @throws Security + * @return void */ protected function processAdditions( $bean, $ownAdditions ) { @@ -217,13 +212,11 @@ protected function storeBean( OODBBean $bean ) } /** - * Handles\Exceptions. Suppresses exceptions caused by missing structures. + * Handles exceptions. Suppresses exceptions caused by missing structures. * - * @param\Exception $exception exception + * @param Exception $exception exception * * @return void - * - * @throws\Exception */ protected function handleException( \Exception $exception ) { @@ -286,10 +279,7 @@ public function dispense( $type, $number = 1, $alwaysReturnArray = FALSE ) * @param string $type type of bean you want to load * @param integer $id ID of the bean you want to load * - * @throws SQL - * * @return OODBBean - * */ public function load( $type, $id ) { diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Repository/Frozen.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Repository/Frozen.php index 9f42d72f..7e7a53ef 100644 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Repository/Frozen.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Repository/Frozen.php @@ -3,16 +3,10 @@ namespace RedBeanPHP\Repository; use RedBeanPHP\OODBBean as OODBBean; -use RedBeanPHP\Observable as Observable; -use RedBeanPHP\Adapter\DBAdapter as DBAdapter; -use RedBeanPHP\BeanHelper\FacadeBeanHelper as FacadeBeanHelper; use RedBeanPHP\QueryWriter as QueryWriter; use RedBeanPHP\RedException as RedException; -use RedBeanPHP\RedException\Security as Security; -use RedBeanPHP\SimpleModel as SimpleModel; use RedBeanPHP\BeanHelper as BeanHelper; use RedBeanPHP\RedException\SQL as SQLException; -use RedBeanPHP\QueryWriter\AQueryWriter as AQueryWriter; use RedBeanPHP\Repository as Repository; /** @@ -36,12 +30,11 @@ class Frozen extends Repository { /** - * Handles\Exceptions. Suppresses exceptions caused by missing structures. + * Handles exceptions. Suppresses exceptions caused by missing structures. * - * @param \Exception $exception exception + * @param \Exception $exception exception to handle * * @return void - * * @throws \Exception */ protected function handleException( \Exception $exception ) @@ -85,12 +78,16 @@ protected function storeBean( OODBBean $bean ) * adds a foreign key. Also adds a constraint in case the type is * in the dependent list. * - * @param OODBBean $bean bean - * @param array $ownAdditions list of addition beans in own-list + * Note that this method raises a custom exception if the bean + * is not an instance of OODBBean. Therefore it does not use + * a type hint. This allows the user to take action in case + * invalid objects are passed in the list. * - * @return void + * @param OODBBean $bean bean to process + * @param array $ownAdditions list of addition beans in own-list * - * @throws Security + * @return void + * @throws RedException */ protected function processAdditions( $bean, $ownAdditions ) { @@ -124,7 +121,7 @@ protected function processAdditions( $bean, $ownAdditions ) * configuration for you. * * @param string $type type of bean you want to dispense - * @param string $number number of beans you would like to get + * @param int $number number of beans you would like to get * @param boolean $alwaysReturnArray if TRUE always returns the result as an array * * @return OODBBean @@ -134,6 +131,7 @@ public function dispense( $type, $number = 1, $alwaysReturnArray = FALSE ) $OODBBEAN = defined( 'REDBEAN_OODBBEAN_CLASS' ) ? REDBEAN_OODBBEAN_CLASS : '\RedBeanPHP\OODBBean'; $beans = array(); for ( $i = 0; $i < $number; $i++ ) { + /** @var \RedBeanPHP\OODBBean $bean */ $bean = new $OODBBEAN; $bean->initializeForDispense( $type, $this->oodb->getBeanHelper() ); $this->oodb->signal( 'dispense', $bean ); @@ -163,10 +161,8 @@ public function dispense( $type, $number = 1, $alwaysReturnArray = FALSE ) * @param string $type type of bean you want to load * @param integer $id ID of the bean you want to load * - * @throws SQL - * * @return OODBBean - * + * @throws SQLException */ public function load( $type, $id ) { diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/SimpleModel.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/SimpleModel.php index 17a54bc0..b7940f44 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/SimpleModel.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/SimpleModel.php @@ -1,4 +1,4 @@ -sharedTag; $foundTags = array(); @@ -193,12 +193,12 @@ public function tag( OODBBean $bean, $tagList = NULL ) * If $tagList is a comma separated list of tags all tags will * be associated with the bean. * You may also pass an array instead of a string. - * + * * Tag list can be either an array with tag names or a comma separated list * of tag names. * - * @param OODBBean $bean bean to add tags to - * @param array|string $tagList list of tags to add to bean + * @param OODBBean $bean bean to add tags to + * @param array|string $tagList list of tags to add to bean * * @return void */ @@ -250,8 +250,8 @@ public function tagged( $beanType, $tagList, $sql = '', $bindings = array() ) * Tag list can be either an array with tag names or a comma separated list * of tag names. * - * @param string $beanType type of bean you are looking for - * @param array|string $tagList list of tags to match + * @param string $beanType type of bean you are looking for + * @param array|string $tagList list of tags to match * * @return array */ diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/ToolBox.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/ToolBox.php index ef60c0cf..9947b792 100755 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/ToolBox.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/ToolBox.php @@ -1,4 +1,4 @@ -dispense( $type, $num, $alwaysReturnArray ); + + if ( isset( $import ) ) { + $beanOrBeans->import( $import ); + } + + return $beanOrBeans; + } + + + /** + * Takes a comma separated list of bean types + * and dispenses these beans. For each type in the list + * you can specify the number of beans to be dispensed. + * + * Usage: + * + * + * list( $book, $page, $text ) = R::dispenseAll( 'book,page,text' ); + * + * + * This will dispense a book, a page and a text. This way you can + * quickly dispense beans of various types in just one line of code. + * + * Usage: + * + * + * list($book, $pages) = R::dispenseAll('book,page*100'); + * + * + * This returns an array with a book bean and then another array + * containing 100 page beans. + * + * @param OODB $oodb OODB + * @param string $order a description of the desired dispense order using the syntax above + * @param boolean $onlyArrays return only arrays even if amount < 2 + * + * @return array + */ + public static function dispenseAll( OODB $oodb, $order, $onlyArrays = FALSE ) + { + $list = array(); + + foreach( explode( ',', $order ) as $order ) { + if ( strpos( $order, '*' ) !== FALSE ) { + list( $type, $amount ) = explode( '*', $order ); + } else { + $type = $order; + $amount = 1; + } + + $list[] = self::dispense( $oodb, $type, $amount, $onlyArrays ); + } + + return $list; + } +} diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Util/Dump.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Util/Dump.php new file mode 100644 index 00000000..de616641 --- /dev/null +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Util/Dump.php @@ -0,0 +1,61 @@ + 35) { + $beanStr = substr( $str, 0, 35 ).'... '; + } else { + $beanStr = $str; + } + return $beanStr; + } + + if ( is_array( $data ) ) { + foreach( $data as $key => $item ) { + $array[$key] = self::dump( $item ); + } + } + + return $array; + } +} diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Util/MultiLoader.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Util/MultiLoader.php new file mode 100644 index 00000000..67572efc --- /dev/null +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Util/MultiLoader.php @@ -0,0 +1,56 @@ + $typeItem ) { + $types[$k] = $oodb->load( $typeItem, $id ); + } + + return $types; + } +} diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/Util/Transaction.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Util/Transaction.php new file mode 100644 index 00000000..35e70f8f --- /dev/null +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/Util/Transaction.php @@ -0,0 +1,90 @@ + + * $from = 1; + * $to = 2; + * $amount = 300; + * + * R::transaction(function() use($from, $to, $amount) + * { + * $accountFrom = R::load('account', $from); + * $accountTo = R::load('account', $to); + * $accountFrom->money -= $amount; + * $accountTo->money += $amount; + * R::store($accountFrom); + * R::store($accountTo); + * }); + * + * + * @param Adapter $adapter Database Adapter providing transaction mechanisms. + * @param callable $callback Closure (or other callable) with the transaction logic + * + * @return mixed + */ + public static function transaction( Adapter $adapter, $callback ) + { + if ( !is_callable( $callback ) ) { + throw new RedException( 'R::transaction needs a valid callback.' ); + } + + static $depth = 0; + $result = null; + try { + if ( $depth == 0 ) { + $adapter->startTransaction(); + } + $depth++; + $result = call_user_func( $callback ); //maintain 5.2 compatibility + $depth--; + if ( $depth == 0 ) { + $adapter->commit(); + } + } catch ( \Exception $exception ) { + $depth--; + if ( $depth == 0 ) { + $adapter->rollback(); + } + throw $exception; + } + return $result; + } +} diff --git a/tests/vendor/gabordemooij/redbean/RedBeanPHP/loader.php b/tests/vendor/gabordemooij/redbean/RedBeanPHP/loader.php index 6f31b29e..ed4e93e4 100644 --- a/tests/vendor/gabordemooij/redbean/RedBeanPHP/loader.php +++ b/tests/vendor/gabordemooij/redbean/RedBeanPHP/loader.php @@ -59,6 +59,13 @@ require( REDBEANPHP_MAIN_DIR . 'Plugin.php' ); require( REDBEANPHP_MAIN_DIR . 'Functions.php' ); +/* Facade Utilities */ +require( REDBEANPHP_MAIN_DIR . 'Util/ArrayTool.php' ); +require( REDBEANPHP_MAIN_DIR . 'Util/DispenseHelper.php' ); +require( REDBEANPHP_MAIN_DIR . 'Util/Dump.php' ); +require( REDBEANPHP_MAIN_DIR . 'Util/MultiLoader.php' ); +require( REDBEANPHP_MAIN_DIR . 'Util/Transaction.php' ); + //Allow users to mount the plugin folder. if ( defined( 'REDBEANPHP_PLUGINS' ) ) { Phar::mount( 'RedBeanPHP/Plugin', REDBEANPHP_PLUGINS ); diff --git a/tests/vendor/gabordemooij/redbean/replica2.php b/tests/vendor/gabordemooij/redbean/replica2.php index 0bcb09b2..af2f0672 100644 --- a/tests/vendor/gabordemooij/redbean/replica2.php +++ b/tests/vendor/gabordemooij/redbean/replica2.php @@ -40,7 +40,7 @@ function addFile($file) { global $code; - echo 'Added '. $file . ' to package... '.PHP_EOL; + echo 'Added ', $file , ' to package... ',PHP_EOL; $raw = file_get_contents($file); $raw = preg_replace('/namespace\s+([a-zA-Z0-9\\\;]+);/m', 'namespace $1 {', $raw); $raw .= '}'; @@ -85,6 +85,11 @@ function addFile($file) { addFile( DIR . 'LabelMaker.php' ); addFile( DIR . 'Facade.php' ); addFile( DIR . 'DuplicationManager.php' ); + addFile( DIR . 'Util/ArrayTool.php' ); + addFile( DIR . 'Util/DispenseHelper.php' ); + addFile( DIR . 'Util/Dump.php' ); + addFile( DIR . 'Util/MultiLoader.php' ); + addFile( DIR . 'Util/Transaction.php' ); addFile( DIR . 'Plugin.php' ); $func = file_get_contents(DIR . 'Functions.php'); @@ -106,16 +111,16 @@ class R extends \RedBeanPHP\Facade{}; $code = ' 0) { - echo 'Done!' .PHP_EOL; + echo 'Done!' ,PHP_EOL; } else { - echo 'Hm, something seems to have gone wrong... '.PHP_EOL; + echo 'Hm, something seems to have gone wrong... ',PHP_EOL; } } diff --git a/tests/vendor/gabordemooij/redbean/run_all_tests.sh b/tests/vendor/gabordemooij/redbean/run_all_tests.sh new file mode 100755 index 00000000..242c8cf4 --- /dev/null +++ b/tests/vendor/gabordemooij/redbean/run_all_tests.sh @@ -0,0 +1,6 @@ +#!/bin/sh +php replica2.php +cp rb.php testing/cli/testcontainer/rb.php +cd testing +cd cli +php runtests.php diff --git a/tests/vendor/gabordemooij/redbean/run_single_test.sh b/tests/vendor/gabordemooij/redbean/run_single_test.sh new file mode 100755 index 00000000..92015d4b --- /dev/null +++ b/tests/vendor/gabordemooij/redbean/run_single_test.sh @@ -0,0 +1,11 @@ +#!/bin/sh +if [ -z "$1" ] +then + echo "Please enter the name of a test suite, example: Blackhole/Version" + exit +fi +php replica2.php +cp rb.php testing/cli/testcontainer/rb.php +cd testing +cd cli +php runtests.php $1 diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT.php index 5c50c4e8..d2ceadb4 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT.php @@ -19,6 +19,11 @@ */ abstract class RedUNIT { + /** + * @var integer + */ + protected $round; + /** * @var string */ @@ -35,7 +40,7 @@ abstract public function getTargetDrivers(); public function prepare() { R::freeze( FALSE ); - + R::debug( FALSE ); R::nuke(); @@ -86,4 +91,34 @@ public function setCurrentDriver( $driver ) { $this->currentlyActiveDriverID = $driver; } + + /** + * Sets the round number. + * + * @param integer $roundNumber round + */ + public function setRound( $roundNumber ) + { + $this->round = (int) $roundNumber; + } + + /** + * Returns the current round number + * + * @return integer + */ + public function getRound() + { + return $this->round; + } + + /** + * Returns TRUE if the current round is the first round. + * + * @return boolean + */ + public function isFirstRound() + { + return ( $this->round === 0 ); + } } diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Aliasing.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Aliasing.php index bfb896e7..e497f7eb 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Aliasing.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Aliasing.php @@ -252,7 +252,8 @@ public function testFetchTypeConfusionIssue291() list( $teacher, $student ) = R::dispense( 'person', 2 ) ; $teacher->name = 'jimmy' ; $student->name = 'jacko' ; - R::store( $teacher, $student ) ; + R::store( $teacher ) ; + R::store( $student ) ; $client = R::dispense( 'client' ) ; $client->firm = 'bean AG' ; diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Arrays.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Arrays.php index 1ad65223..dbdb284b 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Arrays.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Arrays.php @@ -1,4 +1,4 @@ -name = 'bean'; $bean->taste = 'salty'; @@ -38,7 +38,7 @@ public function testArrayAccess() { asrt( isset( $properties['id'] ), TRUE ); asrt( isset( $properties['name'] ), TRUE ); asrt( isset( $properties['taste'] ), TRUE ); - + $bean = R::dispense('bean'); $bean['name'] = 'bean'; $bean['taste'] = 'salty'; @@ -52,30 +52,30 @@ public function testArrayAccess() { asrt( isset( $properties['name'] ), TRUE ); asrt( isset( $properties['taste'] ), TRUE ); } - + /** * Tests array access with lists. - * + * * @return void */ public function testArrayAccessAndLists() { $book = R::dispense('book'); $book['title'] = 'My Book'; - + //Can we add a bean in list with array access? $book['ownPage'][] = R::dispense('page'); $book['ownPage'][] = R::dispense('page'); - + asrt( count( $book ), 3 ); - + $properties = array(); foreach($book as $key => $value) { $properties[ $key ] = $value; } - + asrt( count( $properties ), 3 ); - + //Dont reveal aliased x-own and -List in foreach-loop asrt( isset( $properties['id'] ), TRUE ); asrt( isset( $properties['title'] ), TRUE ); @@ -83,13 +83,13 @@ public function testArrayAccessAndLists() asrt( isset( $properties['ownPageList'] ), FALSE ); asrt( isset( $properties['xownPage'] ), FALSE ); asrt( isset( $properties['xownPageList'] ), FALSE ); - + //But keep them countable asrt( count( $book['ownPage'] ), 2 ); asrt( count( $book['ownPageList'] ), 2 ); asrt( count( $book['xownPage'] ), 2 ); asrt( count( $book['xownPageList'] ), 2 ); - + //And reveal them with isset() asrt( isset( $book['id'] ), TRUE ); asrt( isset( $book['title'] ), TRUE ); @@ -97,21 +97,21 @@ public function testArrayAccessAndLists() asrt( isset( $book['ownPageList'] ), TRUE ); asrt( isset( $book['xownPage'] ), TRUE ); asrt( isset( $book['xownPageList'] ), TRUE ); - + //Can we add using the List alias? $book['ownPageList'][] = R::dispense('page'); asrt( count( $book['ownPage'] ), 3 ); asrt( count( $book['ownPageList'] ), 3 ); asrt( count( $book['xownPage'] ), 3 ); asrt( count( $book['xownPageList'] ), 3 ); - + //Can we add using the x-mode alias? $book['ownPageList'][] = R::dispense('page'); asrt( count( $book['ownPage'] ), 4 ); asrt( count( $book['ownPageList'] ), 4 ); asrt( count( $book['xownPage'] ), 4 ); asrt( count( $book['xownPageList'] ), 4 ); - + //Can we unset using array access? unset( $book['ownPage'] ); asrt( isset( $book['ownPage'] ), FALSE ); @@ -136,39 +136,39 @@ public function testArrayAccessAndLists() asrt( isset( $book['ownPageList'] ), FALSE ); asrt( isset( $book['xownPage'] ), FALSE ); asrt( isset( $book['xownPageList'] ), FALSE ); - + //does it work with shared lists as well? $book['sharedCategory'] = array( R::dispense('category') ); asrt( count( $book ), 3 ); - + $properties = array(); foreach($book as $key => $value) { $properties[ $key ] = $value; } - + asrt( isset( $properties['sharedCategory'] ), TRUE ); asrt( isset( $properties['sharedCategoryList'] ), FALSE ); - + asrt( isset( $book['sharedCategory'] ), TRUE ); asrt( isset( $book['sharedCategoryList'] ), TRUE ); - + asrt( count( $book['sharedCategory'] ), 1 ); asrt( count( $book['sharedCategoryList'] ), 1 ); - + $book['sharedCategory'][] = R::dispense( 'category' ); - + asrt( count( $book['sharedCategory'] ), 2 ); asrt( count( $book['sharedCategoryList'] ), 2 ); - + $book['sharedCategoryList'][] = R::dispense( 'category' ); - + asrt( count( $book['sharedCategory'] ), 3 ); asrt( count( $book['sharedCategoryList'] ), 3 ); } - + /** * Tests array access with parent beans. - * + * * @return void */ public function testArrayAccessWithBeans() @@ -194,10 +194,10 @@ public function testArrayAccessWithBeans() asrt( isset( $book['author'] ), FALSE ); asrt( count( $book ), 1 ); } - + /** * Tests array access with CRUD operations. - * + * * @return void */ public function testArrayAccessWithCRUD() @@ -206,7 +206,7 @@ public function testArrayAccessWithCRUD() $book = R::dispense( 'book' ); $book['ownPageList'] = R::dispense( 'page', 3 ); R::store( $book ); - + $book = $book->fresh(); //note that isset first returns false, so you can check if a list is loaded asrt( isset( $book['ownPage'] ), FALSE ); @@ -225,10 +225,10 @@ public function testArrayAccessWithCRUD() asrt( count( $book['ownPageList'] ), 3 ); $book = $book->fresh(); asrt( count( $book['xownPageList'] ), 3 ); - + $book['ownPage'][] = R::dispense( 'page' ); R::store( $book ); - + $book = $book->fresh(); asrt( count( $book['ownPage'] ), 4 ); $book = $book->fresh(); @@ -237,7 +237,7 @@ public function testArrayAccessWithCRUD() asrt( count( $book['ownPageList'] ), 4 ); $book = $book->fresh(); asrt( count( $book['xownPageList'] ), 4 ); - + //does dependency still work? $book['xownPageList'] = array(); R::store( $book ); @@ -249,11 +249,11 @@ public function testArrayAccessWithCRUD() asrt( count( $book['ownPageList'] ), 0 ); $book = $book->fresh(); asrt( count( $book['xownPageList'] ), 0 ); - + //does shared list work as well? $book['sharedTag'] = R::dispense( 'tag', 2 ); R::store( $book ); - + $book = $book->fresh(); //note that isset first returns false, so you can check if a list is loaded asrt( isset( $book['sharedTagList'] ), FALSE ); @@ -263,18 +263,17 @@ public function testArrayAccessWithCRUD() asrt( count( $book['sharedTag'] ), 2 ); asrt( isset( $book['sharedTagList'] ), TRUE ); asrt( isset( $book['sharedTag'] ), TRUE ); - - + $book['sharedTag'][] = R::dispense( 'tag' ); R::store( $book ); - + $book = $book->fresh(); asrt( count( $book['sharedTagList'] ), 3 ); asrt( count( $book['sharedTag'] ), 3 ); - + $book['sharedTagList'][] = R::dispense( 'tag' ); R::store( $book ); - + $book = $book->fresh(); asrt( count( $book['sharedTagList'] ), 4 ); asrt( count( $book['sharedTag'] ), 4 ); @@ -288,16 +287,16 @@ public function testArrayAccessWithCRUD() $first = reset( $book['sharedBookList'] ); $id = $first['id']; asrt( count( $book['sharedBookList'][$id]['sharedBookList'] ), 1 ); - + $properties = array(); foreach($book as $key => $value) { $properties[ $key ] = $value; } - + asrt( count( $properties ), 2 ); $keys = array_keys( $properties ); sort( $keys ); asrt( implode( ',', $keys ), 'id,sharedBook' ); } - + } \ No newline at end of file diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Association.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Association.php index 98cc5836..9887ca2f 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Association.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Association.php @@ -170,6 +170,14 @@ public function testOneToOne() R::storeAll( array( $author, $bio ) ); + $x = $author->one( 'bio' ); + $y = $bio->one('author'); + + asrt( $x->name, $bio->name ); + asrt( $y->name, $author->name ); + asrt( $x->id, $bio->id ); + asrt( $y->id, $author->id ); + $id2 = $author->id; list( $a, $b ) = R::loadMulti( 'author,bio', $id1 ); @@ -310,7 +318,6 @@ public function testMultiAssociationDissociation() asrt( count( $wines[2]->sharedOlive ), 0 ); } - public function testErrorHandling() { R::nuke(); @@ -345,7 +352,6 @@ public function testErrorHandling() fail(); } - } } diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Bean.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Bean.php index 4abfe699..1aff3715 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Bean.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Bean.php @@ -53,7 +53,7 @@ public function testBeau() asrt( isset( $columns['xownerCritic'] ), FALSE ); asrt( isset( $columns['sharedbyReader'] ), FALSE ); } - + /** * Other tests... */ diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Boxing.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Boxing.php index ff3ce37a..33b1dd90 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Boxing.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Boxing.php @@ -72,4 +72,3 @@ public function testBoxing() } } - diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Chill.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Chill.php index 71db71d2..86524b27 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Chill.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Chill.php @@ -99,7 +99,6 @@ public function testDontAddUniqueConstraintForChilledBeanTypes() } asrt(R::count('person_role'), 2); - R::nuke(); $link = R::getRedBean()->dispense('person_role'); $person = R::dispense( 'person' ); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Close.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Close.php index 511f748b..573123ed 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Close.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Close.php @@ -38,4 +38,3 @@ public function testClose() } } - diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Count.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Count.php index dad1d405..c914f599 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Count.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Count.php @@ -50,7 +50,6 @@ public function testCountType() } } - /** * Test count and wipe. * diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Cross.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Cross.php index b77559fd..d8f1fae3 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Cross.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Cross.php @@ -461,7 +461,7 @@ public function testAggrBasic() $text->content = 'CHANGED'; } foreach( $texts as $text ) { - asrt( $text->content, 'CHANGED', TRUE ); + asrt( $text->content, 'CHANGED' ); } } @@ -504,7 +504,7 @@ public function testAggrWithOnlyAlias() $text->content = 'CHANGED'; } foreach( $texts as $text ) { - asrt( $text->content, 'CHANGED', TRUE ); + asrt( $text->content, 'CHANGED' ); } } diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Cursors.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Cursors.php index 3fcc0bf0..2168a475 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Cursors.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Cursors.php @@ -61,7 +61,7 @@ public function testBasicCursors() if ( $i > 5 ) break; } $key = array_rand( $list ); - $content = $list[ $key ]; + $content = $list[ $key ]; $collection = R::findCollection( 'page', ' content = ? ', array( $content ) ); $bean = $collection->next(); asrt( $bean->content, $content ); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Database.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Database.php index 15bd2e7c..60d0b4c8 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Database.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Database.php @@ -161,7 +161,7 @@ public function testFetchTypes() $expect = '{"1":"a","2":"c"}'; asrt( json_encode( R::getAssoc( 'SELECT id, a FROM page' ) ), $expect ); - + $expect = '{"1":{"a":"a","b":"b"},"2":{"a":"c","b":"d"}}'; asrt( json_encode( R::getAssoc( 'SELECT id, a, b FROM page' ) ), $expect ); @@ -391,4 +391,3 @@ public function exec( $sql, $aValues = array(), $noEvent = FALSE ) } } - diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Dispense.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Dispense.php index 25c25652..62c270e8 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Dispense.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Dispense.php @@ -70,7 +70,6 @@ public function testBasicsDispense() asrt( isset( $bean["abc"] ), TRUE ); } - /** * Tests the facade-only dispenseAll method. * diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Dup.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Dup.php index 73560153..d352b720 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Dup.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Dup.php @@ -424,7 +424,7 @@ public function DupAndCache() * }}' */ - $d->setTables( $cache, 1 ); + $d->setTables( $cache ); ob_start(); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Finding.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Finding.php index 48bbb121..a5d309fd 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Finding.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Finding.php @@ -663,6 +663,10 @@ public function testFindOneLimitOne() $logger->clear(); $found = R::findOne( 'book', ' title = ? LIMIT 1', array( 'b' ) ); asrt( count( $logger->grep('LIMIT 1') ), 1 ); + $logger->clear(); + $found = R::findOne( 'book', ' title = ? limit 1', array( 'b' ) ); + asrt( count( $logger->grep('LIMIT 1') ), 0 ); + asrt( count( $logger->grep('limit 1') ), 1 ); asrt( ( $found instanceof \RedBeanPHP\OODBBean ), TRUE ); $found = R::findOne( 'book', ' title = ? LIMIT 2', array( 'b' ) ); asrt( count( $logger->grep('LIMIT 2') ), 1 ); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Foreignkeys.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Foreignkeys.php index 747bf3bf..19428da9 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Foreignkeys.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Foreignkeys.php @@ -9,7 +9,6 @@ use RedBeanPHP\Adapter as Adapter; use RedBeanPHP\QueryWriter\AQueryWriter as AQueryWriter; - /** * Foreignkeys * @@ -229,7 +228,7 @@ public function testDependency() * @return void */ public function testDependency2() - { + { $can = $this->createBeanInCan( TRUE ); asrt( R::count( 'bean' ), 1 ); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Fuse.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Fuse.php index 0ced24c1..f8851795 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Fuse.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Fuse.php @@ -158,7 +158,7 @@ public function testHooks() asrt( $probe->getLogActionCount( 'after_delete' ), 0 ); asrt( ( $probe->getDataFromLog( 2, 'bean' ) === $probe ), TRUE ); } - + /** * Tests the SimpleFacadeBeanHelper factory setter. * @@ -336,7 +336,7 @@ public function testModelErrorHandling() asrt( $old[1], NULL); $test->nonExistantMethod(); //we cant really test this... :( pass(); - + $old = R::setErrorHandlingFUSE( OODBBean::C_ERR_NOTICE ); asrt( is_array( $old ), TRUE ); asrt( count( $old ), 2 ); @@ -347,7 +347,7 @@ public function testModelErrorHandling() }, E_USER_NOTICE); $test->nonExistantMethod(); restore_error_handler(); - + $old = OODBBean::setErrorHandlingFUSE( OODBBean::C_ERR_WARN ); asrt( is_array( $old ), TRUE ); asrt( count( $old ), 2 ); @@ -358,7 +358,7 @@ public function testModelErrorHandling() }, E_USER_WARNING); $test->nonExistantMethod(); restore_error_handler(); - + $old = OODBBean::setErrorHandlingFUSE( OODBBean::C_ERR_FATAL ); asrt( is_array( $old ), TRUE ); asrt( count( $old ), 2 ); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Joins.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Joins.php index eb13c3ba..2bb4f460 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Joins.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Joins.php @@ -6,7 +6,6 @@ use RedBeanPHP\Facade as R; use RedBeanPHP\OODBBean as OODBBean; - /** * Joins * @@ -106,10 +105,10 @@ public function testJoins() /** * Helper for the next test. - * + * * @param array $books the books we are going to check * @param string $numberList the numbers that are expected - * + * * @return void */ private function checkBookNumbers( $books, $numberList ) @@ -190,7 +189,7 @@ private function testComplexCombinationsJoins() $books = $author->with(' ORDER BY @joined.category.title DESC, @joined.info.title ASC' )->ownBookList; $this->checkBookNumbers( $books, '3,2,0,1' ); $books = $author->with(' ORDER BY @joined.category.title DESC, @joined.info.title ASC LIMIT 2' )->ownBookList; - $this->checkBookNumbers( $books, '3,2' ); + $this->checkBookNumbers( $books, '3,2' ); } /** diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Keywords.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Keywords.php index e343f000..9a5c6a1a 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Keywords.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Keywords.php @@ -48,7 +48,6 @@ public function testKeywords() 'distinct', 'like' ); - foreach ( $keywords as $k ) { R::nuke(); @@ -76,6 +75,5 @@ public function testKeywords() pass(); } - } } diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Largenum.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Largenum.php index b7c0d87c..9a3cb4a8 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Largenum.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Largenum.php @@ -22,7 +22,7 @@ class Largenum extends Base /** * Test for issue #386. * Can we use large numbers in LIMIT ? - * + * * @return void */ public function testLargeNum() diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Logging.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Logging.php index 29d80620..59090574 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Logging.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Logging.php @@ -5,7 +5,7 @@ use RedUNIT\Base as Base; use RedBeanPHP\Facade as R; use RedBeanPHP\Logger as Logger; -use RedBeanPHP\Logger\RDefault as RDefault; +use RedBeanPHP\Logger\RDefault as RDefault; /** * Logging diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Misc.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Misc.php index 16a3fbe7..95caed61 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Misc.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Misc.php @@ -28,6 +28,37 @@ */ class Misc extends Base { + /** + * Test whether we can set the 'auto clear' + * option in OODB. + * + * @return void + */ + public function testAutoClearHistory() + { + testpack( 'Auto clear history' ); + $book = R::dispense( 'book' ); + $book->pages = 100; + $book->title = 'book'; + R::store( $book ); + $book = R::findOne( 'book' ); + asrt( $book->hasChanged( 'title' ), FALSE ); + $book->title = 'yes'; + R::store( $book ); + asrt( $book->hasChanged( 'title' ), TRUE ); + OODB::autoClearHistoryAfterStore( TRUE ); + $book = R::findOne( 'book' ); + asrt( $book->hasChanged( 'title' ), FALSE ); + $book->title = 'yes2'; + R::store( $book ); + asrt( $book->hasChanged( 'title' ), FALSE ); + OODB::autoClearHistoryAfterStore( FALSE ); + $book = R::findOne( 'book' ); + asrt( $book->hasChanged( 'title' ), FALSE ); + $book->title = 'yes'; + R::store( $book ); + asrt( $book->hasChanged( 'title' ), TRUE ); + } /** * Tests the R::inspect() method on the Facade. @@ -584,7 +615,6 @@ public function testENUM() { asrt( R::count( 'flavour' ), 4 ); } - /** * Test trashAll(). */ diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Performance.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Performance.php index 9492f390..58fa3324 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Performance.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Performance.php @@ -1,16 +1,16 @@ -title = 'book'; @@ -55,16 +55,16 @@ public function setup() $book->sharedTagList = $tags; R::store( $book ); } - + /** * CRUD performance. - * + * * @return void */ public function crud() { R::freeze( TRUE ); - + $book = R::dispense( 'book' ); $book->title = 'Book'; $page = R::dispense('page'); @@ -87,18 +87,18 @@ public function crud() $book->ownPage; $book->sharedTag; R::trash( $book ); - + } - + /** * CRUD performance Array Access. - * + * * @return void */ public function crudaa() { R::freeze( TRUE ); - + $book = R::dispense( 'book' ); $book['title'] = 'Book'; $page = R::dispense('page'); @@ -121,6 +121,6 @@ public function crudaa() $book->ownPage; $book->sharedTag; R::trash( $book ); - + } } \ No newline at end of file diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Prefixes.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Prefixes.php index c8ee53aa..d18edd6f 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Prefixes.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Prefixes.php @@ -37,7 +37,7 @@ class Prefixes extends Base * Test prerequisites. */ public function testPrerequisites() - { + { R::nuke(); $bean = R::xdispense( 'type_with_underscore' ); asrt( ( $bean instanceof OODBBean ), TRUE ); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Relations.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Relations.php index 37529ab5..b5c7de38 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Relations.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Relations.php @@ -981,12 +981,10 @@ public function testScenarios() // Get books for topic asrt( $topic3->countShared('book'), 2 ); - $t3 = R::load( 'topic', $topic3->id ); asrt( count( $t3->sharedBook ), 2 ); - // Nuke an own-array, replace entire array at once without getting first $page2->id = 0; $page2->title = 'yet another page 2'; @@ -1420,7 +1418,6 @@ public function testSharedListIntermediate() $v2->name = 'Ville 2'; $v3->name = 'Ville 3'; - $v1->link( 'armyVillage' )->army = $a3; $v2->link( 'army_village' )->army = $a2; $v3->link( 'armyVillage' )->army = $a1; diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Traverse.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Traverse.php index 4c92e84c..fa3c5692 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Traverse.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Traverse.php @@ -149,7 +149,6 @@ public function testTraversePaths() asrt( implode( ',', $path ), 'e,f,h' ); - $path = array(); $pageA->traverse( 'ownPageList', function( $page ) use ( &$path ) { $path[] = $page->title; @@ -226,7 +225,6 @@ public function testTraversalWithAlias() } ); asrt( implode( ',', $cats ), 'SF,Fantasy' ); - $catList = array(); $fantasy->alias( 'genre' ) ->with( ' ORDER BY gname ASC ' ) diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Update.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Update.php index 0bdc8a59..faab8124 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Update.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Update.php @@ -176,7 +176,6 @@ public function testUpdatingParentBeansWithAliases() $account = R::load( 'user', $id ); asrt( count( $account->alias( 'seller' )->ownTransaction ), 10 ); - $account->alias( 'seller' )->ownTransaction = array(); $id = R::store( $account ); @@ -507,7 +506,7 @@ public function testUpdatingBeans() asrt( (int) $pdo->GetCell( "SELECT count(*) FROM page" ), 0 ); } - + public function testEmptyStringShouldNotBeStoredAsInteger() { R::nuke(); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Via.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Via.php index fdf7c1cd..319b3b2f 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Via.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Via.php @@ -91,7 +91,6 @@ public function testIssue378() $book->via('garbage')->item = 'test'; asrt( count( $book->sharedPageList ), 1 ); - //yet another $book = R::dispense('leaflet'); $book->title = 'leaflet'; @@ -189,7 +188,6 @@ public function testViaAndSQL() R::storeAll(array( $p1, $p2 )); - $project = R::load('project', $x1->id); $designers = $project @@ -201,7 +199,6 @@ public function testViaAndSQL() asrt(count($designers), 1); asrt($anna->name, 'Anna'); - $coders = $project ->withCondition(' participant.arole = ? ', array( 'coder' ) ) ->via( 'participant' ) diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/With.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/With.php index d2f6f8fe..10817f1c 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/With.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Base/With.php @@ -107,7 +107,6 @@ public function testNoLoad() } - /** * Test all(). * @@ -466,7 +465,6 @@ public function testWhenToReload() $book->ownPage[] = R::dispense( 'page' ); asrt( count( $book->ownPageList ), 4 ); - //Do not reload an own list if told to not reload using noLoad() $book->noLoad()->with(' LIMIT 1 ')->ownPage; //dont reload! asrt( count( $book->xownPage ), 0); //dont reload! @@ -529,7 +527,6 @@ public function testWhenToReload() $book->sharedTag = R::dispense( 'tag', 16 ); asrt( count( $book->sharedTag ), 16 ); - //Do not reload a sharedTag list if told to not reload using noLoad() $book->noLoad()->with(' LIMIT 1 ')->sharedTag; //dont reload! asrt( count( $book->sharedTag ), 0); //dont reload! diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Debug.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Debug.php index b8d50eb3..19c13e36 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Debug.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Debug.php @@ -118,7 +118,6 @@ public function testDebugger2() $this->testDebug(':a,?', array(':a'=>20, 30), '20,30'); $this->testDebug(':a,?', array(30, ':a'=>20), '20,30'); - $this->testDebug('?,?', array('test',20), '\'test\',20'); $this->testDebug('?', array( NULL ), 'NULL'); $this->testDebug('title = ?', array( NULL ), 'title = NULL'); @@ -129,7 +128,7 @@ public function testDebugger2() $this->testDebug('?,?', array('hello'), '\'hello\',:slot1'); $this->testDebug('hello ?', 'world', 'hello ?'); - + $this->testDebug(':slot0 :slot1 :slot2 :slot3 :slot4 :slot5 :slot6 :slot7 :slot8 :slot9 :slot10', array( 'a','b','c','d','e','f','g','h','i','j','k' ),"'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k'"); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Fusebox.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Fusebox.php index 522440a6..350ca444 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Fusebox.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Fusebox.php @@ -69,4 +69,3 @@ private function giveMeBean( OODBBean $bean ) } } - diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Misc.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Misc.php index 88dbbbb7..cac84133 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Misc.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Misc.php @@ -256,7 +256,6 @@ public function testTransactionInFacade() $bean->name = 'a'; - try { R::transaction( function () use ( $bean ) { R::store( $bean ); @@ -336,7 +335,6 @@ public function testTransactionInFacade() testpack( 'Misc Tests' ); - R::debug( 1 ); flush(); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Toolbox.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Toolbox.php index f749b37b..58719ddf 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Toolbox.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Toolbox.php @@ -13,7 +13,7 @@ use RedBeanPHP\Repository as Repository; use RedBeanPHP\Repository\Fluid as FluidRepo; use RedBeanPHP\Repository\Frozen as FrozenRepo; - +use RedBeanPHP\RedException as RedException; /** * Toolbox @@ -29,6 +29,22 @@ */ class Toolbox extends Blackhole { + /** + * Github issue #458, selectDatabase causes PHP notice undefined index + * if database key not found. + * + * @return void + */ + public function testInvalidDB() + { + try { + R::selectDatabase( 'idontexist' ); + fail(); + } catch ( RedException $exception ) { + pass(); + } + } + /** * Test whether we can obtain a toolbox properly. * diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/CUBRID.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/CUBRID.php index 469ec6f5..0338d791 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/CUBRID.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/CUBRID.php @@ -1,5 +1,5 @@ -getWriter(); $redbean = $toolbox->getRedBean(); $pdo = $adapter->getDatabase(); - + $writer->createTable( "testtable" ); $writer->addColumn( "testtable", "special", CUBRID::C_DATATYPE_SPECIAL_DATE ); - + $cols = $writer->getColumns( "testtable" ); asrt( $writer->code( $cols['special'], TRUE ), CUBRID::C_DATATYPE_SPECIAL_DATE ); - + asrt( $writer->code( $cols['special'], FALSE ), CUBRID::C_DATATYPE_SPECIFIED ); - + $writer->addColumn( "testtable", "special2", CUBRID::C_DATATYPE_SPECIAL_DATETIME ); - + $cols = $writer->getColumns( "testtable" ); asrt( $writer->code( $cols['special2'], TRUE ), CUBRID::C_DATATYPE_SPECIAL_DATETIME ); - + asrt( $writer->code( $cols['special'], FALSE ), CUBRID::C_DATATYPE_SPECIFIED ); - - + } - + } diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Foreignkeys.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Foreignkeys.php index 6a99d1ca..6ee4ae64 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Foreignkeys.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Foreignkeys.php @@ -276,7 +276,6 @@ public function testAddingForeignKey() //Now add non-dep key R::nuke(); - $sql = ' CREATE TABLE book ( id INT( 11 ) UNSIGNED NULL AUTO_INCREMENT, @@ -363,7 +362,6 @@ public function testAddingIndex() $writer->addIndex('song', 'index1', 'album_id'); - $indexes = R::getAll( 'SHOW INDEX FROM song' ); asrt( count( $indexes ), 2 ); @@ -379,7 +377,6 @@ public function testAddingIndex() asrt( count( $indexes ), 3 ); - //Dont fail, just dont try { $writer->addIndex('song', 'index3', 'nonexistant'); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Issue411.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Issue411.php index f6141a3c..cc93bb52 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Issue411.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Issue411.php @@ -55,6 +55,3 @@ public function testInnoDBIndexLimit() } } - - - diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Mix.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Mix.php index 6495308f..102fefdc 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Mix.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Mix.php @@ -145,6 +145,3 @@ public function testToString() } } - - - diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Setget.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Setget.php index 11c642e1..cbf2db08 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Setget.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Setget.php @@ -48,6 +48,11 @@ public function testNumbers() asrt( setget( "1.0" ), "1" ); asrt( setget( 1.0 ), "1" ); + asrt( setget( "3.20" ), "3.20" ); + asrt( setget( "13.20" ), "13.20" ); + asrt( setget( "134.20" ), "134.20" ); + asrt( setget( 3.21 ), '3.21' ); + asrt( setget( "0.12345678" ), "0.12345678" ); asrt( setget( 0.12345678 ), "0.12345678" ); @@ -133,8 +138,8 @@ public function testNull() asrt( setget( "NULL" ), "NULL" ); asrt( setget( "NULL" ), "NULL" ); - asrt( setget( "0123", 1 ), "0123" ); - asrt( setget( "0000123", 1 ), "0000123" ); + asrt( setget( "0123" ), "0123" ); + asrt( setget( "0000123" ), "0000123" ); asrt( setget( NULL ), NULL ); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Writer.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Writer.php index b5c9e950..e1f2c82b 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Writer.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Mysql/Writer.php @@ -157,7 +157,7 @@ public function testScanningAndCoding() asrt( $writer->scanType( FALSE ), MySQL::C_DATATYPE_BOOL ); asrt( $writer->scanType( TRUE ), MySQL::C_DATATYPE_BOOL ); asrt( $writer->scanType( INF ), MySQL::C_DATATYPE_TEXT7 ); - + asrt( $writer->scanType( NULL ), MySQL::C_DATATYPE_BOOL ); asrt( $writer->scanType( 2 ), MySQL::C_DATATYPE_UINT32 ); @@ -179,6 +179,10 @@ public function testScanningAndCoding() asrt( $writer->scanType( "2001-10-10 10:00:00" ), MySQL::C_DATATYPE_TEXT7 ); + asrt( $writer->scanType( "1.23", TRUE ), MySQL::C_DATATYPE_SPECIAL_MONEY ); + asrt( $writer->scanType( "12.23", TRUE ), MySQL::C_DATATYPE_SPECIAL_MONEY ); + asrt( $writer->scanType( "124.23", TRUE ), MySQL::C_DATATYPE_SPECIAL_MONEY ); + asrt( $writer->scanType( str_repeat( "lorem ipsum", 100 ) ), MySQL::C_DATATYPE_TEXT16 ); $writer->widenColumn( "testtable", "c1", MySQL::C_DATATYPE_UINT32 ); @@ -544,6 +548,37 @@ public function testTypesDates() asrt( $cols['date'], 'date' ); } + /** + * Test money types. + * + * @return void + */ + public function testTypesMon() + { + $bean = R::dispense( 'bean' ); + + $bean->amount = '22.99'; + + R::store( $bean ); + + $cols = R::getColumns( 'bean' ); + + asrt( $cols['amount'], 'decimal(10,2)' ); + + R::nuke(); + + $bean = R::dispense( 'bean' ); + + $bean->amount = '-22.99'; + + R::store( $bean ); + + $cols = R::getColumns( 'bean' ); + + asrt( $cols['amount'], 'decimal(10,2)' ); + } + + /** * Date-time * diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Setget.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Setget.php index a38b9665..25a485cc 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Setget.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Setget.php @@ -35,6 +35,11 @@ public function testNumbers() asrt( setget( "-0.25" ), "-0.25" ); asrt( setget( -0.25 ), "-0.25" ); + asrt( setget( "3.20" ), "3.20" ); + asrt( setget( "13.20" ), "13.20" ); + asrt( setget( "134.20" ), "134.20" ); + asrt( setget( 3.21 ), '3.21' ); + asrt( setget( "0.12345678" ), "0.12345678" ); asrt( setget( 0.12345678 ), "0.12345678" ); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Uuid.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Uuid.php index 85f415a6..0b7d82aa 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Uuid.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Uuid.php @@ -171,7 +171,6 @@ public function testFullSupport() $id = R::store( $mansion ); //exit; - asrt( is_string( $id ), TRUE ); asrt( strlen( $id ), 36 ); $haunted = R::load( 'mansion', $id ); diff --git a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Writer.php b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Writer.php index 9d47cfed..fbc2ed1a 100644 --- a/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Writer.php +++ b/tests/vendor/gabordemooij/redbean/testing/RedUNIT/Postgres/Writer.php @@ -500,6 +500,36 @@ public function testTypesWeirdPoints() asrt( $bean->circle, '<(9.2,1.2),7.9>' ); } + /** + * Test money types. + * + * @return void + */ + public function testTypesMon() + { + $bean = R::dispense( 'bean' ); + + $bean->amount = '22.99'; + + R::store( $bean ); + + $cols = R::getColumns( 'bean' ); + + asrt( $cols['amount'], 'numeric' ); + + R::nuke(); + + $bean = R::dispense( 'bean' ); + + $bean->amount = '-22.99'; + + R::store( $bean ); + + $cols = R::getColumns( 'bean' ); + + asrt( $cols['amount'], 'numeric' ); + } + /** * Test money data type. * diff --git a/tests/vendor/gabordemooij/redbean/testing/cli/plugins/myhooks.php b/tests/vendor/gabordemooij/redbean/testing/cli/plugins/myhooks.php index 8bee3621..38699946 100644 --- a/tests/vendor/gabordemooij/redbean/testing/cli/plugins/myhooks.php +++ b/tests/vendor/gabordemooij/redbean/testing/cli/plugins/myhooks.php @@ -8,7 +8,7 @@ //Define extra test packages from the hook $extraTestsFromHook = array( 'CUBRID/Setget', - 'CUBRID/Writer' + 'CUBRID/Writer' ); //Create a connection for this database diff --git a/tests/vendor/gabordemooij/redbean/testing/cli/runperf.php b/tests/vendor/gabordemooij/redbean/testing/cli/runperf.php index 5bb7d4e8..1d584d56 100644 --- a/tests/vendor/gabordemooij/redbean/testing/cli/runperf.php +++ b/tests/vendor/gabordemooij/redbean/testing/cli/runperf.php @@ -9,7 +9,6 @@ require 'RedUNIT/Base.php'; require 'RedUNIT/Base/Performance.php'; - error_reporting( E_ALL ); //Load configuration file @@ -19,7 +18,6 @@ die( 'Cant find configuration file.' ); } - //Configure the databases if ( isset( $ini['mysql'] ) ) { $dsn = "mysql:host={$ini['mysql']['host']};dbname={$ini['mysql']['schema']}"; @@ -52,34 +50,32 @@ function activate_driver( $d ) $drivers = $test->getTargetDrivers(); - - foreach ( $drivers as $driver ) { - + if ( !isset( $ini[$driver] ) ) continue; if ( !isset( $_SERVER['argv'][1])) die('Missing parameter. Usage: php runperf.php '); - + $method = $_SERVER['argv'][1]; - + if ($method === 'setup') { - + echo 'Setup...'.PHP_EOL; - + $test->$method(); echo 'READY'.PHP_EOL; - + } else { - + $times = 100; if (isset($_SERVER['argv'][2])) { $times = (int) $_SERVER['argv'][2]; } - + echo "Performing test: $method with driver $driver ".PHP_EOL; for ($j=0; $j<$times; $j++) { - + $t1 = microtime( TRUE ); $test->$method(); @@ -87,14 +83,14 @@ function activate_driver( $d ) $t2 = microtime( TRUE ); $d[] = ($t2 - $t1); - + } - + $s = array_sum($d); $a = ($s / $times); $mx = max($d); $mn = min($d); - + echo PHP_EOL."AVG: $a, MAX: $mx, MIN: $mn, TOTAL: $s, TIMES: $times ".PHP_EOL; } } \ No newline at end of file diff --git a/tests/vendor/gabordemooij/redbean/testing/cli/runtests.php b/tests/vendor/gabordemooij/redbean/testing/cli/runtests.php index e48daff8..c754e3a5 100644 --- a/tests/vendor/gabordemooij/redbean/testing/cli/runtests.php +++ b/tests/vendor/gabordemooij/redbean/testing/cli/runtests.php @@ -2,7 +2,6 @@ chdir( '..' ); - $xdebugSupported = (function_exists('xdebug_start_code_coverage')); if ($xdebugSupported) xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE ); @@ -26,7 +25,6 @@ echo 'Welcome to RedUNIT Unit testing framework for RedBeanPHP.'.PHP_EOL; echo PHP_EOL; - /** * Define some globals. */ @@ -44,7 +42,6 @@ require_once( 'RedUNIT/Postgres.php' ); require_once( 'RedUNIT/Sqlite.php' ); - require_once( 'RedUNIT/Pretest.php' ); $extraTestsFromHook = array(); @@ -91,7 +88,6 @@ function activate_driver( $d ) R::selectDatabase( $d ); } - $arguments = $_SERVER['argc']; $mode = 'all'; @@ -198,8 +194,6 @@ function activate_driver( $d ) 'Base/Close' ); - - // Default (mode == all) if ( $mode == 'all' ) { $packList = $allPacks; @@ -237,6 +231,9 @@ function activate_driver( $d ) maintestpack( str_replace( '_', ' ', get_class( $test ) ) ); + $round = 0; + $test->setRound( $round ); + if ( $drivers && is_array( $drivers ) ) { foreach ( $drivers as $driver ) { if ( !isset( $ini[$driver] ) ) continue; @@ -267,6 +264,7 @@ function activate_driver( $d ) } echo PHP_EOL; + $test->setRound( ++$round ); } } else { @@ -276,7 +274,6 @@ function activate_driver( $d ) } } - if (!$xdebugSupported) { echo 'Done. No report - XDEBUG not installed.'; exit(0); diff --git a/tests/vendor/gabordemooij/redbean/testing/cli/test_hook_example.php b/tests/vendor/gabordemooij/redbean/testing/cli/test_hook_example.php index 892b7dd6..ab86d265 100644 --- a/tests/vendor/gabordemooij/redbean/testing/cli/test_hook_example.php +++ b/tests/vendor/gabordemooij/redbean/testing/cli/test_hook_example.php @@ -1,14 +1,14 @@ add 1 additional path which will be searched for unit tests * $extraTestsFromHook -> array with additional test packs (will be executed if you pass 'all' argument to CLI runner) - * - * + * + * */ \ No newline at end of file diff --git a/tests/vendor/gabordemooij/redbean/testing/helpers/classes.php b/tests/vendor/gabordemooij/redbean/testing/helpers/classes.php index aedae9cb..d3a897b9 100644 --- a/tests/vendor/gabordemooij/redbean/testing/helpers/classes.php +++ b/tests/vendor/gabordemooij/redbean/testing/helpers/classes.php @@ -409,7 +409,6 @@ public function update() } } - /** * Mock class to test proper model name * beautificattion for link table beans in FUSE. @@ -484,7 +483,6 @@ public function open() { } } - /** * UUID QueryWriter for MySQL for testing purposes. */ @@ -576,9 +574,9 @@ public function getModFlags() class DiagnosticModel extends \RedBeanPHP\SimpleModel { - + private $logs = array(); - + public function open() { $this->logs[] = array( @@ -638,12 +636,12 @@ public function after_delete() ) ); } - + public function getLogs() { return $this->logs; } - + public function getLogActionCount( $action = NULL ) { if ( is_null( $action ) ) return count( $this->logs ); @@ -653,21 +651,19 @@ public function getLogActionCount( $action = NULL ) } return $counter; } - + public function clearLog() { return $this->logs = array(); } - + public function getDataFromLog( $logIndex = 0, $property ) { return $this->logs[$logIndex]['data'][$property]; } - - + } class Model_Probe extends DiagnosticModel {}; - define('REDBEAN_OODBBEAN_CLASS', '\DiagnosticBean'); diff --git a/tests/vendor/gabordemooij/redbean/testing/helpers/functions.php b/tests/vendor/gabordemooij/redbean/testing/helpers/functions.php index 69c7f53b..cdde31e7 100644 --- a/tests/vendor/gabordemooij/redbean/testing/helpers/functions.php +++ b/tests/vendor/gabordemooij/redbean/testing/helpers/functions.php @@ -4,9 +4,9 @@ * Convenience function for test hook. * If you added the proper Writer class, the facade should be able * to automatically load it, i.e. \RedBeanPHP\QueryWriter\MyWriter - * + * * @global array $ini - * + * * @param string $name name of the connection (key) * @param string $dsn DSN to connect * @param string $user username @@ -16,7 +16,7 @@ function add_writer_to_tests( $name, $dsn, $user, $pass ) { global $ini; - + \RedUNIT\Base::addToDriverList( $name ); R::addDatabase( $name, $dsn, $user, $pass ); @@ -400,7 +400,6 @@ function getIndexes( $tableNoQ ) return array(); } - function are_cols_in_unique( $type, $properties ) { sort( $properties ); @@ -414,7 +413,6 @@ function are_cols_in_unique( $type, $properties ) return FALSE; } - function get_uniques_for_type( $type ) { $list = array(); diff --git a/tests/vendor/myclabs/deep-copy/.gitattributes b/tests/vendor/myclabs/deep-copy/.gitattributes deleted file mode 100755 index 8018068b..00000000 --- a/tests/vendor/myclabs/deep-copy/.gitattributes +++ /dev/null @@ -1,7 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -*.png binary - -tests/ export-ignore -phpunit.xml.dist export-ignore diff --git a/tests/vendor/myclabs/deep-copy/.gitignore b/tests/vendor/myclabs/deep-copy/.gitignore deleted file mode 100755 index 93541710..00000000 --- a/tests/vendor/myclabs/deep-copy/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.DS_Store -.idea/* - -vendor/* -composer.phar -composer.lock diff --git a/tests/vendor/myclabs/deep-copy/.travis.yml b/tests/vendor/myclabs/deep-copy/.travis.yml deleted file mode 100755 index 4b9c7c05..00000000 --- a/tests/vendor/myclabs/deep-copy/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -language: php - -php: - - 5.4 - - 5.5 - - 5.6 - - hhvm - -matrix: - allow_failures: - - php: hhvm - -install: - - composer install - - composer require satooshi/php-coveralls:dev-master --dev --no-progress - -before_script: - - mkdir -p build/logs - -script: - - phpunit --coverage-clover build/logs/clover.xml - -after_script: - - php vendor/bin/coveralls -v diff --git a/tests/vendor/myclabs/deep-copy/LICENSE b/tests/vendor/myclabs/deep-copy/LICENSE deleted file mode 100644 index c3e83500..00000000 --- a/tests/vendor/myclabs/deep-copy/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 My C-Sense - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tests/vendor/myclabs/deep-copy/README.md b/tests/vendor/myclabs/deep-copy/README.md deleted file mode 100644 index a9d70f6b..00000000 --- a/tests/vendor/myclabs/deep-copy/README.md +++ /dev/null @@ -1,209 +0,0 @@ -# DeepCopy - -DeepCopy helps you create deep copies (clones) of your objects. It is designed to handle cycles in the association graph. - -[![Build Status](https://travis-ci.org/myclabs/DeepCopy.png?branch=master)](https://travis-ci.org/myclabs/DeepCopy) [![Coverage Status](https://coveralls.io/repos/myclabs/DeepCopy/badge.png?branch=master)](https://coveralls.io/r/myclabs/DeepCopy?branch=master) [![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/myclabs/DeepCopy/badges/quality-score.png?s=2747100c19b275f93a777e3297c6c12d1b68b934)](https://scrutinizer-ci.com/g/myclabs/DeepCopy/) -[![Total Downloads](https://poser.pugx.org/myclabs/deep-copy/downloads.svg)](https://packagist.org/packages/myclabs/deep-copy) - - -## How? - -Install with Composer: - -```json -composer require myclabs/deep-copy -``` - -Use simply: - -```php -use DeepCopy\DeepCopy; - -$deepCopy = new DeepCopy(); -$myCopy = $deepCopy->copy($myObject); -``` - - -## Why? - -- How do you create copies of your objects? - -```php -$myCopy = clone $myObject; -``` - -- How do you create **deep** copies of your objects (i.e. copying also all the objects referenced in the properties)? - -You use [`__clone()`](http://www.php.net/manual/en/language.oop5.cloning.php#object.clone) and implement the behavior yourself. - -- But how do you handle **cycles** in the association graph? - -Now you're in for a big mess :( - -![association graph](doc/graph.png) - -### Using simply `clone` - -![Using clone](doc/clone.png) - -### Overridding `__clone()` - -![Overridding __clone](doc/deep-clone.png) - -### With DeepCopy - -![With DeepCopy](doc/deep-copy.png) - - -## How it works - -DeepCopy traverses recursively all your object's properties and clones them. - -To avoid cloning the same object twice (and thus, keep you object graph), it keeps a hash-map of all instances. - - -## Going further - -You can add filters to customize the copy process. - -The method to add a filter is `$deepCopy->addFilter($filter, $matcher)`, -with `$filter` implementing `DeepCopy\Filter\Filter` -and `$matcher` implementing `DeepCopy\Matcher\Matcher`. - -We provide some generic filters and matchers. - -### Matchers - -#### Property name - -The `PropertyNameMatcher` will match a property by its name: - -```php -use DeepCopy\Matcher\PropertyNameMatcher; - -$matcher = new PropertyNameMatcher('id'); -// will apply a filter to any property of any objects named "id" -``` - -#### Specific property - -The `PropertyMatcher` will match a specific property of a specific class: - -```php -use DeepCopy\Matcher\PropertyMatcher; - -$matcher = new PropertyMatcher('MyClass', 'id'); -// will apply a filter to the property "id" of any objects of the class "MyClass" -``` - -#### Property type - -The `PropertyTypeMatcher` will match a property by its type (instance of a class): - -```php -use DeepCopy\Matcher\PropertyTypeMatcher; - -$matcher = new PropertyTypeMatcher('Doctrine\Common\Collections\Collection'); -// will apply a filter to any property that is an instance of Doctrine\Common\Collections\Collection -``` - -### Filters - -#### `SetNullFilter` - -Let's say for example that you are copying a database record (or a Doctrine entity), so you want the copy not to have any ID: - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\SetNullFilter; -use DeepCopy\Matcher\PropertyNameMatcher; - -$myObject = MyClass::load(123); -echo $myObject->id; // 123 - -$deepCopy = new DeepCopy(); -$deepCopy->addFilter(new SetNullFilter(), new PropertyNameMatcher('id')); -$myCopy = $deepCopy->copy($myObject); - -echo $myCopy->id; // null -``` - -#### `KeepFilter` - -If you want a property to remain untouched (for example, an association to an object): - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\KeepFilter; -use DeepCopy\Matcher\PropertyMatcher; - -$deepCopy = new DeepCopy(); -$deepCopy->addFilter(new KeepFilter(), new PropertyMatcher('MyClass', 'category')); -$myCopy = $deepCopy->copy($myObject); - -// $myCopy->category has not been touched -``` - -#### `ReplaceFilter` - -If you want to replace the value of a property: - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\ReplaceFilter; -use DeepCopy\Matcher\PropertyMatcher; - -$deepCopy = new DeepCopy(); -$callback = function ($currentValue) { - return $currentValue . ' (copy)' -}; -$deepCopy->addFilter(new ReplaceFilter($callback), new PropertyMatcher('MyClass', 'title')); -$myCopy = $deepCopy->copy($myObject); - -// $myCopy->title will contain the data returned by the callback, e.g. 'The title (copy)' -``` - -The `$callback` parameter of the `ReplaceFilter` constructor accepts any PHP callable. - - -#### `DoctrineCollectionFilter` - -If you use Doctrine and want to copy an entity, you will need to use the `DoctrineCollectionFilter`: - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\Doctrine\DoctrineCollectionFilter; -use DeepCopy\Matcher\PropertyTypeMatcher; - -$deepCopy = new DeepCopy(); -$deepCopy->addFilter(new DoctrineCollectionFilter(), new PropertyTypeMatcher('Doctrine\Common\Collections\Collection')); -$myCopy = $deepCopy->copy($myObject); -``` - -#### `DoctrineEmptyCollectionFilter` - -If you use Doctrine and want to copy an entity who contains a `Collection` that you want to be reset, you can use the `DoctrineEmptyCollectionFilter` - -```php -use DeepCopy\DeepCopy; -use DeepCopy\Filter\Doctrine\DoctrineEmptyCollectionFilter; -use DeepCopy\Matcher\PropertyMatcher; - -$deepCopy = new DeepCopy(); -$deepCopy->addFilter(new DoctrineEmptyCollectionFilter(), new PropertyMatcher('MyClass', 'myProperty')); -$myCopy = $deepCopy->copy($myObject); - -// $myCopy->myProperty will return an empty collection -``` - -## Contributing - -DeepCopy is distributed under the MIT license. - -### Tests - -Running the tests is simple: - -```php -phpunit -``` diff --git a/tests/vendor/myclabs/deep-copy/composer.json b/tests/vendor/myclabs/deep-copy/composer.json deleted file mode 100644 index d20287ab..00000000 --- a/tests/vendor/myclabs/deep-copy/composer.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "myclabs/deep-copy", - "type": "library", - "description": "Create deep copies (clones) of your objects", - "keywords": ["clone", "copy", "duplicate", "object", "object graph"], - "homepage": "https://github.com/myclabs/DeepCopy", - "license": "MIT", - "autoload": { - "psr-4": { "DeepCopy\\": "src/DeepCopy/" } - }, - "autoload-dev": { - "psr-4": { "DeepCopyTest\\": "tests/DeepCopyTest/" } - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "doctrine/collections": "1.*", - "phpunit/phpunit": "~4.1" - } -} diff --git a/tests/vendor/myclabs/deep-copy/doc/clone.png b/tests/vendor/myclabs/deep-copy/doc/clone.png deleted file mode 100644 index 376afd49..00000000 Binary files a/tests/vendor/myclabs/deep-copy/doc/clone.png and /dev/null differ diff --git a/tests/vendor/myclabs/deep-copy/doc/deep-clone.png b/tests/vendor/myclabs/deep-copy/doc/deep-clone.png deleted file mode 100644 index 2b37a6d7..00000000 Binary files a/tests/vendor/myclabs/deep-copy/doc/deep-clone.png and /dev/null differ diff --git a/tests/vendor/myclabs/deep-copy/doc/deep-copy.png b/tests/vendor/myclabs/deep-copy/doc/deep-copy.png deleted file mode 100644 index 68c508ae..00000000 Binary files a/tests/vendor/myclabs/deep-copy/doc/deep-copy.png and /dev/null differ diff --git a/tests/vendor/myclabs/deep-copy/doc/graph.png b/tests/vendor/myclabs/deep-copy/doc/graph.png deleted file mode 100644 index 4d5c9428..00000000 Binary files a/tests/vendor/myclabs/deep-copy/doc/graph.png and /dev/null differ diff --git a/tests/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php b/tests/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php deleted file mode 100644 index 1330b9e0..00000000 --- a/tests/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php +++ /dev/null @@ -1,162 +0,0 @@ -skipUncloneable = $skipUncloneable; - return $this; - } - - /** - * Perform a deep copy of the object. - * @param object $object - * @return object - */ - public function copy($object) - { - $this->hashMap = []; - - return $this->recursiveCopy($object); - } - - public function addFilter(Filter $filter, Matcher $matcher) - { - $this->filters[] = [ - 'matcher' => $matcher, - 'filter' => $filter, - ]; - } - - private function recursiveCopy($var) - { - // Resource - if (is_resource($var)) { - return $var; - } - // Array - if (is_array($var)) { - return $this->copyArray($var); - } - // Scalar - if (! is_object($var)) { - return $var; - } - // Object - return $this->copyObject($var); - } - - /** - * Copy an array - * @param array $array - * @return array - */ - private function copyArray(array $array) - { - $copier = function($item) { - return $this->recursiveCopy($item); - }; - - return array_map($copier, $array); - } - - /** - * Copy an object - * @param object $object - * @return object - */ - private function copyObject($object) - { - $objectHash = spl_object_hash($object); - - if (isset($this->hashMap[$objectHash])) { - return $this->hashMap[$objectHash]; - } - - $reflectedObject = new \ReflectionObject($object); - - if (false === $isCloneable = $reflectedObject->isCloneable() and $this->skipUncloneable) { - $this->hashMap[$objectHash] = $object; - return $object; - } - - if (false === $isCloneable) { - throw new CloneException(sprintf( - 'Class "%s" is not cloneable.', - $object->getName() - )); - } - - $newObject = clone $object; - $this->hashMap[$objectHash] = $newObject; - - foreach (ReflectionHelper::getProperties($reflectedObject) as $property) { - $this->copyObjectProperty($newObject, $property); - } - - return $newObject; - } - - private function copyObjectProperty($object, ReflectionProperty $property) - { - // Ignore static properties - if ($property->isStatic()) { - return; - } - - // Apply the filters - foreach ($this->filters as $item) { - /** @var Matcher $matcher */ - $matcher = $item['matcher']; - /** @var Filter $filter */ - $filter = $item['filter']; - - if ($matcher->matches($object, $property->getName())) { - $filter->apply( - $object, - $property->getName(), - function ($object) { - return $this->recursiveCopy($object); - } - ); - // If a filter matches, we stop processing this property - return; - } - } - - $property->setAccessible(true); - $propertyValue = $property->getValue($object); - - // Copy the property - $property->setValue($object, $this->recursiveCopy($propertyValue)); - } -} diff --git a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php b/tests/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php deleted file mode 100644 index dd3b617b..00000000 --- a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php +++ /dev/null @@ -1,6 +0,0 @@ -setAccessible(true); - $oldCollection = $reflectionProperty->getValue($object); - - $newCollection = $oldCollection->map( - function ($item) use ($objectCopier) { - return $objectCopier($item); - } - ); - - $reflectionProperty->setValue($object, $newCollection); - } -} diff --git a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php b/tests/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php deleted file mode 100644 index f9b3f7ac..00000000 --- a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php +++ /dev/null @@ -1,24 +0,0 @@ -setAccessible(true); - - $reflectionProperty->setValue($object, new ArrayCollection()); - } -} \ No newline at end of file diff --git a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php b/tests/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php deleted file mode 100644 index 48076a1b..00000000 --- a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php +++ /dev/null @@ -1,17 +0,0 @@ -callback = $callable; - } - - /** - * {@inheritdoc} - */ - public function apply($object, $property, $objectCopier) - { - $reflectionProperty = new \ReflectionProperty($object, $property); - $reflectionProperty->setAccessible(true); - - $value = call_user_func($this->callback, $reflectionProperty->getValue($object)); - - $reflectionProperty->setValue($object, $value); - } -} diff --git a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php b/tests/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php deleted file mode 100644 index d48f15b6..00000000 --- a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php +++ /dev/null @@ -1,22 +0,0 @@ -setAccessible(true); - $reflectionProperty->setValue($object, null); - } -} diff --git a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php b/tests/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php deleted file mode 100644 index 91eb7c90..00000000 --- a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php +++ /dev/null @@ -1,16 +0,0 @@ -class = $class; - $this->property = $property; - } - - /** - * {@inheritdoc} - */ - public function matches($object, $property) - { - return ($object instanceof $this->class) && ($property == $this->property); - } -} diff --git a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php b/tests/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php deleted file mode 100644 index 9d9575f0..00000000 --- a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php +++ /dev/null @@ -1,30 +0,0 @@ -property = $property; - } - - /** - * {@inheritdoc} - */ - public function matches($object, $property) - { - return $property == $this->property; - } -} diff --git a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php b/tests/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php deleted file mode 100644 index 12bb279a..00000000 --- a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php +++ /dev/null @@ -1,35 +0,0 @@ -propertyType = $propertyType; - } - - /** - * {@inheritdoc} - */ - public function matches($object, $property) - { - $reflectionProperty = new ReflectionProperty($object, $property); - $reflectionProperty->setAccessible(true); - - return $reflectionProperty->getValue($object) instanceof $this->propertyType; - } -} diff --git a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php b/tests/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php deleted file mode 100644 index 110acaf8..00000000 --- a/tests/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php +++ /dev/null @@ -1,36 +0,0 @@ -getProperties() does not return private properties from ancestor classes. - * - * @author muratyaman@gmail.com - * @see http://php.net/manual/en/reflectionclass.getproperties.php - * - * @param \ReflectionClass $ref - * @return \ReflectionProperty[] - */ - public static function getProperties(\ReflectionClass $ref) - { - $props = $ref->getProperties(); - $propsArr = array(); - - foreach ($props as $prop) { - $f = $prop->getName(); - $propsArr[$f] = $prop; - } - - if ($parentClass = $ref->getParentClass()) { - $parentPropsArr = self::getProperties($parentClass); - if (count($parentPropsArr) > 0) { - $propsArr = array_merge($parentPropsArr, $propsArr); - } - } - return $propsArr; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/.gitignore b/tests/vendor/phpdocumentor/reflection-docblock/.gitignore deleted file mode 100644 index 3ce5adbb..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.idea -vendor diff --git a/tests/vendor/phpdocumentor/reflection-docblock/.travis.yml b/tests/vendor/phpdocumentor/reflection-docblock/.travis.yml deleted file mode 100644 index eef782c4..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -language: php -php: - - 5.3.3 - - 5.3 - - 5.4 - - 5.5 - - 5.6 - - hhvm - - hhvm-nightly - -matrix: - allow_failures: - - php: hhvm - - php: hhvm-nightly - -script: - - vendor/bin/phpunit - -before_script: - - sudo apt-get -qq update > /dev/null - - phpenv rehash > /dev/null - - composer selfupdate --quiet - - composer install --no-interaction --prefer-source --dev - - vendor/bin/phpunit - - composer update --no-interaction --prefer-source --dev - -notifications: - irc: "irc.freenode.org#phpdocumentor" - email: - - mike.vanriel@naenius.com - - ashnazg@php.net - - boen.robot@gmail.com diff --git a/tests/vendor/phpdocumentor/reflection-docblock/LICENSE b/tests/vendor/phpdocumentor/reflection-docblock/LICENSE deleted file mode 100644 index 792e4040..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2010 Mike van Riel - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/tests/vendor/phpdocumentor/reflection-docblock/README.md b/tests/vendor/phpdocumentor/reflection-docblock/README.md deleted file mode 100644 index 6405d1a1..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/README.md +++ /dev/null @@ -1,57 +0,0 @@ -The ReflectionDocBlock Component [![Build Status](https://secure.travis-ci.org/phpDocumentor/ReflectionDocBlock.png)](https://travis-ci.org/phpDocumentor/ReflectionDocBlock) -================================ - -Introduction ------------- - -The ReflectionDocBlock component of phpDocumentor provides a DocBlock parser -that is 100% compatible with the [PHPDoc standard](http://phpdoc.org/docs/latest). - -With this component, a library can provide support for annotations via DocBlocks -or otherwise retrieve information that is embedded in a DocBlock. - -> **Note**: *this is a core component of phpDocumentor and is constantly being -> optimized for performance.* - -Installation ------------- - -You can install the component in the following ways: - -* Use the official Github repository (https://github.com/phpDocumentor/ReflectionDocBlock) -* Via Composer (http://packagist.org/packages/phpdocumentor/reflection-docblock) - -Usage ------ - -The ReflectionDocBlock component is designed to work in an identical fashion to -PHP's own Reflection extension (http://php.net/manual/en/book.reflection.php). - -Parsing can be initiated by instantiating the -`\phpDocumentor\Reflection\DocBlock()` class and passing it a string containing -a DocBlock (including asterisks) or by passing an object supporting the -`getDocComment()` method. - -> *Examples of objects having the `getDocComment()` method are the -> `ReflectionClass` and the `ReflectionMethod` classes of the PHP -> Reflection extension* - -Example: - - $class = new ReflectionClass('MyClass'); - $phpdoc = new \phpDocumentor\Reflection\DocBlock($class); - -or - - $docblock = <<=5.3.3" - }, - "autoload": { - "psr-0": {"phpDocumentor": ["src/"]} - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/composer.lock b/tests/vendor/phpdocumentor/reflection-docblock/composer.lock deleted file mode 100644 index 4c6a8bb7..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/composer.lock +++ /dev/null @@ -1,827 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", - "This file is @generated automatically" - ], - "hash": "ea1734d11b8c878445c2c6e58de8b85f", - "packages": [], - "packages-dev": [ - { - "name": "ocramius/instantiator", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/Instantiator.git", - "reference": "a7abbb5fc9df6e7126af741dd6c140d1a7369435" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/Instantiator/zipball/a7abbb5fc9df6e7126af741dd6c140d1a7369435", - "reference": "a7abbb5fc9df6e7126af741dd6c140d1a7369435", - "shasum": "" - }, - "require": { - "ocramius/lazy-map": "1.0.*", - "php": "~5.3" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "2.0.*@ALPHA" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Instantiator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/Ocramius/Instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2014-08-14 15:10:55" - }, - { - "name": "ocramius/lazy-map", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/LazyMap.git", - "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/LazyMap/zipball/7fe3d347f5e618bcea7d39345ff83f3651d8b752", - "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "athletic/athletic": "~0.1.6", - "phpmd/phpmd": "1.5.*", - "phpunit/phpunit": ">=3.7", - "satooshi/php-coveralls": "~0.6", - "squizlabs/php_codesniffer": "1.4.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "LazyMap\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/", - "role": "Developer" - } - ], - "description": "A library that provides lazy instantiation logic for a map of objects", - "homepage": "https://github.com/Ocramius/LazyMap", - "keywords": [ - "lazy", - "lazy instantiation", - "lazy loading", - "map", - "service location" - ], - "time": "2013-11-09 22:30:54" - }, - { - "name": "phpunit/php-code-coverage", - "version": "2.0.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6d196af48e8c100a3ae881940123e693da5a9217" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6d196af48e8c100a3ae881940123e693da5a9217", - "reference": "6d196af48e8c100a3ae881940123e693da5a9217", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3.1", - "phpunit/php-text-template": "~1.2.0", - "phpunit/php-token-stream": "~1.2.2", - "sebastian/environment": "~1.0.0", - "sebastian/version": "~1.0.3" - }, - "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4.0.14" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2014-08-06 06:39:42" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "File/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2013-10-10 15:34:57" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "Text/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2014-01-30 17:20:04" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2013-08-02 07:42:54" - }, - { - "name": "phpunit/php-token-stream", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2014-03-03 05:10:30" - }, - { - "name": "phpunit/phpunit", - "version": "4.2.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a33fa68ece9f8c68589bfc2da8d2794e27b820bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a33fa68ece9f8c68589bfc2da8d2794e27b820bc", - "reference": "a33fa68ece9f8c68589bfc2da8d2794e27b820bc", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpunit/php-code-coverage": "~2.0", - "phpunit/php-file-iterator": "~1.3.1", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "~1.0.2", - "phpunit/phpunit-mock-objects": "~2.2", - "sebastian/comparator": "~1.0", - "sebastian/diff": "~1.1", - "sebastian/environment": "~1.0", - "sebastian/exporter": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.0" - }, - "suggest": { - "phpunit/php-invoker": "~1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "", - "../../symfony/yaml/" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "http://www.phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2014-08-18 05:12:30" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "42e589e08bc86e3e9bdf20d385e948347788505b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/42e589e08bc86e3e9bdf20d385e948347788505b", - "reference": "42e589e08bc86e3e9bdf20d385e948347788505b", - "shasum": "" - }, - "require": { - "ocramius/instantiator": "~1.0", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "4.2.*@dev" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2014-08-02 13:50:58" - }, - { - "name": "sebastian/comparator", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", - "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.1", - "sebastian/exporter": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2014-05-02 07:05:58" - }, - { - "name": "sebastian/diff", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", - "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "http://www.github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2013-08-03 16:46:33" - }, - { - "name": "sebastian/environment", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/79517609ec01139cd7e9fded0dd7ce08c952ef6a", - "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "4.0.*@dev" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2014-02-18 16:17:19" - }, - { - "name": "sebastian/exporter", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", - "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "4.0.*@dev" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net", - "role": "Lead" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2014-02-16 08:26:31" - }, - { - "name": "sebastian/version", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43", - "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43", - "shasum": "" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2014-03-07 15:35:33" - }, - { - "name": "symfony/yaml", - "version": "v2.5.3", - "target-dir": "Symfony/Component/Yaml", - "source": { - "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "5a75366ae9ca8b4792cd0083e4ca4dff9fe96f1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/5a75366ae9ca8b4792cd0083e4ca4dff9fe96f1f", - "reference": "5a75366ae9ca8b4792cd0083e4ca4dff9fe96f1f", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Yaml\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Yaml Component", - "homepage": "http://symfony.com", - "time": "2014-08-05 09:00:40" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "platform": { - "php": ">=5.3.3" - }, - "platform-dev": [] -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist b/tests/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist deleted file mode 100644 index f67ad2a2..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - ./tests/ - - - - - ./src/ - - - diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock.php deleted file mode 100644 index 02968b16..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock.php +++ /dev/null @@ -1,468 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection; - -use phpDocumentor\Reflection\DocBlock\Tag; -use phpDocumentor\Reflection\DocBlock\Context; -use phpDocumentor\Reflection\DocBlock\Location; - -/** - * Parses the DocBlock for any structure. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class DocBlock implements \Reflector -{ - /** @var string The opening line for this docblock. */ - protected $short_description = ''; - - /** - * @var DocBlock\Description The actual - * description for this docblock. - */ - protected $long_description = null; - - /** - * @var Tag[] An array containing all - * the tags in this docblock; except inline. - */ - protected $tags = array(); - - /** @var Context Information about the context of this DocBlock. */ - protected $context = null; - - /** @var Location Information about the location of this DocBlock. */ - protected $location = null; - - /** @var bool Is this DocBlock (the start of) a template? */ - protected $isTemplateStart = false; - - /** @var bool Does this DocBlock signify the end of a DocBlock template? */ - protected $isTemplateEnd = false; - - /** - * Parses the given docblock and populates the member fields. - * - * The constructor may also receive namespace information such as the - * current namespace and aliases. This information is used by some tags - * (e.g. @return, @param, etc.) to turn a relative Type into a FQCN. - * - * @param \Reflector|string $docblock A docblock comment (including - * asterisks) or reflector supporting the getDocComment method. - * @param Context $context The context in which the DocBlock - * occurs. - * @param Location $location The location within the file that this - * DocBlock occurs in. - * - * @throws \InvalidArgumentException if the given argument does not have the - * getDocComment method. - */ - public function __construct( - $docblock, - Context $context = null, - Location $location = null - ) { - if (is_object($docblock)) { - if (!method_exists($docblock, 'getDocComment')) { - throw new \InvalidArgumentException( - 'Invalid object passed; the given reflector must support ' - . 'the getDocComment method' - ); - } - - $docblock = $docblock->getDocComment(); - } - - $docblock = $this->cleanInput($docblock); - - list($templateMarker, $short, $long, $tags) = $this->splitDocBlock($docblock); - $this->isTemplateStart = $templateMarker === '#@+'; - $this->isTemplateEnd = $templateMarker === '#@-'; - $this->short_description = $short; - $this->long_description = new DocBlock\Description($long, $this); - $this->parseTags($tags); - - $this->context = $context; - $this->location = $location; - } - - /** - * Strips the asterisks from the DocBlock comment. - * - * @param string $comment String containing the comment text. - * - * @return string - */ - protected function cleanInput($comment) - { - $comment = trim( - preg_replace( - '#[ \t]*(?:\/\*\*|\*\/|\*)?[ \t]{0,1}(.*)?#u', - '$1', - $comment - ) - ); - - // reg ex above is not able to remove */ from a single line docblock - if (substr($comment, -2) == '*/') { - $comment = trim(substr($comment, 0, -2)); - } - - // normalize strings - $comment = str_replace(array("\r\n", "\r"), "\n", $comment); - - return $comment; - } - - /** - * Splits the DocBlock into a template marker, summary, description and block of tags. - * - * @param string $comment Comment to split into the sub-parts. - * - * @author Richard van Velzen (@_richardJ) Special thanks to Richard for the regex responsible for the split. - * @author Mike van Riel for extending the regex with template marker support. - * - * @return string[] containing the template marker (if any), summary, description and a string containing the tags. - */ - protected function splitDocBlock($comment) - { - // Performance improvement cheat: if the first character is an @ then only tags are in this DocBlock. This - // method does not split tags so we return this verbatim as the fourth result (tags). This saves us the - // performance impact of running a regular expression - if (strpos($comment, '@') === 0) { - return array('', '', '', $comment); - } - - // clears all extra horizontal whitespace from the line endings to prevent parsing issues - $comment = preg_replace('/\h*$/Sum', '', $comment); - - /* - * Splits the docblock into a template marker, short description, long description and tags section - * - * - The template marker is empty, #@+ or #@- if the DocBlock starts with either of those (a newline may - * occur after it and will be stripped). - * - The short description is started from the first character until a dot is encountered followed by a - * newline OR two consecutive newlines (horizontal whitespace is taken into account to consider spacing - * errors). This is optional. - * - The long description, any character until a new line is encountered followed by an @ and word - * characters (a tag). This is optional. - * - Tags; the remaining characters - * - * Big thanks to RichardJ for contributing this Regular Expression - */ - preg_match( - '/ - \A - # 1. Extract the template marker - (?:(\#\@\+|\#\@\-)\n?)? - - # 2. Extract the summary - (?: - (?! @\pL ) # The summary may not start with an @ - ( - [^\n.]+ - (?: - (?! \. \n | \n{2} ) # End summary upon a dot followed by newline or two newlines - [\n.] (?! [ \t]* @\pL ) # End summary when an @ is found as first character on a new line - [^\n.]+ # Include anything else - )* - \.? - )? - ) - - # 3. Extract the description - (?: - \s* # Some form of whitespace _must_ precede a description because a summary must be there - (?! @\pL ) # The description may not start with an @ - ( - [^\n]+ - (?: \n+ - (?! [ \t]* @\pL ) # End description when an @ is found as first character on a new line - [^\n]+ # Include anything else - )* - ) - )? - - # 4. Extract the tags (anything that follows) - (\s+ [\s\S]*)? # everything that follows - /ux', - $comment, - $matches - ); - array_shift($matches); - - while (count($matches) < 4) { - $matches[] = ''; - } - - return $matches; - } - - /** - * Creates the tag objects. - * - * @param string $tags Tag block to parse. - * - * @return void - */ - protected function parseTags($tags) - { - $result = array(); - $tags = trim($tags); - if ('' !== $tags) { - if ('@' !== $tags[0]) { - throw new \LogicException( - 'A tag block started with text instead of an actual tag,' - . ' this makes the tag block invalid: ' . $tags - ); - } - foreach (explode("\n", $tags) as $tag_line) { - if (isset($tag_line[0]) && ($tag_line[0] === '@')) { - $result[] = $tag_line; - } else { - $result[count($result) - 1] .= "\n" . $tag_line; - } - } - - // create proper Tag objects - foreach ($result as $key => $tag_line) { - $result[$key] = Tag::createInstance(trim($tag_line), $this); - } - } - - $this->tags = $result; - } - - /** - * Gets the text portion of the doc block. - * - * Gets the text portion (short and long description combined) of the doc - * block. - * - * @return string The text portion of the doc block. - */ - public function getText() - { - $short = $this->getShortDescription(); - $long = $this->getLongDescription()->getContents(); - - if ($long) { - return "{$short}\n\n{$long}"; - } else { - return $short; - } - } - - /** - * Set the text portion of the doc block. - * - * Sets the text portion (short and long description combined) of the doc - * block. - * - * @param string $docblock The new text portion of the doc block. - * - * @return $this This doc block. - */ - public function setText($comment) - { - list(,$short, $long) = $this->splitDocBlock($comment); - $this->short_description = $short; - $this->long_description = new DocBlock\Description($long, $this); - return $this; - } - /** - * Returns the opening line or also known as short description. - * - * @return string - */ - public function getShortDescription() - { - return $this->short_description; - } - - /** - * Returns the full description or also known as long description. - * - * @return DocBlock\Description - */ - public function getLongDescription() - { - return $this->long_description; - } - - /** - * Returns whether this DocBlock is the start of a Template section. - * - * A Docblock may serve as template for a series of subsequent DocBlocks. This is indicated by a special marker - * (`#@+`) that is appended directly after the opening `/**` of a DocBlock. - * - * An example of such an opening is: - * - * ``` - * /**#@+ - * * My DocBlock - * * / - * ``` - * - * The description and tags (not the summary!) are copied onto all subsequent DocBlocks and also applied to all - * elements that follow until another DocBlock is found that contains the closing marker (`#@-`). - * - * @see self::isTemplateEnd() for the check whether a closing marker was provided. - * - * @return boolean - */ - public function isTemplateStart() - { - return $this->isTemplateStart; - } - - /** - * Returns whether this DocBlock is the end of a Template section. - * - * @see self::isTemplateStart() for a more complete description of the Docblock Template functionality. - * - * @return boolean - */ - public function isTemplateEnd() - { - return $this->isTemplateEnd; - } - - /** - * Returns the current context. - * - * @return Context - */ - public function getContext() - { - return $this->context; - } - - /** - * Returns the current location. - * - * @return Location - */ - public function getLocation() - { - return $this->location; - } - - /** - * Returns the tags for this DocBlock. - * - * @return Tag[] - */ - public function getTags() - { - return $this->tags; - } - - /** - * Returns an array of tags matching the given name. If no tags are found - * an empty array is returned. - * - * @param string $name String to search by. - * - * @return Tag[] - */ - public function getTagsByName($name) - { - $result = array(); - - /** @var Tag $tag */ - foreach ($this->getTags() as $tag) { - if ($tag->getName() != $name) { - continue; - } - - $result[] = $tag; - } - - return $result; - } - - /** - * Checks if a tag of a certain type is present in this DocBlock. - * - * @param string $name Tag name to check for. - * - * @return bool - */ - public function hasTag($name) - { - /** @var Tag $tag */ - foreach ($this->getTags() as $tag) { - if ($tag->getName() == $name) { - return true; - } - } - - return false; - } - - /** - * Appends a tag at the end of the list of tags. - * - * @param Tag $tag The tag to add. - * - * @return Tag The newly added tag. - * - * @throws \LogicException When the tag belongs to a different DocBlock. - */ - public function appendTag(Tag $tag) - { - if (null === $tag->getDocBlock()) { - $tag->setDocBlock($this); - } - - if ($tag->getDocBlock() === $this) { - $this->tags[] = $tag; - } else { - throw new \LogicException( - 'This tag belongs to a different DocBlock object.' - ); - } - - return $tag; - } - - - /** - * Builds a string representation of this object. - * - * @todo determine the exact format as used by PHP Reflection and - * implement it. - * - * @return string - * @codeCoverageIgnore Not yet implemented - */ - public static function export() - { - throw new \Exception('Not yet implemented'); - } - - /** - * Returns the exported information (we should use the export static method - * BUT this throws an exception at this point). - * - * @return string - * @codeCoverageIgnore Not yet implemented - */ - public function __toString() - { - return 'Not yet implemented'; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Context.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Context.php deleted file mode 100644 index 81aa83ce..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Context.php +++ /dev/null @@ -1,154 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -/** - * The context in which a DocBlock occurs. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Context -{ - /** @var string The current namespace. */ - protected $namespace = ''; - - /** @var array List of namespace aliases => Fully Qualified Namespace. */ - protected $namespace_aliases = array(); - - /** @var string Name of the structural element, within the namespace. */ - protected $lsen = ''; - - /** - * Cteates a new context. - * @param string $namespace The namespace where this DocBlock - * resides in. - * @param array $namespace_aliases List of namespace aliases => Fully - * Qualified Namespace. - * @param string $lsen Name of the structural element, within - * the namespace. - */ - public function __construct( - $namespace = '', - array $namespace_aliases = array(), - $lsen = '' - ) { - if (!empty($namespace)) { - $this->setNamespace($namespace); - } - $this->setNamespaceAliases($namespace_aliases); - $this->setLSEN($lsen); - } - - /** - * @return string The namespace where this DocBlock resides in. - */ - public function getNamespace() - { - return $this->namespace; - } - - /** - * @return array List of namespace aliases => Fully Qualified Namespace. - */ - public function getNamespaceAliases() - { - return $this->namespace_aliases; - } - - /** - * Returns the Local Structural Element Name. - * - * @return string Name of the structural element, within the namespace. - */ - public function getLSEN() - { - return $this->lsen; - } - - /** - * Sets a new namespace. - * - * Sets a new namespace for the context. Leading and trailing slashes are - * trimmed, and the keywords "global" and "default" are treated as aliases - * to no namespace. - * - * @param string $namespace The new namespace to set. - * - * @return $this - */ - public function setNamespace($namespace) - { - if ('global' !== $namespace - && 'default' !== $namespace - ) { - // Srip leading and trailing slash - $this->namespace = trim((string)$namespace, '\\'); - } else { - $this->namespace = ''; - } - return $this; - } - - /** - * Sets the namespace aliases, replacing all previous ones. - * - * @param array $namespace_aliases List of namespace aliases => Fully - * Qualified Namespace. - * - * @return $this - */ - public function setNamespaceAliases(array $namespace_aliases) - { - $this->namespace_aliases = array(); - foreach ($namespace_aliases as $alias => $fqnn) { - $this->setNamespaceAlias($alias, $fqnn); - } - return $this; - } - - /** - * Adds a namespace alias to the context. - * - * @param string $alias The alias name (the part after "as", or the last - * part of the Fully Qualified Namespace Name) to add. - * @param string $fqnn The Fully Qualified Namespace Name for this alias. - * Any form of leading/trailing slashes are accepted, but what will be - * stored is a name, prefixed with a slash, and no trailing slash. - * - * @return $this - */ - public function setNamespaceAlias($alias, $fqnn) - { - $this->namespace_aliases[$alias] = '\\' . trim((string)$fqnn, '\\'); - return $this; - } - - /** - * Sets a new Local Structural Element Name. - * - * Sets a new Local Structural Element Name. A local name also contains - * punctuation determining the kind of structural element (e.g. trailing "(" - * and ")" for functions and methods). - * - * @param string $lsen The new local name of a structural element. - * - * @return $this - */ - public function setLSEN($lsen) - { - $this->lsen = (string)$lsen; - return $this; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Description.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Description.php deleted file mode 100644 index d41142e2..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Description.php +++ /dev/null @@ -1,223 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -use phpDocumentor\Reflection\DocBlock; - -/** - * Parses a Description of a DocBlock or tag. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Description implements \Reflector -{ - /** @var string */ - protected $contents = ''; - - /** @var array The contents, as an array of strings and Tag objects. */ - protected $parsedContents = null; - - /** @var DocBlock The DocBlock which this description belongs to. */ - protected $docblock = null; - - /** - * Populates the fields of a description. - * - * @param string $content The description's conetnts. - * @param DocBlock $docblock The DocBlock which this description belongs to. - */ - public function __construct($content, DocBlock $docblock = null) - { - $this->setContent($content)->setDocBlock($docblock); - } - - /** - * Gets the text of this description. - * - * @return string - */ - public function getContents() - { - return $this->contents; - } - - /** - * Sets the text of this description. - * - * @param string $content The new text of this description. - * - * @return $this - */ - public function setContent($content) - { - $this->contents = trim($content); - - $this->parsedContents = null; - return $this; - } - - /** - * Returns the parsed text of this description. - * - * @return array An array of strings and tag objects, in the order they - * occur within the description. - */ - public function getParsedContents() - { - if (null === $this->parsedContents) { - $this->parsedContents = preg_split( - '/\{ - # "{@}" is not a valid inline tag. This ensures that - # we do not treat it as one, but treat it literally. - (?!@\}) - # We want to capture the whole tag line, but without the - # inline tag delimiters. - (\@ - # Match everything up to the next delimiter. - [^{}]* - # Nested inline tag content should not be captured, or - # it will appear in the result separately. - (?: - # Match nested inline tags. - (?: - # Because we did not catch the tag delimiters - # earlier, we must be explicit with them here. - # Notice that this also matches "{}", as a way - # to later introduce it as an escape sequence. - \{(?1)?\} - | - # Make sure we match hanging "{". - \{ - ) - # Match content after the nested inline tag. - [^{}]* - )* # If there are more inline tags, match them as well. - # We use "*" since there may not be any nested inline - # tags. - ) - \}/Sux', - $this->contents, - null, - PREG_SPLIT_DELIM_CAPTURE - ); - - $count = count($this->parsedContents); - for ($i=1; $i<$count; $i += 2) { - $this->parsedContents[$i] = Tag::createInstance( - $this->parsedContents[$i], - $this->docblock - ); - } - - //In order to allow "literal" inline tags, the otherwise invalid - //sequence "{@}" is changed to "@", and "{}" is changed to "}". - //See unit tests for examples. - for ($i=0; $i<$count; $i += 2) { - $this->parsedContents[$i] = str_replace( - array('{@}', '{}'), - array('@', '}'), - $this->parsedContents[$i] - ); - } - } - return $this->parsedContents; - } - - /** - * Return a formatted variant of the Long Description using MarkDown. - * - * @todo this should become a more intelligent piece of code where the - * configuration contains a setting what format long descriptions are. - * - * @codeCoverageIgnore Will be removed soon, in favor of adapters at - * PhpDocumentor itself that will process text in various formats. - * - * @return string - */ - public function getFormattedContents() - { - $result = $this->contents; - - // if the long description contains a plain HTML element, surround - // it with a pre element. Please note that we explicitly used str_replace - // and not preg_replace to gain performance - if (strpos($result, '') !== false) { - $result = str_replace( - array('', "\r\n", "\n", "\r", ''), - array('
', '', '', '', '
'), - $result - ); - } - - if (class_exists('Parsedown')) { - $markdown = \Parsedown::instance(); - $result = $markdown->parse($result); - } elseif (class_exists('dflydev\markdown\MarkdownExtraParser')) { - $markdown = new \dflydev\markdown\MarkdownExtraParser(); - $result = $markdown->transformMarkdown($result); - } - - return trim($result); - } - - /** - * Gets the docblock this tag belongs to. - * - * @return DocBlock The docblock this description belongs to. - */ - public function getDocBlock() - { - return $this->docblock; - } - - /** - * Sets the docblock this tag belongs to. - * - * @param DocBlock $docblock The new docblock this description belongs to. - * Setting NULL removes any association. - * - * @return $this - */ - public function setDocBlock(DocBlock $docblock = null) - { - $this->docblock = $docblock; - - return $this; - } - - /** - * Builds a string representation of this object. - * - * @todo determine the exact format as used by PHP Reflection - * and implement it. - * - * @return void - * @codeCoverageIgnore Not yet implemented - */ - public static function export() - { - throw new \Exception('Not yet implemented'); - } - - /** - * Returns the long description as a string. - * - * @return string - */ - public function __toString() - { - return $this->getContents(); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Location.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Location.php deleted file mode 100644 index 966ed44d..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Location.php +++ /dev/null @@ -1,76 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -/** - * The location a DocBlock occurs within a file. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Location -{ - /** @var int Line where the DocBlock text starts. */ - protected $lineNumber = 0; - - /** @var int Column where the DocBlock text starts. */ - protected $columnNumber = 0; - - public function __construct( - $lineNumber = 0, - $columnNumber = 0 - ) { - $this->setLineNumber($lineNumber)->setColumnNumber($columnNumber); - } - - /** - * @return int Line where the DocBlock text starts. - */ - public function getLineNumber() - { - return $this->lineNumber; - } - - /** - * - * @param type $lineNumber - * @return $this - */ - public function setLineNumber($lineNumber) - { - $this->lineNumber = (int)$lineNumber; - - return $this; - } - - /** - * @return int Column where the DocBlock text starts. - */ - public function getColumnNumber() - { - return $this->columnNumber; - } - - /** - * - * @param int $columnNumber - * @return $this - */ - public function setColumnNumber($columnNumber) - { - $this->columnNumber = (int)$columnNumber; - - return $this; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Serializer.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Serializer.php deleted file mode 100644 index c1617850..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Serializer.php +++ /dev/null @@ -1,198 +0,0 @@ - - * @copyright 2013 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -use phpDocumentor\Reflection\DocBlock; - -/** - * Serializes a DocBlock instance. - * - * @author Barry vd. Heuvel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Serializer -{ - - /** @var string The string to indent the comment with. */ - protected $indentString = ' '; - - /** @var int The number of times the indent string is repeated. */ - protected $indent = 0; - - /** @var bool Whether to indent the first line. */ - protected $isFirstLineIndented = true; - - /** @var int|null The max length of a line. */ - protected $lineLength = null; - - /** - * Create a Serializer instance. - * - * @param int $indent The number of times the indent string is - * repeated. - * @param string $indentString The string to indent the comment with. - * @param bool $indentFirstLine Whether to indent the first line. - * @param int|null $lineLength The max length of a line or NULL to - * disable line wrapping. - */ - public function __construct( - $indent = 0, - $indentString = ' ', - $indentFirstLine = true, - $lineLength = null - ) { - $this->setIndentationString($indentString); - $this->setIndent($indent); - $this->setIsFirstLineIndented($indentFirstLine); - $this->setLineLength($lineLength); - } - - /** - * Sets the string to indent comments with. - * - * @param string $indentationString The string to indent comments with. - * - * @return $this This serializer object. - */ - public function setIndentationString($indentString) - { - $this->indentString = (string)$indentString; - return $this; - } - - /** - * Gets the string to indent comments with. - * - * @return string The indent string. - */ - public function getIndentationString() - { - return $this->indentString; - } - - /** - * Sets the number of indents. - * - * @param int $indent The number of times the indent string is repeated. - * - * @return $this This serializer object. - */ - public function setIndent($indent) - { - $this->indent = (int)$indent; - return $this; - } - - /** - * Gets the number of indents. - * - * @return int The number of times the indent string is repeated. - */ - public function getIndent() - { - return $this->indent; - } - - /** - * Sets whether or not the first line should be indented. - * - * Sets whether or not the first line (the one with the "/**") should be - * indented. - * - * @param bool $indentFirstLine The new value for this setting. - * - * @return $this This serializer object. - */ - public function setIsFirstLineIndented($indentFirstLine) - { - $this->isFirstLineIndented = (bool)$indentFirstLine; - return $this; - } - - /** - * Gets whether or not the first line should be indented. - * - * @return bool Whether or not the first line should be indented. - */ - public function isFirstLineIndented() - { - return $this->isFirstLineIndented; - } - - /** - * Sets the line length. - * - * Sets the length of each line in the serialization. Content will be - * wrapped within this limit. - * - * @param int|null $lineLength The length of each line. NULL to disable line - * wrapping altogether. - * - * @return $this This serializer object. - */ - public function setLineLength($lineLength) - { - $this->lineLength = null === $lineLength ? null : (int)$lineLength; - return $this; - } - - /** - * Gets the line length. - * - * @return int|null The length of each line or NULL if line wrapping is - * disabled. - */ - public function getLineLength() - { - return $this->lineLength; - } - - /** - * Generate a DocBlock comment. - * - * @param DocBlock The DocBlock to serialize. - * - * @return string The serialized doc block. - */ - public function getDocComment(DocBlock $docblock) - { - $indent = str_repeat($this->indentString, $this->indent); - $firstIndent = $this->isFirstLineIndented ? $indent : ''; - - $text = $docblock->getText(); - if ($this->lineLength) { - //3 === strlen(' * ') - $wrapLength = $this->lineLength - strlen($indent) - 3; - $text = wordwrap($text, $wrapLength); - } - $text = str_replace("\n", "\n{$indent} * ", $text); - - $comment = "{$firstIndent}/**\n{$indent} * {$text}\n{$indent} *\n"; - - /** @var Tag $tag */ - foreach ($docblock->getTags() as $tag) { - $tagText = (string) $tag; - if ($this->lineLength) { - $tagText = wordwrap($tagText, $wrapLength); - } - $tagText = str_replace("\n", "\n{$indent} * ", $tagText); - - $comment .= "{$indent} * {$tagText}\n"; - } - - $comment .= $indent . ' */'; - - return $comment; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag.php deleted file mode 100644 index a96db095..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag.php +++ /dev/null @@ -1,377 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -use phpDocumentor\Reflection\DocBlock; - -/** - * Parses a tag definition for a DocBlock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Tag implements \Reflector -{ - /** - * PCRE regular expression matching a tag name. - */ - const REGEX_TAGNAME = '[\w\-\_\\\\]+'; - - /** @var string Name of the tag */ - protected $tag = ''; - - /** - * @var string|null Content of the tag. - * When set to NULL, it means it needs to be regenerated. - */ - protected $content = ''; - - /** @var string Description of the content of this tag */ - protected $description = ''; - - /** - * @var array|null The description, as an array of strings and Tag objects. - * When set to NULL, it means it needs to be regenerated. - */ - protected $parsedDescription = null; - - /** @var Location Location of the tag. */ - protected $location = null; - - /** @var DocBlock The DocBlock which this tag belongs to. */ - protected $docblock = null; - - /** - * @var array An array with a tag as a key, and an FQCN to a class that - * handles it as an array value. The class is expected to inherit this - * class. - */ - private static $tagHandlerMappings = array( - 'author' - => '\phpDocumentor\Reflection\DocBlock\Tag\AuthorTag', - 'covers' - => '\phpDocumentor\Reflection\DocBlock\Tag\CoversTag', - 'deprecated' - => '\phpDocumentor\Reflection\DocBlock\Tag\DeprecatedTag', - 'example' - => '\phpDocumentor\Reflection\DocBlock\Tag\ExampleTag', - 'link' - => '\phpDocumentor\Reflection\DocBlock\Tag\LinkTag', - 'method' - => '\phpDocumentor\Reflection\DocBlock\Tag\MethodTag', - 'param' - => '\phpDocumentor\Reflection\DocBlock\Tag\ParamTag', - 'property-read' - => '\phpDocumentor\Reflection\DocBlock\Tag\PropertyReadTag', - 'property' - => '\phpDocumentor\Reflection\DocBlock\Tag\PropertyTag', - 'property-write' - => '\phpDocumentor\Reflection\DocBlock\Tag\PropertyWriteTag', - 'return' - => '\phpDocumentor\Reflection\DocBlock\Tag\ReturnTag', - 'see' - => '\phpDocumentor\Reflection\DocBlock\Tag\SeeTag', - 'since' - => '\phpDocumentor\Reflection\DocBlock\Tag\SinceTag', - 'source' - => '\phpDocumentor\Reflection\DocBlock\Tag\SourceTag', - 'throw' - => '\phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag', - 'throws' - => '\phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag', - 'uses' - => '\phpDocumentor\Reflection\DocBlock\Tag\UsesTag', - 'var' - => '\phpDocumentor\Reflection\DocBlock\Tag\VarTag', - 'version' - => '\phpDocumentor\Reflection\DocBlock\Tag\VersionTag' - ); - - /** - * Factory method responsible for instantiating the correct sub type. - * - * @param string $tag_line The text for this tag, including description. - * @param DocBlock $docblock The DocBlock which this tag belongs to. - * @param Location $location Location of the tag. - * - * @throws \InvalidArgumentException if an invalid tag line was presented. - * - * @return static A new tag object. - */ - final public static function createInstance( - $tag_line, - DocBlock $docblock = null, - Location $location = null - ) { - if (!preg_match( - '/^@(' . self::REGEX_TAGNAME . ')(?:\s*([^\s].*)|$)?/us', - $tag_line, - $matches - )) { - throw new \InvalidArgumentException( - 'Invalid tag_line detected: ' . $tag_line - ); - } - - $handler = __CLASS__; - if (isset(self::$tagHandlerMappings[$matches[1]])) { - $handler = self::$tagHandlerMappings[$matches[1]]; - } elseif (isset($docblock)) { - $tagName = (string)new Type\Collection( - array($matches[1]), - $docblock->getContext() - ); - - if (isset(self::$tagHandlerMappings[$tagName])) { - $handler = self::$tagHandlerMappings[$tagName]; - } - } - - return new $handler( - $matches[1], - isset($matches[2]) ? $matches[2] : '', - $docblock, - $location - ); - } - - /** - * Registers a handler for tags. - * - * Registers a handler for tags. The class specified is autoloaded if it's - * not available. It must inherit from this class. - * - * @param string $tag Name of tag to regiser a handler for. When - * registering a namespaced tag, the full name, along with a prefixing - * slash MUST be provided. - * @param string|null $handler FQCN of handler. Specifing NULL removes the - * handler for the specified tag, if any. - * - * @return bool TRUE on success, FALSE on failure. - */ - final public static function registerTagHandler($tag, $handler) - { - $tag = trim((string)$tag); - - if (null === $handler) { - unset(self::$tagHandlerMappings[$tag]); - return true; - } - - if ('' !== $tag - && class_exists($handler, true) - && is_subclass_of($handler, __CLASS__) - && !strpos($tag, '\\') //Accept no slash, and 1st slash at offset 0. - ) { - self::$tagHandlerMappings[$tag] = $handler; - return true; - } - - return false; - } - - /** - * Parses a tag and populates the member variables. - * - * @param string $name Name of the tag. - * @param string $content The contents of the given tag. - * @param DocBlock $docblock The DocBlock which this tag belongs to. - * @param Location $location Location of the tag. - */ - public function __construct( - $name, - $content, - DocBlock $docblock = null, - Location $location = null - ) { - $this - ->setName($name) - ->setContent($content) - ->setDocBlock($docblock) - ->setLocation($location); - } - - /** - * Gets the name of this tag. - * - * @return string The name of this tag. - */ - public function getName() - { - return $this->tag; - } - - /** - * Sets the name of this tag. - * - * @param string $name The new name of this tag. - * - * @return $this - * @throws \InvalidArgumentException When an invalid tag name is provided. - */ - public function setName($name) - { - if (!preg_match('/^' . self::REGEX_TAGNAME . '$/u', $name)) { - throw new \InvalidArgumentException( - 'Invalid tag name supplied: ' . $name - ); - } - - $this->tag = $name; - - return $this; - } - - /** - * Gets the content of this tag. - * - * @return string - */ - public function getContent() - { - if (null === $this->content) { - $this->content = $this->description; - } - - return $this->content; - } - - /** - * Sets the content of this tag. - * - * @param string $content The new content of this tag. - * - * @return $this - */ - public function setContent($content) - { - $this->setDescription($content); - $this->content = $content; - - return $this; - } - - /** - * Gets the description component of this tag. - * - * @return string - */ - public function getDescription() - { - return $this->description; - } - - /** - * Sets the description component of this tag. - * - * @param string $description The new description component of this tag. - * - * @return $this - */ - public function setDescription($description) - { - $this->content = null; - $this->parsedDescription = null; - $this->description = trim($description); - - return $this; - } - - /** - * Gets the parsed text of this description. - * - * @return array An array of strings and tag objects, in the order they - * occur within the description. - */ - public function getParsedDescription() - { - if (null === $this->parsedDescription) { - $description = new Description($this->description, $this->docblock); - $this->parsedDescription = $description->getParsedContents(); - } - return $this->parsedDescription; - } - - /** - * Gets the docblock this tag belongs to. - * - * @return DocBlock The docblock this tag belongs to. - */ - public function getDocBlock() - { - return $this->docblock; - } - - /** - * Sets the docblock this tag belongs to. - * - * @param DocBlock $docblock The new docblock this tag belongs to. Setting - * NULL removes any association. - * - * @return $this - */ - public function setDocBlock(DocBlock $docblock = null) - { - $this->docblock = $docblock; - - return $this; - } - - /** - * Gets the location of the tag. - * - * @return Location The tag's location. - */ - public function getLocation() - { - return $this->location; - } - - /** - * Sets the location of the tag. - * - * @param Location $location The new location of the tag. - * - * @return $this - */ - public function setLocation(Location $location = null) - { - $this->location = $location; - - return $this; - } - - /** - * Builds a string representation of this object. - * - * @todo determine the exact format as used by PHP Reflection and implement it. - * - * @return void - * @codeCoverageIgnore Not yet implemented - */ - public static function export() - { - throw new \Exception('Not yet implemented'); - } - - /** - * Returns the tag as a serialized string - * - * @return string - */ - public function __toString() - { - return "@{$this->getName()} {$this->getContent()}"; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/AuthorTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/AuthorTag.php deleted file mode 100644 index bacf52eb..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/AuthorTag.php +++ /dev/null @@ -1,131 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for an @author tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class AuthorTag extends Tag -{ - /** - * PCRE regular expression matching any valid value for the name component. - */ - const REGEX_AUTHOR_NAME = '[^\<]*'; - - /** - * PCRE regular expression matching any valid value for the email component. - */ - const REGEX_AUTHOR_EMAIL = '[^\>]*'; - - /** @var string The name of the author */ - protected $authorName = ''; - - /** @var string The email of the author */ - protected $authorEmail = ''; - - public function getContent() - { - if (null === $this->content) { - $this->content = $this->authorName; - if ('' != $this->authorEmail) { - $this->content .= "<{$this->authorEmail}>"; - } - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - if (preg_match( - '/^(' . self::REGEX_AUTHOR_NAME . - ')(\<(' . self::REGEX_AUTHOR_EMAIL . - ')\>)?$/u', - $this->description, - $matches - )) { - $this->authorName = trim($matches[1]); - if (isset($matches[3])) { - $this->authorEmail = trim($matches[3]); - } - } - - return $this; - } - - /** - * Gets the author's name. - * - * @return string The author's name. - */ - public function getAuthorName() - { - return $this->authorName; - } - - /** - * Sets the author's name. - * - * @param string $authorName The new author name. - * An invalid value will set an empty string. - * - * @return $this - */ - public function setAuthorName($authorName) - { - $this->content = null; - $this->authorName - = preg_match('/^' . self::REGEX_AUTHOR_NAME . '$/u', $authorName) - ? $authorName : ''; - - return $this; - } - - /** - * Gets the author's email. - * - * @return string The author's email. - */ - public function getAuthorEmail() - { - return $this->authorEmail; - } - - /** - * Sets the author's email. - * - * @param string $authorEmail The new author email. - * An invalid value will set an empty string. - * - * @return $this - */ - public function setAuthorEmail($authorEmail) - { - $this->authorEmail - = preg_match('/^' . self::REGEX_AUTHOR_EMAIL . '$/u', $authorEmail) - ? $authorEmail : ''; - - $this->content = null; - return $this; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/CoversTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/CoversTag.php deleted file mode 100644 index bd31b56b..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/CoversTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @covers tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class CoversTag extends SeeTag -{ -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTag.php deleted file mode 100644 index 7226316b..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTag.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag\VersionTag; - -/** - * Reflection class for a @deprecated tag in a Docblock. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class DeprecatedTag extends VersionTag -{ -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ExampleTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ExampleTag.php deleted file mode 100644 index 0e163ea0..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ExampleTag.php +++ /dev/null @@ -1,156 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @example tag in a Docblock. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ExampleTag extends SourceTag -{ - /** - * @var string Path to a file to use as an example. - * May also be an absolute URI. - */ - protected $filePath = ''; - - /** - * @var bool Whether the file path component represents an URI. - * This determines how the file portion appears at {@link getContent()}. - */ - protected $isURI = false; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $filePath = ''; - if ($this->isURI) { - if (false === strpos($this->filePath, ':')) { - $filePath = str_replace( - '%2F', - '/', - rawurlencode($this->filePath) - ); - } else { - $filePath = $this->filePath; - } - } else { - $filePath = '"' . $this->filePath . '"'; - } - - $this->content = $filePath . ' ' . parent::getContent(); - } - - return $this->content; - } - /** - * {@inheritdoc} - */ - public function setContent($content) - { - Tag::setContent($content); - if (preg_match( - '/^ - # File component - (?: - # File path in quotes - \"([^\"]+)\" - | - # File URI - (\S+) - ) - # Remaining content (parsed by SourceTag) - (?:\s+(.*))? - $/sux', - $this->description, - $matches - )) { - if ('' !== $matches[1]) { - $this->setFilePath($matches[1]); - } else { - $this->setFileURI($matches[2]); - } - - if (isset($matches[3])) { - parent::setContent($matches[3]); - } else { - $this->setDescription(''); - } - $this->content = $content; - } - - return $this; - } - - /** - * Returns the file path. - * - * @return string Path to a file to use as an example. - * May also be an absolute URI. - */ - public function getFilePath() - { - return $this->filePath; - } - - /** - * Sets the file path. - * - * @param string $filePath The new file path to use for the example. - * - * @return $this - */ - public function setFilePath($filePath) - { - $this->isURI = false; - $this->filePath = trim($filePath); - - $this->content = null; - return $this; - } - - /** - * Sets the file path as an URI. - * - * This function is equivalent to {@link setFilePath()}, except that it - * convers an URI to a file path before that. - * - * There is no getFileURI(), as {@link getFilePath()} is compatible. - * - * @param type $uri The new file URI to use as an example. - */ - public function setFileURI($uri) - { - $this->isURI = true; - if (false === strpos($uri, ':')) { - //Relative URL - $this->filePath = rawurldecode( - str_replace(array('/', '\\'), '%2F', $uri) - ); - } else { - //Absolute URL or URI. - $this->filePath = $uri; - } - - $this->content = null; - return $this; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/LinkTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/LinkTag.php deleted file mode 100644 index f79f25dd..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/LinkTag.php +++ /dev/null @@ -1,81 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @link tag in a Docblock. - * - * @author Ben Selby - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class LinkTag extends Tag -{ - /** @var string */ - protected $link = ''; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content = "{$this->link} {$this->description}"; - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - $parts = preg_split('/\s+/Su', $this->description, 2); - - $this->link = $parts[0]; - - $this->setDescription(isset($parts[1]) ? $parts[1] : $parts[0]); - - $this->content = $content; - return $this; - } - - /** - * Gets the link - * - * @return string - */ - public function getLink() - { - return $this->link; - } - - /** - * Sets the link - * - * @param string $link The link - * - * @return $this - */ - public function setLink($link) - { - $this->link = $link; - - $this->content = null; - return $this; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/MethodTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/MethodTag.php deleted file mode 100644 index 7a5ce790..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/MethodTag.php +++ /dev/null @@ -1,209 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @method in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class MethodTag extends ReturnTag -{ - - /** @var string */ - protected $method_name = ''; - - /** @var string */ - protected $arguments = ''; - - /** @var bool */ - protected $isStatic = false; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content = ''; - if ($this->isStatic) { - $this->content .= 'static '; - } - $this->content .= $this->type . - " {$this->method_name}({$this->arguments}) " . - $this->description; - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - Tag::setContent($content); - // 1. none or more whitespace - // 2. optionally the keyword "static" followed by whitespace - // 3. optionally a word with underscores followed by whitespace : as - // type for the return value - // 4. then optionally a word with underscores followed by () and - // whitespace : as method name as used by phpDocumentor - // 5. then a word with underscores, followed by ( and any character - // until a ) and whitespace : as method name with signature - // 6. any remaining text : as description - if (preg_match( - '/^ - # Static keyword - # Declates a static method ONLY if type is also present - (?: - (static) - \s+ - )? - # Return type - (?: - ([\w\|_\\\\]+) - \s+ - )? - # Legacy method name (not captured) - (?: - [\w_]+\(\)\s+ - )? - # Method name - ([\w\|_\\\\]+) - # Arguments - \(([^\)]*)\) - \s* - # Description - (.*) - $/sux', - $this->description, - $matches - )) { - list( - , - $static, - $this->type, - $this->method_name, - $this->arguments, - $this->description - ) = $matches; - if ($static) { - if (!$this->type) { - $this->type = 'static'; - } else { - $this->isStatic = true; - } - } else { - if (!$this->type) { - $this->type = 'void'; - } - } - $this->parsedDescription = null; - } - - return $this; - } - - /** - * Sets the name of this method. - * - * @param string $method_name The name of the method. - * - * @return $this - */ - public function setMethodName($method_name) - { - $this->method_name = $method_name; - - $this->content = null; - return $this; - } - - /** - * Retrieves the method name. - * - * @return string - */ - public function getMethodName() - { - return $this->method_name; - } - - /** - * Sets the arguments for this method. - * - * @param string $arguments A comma-separated arguments line. - * - * @return void - */ - public function setArguments($arguments) - { - $this->arguments = $arguments; - - $this->content = null; - return $this; - } - - /** - * Returns an array containing each argument as array of type and name. - * - * Please note that the argument sub-array may only contain 1 element if no - * type was specified. - * - * @return string[] - */ - public function getArguments() - { - if (empty($this->arguments)) { - return array(); - } - - $arguments = explode(',', $this->arguments); - foreach ($arguments as $key => $value) { - $arguments[$key] = explode(' ', trim($value)); - } - - return $arguments; - } - - /** - * Checks whether the method tag describes a static method or not. - * - * @return bool TRUE if the method declaration is for a static method, FALSE - * otherwise. - */ - public function isStatic() - { - return $this->isStatic; - } - - /** - * Sets a new value for whether the method is static or not. - * - * @param bool $isStatic The new value to set. - * - * @return $this - */ - public function setIsStatic($isStatic) - { - $this->isStatic = $isStatic; - - $this->content = null; - return $this; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php deleted file mode 100644 index 9bc0270d..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php +++ /dev/null @@ -1,119 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @param tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ParamTag extends ReturnTag -{ - /** @var string */ - protected $variableName = ''; - - /** @var bool determines whether this is a variadic argument */ - protected $isVariadic = false; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content - = "{$this->type} {$this->variableName} {$this->description}"; - } - return $this->content; - } - /** - * {@inheritdoc} - */ - public function setContent($content) - { - Tag::setContent($content); - $parts = preg_split( - '/(\s+)/Su', - $this->description, - 3, - PREG_SPLIT_DELIM_CAPTURE - ); - - // if the first item that is encountered is not a variable; it is a type - if (isset($parts[0]) - && (strlen($parts[0]) > 0) - && ($parts[0][0] !== '$') - ) { - $this->type = array_shift($parts); - array_shift($parts); - } - - // if the next item starts with a $ or ...$ it must be the variable name - if (isset($parts[0]) - && (strlen($parts[0]) > 0) - && ($parts[0][0] == '$' || substr($parts[0], 0, 4) === '...$') - ) { - $this->variableName = array_shift($parts); - array_shift($parts); - - if (substr($this->variableName, 0, 3) === '...') { - $this->isVariadic = true; - $this->variableName = substr($this->variableName, 3); - } - } - - $this->setDescription(implode('', $parts)); - - $this->content = $content; - return $this; - } - - /** - * Returns the variable's name. - * - * @return string - */ - public function getVariableName() - { - return $this->variableName; - } - - /** - * Sets the variable's name. - * - * @param string $name The new name for this variable. - * - * @return $this - */ - public function setVariableName($name) - { - $this->variableName = $name; - - $this->content = null; - return $this; - } - - /** - * Returns whether this tag is variadic. - * - * @return boolean - */ - public function isVariadic() - { - return $this->isVariadic; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyReadTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyReadTag.php deleted file mode 100644 index 33406026..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyReadTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @property-read tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class PropertyReadTag extends PropertyTag -{ -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyTag.php deleted file mode 100644 index 288ecff8..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @property tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class PropertyTag extends ParamTag -{ -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyWriteTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyWriteTag.php deleted file mode 100644 index ec4e866d..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyWriteTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @property-write tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class PropertyWriteTag extends PropertyTag -{ -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ReturnTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ReturnTag.php deleted file mode 100644 index 9293db92..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ReturnTag.php +++ /dev/null @@ -1,99 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; -use phpDocumentor\Reflection\DocBlock\Type\Collection; - -/** - * Reflection class for a @return tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ReturnTag extends Tag -{ - /** @var string The raw type component. */ - protected $type = ''; - - /** @var Collection The parsed type component. */ - protected $types = null; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content = "{$this->type} {$this->description}"; - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - - $parts = preg_split('/\s+/Su', $this->description, 2); - - // any output is considered a type - $this->type = $parts[0]; - $this->types = null; - - $this->setDescription(isset($parts[1]) ? $parts[1] : ''); - - $this->content = $content; - return $this; - } - - /** - * Returns the unique types of the variable. - * - * @return string[] - */ - public function getTypes() - { - return $this->getTypesCollection()->getArrayCopy(); - } - - /** - * Returns the type section of the variable. - * - * @return string - */ - public function getType() - { - return (string) $this->getTypesCollection(); - } - - /** - * Returns the type collection. - * - * @return void - */ - protected function getTypesCollection() - { - if (null === $this->types) { - $this->types = new Collection( - array($this->type), - $this->docblock ? $this->docblock->getContext() : null - ); - } - return $this->types; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SeeTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SeeTag.php deleted file mode 100644 index 4f5f22ce..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SeeTag.php +++ /dev/null @@ -1,81 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @see tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class SeeTag extends Tag -{ - /** @var string */ - protected $refers = null; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content = "{$this->refers} {$this->description}"; - } - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - $parts = preg_split('/\s+/Su', $this->description, 2); - - // any output is considered a type - $this->refers = $parts[0]; - - $this->setDescription(isset($parts[1]) ? $parts[1] : ''); - - $this->content = $content; - return $this; - } - - /** - * Gets the structural element this tag refers to. - * - * @return string - */ - public function getReference() - { - return $this->refers; - } - - /** - * Sets the structural element this tag refers to. - * - * @param string $refers The new type this tag refers to. - * - * @return $this - */ - public function setReference($refers) - { - $this->refers = $refers; - - $this->content = null; - return $this; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SinceTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SinceTag.php deleted file mode 100644 index ba009c44..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SinceTag.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag\VersionTag; - -/** - * Reflection class for a @since tag in a Docblock. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class SinceTag extends VersionTag -{ -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SourceTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SourceTag.php deleted file mode 100644 index 3400220e..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SourceTag.php +++ /dev/null @@ -1,137 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @source tag in a Docblock. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class SourceTag extends Tag -{ - /** - * @var int The starting line, relative to the structural element's - * location. - */ - protected $startingLine = 1; - - /** - * @var int|null The number of lines, relative to the starting line. NULL - * means "to the end". - */ - protected $lineCount = null; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content - = "{$this->startingLine} {$this->lineCount} {$this->description}"; - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - if (preg_match( - '/^ - # Starting line - ([1-9]\d*) - \s* - # Number of lines - (?: - ((?1)) - \s+ - )? - # Description - (.*) - $/sux', - $this->description, - $matches - )) { - $this->startingLine = (int)$matches[1]; - if (isset($matches[2]) && '' !== $matches[2]) { - $this->lineCount = (int)$matches[2]; - } - $this->setDescription($matches[3]); - $this->content = $content; - } - - return $this; - } - - /** - * Gets the starting line. - * - * @return int The starting line, relative to the structural element's - * location. - */ - public function getStartingLine() - { - return $this->startingLine; - } - - /** - * Sets the starting line. - * - * @param int $startingLine The new starting line, relative to the - * structural element's location. - * - * @return $this - */ - public function setStartingLine($startingLine) - { - $this->startingLine = $startingLine; - - $this->content = null; - return $this; - } - - /** - * Returns the number of lines. - * - * @return int|null The number of lines, relative to the starting line. NULL - * means "to the end". - */ - public function getLineCount() - { - return $this->lineCount; - } - - /** - * Sets the number of lines. - * - * @param int|null $lineCount The new number of lines, relative to the - * starting line. NULL means "to the end". - * - * @return $this - */ - public function setLineCount($lineCount) - { - $this->lineCount = $lineCount; - - $this->content = null; - return $this; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTag.php deleted file mode 100644 index 58ee44a4..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @throws tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ThrowsTag extends ReturnTag -{ -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/UsesTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/UsesTag.php deleted file mode 100644 index da0d6638..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/UsesTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @uses tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class UsesTag extends SeeTag -{ -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VarTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VarTag.php deleted file mode 100644 index 236b2c8b..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VarTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @var tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class VarTag extends ParamTag -{ -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VersionTag.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VersionTag.php deleted file mode 100644 index 260f6984..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VersionTag.php +++ /dev/null @@ -1,108 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @version tag in a Docblock. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class VersionTag extends Tag -{ - /** - * PCRE regular expression matching a version vector. - * Assumes the "x" modifier. - */ - const REGEX_VECTOR = '(?: - # Normal release vectors. - \d\S* - | - # VCS version vectors. Per PHPCS, they are expected to - # follow the form of the VCS name, followed by ":", followed - # by the version vector itself. - # By convention, popular VCSes like CVS, SVN and GIT use "$" - # around the actual version vector. - [^\s\:]+\:\s*\$[^\$]+\$ - )'; - - /** @var string The version vector. */ - protected $version = ''; - - public function getContent() - { - if (null === $this->content) { - $this->content = "{$this->version} {$this->description}"; - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - - if (preg_match( - '/^ - # The version vector - (' . self::REGEX_VECTOR . ') - \s* - # The description - (.+)? - $/sux', - $this->description, - $matches - )) { - $this->version = $matches[1]; - $this->setDescription(isset($matches[2]) ? $matches[2] : ''); - $this->content = $content; - } - - return $this; - } - - /** - * Gets the version section of the tag. - * - * @return string The version section of the tag. - */ - public function getVersion() - { - return $this->version; - } - - /** - * Sets the version section of the tag. - * - * @param string $version The new version section of the tag. - * An invalid value will set an empty string. - * - * @return $this - */ - public function setVersion($version) - { - $this->version - = preg_match('/^' . self::REGEX_VECTOR . '$/ux', $version) - ? $version - : ''; - - $this->content = null; - return $this; - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Type/Collection.php b/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Type/Collection.php deleted file mode 100644 index 90ead3ff..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Type/Collection.php +++ /dev/null @@ -1,221 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Type; - -use phpDocumentor\Reflection\DocBlock\Context; - -/** - * Collection - * - * @author Mike van Riel - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Collection extends \ArrayObject -{ - /** @var string Definition of the OR operator for types */ - const OPERATOR_OR = '|'; - - /** @var string Definition of the ARRAY operator for types */ - const OPERATOR_ARRAY = '[]'; - - /** @var string Definition of the NAMESPACE operator in PHP */ - const OPERATOR_NAMESPACE = '\\'; - - /** @var string[] List of recognized keywords */ - protected static $keywords = array( - 'string', 'int', 'integer', 'bool', 'boolean', 'float', 'double', - 'object', 'mixed', 'array', 'resource', 'void', 'null', 'scalar', - 'callback', 'callable', 'false', 'true', 'self', '$this', 'static' - ); - - /** - * Current invoking location. - * - * This is used to prepend to type with a relative location. - * May also be 'default' or 'global', in which case they are ignored. - * - * @var Context - */ - protected $context = null; - - /** - * Registers the namespace and aliases; uses that to add and expand the - * given types. - * - * @param string[] $types Array containing a list of types to add to this - * container. - * @param Context $location The current invoking location. - */ - public function __construct( - array $types = array(), - Context $context = null - ) { - $this->context = null === $context ? new Context() : $context; - - foreach ($types as $type) { - $this->add($type); - } - } - - /** - * Returns the current invoking location. - * - * @return Context - */ - public function getContext() - { - return $this->context; - } - - /** - * Adds a new type to the collection and expands it if it contains a - * relative namespace. - * - * If a class in the type contains a relative namespace than this collection - * will try to expand that into a FQCN. - * - * @param string $type A 'Type' as defined in the phpDocumentor - * documentation. - * - * @throws \InvalidArgumentException if a non-string argument is passed. - * - * @see http://phpdoc.org/docs/latest/for-users/types.html for the - * definition of a type. - * - * @return void - */ - public function add($type) - { - if (!is_string($type)) { - throw new \InvalidArgumentException( - 'A type should be represented by a string, received: ' - .var_export($type, true) - ); - } - - // separate the type by the OR operator - $type_parts = explode(self::OPERATOR_OR, $type); - foreach ($type_parts as $part) { - $expanded_type = $this->expand($part); - if ($expanded_type) { - $this[] = $expanded_type; - } - } - } - - /** - * Returns a string representation of the collection. - * - * @return string The resolved types across the collection, separated with - * {@link self::OPERATOR_OR}. - */ - public function __toString() - { - return implode(self::OPERATOR_OR, $this->getArrayCopy()); - } - - /** - * Analyzes the given type and returns the FQCN variant. - * - * When a type is provided this method checks whether it is not a keyword or - * Fully Qualified Class Name. If so it will use the given namespace and - * aliases to expand the type to a FQCN representation. - * - * This method only works as expected if the namespace and aliases are set; - * no dynamic reflection is being performed here. - * - * @param string $type The relative or absolute type. - * - * @uses getNamespace to determine with what to prefix the type name. - * @uses getNamespaceAliases to check whether the first part of the relative - * type name should not be replaced with another namespace. - * - * @return string - */ - protected function expand($type) - { - $type = trim($type); - if (!$type) { - return ''; - } - - if ($this->isTypeAnArray($type)) { - return $this->expand(substr($type, 0, -2)) . self::OPERATOR_ARRAY; - } - - if ($this->isRelativeType($type) && !$this->isTypeAKeyword($type)) { - $type_parts = explode(self::OPERATOR_NAMESPACE, $type, 2); - - $namespace_aliases = $this->context->getNamespaceAliases(); - // if the first segment is not an alias; prepend namespace name and - // return - if (!isset($namespace_aliases[$type_parts[0]])) { - $namespace = $this->context->getNamespace(); - if ('' !== $namespace) { - $namespace .= self::OPERATOR_NAMESPACE; - } - return self::OPERATOR_NAMESPACE . $namespace . $type; - } - - $type_parts[0] = $namespace_aliases[$type_parts[0]]; - $type = implode(self::OPERATOR_NAMESPACE, $type_parts); - } - - return $type; - } - - /** - * Detects whether the given type represents an array. - * - * @param string $type A relative or absolute type as defined in the - * phpDocumentor documentation. - * - * @return bool - */ - protected function isTypeAnArray($type) - { - return substr($type, -2) === self::OPERATOR_ARRAY; - } - - /** - * Detects whether the given type represents a PHPDoc keyword. - * - * @param string $type A relative or absolute type as defined in the - * phpDocumentor documentation. - * - * @return bool - */ - protected function isTypeAKeyword($type) - { - return in_array(strtolower($type), static::$keywords, true); - } - - /** - * Detects whether the given type represents a relative or absolute path. - * - * This method will detect keywords as being absolute; even though they are - * not preceeded by a namespace separator. - * - * @param string $type A relative or absolute type as defined in the - * phpDocumentor documentation. - * - * @return bool - */ - protected function isRelativeType($type) - { - return ($type[0] !== self::OPERATOR_NAMESPACE) - || $this->isTypeAKeyword($type); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/DescriptionTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/DescriptionTest.php deleted file mode 100644 index a6ca7b37..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/DescriptionTest.php +++ /dev/null @@ -1,245 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Description - * - * @author Vasil Rangelov - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class DescriptionTest extends \PHPUnit_Framework_TestCase -{ - public function testConstruct() - { - $fixture = <<assertSame($fixture, $object->getContents()); - - $parsedContents = $object->getParsedContents(); - $this->assertCount(1, $parsedContents); - $this->assertSame($fixture, $parsedContents[0]); - } - - public function testInlineTagParsing() - { - $fixture = <<assertSame($fixture, $object->getContents()); - - $parsedContents = $object->getParsedContents(); - $this->assertCount(3, $parsedContents); - $this->assertSame('This is text for a ', $parsedContents[0]); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag\LinkTag', - $parsedContents[1] - ); - $this->assertSame( - ' that uses inline -tags.', - $parsedContents[2] - ); - } - - public function testInlineTagAtStartParsing() - { - $fixture = <<assertSame($fixture, $object->getContents()); - - $parsedContents = $object->getParsedContents(); - $this->assertCount(3, $parsedContents); - - $this->assertSame('', $parsedContents[0]); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag\LinkTag', - $parsedContents[1] - ); - $this->assertSame( - ' is text for a description that uses inline -tags.', - $parsedContents[2] - ); - } - - public function testNestedInlineTagParsing() - { - $fixture = <<assertSame($fixture, $object->getContents()); - - $parsedContents = $object->getParsedContents(); - $this->assertCount(3, $parsedContents); - - $this->assertSame( - 'This is text for a description with ', - $parsedContents[0] - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $parsedContents[1] - ); - $this->assertSame('.', $parsedContents[2]); - - $parsedDescription = $parsedContents[1]->getParsedDescription(); - $this->assertCount(3, $parsedDescription); - $this->assertSame("inline tag with\n", $parsedDescription[0]); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag\LinkTag', - $parsedDescription[1] - ); - $this->assertSame(' in it', $parsedDescription[2]); - } - - public function testLiteralOpeningDelimiter() - { - $fixture = <<assertSame($fixture, $object->getContents()); - - $parsedContents = $object->getParsedContents(); - $this->assertCount(1, $parsedContents); - $this->assertSame($fixture, $parsedContents[0]); - } - - public function testNestedLiteralOpeningDelimiter() - { - $fixture = <<assertSame($fixture, $object->getContents()); - - $parsedContents = $object->getParsedContents(); - $this->assertCount(3, $parsedContents); - $this->assertSame( - 'This is text for a description containing ', - $parsedContents[0] - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $parsedContents[1] - ); - $this->assertSame('.', $parsedContents[2]); - - $this->assertSame( - array('inline tag that has { that -is literal'), - $parsedContents[1]->getParsedDescription() - ); - } - - public function testLiteralClosingDelimiter() - { - $fixture = <<assertSame($fixture, $object->getContents()); - - $parsedContents = $object->getParsedContents(); - $this->assertCount(1, $parsedContents); - $this->assertSame( - 'This is text for a description with } that is not a tag.', - $parsedContents[0] - ); - } - - public function testNestedLiteralClosingDelimiter() - { - $fixture = <<assertSame($fixture, $object->getContents()); - - $parsedContents = $object->getParsedContents(); - $this->assertCount(3, $parsedContents); - $this->assertSame( - 'This is text for a description with ', - $parsedContents[0] - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $parsedContents[1] - ); - $this->assertSame('.', $parsedContents[2]); - - $this->assertSame( - array('inline tag with } that is not an -inline tag'), - $parsedContents[1]->getParsedDescription() - ); - } - - public function testInlineTagEscapingSequence() - { - $fixture = <<assertSame($fixture, $object->getContents()); - - $parsedContents = $object->getParsedContents(); - $this->assertCount(1, $parsedContents); - $this->assertSame( - 'This is text for a description with literal {@link}.', - $parsedContents[0] - ); - } - - public function testNestedInlineTagEscapingSequence() - { - $fixture = <<assertSame($fixture, $object->getContents()); - - $parsedContents = $object->getParsedContents(); - $this->assertCount(3, $parsedContents); - $this->assertSame( - 'This is text for a description with an ', - $parsedContents[0] - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $parsedContents[1] - ); - $this->assertSame('.', $parsedContents[2]); - - $this->assertSame( - array('inline tag with literal -{@link} in it'), - $parsedContents[1]->getParsedDescription() - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/CoversTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/CoversTagTest.php deleted file mode 100644 index ff257aa1..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/CoversTagTest.php +++ /dev/null @@ -1,86 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\CoversTag - * - * @author Daniel O'Connor - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class CoversTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\CoversTag can create - * a link for the covers doc block. - * - * @param string $type - * @param string $content - * @param string $exContent - * @param string $exReference - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\CoversTag - * @dataProvider provideDataForConstuctor - * - * @return void - */ - public function testConstructorParesInputsIntoCorrectFields( - $type, - $content, - $exContent, - $exDescription, - $exReference - ) { - $tag = new CoversTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($exContent, $tag->getContent()); - $this->assertEquals($exDescription, $tag->getDescription()); - $this->assertEquals($exReference, $tag->getReference()); - } - - /** - * Data provider for testConstructorParesInputsIntoCorrectFields - * - * @return array - */ - public function provideDataForConstuctor() - { - // $type, $content, $exContent, $exDescription, $exReference - return array( - array( - 'covers', - 'Foo::bar()', - 'Foo::bar()', - '', - 'Foo::bar()' - ), - array( - 'covers', - 'Foo::bar() Testing', - 'Foo::bar() Testing', - 'Testing', - 'Foo::bar()', - ), - array( - 'covers', - 'Foo::bar() Testing comments', - 'Foo::bar() Testing comments', - 'Testing comments', - 'Foo::bar()', - ), - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTagTest.php deleted file mode 100644 index 7a75e79c..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTagTest.php +++ /dev/null @@ -1,115 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\DeprecatedTag - * - * @author Vasil Rangelov - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class DeprecatedTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\LinkTag can create - * a link for the @deprecated doc block. - * - * @param string $type - * @param string $content - * @param string $exContent - * @param string $exDescription - * @param string $exVersion - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\DeprecatedTag - * @dataProvider provideDataForConstuctor - * - * @return void - */ - public function testConstructorParesInputsIntoCorrectFields( - $type, - $content, - $exContent, - $exDescription, - $exVersion - ) { - $tag = new DeprecatedTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($exContent, $tag->getContent()); - $this->assertEquals($exDescription, $tag->getDescription()); - $this->assertEquals($exVersion, $tag->getVersion()); - } - - /** - * Data provider for testConstructorParesInputsIntoCorrectFields - * - * @return array - */ - public function provideDataForConstuctor() - { - // $type, $content, $exContent, $exDescription, $exVersion - return array( - array( - 'deprecated', - '1.0 First release.', - '1.0 First release.', - 'First release.', - '1.0' - ), - array( - 'deprecated', - "1.0\nFirst release.", - "1.0\nFirst release.", - 'First release.', - '1.0' - ), - array( - 'deprecated', - "1.0\nFirst\nrelease.", - "1.0\nFirst\nrelease.", - "First\nrelease.", - '1.0' - ), - array( - 'deprecated', - 'Unfinished release', - 'Unfinished release', - 'Unfinished release', - '' - ), - array( - 'deprecated', - '1.0', - '1.0', - '', - '1.0' - ), - array( - 'deprecated', - 'GIT: $Id$', - 'GIT: $Id$', - '', - 'GIT: $Id$' - ), - array( - 'deprecated', - 'GIT: $Id$ Dev build', - 'GIT: $Id$ Dev build', - 'Dev build', - 'GIT: $Id$' - ) - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ExampleTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ExampleTagTest.php deleted file mode 100644 index 519a61b3..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ExampleTagTest.php +++ /dev/null @@ -1,203 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\ExampleTag - * - * @author Vasil Rangelov - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ExampleTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\SourceTag can - * understand the @source DocBlock. - * - * @param string $type - * @param string $content - * @param string $exContent - * @param string $exStartingLine - * @param string $exLineCount - * @param string $exFilepath - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\ExampleTag - * @dataProvider provideDataForConstuctor - * - * @return void - */ - public function testConstructorParesInputsIntoCorrectFields( - $type, - $content, - $exContent, - $exDescription, - $exStartingLine, - $exLineCount, - $exFilePath - ) { - $tag = new ExampleTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($exContent, $tag->getContent()); - $this->assertEquals($exDescription, $tag->getDescription()); - $this->assertEquals($exStartingLine, $tag->getStartingLine()); - $this->assertEquals($exLineCount, $tag->getLineCount()); - $this->assertEquals($exFilePath, $tag->getFilePath()); - } - - /** - * Data provider for testConstructorParesInputsIntoCorrectFields - * - * @return array - */ - public function provideDataForConstuctor() - { - // $type, - // $content, - // $exContent, - // $exDescription, - // $exStartingLine, - // $exLineCount, - // $exFilePath - return array( - array( - 'example', - 'file.php', - 'file.php', - '', - 1, - null, - 'file.php' - ), - array( - 'example', - 'Testing comments', - 'Testing comments', - 'comments', - 1, - null, - 'Testing' - ), - array( - 'example', - 'file.php 2 Testing', - 'file.php 2 Testing', - 'Testing', - 2, - null, - 'file.php' - ), - array( - 'example', - 'file.php 2 3 Testing comments', - 'file.php 2 3 Testing comments', - 'Testing comments', - 2, - 3, - 'file.php' - ), - array( - 'example', - 'file.php 2 -1 Testing comments', - 'file.php 2 -1 Testing comments', - '-1 Testing comments', - 2, - null, - 'file.php' - ), - array( - 'example', - 'file.php -1 1 Testing comments', - 'file.php -1 1 Testing comments', - '-1 1 Testing comments', - 1, - null, - 'file.php' - ), - array( - 'example', - '"file with spaces.php" Testing comments', - '"file with spaces.php" Testing comments', - 'Testing comments', - 1, - null, - 'file with spaces.php' - ), - array( - 'example', - '"file with spaces.php" 2 Testing comments', - '"file with spaces.php" 2 Testing comments', - 'Testing comments', - 2, - null, - 'file with spaces.php' - ), - array( - 'example', - '"file with spaces.php" 2 3 Testing comments', - '"file with spaces.php" 2 3 Testing comments', - 'Testing comments', - 2, - 3, - 'file with spaces.php' - ), - array( - 'example', - '"file with spaces.php" 2 -3 Testing comments', - '"file with spaces.php" 2 -3 Testing comments', - '-3 Testing comments', - 2, - null, - 'file with spaces.php' - ), - array( - 'example', - '"file with spaces.php" -2 3 Testing comments', - '"file with spaces.php" -2 3 Testing comments', - '-2 3 Testing comments', - 1, - null, - 'file with spaces.php' - ), - array( - 'example', - 'file%20with%20spaces.php Testing comments', - 'file%20with%20spaces.php Testing comments', - 'Testing comments', - 1, - null, - 'file with spaces.php' - ), - array( - 'example', - 'folder/file%20with%20spaces.php Testing comments', - 'folder/file%20with%20spaces.php Testing comments', - 'Testing comments', - 1, - null, - 'folder/file with spaces.php' - ), - array( - 'example', - 'http://example.com/file%20with%20spaces.php Testing comments', - 'http://example.com/file%20with%20spaces.php Testing comments', - 'Testing comments', - 1, - null, - 'http://example.com/file%20with%20spaces.php' - ) - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/LinkTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/LinkTagTest.php deleted file mode 100644 index 0c64ed08..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/LinkTagTest.php +++ /dev/null @@ -1,87 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\LinkTag - * - * @author Ben Selby - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class LinkTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\LinkTag can create - * a link for the @link doc block. - * - * @param string $type - * @param string $content - * @param string $exContent - * @param string $exDescription - * @param string $exLink - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\LinkTag - * @dataProvider provideDataForConstuctor - * - * @return void - */ - public function testConstructorParesInputsIntoCorrectFields( - $type, - $content, - $exContent, - $exDescription, - $exLink - ) { - $tag = new LinkTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($exContent, $tag->getContent()); - $this->assertEquals($exDescription, $tag->getDescription()); - $this->assertEquals($exLink, $tag->getLink()); - } - - /** - * Data provider for testConstructorParesInputsIntoCorrectFields - * - * @return array - */ - public function provideDataForConstuctor() - { - // $type, $content, $exContent, $exDescription, $exLink - return array( - array( - 'link', - 'http://www.phpdoc.org/', - 'http://www.phpdoc.org/', - 'http://www.phpdoc.org/', - 'http://www.phpdoc.org/' - ), - array( - 'link', - 'http://www.phpdoc.org/ Testing', - 'http://www.phpdoc.org/ Testing', - 'Testing', - 'http://www.phpdoc.org/' - ), - array( - 'link', - 'http://www.phpdoc.org/ Testing comments', - 'http://www.phpdoc.org/ Testing comments', - 'Testing comments', - 'http://www.phpdoc.org/' - ), - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/MethodTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/MethodTagTest.php deleted file mode 100644 index efc3a15b..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/MethodTagTest.php +++ /dev/null @@ -1,146 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\MethodTag - * - * @author Mike van Riel - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class MethodTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * @param string $signature The signature to test. - * @param bool $valid Whether the given signature is expected to - * be valid. - * @param string $expected_name The method name that is expected from this - * signature. - * @param string $expected_return The return type that is expected from this - * signature. - * @param bool $paramCount Number of parameters in the signature. - * @param string $description The short description mentioned in the - * signature. - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\MethodTag - * @dataProvider getTestSignatures - * - * @return void - */ - public function testConstruct( - $signature, - $valid, - $expected_name, - $expected_return, - $expected_isStatic, - $paramCount, - $description - ) { - ob_start(); - $tag = new MethodTag('method', $signature); - $stdout = ob_get_clean(); - - $this->assertSame( - $valid, - empty($stdout), - 'No error should have been output if the signature is valid' - ); - - if (!$valid) { - return; - } - - $this->assertEquals($expected_name, $tag->getMethodName()); - $this->assertEquals($expected_return, $tag->getType()); - $this->assertEquals($description, $tag->getDescription()); - $this->assertEquals($expected_isStatic, $tag->isStatic()); - $this->assertCount($paramCount, $tag->getArguments()); - } - - public function getTestSignatures() - { - return array( - // TODO: Verify this case -// array( -// 'foo', -// false, 'foo', '', false, 0, '' -// ), - array( - 'foo()', - true, 'foo', 'void', false, 0, '' - ), - array( - 'foo() description', - true, 'foo', 'void', false, 0, 'description' - ), - array( - 'int foo()', - true, 'foo', 'int', false, 0, '' - ), - array( - 'int foo() description', - true, 'foo', 'int', false, 0, 'description' - ), - array( - 'int foo($a, $b)', - true, 'foo', 'int', false, 2, '' - ), - array( - 'int foo() foo(int $a, int $b)', - true, 'foo', 'int', false, 2, '' - ), - array( - 'int foo(int $a, int $b)', - true, 'foo', 'int', false, 2, '' - ), - array( - 'null|int foo(int $a, int $b)', - true, 'foo', 'null|int', false, 2, '' - ), - array( - 'int foo(null|int $a, int $b)', - true, 'foo', 'int', false, 2, '' - ), - array( - '\Exception foo() foo(Exception $a, Exception $b)', - true, 'foo', '\Exception', false, 2, '' - ), - array( - 'int foo() foo(Exception $a, Exception $b) description', - true, 'foo', 'int', false, 2, 'description' - ), - array( - 'int foo() foo(\Exception $a, \Exception $b) description', - true, 'foo', 'int', false, 2, 'description' - ), - array( - 'void()', - true, 'void', 'void', false, 0, '' - ), - array( - 'static foo()', - true, 'foo', 'static', false, 0, '' - ), - array( - 'static void foo()', - true, 'foo', 'void', true, 0, '' - ), - array( - 'static static foo()', - true, 'foo', 'static', true, 0, '' - ) - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ParamTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ParamTagTest.php deleted file mode 100644 index 0e05382f..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ParamTagTest.php +++ /dev/null @@ -1,118 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\ParamTag - * - * @author Mike van Riel - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ParamTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\ParamTag can - * understand the @param DocBlock. - * - * @param string $type - * @param string $content - * @param string $extractedType - * @param string $extractedTypes - * @param string $extractedVarName - * @param string $extractedDescription - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\ParamTag - * @dataProvider provideDataForConstructor - * - * @return void - */ - public function testConstructorParsesInputsIntoCorrectFields( - $type, - $content, - $extractedType, - $extractedTypes, - $extractedVarName, - $extractedDescription - ) { - $tag = new ParamTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($extractedType, $tag->getType()); - $this->assertEquals($extractedTypes, $tag->getTypes()); - $this->assertEquals($extractedVarName, $tag->getVariableName()); - $this->assertEquals($extractedDescription, $tag->getDescription()); - } - - /** - * Data provider for testConstructorParsesInputsIntoCorrectFields() - * - * @return array - */ - public function provideDataForConstructor() - { - return array( - array('param', 'int', 'int', array('int'), '', ''), - array('param', '$bob', '', array(), '$bob', ''), - array( - 'param', - 'int Number of bobs', - 'int', - array('int'), - '', - 'Number of bobs' - ), - array( - 'param', - 'int $bob', - 'int', - array('int'), - '$bob', - '' - ), - array( - 'param', - 'int $bob Number of bobs', - 'int', - array('int'), - '$bob', - 'Number of bobs' - ), - array( - 'param', - "int Description \n on multiple lines", - 'int', - array('int'), - '', - "Description \n on multiple lines" - ), - array( - 'param', - "int \n\$bob Variable name on a new line", - 'int', - array('int'), - '$bob', - "Variable name on a new line" - ), - array( - 'param', - "\nint \$bob Type on a new line", - 'int', - array('int'), - '$bob', - "Type on a new line" - ) - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ReturnTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ReturnTagTest.php deleted file mode 100644 index 9e2aec0d..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ReturnTagTest.php +++ /dev/null @@ -1,102 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\ReturnTag - * - * @author Mike van Riel - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ReturnTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\ReturnTag can - * understand the @return DocBlock. - * - * @param string $type - * @param string $content - * @param string $extractedType - * @param string $extractedTypes - * @param string $extractedDescription - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\ReturnTag - * @dataProvider provideDataForConstructor - * - * @return void - */ - public function testConstructorParsesInputsIntoCorrectFields( - $type, - $content, - $extractedType, - $extractedTypes, - $extractedDescription - ) { - $tag = new ReturnTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($extractedType, $tag->getType()); - $this->assertEquals($extractedTypes, $tag->getTypes()); - $this->assertEquals($extractedDescription, $tag->getDescription()); - } - - /** - * Data provider for testConstructorParsesInputsIntoCorrectFields() - * - * @return array - */ - public function provideDataForConstructor() - { - return array( - array('return', '', '', array(), ''), - array('return', 'int', 'int', array('int'), ''), - array( - 'return', - 'int Number of Bobs', - 'int', - array('int'), - 'Number of Bobs' - ), - array( - 'return', - 'int|double Number of Bobs', - 'int|double', - array('int', 'double'), - 'Number of Bobs' - ), - array( - 'return', - "int Number of \n Bobs", - 'int', - array('int'), - "Number of \n Bobs" - ), - array( - 'return', - " int Number of Bobs", - 'int', - array('int'), - "Number of Bobs" - ), - array( - 'return', - "int\nNumber of Bobs", - 'int', - array('int'), - "Number of Bobs" - ) - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/SeeTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/SeeTagTest.php deleted file mode 100644 index 6829b046..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/SeeTagTest.php +++ /dev/null @@ -1,86 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\SeeTag - * - * @author Daniel O'Connor - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class SeeTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the phpDocumentor_Reflection_DocBlock_Tag_See can create a link - * for the @see doc block. - * - * @param string $type - * @param string $content - * @param string $exContent - * @param string $exReference - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\SeeTag - * @dataProvider provideDataForConstuctor - * - * @return void - */ - public function testConstructorParesInputsIntoCorrectFields( - $type, - $content, - $exContent, - $exDescription, - $exReference - ) { - $tag = new SeeTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($exContent, $tag->getContent()); - $this->assertEquals($exDescription, $tag->getDescription()); - $this->assertEquals($exReference, $tag->getReference()); - } - - /** - * Data provider for testConstructorParesInputsIntoCorrectFields - * - * @return array - */ - public function provideDataForConstuctor() - { - // $type, $content, $exContent, $exDescription, $exReference - return array( - array( - 'see', - 'Foo::bar()', - 'Foo::bar()', - '', - 'Foo::bar()' - ), - array( - 'see', - 'Foo::bar() Testing', - 'Foo::bar() Testing', - 'Testing', - 'Foo::bar()', - ), - array( - 'see', - 'Foo::bar() Testing comments', - 'Foo::bar() Testing comments', - 'Testing comments', - 'Foo::bar()', - ), - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/SinceTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/SinceTagTest.php deleted file mode 100644 index 8caf25d1..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/SinceTagTest.php +++ /dev/null @@ -1,115 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\SinceTag - * - * @author Vasil Rangelov - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class SinceTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\LinkTag can create - * a link for the @since doc block. - * - * @param string $type - * @param string $content - * @param string $exContent - * @param string $exDescription - * @param string $exVersion - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\SinceTag - * @dataProvider provideDataForConstuctor - * - * @return void - */ - public function testConstructorParesInputsIntoCorrectFields( - $type, - $content, - $exContent, - $exDescription, - $exVersion - ) { - $tag = new SinceTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($exContent, $tag->getContent()); - $this->assertEquals($exDescription, $tag->getDescription()); - $this->assertEquals($exVersion, $tag->getVersion()); - } - - /** - * Data provider for testConstructorParesInputsIntoCorrectFields - * - * @return array - */ - public function provideDataForConstuctor() - { - // $type, $content, $exContent, $exDescription, $exVersion - return array( - array( - 'since', - '1.0 First release.', - '1.0 First release.', - 'First release.', - '1.0' - ), - array( - 'since', - "1.0\nFirst release.", - "1.0\nFirst release.", - 'First release.', - '1.0' - ), - array( - 'since', - "1.0\nFirst\nrelease.", - "1.0\nFirst\nrelease.", - "First\nrelease.", - '1.0' - ), - array( - 'since', - 'Unfinished release', - 'Unfinished release', - 'Unfinished release', - '' - ), - array( - 'since', - '1.0', - '1.0', - '', - '1.0' - ), - array( - 'since', - 'GIT: $Id$', - 'GIT: $Id$', - '', - 'GIT: $Id$' - ), - array( - 'since', - 'GIT: $Id$ Dev build', - 'GIT: $Id$ Dev build', - 'Dev build', - 'GIT: $Id$' - ) - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/SourceTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/SourceTagTest.php deleted file mode 100644 index 2a40e0aa..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/SourceTagTest.php +++ /dev/null @@ -1,116 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\SourceTag - * - * @author Vasil Rangelov - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class SourceTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\SourceTag can - * understand the @source DocBlock. - * - * @param string $type - * @param string $content - * @param string $exContent - * @param string $exStartingLine - * @param string $exLineCount - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\SourceTag - * @dataProvider provideDataForConstuctor - * - * @return void - */ - public function testConstructorParesInputsIntoCorrectFields( - $type, - $content, - $exContent, - $exDescription, - $exStartingLine, - $exLineCount - ) { - $tag = new SourceTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($exContent, $tag->getContent()); - $this->assertEquals($exDescription, $tag->getDescription()); - $this->assertEquals($exStartingLine, $tag->getStartingLine()); - $this->assertEquals($exLineCount, $tag->getLineCount()); - } - - /** - * Data provider for testConstructorParesInputsIntoCorrectFields - * - * @return array - */ - public function provideDataForConstuctor() - { - // $type, $content, $exContent, $exDescription, $exStartingLine, $exLineCount - return array( - array( - 'source', - '2', - '2', - '', - 2, - null - ), - array( - 'source', - 'Testing', - 'Testing', - 'Testing', - 1, - null - ), - array( - 'source', - '2 Testing', - '2 Testing', - 'Testing', - 2, - null - ), - array( - 'source', - '2 3 Testing comments', - '2 3 Testing comments', - 'Testing comments', - 2, - 3 - ), - array( - 'source', - '2 -1 Testing comments', - '2 -1 Testing comments', - '-1 Testing comments', - 2, - null - ), - array( - 'source', - '-1 1 Testing comments', - '-1 1 Testing comments', - '-1 1 Testing comments', - 1, - null - ) - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTagTest.php deleted file mode 100644 index 3c669d55..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTagTest.php +++ /dev/null @@ -1,102 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\ThrowsTag - * - * @author Mike van Riel - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ThrowsTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag can - * understand the @throws DocBlock. - * - * @param string $type - * @param string $content - * @param string $extractedType - * @param string $extractedTypes - * @param string $extractedDescription - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag - * @dataProvider provideDataForConstructor - * - * @return void - */ - public function testConstructorParsesInputsIntoCorrectFields( - $type, - $content, - $extractedType, - $extractedTypes, - $extractedDescription - ) { - $tag = new ThrowsTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($extractedType, $tag->getType()); - $this->assertEquals($extractedTypes, $tag->getTypes()); - $this->assertEquals($extractedDescription, $tag->getDescription()); - } - - /** - * Data provider for testConstructorParsesInputsIntoCorrectFields() - * - * @return array - */ - public function provideDataForConstructor() - { - return array( - array('throws', '', '', array(), ''), - array('throws', 'int', 'int', array('int'), ''), - array( - 'throws', - 'int Number of Bobs', - 'int', - array('int'), - 'Number of Bobs' - ), - array( - 'throws', - 'int|double Number of Bobs', - 'int|double', - array('int', 'double'), - 'Number of Bobs' - ), - array( - 'throws', - "int Number of \n Bobs", - 'int', - array('int'), - "Number of \n Bobs" - ), - array( - 'throws', - " int Number of Bobs", - 'int', - array('int'), - "Number of Bobs" - ), - array( - 'throws', - "int\nNumber of Bobs", - 'int', - array('int'), - "Number of Bobs" - ) - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/UsesTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/UsesTagTest.php deleted file mode 100644 index 45868d73..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/UsesTagTest.php +++ /dev/null @@ -1,86 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\UsesTag - * - * @author Daniel O'Connor - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class UsesTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\UsesTag can create - * a link for the @uses doc block. - * - * @param string $type - * @param string $content - * @param string $exContent - * @param string $exReference - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\UsesTag - * @dataProvider provideDataForConstuctor - * - * @return void - */ - public function testConstructorParesInputsIntoCorrectFields( - $type, - $content, - $exContent, - $exDescription, - $exReference - ) { - $tag = new UsesTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($exContent, $tag->getContent()); - $this->assertEquals($exDescription, $tag->getDescription()); - $this->assertEquals($exReference, $tag->getReference()); - } - - /** - * Data provider for testConstructorParesInputsIntoCorrectFields - * - * @return array - */ - public function provideDataForConstuctor() - { - // $type, $content, $exContent, $exDescription, $exReference - return array( - array( - 'uses', - 'Foo::bar()', - 'Foo::bar()', - '', - 'Foo::bar()' - ), - array( - 'uses', - 'Foo::bar() Testing', - 'Foo::bar() Testing', - 'Testing', - 'Foo::bar()', - ), - array( - 'uses', - 'Foo::bar() Testing comments', - 'Foo::bar() Testing comments', - 'Testing comments', - 'Foo::bar()', - ), - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/VarTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/VarTagTest.php deleted file mode 100644 index 9ae2aa5f..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/VarTagTest.php +++ /dev/null @@ -1,94 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\VarTag - * - * @author Daniel O'Connor - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class VarTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\VarTag can - * understand the @var doc block. - * - * @param string $type - * @param string $content - * @param string $exType - * @param string $exVariable - * @param string $exDescription - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\VarTag - * @dataProvider provideDataForConstuctor - * - * @return void - */ - public function testConstructorParesInputsIntoCorrectFields( - $type, - $content, - $exType, - $exVariable, - $exDescription - ) { - $tag = new VarTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($exType, $tag->getType()); - $this->assertEquals($exVariable, $tag->getVariableName()); - $this->assertEquals($exDescription, $tag->getDescription()); - } - - /** - * Data provider for testConstructorParesInputsIntoCorrectFields - * - * @return array - */ - public function provideDataForConstuctor() - { - // $type, $content, $exType, $exVariable, $exDescription - return array( - array( - 'var', - 'int', - 'int', - '', - '' - ), - array( - 'var', - 'int $bob', - 'int', - '$bob', - '' - ), - array( - 'var', - 'int $bob Number of bobs', - 'int', - '$bob', - 'Number of bobs' - ), - array( - 'var', - '', - '', - '', - '' - ), - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/VersionTagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/VersionTagTest.php deleted file mode 100644 index e145386d..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Tag/VersionTagTest.php +++ /dev/null @@ -1,115 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\VersionTag - * - * @author Vasil Rangelov - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class VersionTagTest extends \PHPUnit_Framework_TestCase -{ - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\LinkTag can create - * a link for the @version doc block. - * - * @param string $type - * @param string $content - * @param string $exContent - * @param string $exDescription - * @param string $exVersion - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag\VersionTag - * @dataProvider provideDataForConstuctor - * - * @return void - */ - public function testConstructorParesInputsIntoCorrectFields( - $type, - $content, - $exContent, - $exDescription, - $exVersion - ) { - $tag = new VersionTag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($exContent, $tag->getContent()); - $this->assertEquals($exDescription, $tag->getDescription()); - $this->assertEquals($exVersion, $tag->getVersion()); - } - - /** - * Data provider for testConstructorParesInputsIntoCorrectFields - * - * @return array - */ - public function provideDataForConstuctor() - { - // $type, $content, $exContent, $exDescription, $exVersion - return array( - array( - 'version', - '1.0 First release.', - '1.0 First release.', - 'First release.', - '1.0' - ), - array( - 'version', - "1.0\nFirst release.", - "1.0\nFirst release.", - 'First release.', - '1.0' - ), - array( - 'version', - "1.0\nFirst\nrelease.", - "1.0\nFirst\nrelease.", - "First\nrelease.", - '1.0' - ), - array( - 'version', - 'Unfinished release', - 'Unfinished release', - 'Unfinished release', - '' - ), - array( - 'version', - '1.0', - '1.0', - '', - '1.0' - ), - array( - 'version', - 'GIT: $Id$', - 'GIT: $Id$', - '', - 'GIT: $Id$' - ), - array( - 'version', - 'GIT: $Id$ Dev build', - 'GIT: $Id$ Dev build', - 'Dev build', - 'GIT: $Id$' - ) - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/TagTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/TagTest.php deleted file mode 100644 index 9e873ecb..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/TagTest.php +++ /dev/null @@ -1,313 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -use phpDocumentor\Reflection\DocBlock; -use phpDocumentor\Reflection\DocBlock\Context; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Tag\VarTag - * - * @author Daniel O'Connor - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class TagTest extends \PHPUnit_Framework_TestCase -{ - - /** - * @expectedException \InvalidArgumentException - * - * @return void - */ - public function testInvalidTagLine() - { - Tag::createInstance('Invalid tag line'); - } - - /** - * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler - * - * @return void - */ - public function testTagHandlerUnregistration() - { - $currentHandler = __NAMESPACE__ . '\Tag\VarTag'; - $tagPreUnreg = Tag::createInstance('@var mixed'); - $this->assertInstanceOf( - $currentHandler, - $tagPreUnreg - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPreUnreg - ); - - Tag::registerTagHandler('var', null); - - $tagPostUnreg = Tag::createInstance('@var mixed'); - $this->assertNotInstanceOf( - $currentHandler, - $tagPostUnreg - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPostUnreg - ); - - Tag::registerTagHandler('var', $currentHandler); - } - - /** - * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler - * - * @return void - */ - public function testTagHandlerCorrectRegistration() - { - if (0 == ini_get('allow_url_include')) { - $this->markTestSkipped('"data" URIs for includes are required.'); - } - $currentHandler = __NAMESPACE__ . '\Tag\VarTag'; - $tagPreReg = Tag::createInstance('@var mixed'); - $this->assertInstanceOf( - $currentHandler, - $tagPreReg - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPreReg - ); - - include 'data:text/plain;base64,'. base64_encode( -<<assertTrue(Tag::registerTagHandler('var', '\MyTagHandler')); - - $tagPostReg = Tag::createInstance('@var mixed'); - $this->assertNotInstanceOf( - $currentHandler, - $tagPostReg - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPostReg - ); - $this->assertInstanceOf( - '\MyTagHandler', - $tagPostReg - ); - - $this->assertTrue(Tag::registerTagHandler('var', $currentHandler)); - } - - /** - * @depends testTagHandlerCorrectRegistration - * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler - * @covers \phpDocumentor\Reflection\DocBlock\Tag::createInstance - * - * @return void - */ - public function testNamespacedTagHandlerCorrectRegistration() - { - $tagPreReg = Tag::createInstance('@T something'); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPreReg - ); - $this->assertNotInstanceOf( - '\MyTagHandler', - $tagPreReg - ); - - $this->assertTrue( - Tag::registerTagHandler('\MyNamespace\MyTag', '\MyTagHandler') - ); - - $tagPostReg = Tag::createInstance( - '@T something', - new DocBlock( - '', - new Context('', array('T' => '\MyNamespace\MyTag')) - ) - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPostReg - ); - $this->assertInstanceOf( - '\MyTagHandler', - $tagPostReg - ); - - $this->assertTrue( - Tag::registerTagHandler('\MyNamespace\MyTag', null) - ); - } - - /** - * @depends testTagHandlerCorrectRegistration - * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler - * @covers \phpDocumentor\Reflection\DocBlock\Tag::createInstance - * - * @return void - */ - public function testNamespacedTagHandlerIncorrectRegistration() - { - $tagPreReg = Tag::createInstance('@T something'); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPreReg - ); - $this->assertNotInstanceOf( - '\MyTagHandler', - $tagPreReg - ); - - $this->assertFalse( - Tag::registerTagHandler('MyNamespace\MyTag', '\MyTagHandler') - ); - - $tagPostReg = Tag::createInstance( - '@T something', - new DocBlock( - '', - new Context('', array('T' => '\MyNamespace\MyTag')) - ) - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPostReg - ); - $this->assertNotInstanceOf( - '\MyTagHandler', - $tagPostReg - ); - } - - /** - * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler - * - * @return void - */ - public function testNonExistentTagHandlerRegistration() - { - $currentHandler = __NAMESPACE__ . '\Tag\VarTag'; - $tagPreReg = Tag::createInstance('@var mixed'); - $this->assertInstanceOf( - $currentHandler, - $tagPreReg - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPreReg - ); - - $this->assertFalse(Tag::registerTagHandler('var', 'Non existent')); - - $tagPostReg = Tag::createInstance('@var mixed'); - $this->assertInstanceOf( - $currentHandler, - $tagPostReg - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPostReg - ); - } - - /** - * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler - * - * @return void - */ - public function testIncompatibleTagHandlerRegistration() - { - $currentHandler = __NAMESPACE__ . '\Tag\VarTag'; - $tagPreReg = Tag::createInstance('@var mixed'); - $this->assertInstanceOf( - $currentHandler, - $tagPreReg - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPreReg - ); - - $this->assertFalse( - Tag::registerTagHandler('var', __NAMESPACE__ . '\TagTest') - ); - - $tagPostReg = Tag::createInstance('@var mixed'); - $this->assertInstanceOf( - $currentHandler, - $tagPostReg - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\Tag', - $tagPostReg - ); - } - - /** - * Test that the \phpDocumentor\Reflection\DocBlock\Tag\VarTag can - * understand the @var doc block. - * - * @param string $type - * @param string $content - * @param string $exDescription - * - * @covers \phpDocumentor\Reflection\DocBlock\Tag - * @dataProvider provideDataForConstuctor - * - * @return void - */ - public function testConstructorParesInputsIntoCorrectFields( - $type, - $content, - $exDescription - ) { - $tag = new Tag($type, $content); - - $this->assertEquals($type, $tag->getName()); - $this->assertEquals($content, $tag->getContent()); - $this->assertEquals($exDescription, $tag->getDescription()); - } - - /** - * Data provider for testConstructorParesInputsIntoCorrectFields - * - * @return array - */ - public function provideDataForConstuctor() - { - // $type, $content, $exDescription - return array( - array( - 'unknown', - 'some content', - 'some content', - ), - array( - 'unknown', - '', - '', - ) - ); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Type/CollectionTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Type/CollectionTest.php deleted file mode 100644 index 78c7306d..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/Type/CollectionTest.php +++ /dev/null @@ -1,195 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Type; - -use phpDocumentor\Reflection\DocBlock\Context; - -/** - * Test class for \phpDocumentor\Reflection\DocBlock\Type\Collection - * - * @covers phpDocumentor\Reflection\DocBlock\Type\Collection - * - * @author Mike van Riel - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class CollectionTest extends \PHPUnit_Framework_TestCase -{ - /** - * @covers phpDocumentor\Reflection\DocBlock\Type\Collection::__construct - * @covers phpDocumentor\Reflection\DocBlock\Type\Collection::getContext - * - * @return void - */ - public function testConstruct() - { - $collection = new Collection(); - $this->assertCount(0, $collection); - $this->assertEquals('', $collection->getContext()->getNamespace()); - $this->assertCount(0, $collection->getContext()->getNamespaceAliases()); - } - - /** - * @covers phpDocumentor\Reflection\DocBlock\Type\Collection::__construct - * - * @return void - */ - public function testConstructWithTypes() - { - $collection = new Collection(array('integer', 'string')); - $this->assertCount(2, $collection); - } - - /** - * @covers phpDocumentor\Reflection\DocBlock\Type\Collection::__construct - * - * @return void - */ - public function testConstructWithNamespace() - { - $collection = new Collection(array(), new Context('\My\Space')); - $this->assertEquals('My\Space', $collection->getContext()->getNamespace()); - - $collection = new Collection(array(), new Context('My\Space')); - $this->assertEquals('My\Space', $collection->getContext()->getNamespace()); - - $collection = new Collection(array(), null); - $this->assertEquals('', $collection->getContext()->getNamespace()); - } - - /** - * @covers phpDocumentor\Reflection\DocBlock\Type\Collection::__construct - * - * @return void - */ - public function testConstructWithNamespaceAliases() - { - $fixture = array('a' => 'b'); - $collection = new Collection(array(), new Context(null, $fixture)); - $this->assertEquals( - array('a' => '\b'), - $collection->getContext()->getNamespaceAliases() - ); - } - - /** - * @param string $fixture - * @param array $expected - * - * @dataProvider provideTypesToExpand - * @covers phpDocumentor\Reflection\DocBlock\Type\Collection::add - * - * @return void - */ - public function testAdd($fixture, $expected) - { - $collection = new Collection( - array(), - new Context('\My\Space', array('Alias' => '\My\Space\Aliasing')) - ); - $collection->add($fixture); - - $this->assertSame($expected, $collection->getArrayCopy()); - } - - /** - * @param string $fixture - * @param array $expected - * - * @dataProvider provideTypesToExpandWithoutNamespace - * @covers phpDocumentor\Reflection\DocBlock\Type\Collection::add - * - * @return void - */ - public function testAddWithoutNamespace($fixture, $expected) - { - $collection = new Collection( - array(), - new Context(null, array('Alias' => '\My\Space\Aliasing')) - ); - $collection->add($fixture); - - $this->assertSame($expected, $collection->getArrayCopy()); - } - - /** - * @covers phpDocumentor\Reflection\DocBlock\Type\Collection::add - * @expectedException InvalidArgumentException - * - * @return void - */ - public function testAddWithInvalidArgument() - { - $collection = new Collection(); - $collection->add(array()); - } - - /** - * Returns the types and their expected values to test the retrieval of - * types. - * - * @param string $method Name of the method consuming this data provider. - * @param string $namespace Name of the namespace to user as basis. - * - * @return string[] - */ - public function provideTypesToExpand($method, $namespace = '\My\Space\\') - { - return array( - array('', array()), - array(' ', array()), - array('int', array('int')), - array('int ', array('int')), - array('string', array('string')), - array('DocBlock', array($namespace.'DocBlock')), - array('DocBlock[]', array($namespace.'DocBlock[]')), - array(' DocBlock ', array($namespace.'DocBlock')), - array('\My\Space\DocBlock', array('\My\Space\DocBlock')), - array('Alias\DocBlock', array('\My\Space\Aliasing\DocBlock')), - array( - 'DocBlock|Tag', - array($namespace .'DocBlock', $namespace .'Tag') - ), - array( - 'DocBlock|null', - array($namespace.'DocBlock', 'null') - ), - array( - '\My\Space\DocBlock|Tag', - array('\My\Space\DocBlock', $namespace.'Tag') - ), - array( - 'DocBlock[]|null', - array($namespace.'DocBlock[]', 'null') - ), - array( - 'DocBlock[]|int[]', - array($namespace.'DocBlock[]', 'int[]') - ), - ); - } - - /** - * Returns the types and their expected values to test the retrieval of - * types when no namespace is available. - * - * @param string $method Name of the method consuming this data provider. - * - * @return string[] - */ - public function provideTypesToExpandWithoutNamespace($method) - { - return $this->provideTypesToExpand($method, '\\'); - } -} diff --git a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlockTest.php b/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlockTest.php deleted file mode 100644 index 30eedfc5..00000000 --- a/tests/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlockTest.php +++ /dev/null @@ -1,337 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection; - -use phpDocumentor\Reflection\DocBlock\Context; -use phpDocumentor\Reflection\DocBlock\Location; -use phpDocumentor\Reflection\DocBlock\Tag\ReturnTag; - -/** - * Test class for phpDocumentor\Reflection\DocBlock - * - * @author Mike van Riel - * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class DocBlockTest extends \PHPUnit_Framework_TestCase -{ - /** - * @covers \phpDocumentor\Reflection\DocBlock - * - * @return void - */ - public function testConstruct() - { - $fixture = << '\phpDocumentor')), - new Location(2) - ); - $this->assertEquals( - 'This is a short description', - $object->getShortDescription() - ); - $this->assertEquals( - 'This is a long description', - $object->getLongDescription()->getContents() - ); - $this->assertCount(2, $object->getTags()); - $this->assertTrue($object->hasTag('see')); - $this->assertTrue($object->hasTag('return')); - $this->assertFalse($object->hasTag('category')); - - $this->assertSame('MyNamespace', $object->getContext()->getNamespace()); - $this->assertSame( - array('PHPDoc' => '\phpDocumentor'), - $object->getContext()->getNamespaceAliases() - ); - $this->assertSame(2, $object->getLocation()->getLineNumber()); - } - - /** - * @covers \phpDocumentor\Reflection\DocBlock::splitDocBlock - * - * @return void - */ - public function testConstructWithTagsOnly() - { - $fixture = <<assertEquals('', $object->getShortDescription()); - $this->assertEquals('', $object->getLongDescription()->getContents()); - $this->assertCount(2, $object->getTags()); - $this->assertTrue($object->hasTag('see')); - $this->assertTrue($object->hasTag('return')); - $this->assertFalse($object->hasTag('category')); - } - - /** - * @covers \phpDocumentor\Reflection\DocBlock::isTemplateStart - */ - public function testIfStartOfTemplateIsDiscovered() - { - $fixture = <<assertEquals('', $object->getShortDescription()); - $this->assertEquals('', $object->getLongDescription()->getContents()); - $this->assertCount(2, $object->getTags()); - $this->assertTrue($object->hasTag('see')); - $this->assertTrue($object->hasTag('return')); - $this->assertFalse($object->hasTag('category')); - $this->assertTrue($object->isTemplateStart()); - } - - /** - * @covers \phpDocumentor\Reflection\DocBlock::isTemplateEnd - */ - public function testIfEndOfTemplateIsDiscovered() - { - $fixture = <<assertEquals('', $object->getShortDescription()); - $this->assertEquals('', $object->getLongDescription()->getContents()); - $this->assertTrue($object->isTemplateEnd()); - } - - /** - * @covers \phpDocumentor\Reflection\DocBlock::cleanInput - * - * @return void - */ - public function testConstructOneLiner() - { - $fixture = '/** Short description and nothing more. */'; - $object = new DocBlock($fixture); - $this->assertEquals( - 'Short description and nothing more.', - $object->getShortDescription() - ); - $this->assertEquals('', $object->getLongDescription()->getContents()); - $this->assertCount(0, $object->getTags()); - } - - /** - * @covers \phpDocumentor\Reflection\DocBlock::__construct - * - * @return void - */ - public function testConstructFromReflector() - { - $object = new DocBlock(new \ReflectionClass($this)); - $this->assertEquals( - 'Test class for phpDocumentor\Reflection\DocBlock', - $object->getShortDescription() - ); - $this->assertEquals('', $object->getLongDescription()->getContents()); - $this->assertCount(4, $object->getTags()); - $this->assertTrue($object->hasTag('author')); - $this->assertTrue($object->hasTag('copyright')); - $this->assertTrue($object->hasTag('license')); - $this->assertTrue($object->hasTag('link')); - $this->assertFalse($object->hasTag('category')); - } - - /** - * @expectedException \InvalidArgumentException - * - * @return void - */ - public function testExceptionOnInvalidObject() - { - new DocBlock($this); - } - - public function testDotSeperation() - { - $fixture = <<assertEquals( - 'This is a short description.', - $object->getShortDescription() - ); - $this->assertEquals( - "This is a long description.\nThis is a continuation of the long " - ."description.", - $object->getLongDescription()->getContents() - ); - } - - /** - * @covers \phpDocumentor\Reflection\DocBlock::parseTags - * @expectedException \LogicException - * - * @return void - */ - public function testInvalidTagBlock() - { - if (0 == ini_get('allow_url_include')) { - $this->markTestSkipped('"data" URIs for includes are required.'); - } - - include 'data:text/plain;base64,'. base64_encode( - <<assertEquals( - 'This is a short description.', - $object->getShortDescription() - ); - $this->assertEquals( - 'This is a long description.', - $object->getLongDescription()->getContents() - ); - $tags = $object->getTags(); - $this->assertCount(2, $tags); - $this->assertTrue($object->hasTag('method')); - $this->assertTrue($object->hasTag('Method')); - $this->assertInstanceOf( - __NAMESPACE__ . '\DocBlock\Tag\MethodTag', - $tags[0] - ); - $this->assertInstanceOf( - __NAMESPACE__ . '\DocBlock\Tag', - $tags[1] - ); - $this->assertNotInstanceOf( - __NAMESPACE__ . '\DocBlock\Tag\MethodTag', - $tags[1] - ); - } - - /** - * @depends testConstructFromReflector - * @covers \phpDocumentor\Reflection\DocBlock::getTagsByName - * - * @return void - */ - public function testGetTagsByNameZeroAndOneMatch() - { - $object = new DocBlock(new \ReflectionClass($this)); - $this->assertEmpty($object->getTagsByName('category')); - $this->assertCount(1, $object->getTagsByName('author')); - } - - /** - * @depends testConstructWithTagsOnly - * @covers \phpDocumentor\Reflection\DocBlock::parseTags - * - * @return void - */ - public function testParseMultilineTag() - { - $fixture = <<assertCount(1, $object->getTags()); - } - - /** - * @depends testConstructWithTagsOnly - * @covers \phpDocumentor\Reflection\DocBlock::parseTags - * - * @return void - */ - public function testParseMultilineTagWithLineBreaks() - { - $fixture = <<assertCount(1, $tags = $object->getTags()); - /** @var ReturnTag $tag */ - $tag = reset($tags); - $this->assertEquals("Content on\n multiple lines.\n\n One more, after the break.", $tag->getDescription()); - } - - /** - * @depends testConstructWithTagsOnly - * @covers \phpDocumentor\Reflection\DocBlock::getTagsByName - * - * @return void - */ - public function testGetTagsByNameMultipleMatch() - { - $fixture = <<assertEmpty($object->getTagsByName('category')); - $this->assertCount(1, $object->getTagsByName('return')); - $this->assertCount(2, $object->getTagsByName('param')); - } -} diff --git a/tests/vendor/phpspec/prophecy/.gitignore b/tests/vendor/phpspec/prophecy/.gitignore deleted file mode 100644 index c50c8c4a..00000000 --- a/tests/vendor/phpspec/prophecy/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -*.tgz -*.phar -bin -vendor diff --git a/tests/vendor/phpspec/prophecy/.travis.yml b/tests/vendor/phpspec/prophecy/.travis.yml deleted file mode 100644 index 004e612a..00000000 --- a/tests/vendor/phpspec/prophecy/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -language: php - -php: [5.3, 5.4, 5.5, 5.6, 7, hhvm] - -sudo: false - -cache: - directories: - - $HOME/.composer/cache - -branches: - except: - - /^bugfix\/.*$/ - - /^feature\/.*$/ - - /^optimization\/.*$/ - -before_script: travis_retry composer install --no-interaction - -script: vendor/bin/phpspec run -fpretty -v diff --git a/tests/vendor/phpspec/prophecy/CHANGES.md b/tests/vendor/phpspec/prophecy/CHANGES.md deleted file mode 100644 index c293f0d4..00000000 --- a/tests/vendor/phpspec/prophecy/CHANGES.md +++ /dev/null @@ -1,122 +0,0 @@ -1.5.0 / 2015-04-27 -================== - - * Add support for PHP7 scalar type hints (thanks @trowski) - * Add support for PHP7 return types (thanks @trowski) - * Update internal test suite to support PHP7 - -1.4.1 / 2015-04-27 -================== - - * Fixed bug in closure-based argument tokens (#181) - -1.4.0 / 2015-03-27 -================== - - * Fixed errors in return type phpdocs (thanks @sobit) - * Fixed stringifying of hash containing one value (thanks @avant1) - * Improved clarity of method call expectation exception (thanks @dantleech) - * Add ability to specify which argument is returned in willReturnArgument (thanks @coderbyheart) - * Add more information to MethodNotFound exceptions (thanks @ciaranmcnulty) - * Support for mocking classes with methods that return references (thanks @edsonmedina) - * Improved object comparison (thanks @whatthejeff) - * Adopted '^' in composer dependencies (thanks @GrahamCampbell) - * Fixed non-typehinted arguments being treated as optional (thanks @whatthejeff) - * Magic methods are now filtered for keywords (thanks @seagoj) - * More readable errors for failure when expecting single calls (thanks @dantleech) - -1.3.1 / 2014-11-17 -================== - - * Fix the edge case when failed predictions weren't recorded for `getCheckedPredictions()` - -1.3.0 / 2014-11-14 -================== - - * Add a way to get checked predictions with `MethodProphecy::getCheckedPredictions()` - * Fix HHVM compatibility - * Remove dead code (thanks @stof) - * Add support for DirectoryIterators (thanks @shanethehat) - -1.2.0 / 2014-07-18 -================== - - * Added support for doubling magic methods documented in the class phpdoc (thanks @armetiz) - * Fixed a segfault appearing in some cases (thanks @dmoreaulf) - * Fixed the doubling of methods with typehints on non-existent classes (thanks @gquemener) - * Added support for internal classes using keywords as method names (thanks @milan) - * Added IdenticalValueToken and Argument::is (thanks @florianv) - * Removed the usage of scalar typehints in HHVM as HHVM 3 does not support them anymore in PHP code (thanks @whatthejeff) - -1.1.2 / 2014-01-24 -================== - - * Spy automatically promotes spied method call to an expected one - -1.1.1 / 2014-01-15 -================== - - * Added support for HHVM - -1.1.0 / 2014-01-01 -================== - - * Changed the generated class names to use a static counter instead of a random number - * Added a clss patch for ReflectionClass::newInstance to make its argument optional consistently (thanks @docteurklein) - * Fixed mirroring of classes with typehints on non-existent classes (thanks @docteurklein) - * Fixed the support of array callables in CallbackPromise and CallbackPrediction (thanks @ciaranmcnulty) - * Added support for properties in ObjectStateToken (thanks @adrienbrault) - * Added support for mocking classes with a final constructor (thanks @ciaranmcnulty) - * Added ArrayEveryEntryToken and Argument::withEveryEntry() (thanks @adrienbrault) - * Added an exception when trying to prophesize on a final method instead of ignoring silently (thanks @docteurklein) - * Added StringContainToken and Argument::containingString() (thanks @peterjmit) - * Added ``shouldNotHaveBeenCalled`` on the MethodProphecy (thanks @ciaranmcnulty) - * Fixed the comparison of objects in ExactValuetoken (thanks @sstok) - * Deprecated ``shouldNotBeenCalled`` in favor of ``shouldNotHaveBeenCalled`` - -1.0.4 / 2013-08-10 -================== - - * Better randomness for generated class names (thanks @sstok) - * Add support for interfaces into TypeToken and Argument::type() (thanks @sstok) - * Add support for old-style (method name === class name) constructors (thanks @l310 for report) - -1.0.3 / 2013-07-04 -================== - - * Support callable typehints (thanks @stof) - * Do not attempt to autoload arrays when generating code (thanks @MarcoDeBortoli) - * New ArrayEntryToken (thanks @kagux) - -1.0.2 / 2013-05-19 -================== - - * Logical `AND` token added (thanks @kagux) - * Logical `NOT` token added (thanks @kagux) - * Add support for setting custom constructor arguments - * Properly stringify hashes - * Record calls that throw exceptions - * Migrate spec suite to PhpSpec 2.0 - -1.0.1 / 2013-04-30 -================== - - * Fix broken UnexpectedCallException message - * Trim AggregateException message - -1.0.0 / 2013-04-29 -================== - - * Improve exception messages - -1.0.0-BETA2 / 2013-04-03 -======================== - - * Add more debug information to CallTimes and Call prediction exception messages - * Fix MethodNotFoundException wrong namespace (thanks @gunnarlium) - * Fix some typos in the exception messages (thanks @pborreli) - -1.0.0-BETA1 / 2013-03-25 -======================== - - * Initial release diff --git a/tests/vendor/phpspec/prophecy/CONTRIBUTING.md b/tests/vendor/phpspec/prophecy/CONTRIBUTING.md deleted file mode 100644 index 3674aac4..00000000 --- a/tests/vendor/phpspec/prophecy/CONTRIBUTING.md +++ /dev/null @@ -1,21 +0,0 @@ -Contributing ------------- - -Prophecy is an open source, community-driven project. If you'd like to contribute, -feel free to do this, but remember to follow this few simple rules: - -- Make your feature addition or bug fix, -- Add either specs or examples for any changes you're making (bugfixes or additions) - (please look into `spec/` folder for some examples). This is important so we don't break - it in a future version unintentionally, -- Commit your code, but do not mess with `CHANGES.md`, - -Running tests -------------- - -Make sure that you don't break anything with your changes by running: - -```bash -$> composer install --dev --prefer-dist -$> vendor/bin/phpspec run -``` diff --git a/tests/vendor/phpspec/prophecy/LICENSE b/tests/vendor/phpspec/prophecy/LICENSE deleted file mode 100644 index c8b36471..00000000 --- a/tests/vendor/phpspec/prophecy/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2013 Konstantin Kudryashov - Marcello Duarte - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/tests/vendor/phpspec/prophecy/README.md b/tests/vendor/phpspec/prophecy/README.md deleted file mode 100644 index 17e57c31..00000000 --- a/tests/vendor/phpspec/prophecy/README.md +++ /dev/null @@ -1,390 +0,0 @@ -# Prophecy - -[![Build Status](https://travis-ci.org/phpspec/prophecy.svg?branch=master)](https://travis-ci.org/phpspec/prophecy) - -Prophecy is a highly opinionated yet very powerful and flexible PHP object mocking -framework. Though initially it was created to fulfil phpspec2 needs, it is flexible -enough to be used inside any testing framework out there with minimal effort. - -## A simple example - -```php -prophet->prophesize('App\Security\Hasher'); - $user = new App\Entity\User($hasher->reveal()); - - $hasher->generateHash($user, 'qwerty')->willReturn('hashed_pass'); - - $user->setPassword('qwerty'); - - $this->assertEquals('hashed_pass', $user->getPassword()); - } - - protected function setup() - { - $this->prophet = new \Prophecy\Prophet; - } - - protected function tearDown() - { - $this->prophet->checkPredictions(); - } -} -``` - -## Installation - -### Prerequisites - -Prophecy requires PHP 5.3.3 or greater. - -### Setup through composer - -First, add Prophecy to the list of dependencies inside your `composer.json`: - -```json -{ - "require-dev": { - "phpspec/prophecy": "~1.0" - } -} -``` - -Then simply install it with composer: - -```bash -$> composer install --prefer-dist -``` - -You can read more about Composer on its [official webpage](http://getcomposer.org). - -## How to use it - -First of all, in Prophecy every word has a logical meaning, even the name of the library -itself (Prophecy). When you start feeling that, you'll become very fluid with this -tool. - -For example, Prophecy has been named that way because it concentrates on describing the future -behavior of objects with very limited knowledge about them. But as with any other prophecy, -those object prophecies can't create themselves - there should be a Prophet: - -```php -$prophet = new Prophecy\Prophet; -``` - -The Prophet creates prophecies by *prophesizing* them: - -```php -$prophecy = $prophet->prophesize(); -``` - -The result of the `prophesize()` method call is a new object of class `ObjectProphecy`. Yes, -that's your specific object prophecy, which describes how your object would behave -in the near future. But first, you need to specify which object you're talking about, -right? - -```php -$prophecy->willExtend('stdClass'); -$prophecy->willImplement('SessionHandlerInterface'); -``` - -There are 2 interesting calls - `willExtend` and `willImplement`. The first one tells -object prophecy that our object should extend specific class, the second one says that -it should implement some interface. Obviously, objects in PHP can implement multiple -interfaces, but extend only one parent class. - -### Dummies - -Ok, now we have our object prophecy. What can we do with it? First of all, we can get -our object *dummy* by revealing its prophecy: - -```php -$dummy = $prophecy->reveal(); -``` - -The `$dummy` variable now holds a special dummy object. Dummy objects are objects that extend -and/or implement preset classes/interfaces by overriding all their public methods. The key -point about dummies is that they do not hold any logic - they just do nothing. Any method -of the dummy will always return `null` and the dummy will never throw any exceptions. -Dummy is your friend if you don't care about the actual behavior of this double and just need -a token object to satisfy a method typehint. - -You need to understand one thing - a dummy is not a prophecy. Your object prophecy is still -assigned to `$prophecy` variable and in order to manipulate with your expectations, you -should work with it. `$dummy` is a dummy - a simple php object that tries to fulfil your -prophecy. - -### Stubs - -Ok, now we know how to create basic prophecies and reveal dummies from them. That's -awesome if we don't care about our _doubles_ (objects that reflect originals) -interactions. If we do, we need to use *stubs* or *mocks*. - -A stub is an object double, which doesn't have any expectations about the object behavior, -but when put in specific environment, behaves in specific way. Ok, I know, it's cryptic, -but bear with me for a minute. Simply put, a stub is a dummy, which depending on the called -method signature does different things (has logic). To create stubs in Prophecy: - -```php -$prophecy->read('123')->willReturn('value'); -``` - -Oh wow. We've just made an arbitrary call on the object prophecy? Yes, we did. And this -call returned us a new object instance of class `MethodProphecy`. Yep, that's a specific -method with arguments prophecy. Method prophecies give you the ability to create method -promises or predictions. We'll talk about method predictions later in the _Mocks_ section. - -#### Promises - -Promises are logical blocks, that represent your fictional methods in prophecy terms -and they are handled by the `MethodProphecy::will(PromiseInterface $promise)` method. -As a matter of fact, the call that we made earlier (`willReturn('value')`) is a simple -shortcut to: - -```php -$prophecy->read('123')->will(new Prophecy\Promise\ReturnPromise(array('value'))); -``` - -This promise will cause any call to our double's `read()` method with exactly one -argument - `'123'` to always return `'value'`. But that's only for this -promise, there's plenty others you can use: - -- `ReturnPromise` or `->willReturn(1)` - returns a value from a method call -- `ReturnArgumentPromise` or `->willReturnArgument($index)` - returns the nth method argument from call -- `ThrowPromise` or `->willThrow` - causes the method to throw specific exception -- `CallbackPromise` or `->will($callback)` - gives you a quick way to define your own custom logic - -Keep in mind, that you can always add even more promises by implementing -`Prophecy\Promise\PromiseInterface`. - -#### Method prophecies idempotency - -Prophecy enforces same method prophecies and, as a consequence, same promises and -predictions for the same method calls with the same arguments. This means: - -```php -$methodProphecy1 = $prophecy->read('123'); -$methodProphecy2 = $prophecy->read('123'); -$methodProphecy3 = $prophecy->read('321'); - -$methodProphecy1 === $methodProphecy2; -$methodProphecy1 !== $methodProphecy3; -``` - -That's interesting, right? Now you might ask me how would you define more complex -behaviors where some method call changes behavior of others. In PHPUnit or Mockery -you do that by predicting how many times your method will be called. In Prophecy, -you'll use promises for that: - -```php -$user->getName()->willReturn(null); - -// For PHP 5.4 -$user->setName('everzet')->will(function () { - $this->getName()->willReturn('everzet'); -}); - -// For PHP 5.3 -$user->setName('everzet')->will(function ($args, $user) { - $user->getName()->willReturn('everzet'); -}); - -// Or -$user->setName('everzet')->will(function ($args) use ($user) { - $user->getName()->willReturn('everzet'); -}); -``` - -And now it doesn't matter how many times or in which order your methods are called. -What matters is their behaviors and how well you faked it. - -#### Arguments wildcarding - -The previous example is awesome (at least I hope it is for you), but that's not -optimal enough. We hardcoded `'everzet'` in our expectation. Isn't there a better -way? In fact there is, but it involves understanding what this `'everzet'` -actually is. - -You see, even if method arguments used during method prophecy creation look -like simple method arguments, in reality they are not. They are argument token -wildcards. As a matter of fact, `->setName('everzet')` looks like a simple call just -because Prophecy automatically transforms it under the hood into: - -```php -$user->setName(new Prophecy\Argument\Token\ExactValueToken('everzet')); -``` - -Those argument tokens are simple PHP classes, that implement -`Prophecy\Argument\Token\TokenInterface` and tell Prophecy how to compare real arguments -with your expectations. And yes, those classnames are damn big. That's why there's a -shortcut class `Prophecy\Argument`, which you can use to create tokens like that: - -```php -use Prophecy\Argument; - -$user->setName(Argument::exact('everzet')); -``` - -`ExactValueToken` is not very useful in our case as it forced us to hardcode the username. -That's why Prophecy comes bundled with a bunch of other tokens: - -- `IdenticalValueToken` or `Argument::is($value)` - checks that the argument is identical to a specific value -- `ExactValueToken` or `Argument::exact($value)` - checks that the argument matches a specific value -- `TypeToken` or `Argument::type($typeOrClass)` - checks that the argument matches a specific type or - classname -- `ObjectStateToken` or `Argument::which($method, $value)` - checks that the argument method returns - a specific value -- `CallbackToken` or `Argument::that(callback)` - checks that the argument matches a custom callback -- `AnyValueToken` or `Argument::any()` - matches any argument -- `AnyValuesToken` or `Argument::cetera()` - matches any arguments to the rest of the signature -- `StringContainsToken` or `Argument::containingString($value)` - checks that the argument contains a specific string value - -And you can add even more by implementing `TokenInterface` with your own custom classes. - -So, let's refactor our initial `{set,get}Name()` logic with argument tokens: - -```php -use Prophecy\Argument; - -$user->getName()->willReturn(null); - -// For PHP 5.4 -$user->setName(Argument::type('string'))->will(function ($args) { - $this->getName()->willReturn($args[0]); -}); - -// For PHP 5.3 -$user->setName(Argument::type('string'))->will(function ($args, $user) { - $user->getName()->willReturn($args[0]); -}); - -// Or -$user->setName(Argument::type('string'))->will(function ($args) use ($user) { - $user->getName()->willReturn($args[0]); -}); -``` - -That's it. Now our `{set,get}Name()` prophecy will work with any string argument provided to it. -We've just described how our stub object should behave, even though the original object could have -no behavior whatsoever. - -One last bit about arguments now. You might ask, what happens in case of: - -```php -use Prophecy\Argument; - -$user->getName()->willReturn(null); - -// For PHP 5.4 -$user->setName(Argument::type('string'))->will(function ($args) { - $this->getName()->willReturn($args[0]); -}); - -// For PHP 5.3 -$user->setName(Argument::type('string'))->will(function ($args, $user) { - $user->getName()->willReturn($args[0]); -}); - -// Or -$user->setName(Argument::type('string'))->will(function ($args) use ($user) { - $user->getName()->willReturn($args[0]); -}); - -$user->setName(Argument::any())->will(function () { -}); -``` - -Nothing. Your stub will continue behaving the way it did before. That's because of how -arguments wildcarding works. Every argument token type has a different score level, which -wildcard then uses to calculate the final arguments match score and use the method prophecy -promise that has the highest score. In this case, `Argument::type()` in case of success -scores `5` and `Argument::any()` scores `3`. So the type token wins, as does the first -`setName()` method prophecy and its promise. The simple rule of thumb - more precise token -always wins. - -#### Getting stub objects - -Ok, now we know how to define our prophecy method promises, let's get our stub from -it: - -```php -$stub = $prophecy->reveal(); -``` - -As you might see, the only difference between how we get dummies and stubs is that with -stubs we describe every object conversation instead of just agreeing with `null` returns -(object being *dummy*). As a matter of fact, after you define your first promise -(method call), Prophecy will force you to define all the communications - it throws -the `UnexpectedCallException` for any call you didn't describe with object prophecy before -calling it on a stub. - -### Mocks - -Now we know how to define doubles without behavior (dummies) and doubles with behavior, but -no expectations (stubs). What's left is doubles for which we have some expectations. These -are called mocks and in Prophecy they look almost exactly the same as stubs, except that -they define *predictions* instead of *promises* on method prophecies: - -```php -$entityManager->flush()->shouldBeCalled(); -``` - -#### Predictions - -The `shouldBeCalled()` method here assigns `CallPrediction` to our method prophecy. -Predictions are a delayed behavior check for your prophecies. You see, during the entire lifetime -of your doubles, Prophecy records every single call you're making against it inside your -code. After that, Prophecy can use this collected information to check if it matches defined -predictions. You can assign predictions to method prophecies using the -`MethodProphecy::should(PredictionInterface $prediction)` method. As a matter of fact, -the `shouldBeCalled()` method we used earlier is just a shortcut to: - -```php -$entityManager->flush()->should(new Prophecy\Prediction\CallPrediction()); -``` - -It checks if your method of interest (that matches both the method name and the arguments wildcard) -was called 1 or more times. If the prediction failed then it throws an exception. When does this -check happen? Whenever you call `checkPredictions()` on the main Prophet object: - -```php -$prophet->checkPredictions(); -``` - -In PHPUnit, you would want to put this call into the `tearDown()` method. If no predictions -are defined, it would do nothing. So it won't harm to call it after every test. - -There are plenty more predictions you can play with: - -- `CallPrediction` or `shouldBeCalled()` - checks that the method has been called 1 or more times -- `NoCallsPrediction` or `shouldNotBeCalled()` - checks that the method has not been called -- `CallTimesPrediction` or `shouldBeCalledTimes($count)` - checks that the method has been called - `$count` times -- `CallbackPrediction` or `should($callback)` - checks the method against your own custom callback - -Of course, you can always create your own custom prediction any time by implementing -`PredictionInterface`. - -### Spies - -The last bit of awesomeness in Prophecy is out-of-the-box spies support. As I said in the previous -section, Prophecy records every call made during the double's entire lifetime. This means -you don't need to record predictions in order to check them. You can also do it -manually by using the `MethodProphecy::shouldHave(PredictionInterface $prediction)` method: - -```php -$em = $prophet->prophesize('Doctrine\ORM\EntityManager'); - -$controller->createUser($em->reveal()); - -$em->flush()->shouldHaveBeenCalled(); -``` - -Such manipulation with doubles is called spying. And with Prophecy it just works. diff --git a/tests/vendor/phpspec/prophecy/composer.json b/tests/vendor/phpspec/prophecy/composer.json deleted file mode 100644 index 654aaadc..00000000 --- a/tests/vendor/phpspec/prophecy/composer.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "phpspec/prophecy", - "description": "Highly opinionated mocking framework for PHP 5.3+", - "keywords": ["Mock", "Stub", "Dummy", "Double", "Fake", "Spy"], - "homepage": "https://github.com/phpspec/prophecy", - "type": "library", - "license": "MIT", - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "require": { - "phpdocumentor/reflection-docblock": "~2.0", - "sebastian/comparator": "~1.1", - "doctrine/instantiator": "^1.0.2" - }, - - "require-dev": { - "phpspec/phpspec": "~2.0" - }, - - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - } -} diff --git a/tests/vendor/phpspec/prophecy/composer.lock b/tests/vendor/phpspec/prophecy/composer.lock deleted file mode 100644 index 0c5521a8..00000000 --- a/tests/vendor/phpspec/prophecy/composer.lock +++ /dev/null @@ -1,731 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", - "This file is @generated automatically" - ], - "hash": "642fa332c5fa99e1d5086035641b5a74", - "packages": [ - { - "name": "doctrine/instantiator", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", - "shasum": "" - }, - "require": { - "php": ">=5.3,<8.0-DEV" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2015-06-14 21:17:01" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "time": "2015-02-03 12:10:50" - }, - { - "name": "sebastian/comparator", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2015-07-26 15:48:44" - }, - { - "name": "sebastian/diff", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", - "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "http://www.github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2015-02-22 15:13:53" - }, - { - "name": "sebastian/exporter", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "7ae5513327cb536431847bcc0c10edba2701064e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e", - "reference": "7ae5513327cb536431847bcc0c10edba2701064e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2015-06-21 07:55:53" - }, - { - "name": "sebastian/recursion-context", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "994d4a811bafe801fb06dccbee797863ba2792ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba", - "reference": "994d4a811bafe801fb06dccbee797863ba2792ba", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-06-21 08:04:50" - } - ], - "packages-dev": [ - { - "name": "phpspec/php-diff", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/phpspec/php-diff.git", - "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/php-diff/zipball/30e103d19519fe678ae64a60d77884ef3d71b28a", - "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a", - "shasum": "" - }, - "type": "library", - "autoload": { - "psr-0": { - "Diff": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Chris Boulton", - "homepage": "http://github.com/chrisboulton", - "role": "Original developer" - } - ], - "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).", - "time": "2013-11-01 13:02:21" - }, - { - "name": "phpspec/phpspec", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/phpspec/phpspec.git", - "reference": "e9a40577323e67f1de2e214abf32976a0352d8f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/phpspec/zipball/e9a40577323e67f1de2e214abf32976a0352d8f8", - "reference": "e9a40577323e67f1de2e214abf32976a0352d8f8", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.1", - "php": ">=5.3.3", - "phpspec/php-diff": "~1.0.0", - "phpspec/prophecy": "~1.4", - "sebastian/exporter": "~1.0", - "symfony/console": "~2.3", - "symfony/event-dispatcher": "~2.1", - "symfony/finder": "~2.1", - "symfony/process": "~2.1", - "symfony/yaml": "~2.1" - }, - "require-dev": { - "behat/behat": "^3.0.11", - "bossa/phpspec2-expect": "~1.0", - "phpunit/phpunit": "~4.4", - "symfony/filesystem": "~2.1", - "symfony/process": "~2.1" - }, - "suggest": { - "phpspec/nyan-formatters": "~1.0 – Adds Nyan formatters" - }, - "bin": [ - "bin/phpspec" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-0": { - "PhpSpec": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "homepage": "http://marcelloduarte.net/" - } - ], - "description": "Specification-oriented BDD framework for PHP 5.3+", - "homepage": "http://phpspec.net/", - "keywords": [ - "BDD", - "SpecBDD", - "TDD", - "spec", - "specification", - "testing", - "tests" - ], - "time": "2015-05-30 15:21:40" - }, - { - "name": "symfony/console", - "version": "v2.7.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/Console.git", - "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/d6cf02fe73634c96677e428f840704bfbcaec29e", - "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1", - "symfony/phpunit-bridge": "~2.7", - "symfony/process": "~2.1" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2015-07-28 15:18:12" - }, - { - "name": "symfony/event-dispatcher", - "version": "v2.7.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/9310b5f9a87ec2ea75d20fec0b0017c77c66dac3", - "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.0,>=2.0.5", - "symfony/dependency-injection": "~2.6", - "symfony/expression-language": "~2.6", - "symfony/phpunit-bridge": "~2.7", - "symfony/stopwatch": "~2.3" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2015-06-18 19:21:56" - }, - { - "name": "symfony/finder", - "version": "v2.7.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/Finder.git", - "reference": "ae0f363277485094edc04c9f3cbe595b183b78e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Finder/zipball/ae0f363277485094edc04c9f3cbe595b183b78e4", - "reference": "ae0f363277485094edc04c9f3cbe595b183b78e4", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2015-07-09 16:07:40" - }, - { - "name": "symfony/process", - "version": "v2.7.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/Process.git", - "reference": "48aeb0e48600321c272955132d7606ab0a49adb3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Process/zipball/48aeb0e48600321c272955132d7606ab0a49adb3", - "reference": "48aeb0e48600321c272955132d7606ab0a49adb3", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2015-07-01 11:25:50" - }, - { - "name": "symfony/yaml", - "version": "v2.7.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "71340e996171474a53f3d29111d046be4ad8a0ff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/71340e996171474a53f3d29111d046be4ad8a0ff", - "reference": "71340e996171474a53f3d29111d046be4ad8a0ff", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2015-07-28 14:07:07" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [] -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php deleted file mode 100644 index 5d6a2da3..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php +++ /dev/null @@ -1,146 +0,0 @@ -beConstructedWith(array(42, 'zet', $object)); - - $class = get_class($object->getWrappedObject()); - $hash = spl_object_hash($object->getWrappedObject()); - - $this->__toString()->shouldReturn("exact(42), exact(\"zet\"), exact($class:$hash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $token1 - * @param \Prophecy\Argument\Token\TokenInterface $token2 - * @param \Prophecy\Argument\Token\TokenInterface $token3 - */ - function it_generates_string_representation_from_all_tokens_imploded($token1, $token2, $token3) - { - $token1->__toString()->willReturn('token_1'); - $token2->__toString()->willReturn('token_2'); - $token3->__toString()->willReturn('token_3'); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->__toString()->shouldReturn('token_1, token_2, token_3'); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $token - */ - function it_exposes_list_of_tokens($token) - { - $this->beConstructedWith(array($token)); - - $this->getTokens()->shouldReturn(array($token)); - } - - function it_returns_score_of_1_if_there_are_no_tokens_and_arguments() - { - $this->beConstructedWith(array()); - - $this->scoreArguments(array())->shouldReturn(1); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $token1 - * @param \Prophecy\Argument\Token\TokenInterface $token2 - * @param \Prophecy\Argument\Token\TokenInterface $token3 - */ - function it_should_return_match_score_based_on_all_tokens_score($token1, $token2, $token3) - { - $token1->scoreArgument('one')->willReturn(3); - $token1->isLast()->willReturn(false); - $token2->scoreArgument(2)->willReturn(5); - $token2->isLast()->willReturn(false); - $token3->scoreArgument($obj = new \stdClass())->willReturn(10); - $token3->isLast()->willReturn(false); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->scoreArguments(array('one', 2, $obj))->shouldReturn(18); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $token1 - * @param \Prophecy\Argument\Token\TokenInterface $token2 - * @param \Prophecy\Argument\Token\TokenInterface $token3 - */ - function it_returns_false_if_there_is_less_arguments_than_tokens($token1, $token2, $token3) - { - $token1->scoreArgument('one')->willReturn(3); - $token1->isLast()->willReturn(false); - $token2->scoreArgument(2)->willReturn(5); - $token2->isLast()->willReturn(false); - $token3->scoreArgument(null)->willReturn(false); - $token3->isLast()->willReturn(false); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->scoreArguments(array('one', 2))->shouldReturn(false); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $token1 - * @param \Prophecy\Argument\Token\TokenInterface $token2 - * @param \Prophecy\Argument\Token\TokenInterface $token3 - */ - function it_returns_false_if_there_is_less_tokens_than_arguments($token1, $token2, $token3) - { - $token1->scoreArgument('one')->willReturn(3); - $token1->isLast()->willReturn(false); - $token2->scoreArgument(2)->willReturn(5); - $token2->isLast()->willReturn(false); - $token3->scoreArgument($obj = new \stdClass())->willReturn(10); - $token3->isLast()->willReturn(false); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->scoreArguments(array('one', 2, $obj, 4))->shouldReturn(false); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $token1 - * @param \Prophecy\Argument\Token\TokenInterface $token2 - * @param \Prophecy\Argument\Token\TokenInterface $token3 - */ - function it_should_return_false_if_one_of_the_tokens_returns_false($token1, $token2, $token3) - { - $token1->scoreArgument('one')->willReturn(3); - $token1->isLast()->willReturn(false); - $token2->scoreArgument(2)->willReturn(false); - $token2->isLast()->willReturn(false); - $token3->scoreArgument($obj = new \stdClass())->willReturn(10); - $token3->isLast()->willReturn(false); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->scoreArguments(array('one', 2, $obj))->shouldReturn(false); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $token1 - * @param \Prophecy\Argument\Token\TokenInterface $token2 - * @param \Prophecy\Argument\Token\TokenInterface $token3 - */ - function it_should_calculate_score_until_last_token($token1, $token2, $token3) - { - $token1->scoreArgument('one')->willReturn(3); - $token1->isLast()->willReturn(false); - - $token2->scoreArgument(2)->willReturn(7); - $token2->isLast()->willReturn(true); - - $token3->scoreArgument($obj = new \stdClass())->willReturn(10); - $token3->isLast()->willReturn(false); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->scoreArguments(array('one', 2, $obj))->shouldReturn(10); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php deleted file mode 100644 index a43e923c..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php +++ /dev/null @@ -1,28 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function its_string_representation_is_star() - { - $this->__toString()->shouldReturn('*'); - } - - function it_scores_any_argument_as_3() - { - $this->scoreArgument(42)->shouldReturn(3); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php deleted file mode 100644 index c29076f5..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php +++ /dev/null @@ -1,28 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_last() - { - $this->shouldBeLast(); - } - - function its_string_representation_is_star_with_followup() - { - $this->__toString()->shouldReturn('* [, ...]'); - } - - function it_scores_any_argument_as_2() - { - $this->scoreArgument(42)->shouldReturn(2); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php deleted file mode 100644 index 5d040d59..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php +++ /dev/null @@ -1,64 +0,0 @@ -beConstructedWith(2); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_scores_6_if_argument_array_has_proper_count() - { - $this->scoreArgument(array(1,2))->shouldReturn(6); - } - - /** - * @param \Countable $countable - */ - function it_scores_6_if_argument_countable_object_has_proper_count($countable) - { - $countable->count()->willReturn(2); - $this->scoreArgument($countable)->shouldReturn(6); - } - - function it_does_not_score_if_argument_is_neither_array_nor_countable_object() - { - $this->scoreArgument('string')->shouldBe(false); - $this->scoreArgument(5)->shouldBe(false); - $this->scoreArgument(new \stdClass)->shouldBe(false); - } - - function it_does_not_score_if_argument_array_has_wrong_count() - { - $this->scoreArgument(array(1))->shouldReturn(false); - } - - /** - * @param \Countable $countable - */ - function it_does_not_score_if_argument_countable_object_has_wrong_count($countable) - { - $countable->count()->willReturn(3); - $this->scoreArgument($countable)->shouldReturn(false); - } - - function it_has_simple_string_representation() - { - $this->__toString()->shouldBe('count(2)'); - } - -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php deleted file mode 100644 index 8ff0f158..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php +++ /dev/null @@ -1,229 +0,0 @@ -beConstructedWith($key, $value); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_holds_key_and_value($key, $value) - { - $this->getKey()->shouldBe($key); - $this->getValue()->shouldBe($value); - } - - function its_string_representation_tells_that_its_an_array_containing_the_key_value_pair($key, $value) - { - $key->__toString()->willReturn('key'); - $value->__toString()->willReturn('value'); - $this->__toString()->shouldBe('[..., key => value, ...]'); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $key - * @param \stdClass $object - */ - function it_wraps_non_token_value_into_ExactValueToken($key, $object) - { - $this->beConstructedWith($key, $object); - $this->getValue()->shouldHaveType('\Prophecy\Argument\Token\ExactValueToken'); - } - - /** - * @param \stdClass $object - * @param \Prophecy\Argument\Token\TokenInterface $value - */ - function it_wraps_non_token_key_into_ExactValueToken($object, $value) - { - $this->beConstructedWith($object, $value); - $this->getKey()->shouldHaveType('\Prophecy\Argument\Token\ExactValueToken'); - } - - function it_scores_array_half_of_combined_scores_from_key_and_value_tokens($key, $value) - { - $key->scoreArgument('key')->willReturn(4); - $value->scoreArgument('value')->willReturn(6); - $this->scoreArgument(array('key'=>'value'))->shouldBe(5); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $key - * @param \Prophecy\Argument\Token\TokenInterface $value - * @param \Iterator $object - */ - function it_scores_traversable_object_half_of_combined_scores_from_key_and_value_tokens($key, $value, $object) - { - $object->current()->will(function () use ($object) { - $object->valid()->willReturn(false); - - return 'value'; - }); - $object->key()->willReturn('key'); - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(true); - $key->scoreArgument('key')->willReturn(6); - $value->scoreArgument('value')->willReturn(2); - $this->scoreArgument($object)->shouldBe(4); - } - - /** - * @param \Prophecy\Argument\Token\AnyValuesToken $key - * @param \Prophecy\Argument\Token\TokenInterface $value - * @param \ArrayAccess $object - */ - function it_throws_exception_during_scoring_of_array_accessible_object_if_key_is_not_ExactValueToken($key, $value, $object) - { - $key->__toString()->willReturn('any_token'); - $this->beConstructedWith($key,$value); - $errorMessage = 'You can only use exact value tokens to match key of ArrayAccess object'.PHP_EOL. - 'But you used `any_token`.'; - $this->shouldThrow(new InvalidArgumentException($errorMessage))->duringScoreArgument($object); - } - - /** - * @param \Prophecy\Argument\Token\ExactValueToken $key - * @param \Prophecy\Argument\Token\TokenInterface $value - * @param \ArrayAccess $object - */ - function it_scores_array_accessible_object_half_of_combined_scores_from_key_and_value_tokens($key, $value, $object) - { - $object->offsetExists('key')->willReturn(true); - $object->offsetGet('key')->willReturn('value'); - $key->getValue()->willReturn('key'); - $key->scoreArgument('key')->willReturn(3); - $value->scoreArgument('value')->willReturn(1); - $this->scoreArgument($object)->shouldBe(2); - } - - /** - * @param \Prophecy\Argument\Token\AnyValuesToken $key - * @param \Prophecy\Argument\Token\TokenInterface $value - * @param \ArrayIterator $object - */ - function it_accepts_any_key_token_type_to_score_object_that_is_both_traversable_and_array_accessible($key, $value, $object) - { - $this->beConstructedWith($key, $value); - $object->current()->will(function () use ($object) { - $object->valid()->willReturn(false); - - return 'value'; - }); - $object->key()->willReturn('key'); - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(true); - $this->shouldNotThrow(new InvalidArgumentException)->duringScoreArgument($object); - } - - function it_does_not_score_if_argument_is_neither_array_nor_traversable_nor_array_accessible() - { - $this->scoreArgument('string')->shouldBe(false); - $this->scoreArgument(new \stdClass)->shouldBe(false); - } - - function it_does_not_score_empty_array() - { - $this->scoreArgument(array())->shouldBe(false); - } - - function it_does_not_score_array_if_key_and_value_tokens_do_not_score_same_entry($key, $value) - { - $argument = array(1 => 'foo', 2 => 'bar'); - $key->scoreArgument(1)->willReturn(true); - $key->scoreArgument(2)->willReturn(false); - $value->scoreArgument('foo')->willReturn(false); - $value->scoreArgument('bar')->willReturn(true); - $this->scoreArgument($argument)->shouldBe(false); - } - - /** - * @param \Iterator $object - */ - function it_does_not_score_traversable_object_without_entries($object) - { - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(false); - $this->scoreArgument($object)->shouldBe(false); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $key - * @param \Prophecy\Argument\Token\TokenInterface $value - * @param \Iterator $object - */ - function it_does_not_score_traversable_object_if_key_and_value_tokens_do_not_score_same_entry($key, $value, $object) - { - $object->current()->willReturn('foo'); - $object->current()->will(function () use ($object) { - $object->valid()->willReturn(false); - - return 'bar'; - }); - $object->key()->willReturn(1); - $object->key()->willReturn(2); - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(true); - $key->scoreArgument(1)->willReturn(true); - $key->scoreArgument(2)->willReturn(false); - $value->scoreArgument('foo')->willReturn(false); - $value->scoreArgument('bar')->willReturn(true); - $this->scoreArgument($object)->shouldBe(false); - } - - /** - * @param \Prophecy\Argument\Token\ExactValueToken $key - * @param \ArrayAccess $object - */ - function it_does_not_score_array_accessible_object_if_it_has_no_offset_with_key_token_value($key, $object) - { - $object->offsetExists('key')->willReturn(false); - $key->getValue()->willReturn('key'); - $this->scoreArgument($object)->shouldBe(false); - } - - /** - * @param \Prophecy\Argument\Token\ExactValueToken $key - * @param \Prophecy\Argument\Token\TokenInterface $value - * @param \ArrayAccess $object - */ - function it_does_not_score_array_accessible_object_if_key_and_value_tokens_do_not_score_same_entry($key, $value, $object) - { - $object->offsetExists('key')->willReturn(true); - $object->offsetGet('key')->willReturn('value'); - $key->getValue()->willReturn('key'); - $value->scoreArgument('value')->willReturn(false); - $key->scoreArgument('key')->willReturn(true); - $this->scoreArgument($object)->shouldBe(false); - } - - function its_score_is_capped_at_8($key, $value) - { - $key->scoreArgument('key')->willReturn(10); - $value->scoreArgument('value')->willReturn(10); - $this->scoreArgument(array('key'=>'value'))->shouldBe(8); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php deleted file mode 100644 index 8662e7d1..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php +++ /dev/null @@ -1,109 +0,0 @@ -beConstructedWith($value); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_holds_value($value) - { - $this->getValue()->shouldBe($value); - } - - function its_string_representation_tells_that_its_an_array_containing_only_value($value) - { - $value->__toString()->willReturn('value'); - $this->__toString()->shouldBe('[value, ..., value]'); - } - - /** - * @param \stdClass $stdClass - */ - function it_wraps_non_token_value_into_ExactValueToken($stdClass) - { - $this->beConstructedWith($stdClass); - $this->getValue()->shouldHaveType('Prophecy\Argument\Token\ExactValueToken'); - } - - function it_does_not_score_if_argument_is_neither_array_nor_traversable() - { - $this->scoreArgument('string')->shouldBe(false); - $this->scoreArgument(new \stdClass)->shouldBe(false); - } - - function it_does_not_score_empty_array() - { - $this->scoreArgument(array())->shouldBe(false); - } - - /** - * @param \Iterator $object - */ - function it_does_not_score_traversable_object_without_entries($object) - { - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(false); - $this->scoreArgument($object)->shouldBe(false); - } - - function it_scores_avg_of_scores_from_value_tokens($value) - { - $value->scoreArgument('value1')->willReturn(6); - $value->scoreArgument('value2')->willReturn(3); - $this->scoreArgument(array('value1', 'value2'))->shouldBe(4.5); - } - - function it_scores_false_if_entry_scores_false($value) - { - $value->scoreArgument('value1')->willReturn(6); - $value->scoreArgument('value2')->willReturn(false); - $this->scoreArgument(array('value1', 'value2'))->shouldBe(false); - } - - function it_does_not_score_array_keys($value) - { - $value->scoreArgument('value')->willReturn(6); - $value->scoreArgument('key')->shouldNotBeCalled(0); - $this->scoreArgument(array('key' => 'value'))->shouldBe(6); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $value - * @param \Iterator $object - */ - function it_scores_traversable_object_from_value_token($value, $object) - { - $object->current()->will(function ($args, $object) { - $object->valid()->willReturn(false); - - return 'value'; - }); - $object->key()->willReturn('key'); - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(true); - $value->scoreArgument('value')->willReturn(2); - $this->scoreArgument($object)->shouldBe(2); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php deleted file mode 100644 index 4395bf09..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php +++ /dev/null @@ -1,42 +0,0 @@ -beConstructedWith('get_class'); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_scores_7_if_argument_matches_callback() - { - $this->beConstructedWith(function ($argument) { return 2 === $argument; }); - - $this->scoreArgument(2)->shouldReturn(7); - } - - function it_does_not_scores_if_argument_does_not_match_callback() - { - $this->beConstructedWith(function ($argument) { return 2 === $argument; }); - - $this->scoreArgument(5)->shouldReturn(false); - } - - function its_string_representation_should_tell_that_its_callback() - { - $this->__toString()->shouldReturn('callback()'); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php deleted file mode 100644 index 9e46e021..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php +++ /dev/null @@ -1,155 +0,0 @@ -beConstructedWith(42); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_holds_value() - { - $this->getValue()->shouldReturn(42); - } - - function it_scores_10_if_value_is_equal_to_argument() - { - $this->scoreArgument(42)->shouldReturn(10); - $this->scoreArgument('42')->shouldReturn(10); - } - - function it_scores_10_if_value_is_an_object_and_equal_to_argument() - { - $value = new \DateTime(); - $value2 = clone $value; - - $this->beConstructedWith($value); - $this->scoreArgument($value2)->shouldReturn(10); - } - - function it_does_not_scores_if_value_is_not_equal_to_argument() - { - $this->scoreArgument(50)->shouldReturn(false); - $this->scoreArgument(new \stdClass())->shouldReturn(false); - } - - function it_does_not_scores_if_value_an_object_and_is_not_equal_to_argument() - { - $value = new ExactValueTokenFixtureB('ABC'); - $value2 = new ExactValueTokenFixtureB('CBA'); - - $this->beConstructedWith($value); - $this->scoreArgument($value2)->shouldReturn(false); - } - - function it_does_not_scores_if_value_type_and_is_not_equal_to_argument() - { - $this->beConstructedWith(false); - $this->scoreArgument(0)->shouldReturn(false); - } - - function it_generates_proper_string_representation_for_integer() - { - $this->beConstructedWith(42); - $this->__toString()->shouldReturn('exact(42)'); - } - - function it_generates_proper_string_representation_for_string() - { - $this->beConstructedWith('some string'); - $this->__toString()->shouldReturn('exact("some string")'); - } - - function it_generates_single_line_representation_for_multiline_string() - { - $this->beConstructedWith("some\nstring"); - $this->__toString()->shouldReturn('exact("some\\nstring")'); - } - - function it_generates_proper_string_representation_for_double() - { - $this->beConstructedWith(42.3); - $this->__toString()->shouldReturn('exact(42.3)'); - } - - function it_generates_proper_string_representation_for_boolean_true() - { - $this->beConstructedWith(true); - $this->__toString()->shouldReturn('exact(true)'); - } - - function it_generates_proper_string_representation_for_boolean_false() - { - $this->beConstructedWith(false); - $this->__toString()->shouldReturn('exact(false)'); - } - - function it_generates_proper_string_representation_for_null() - { - $this->beConstructedWith(null); - $this->__toString()->shouldReturn('exact(null)'); - } - - function it_generates_proper_string_representation_for_empty_array() - { - $this->beConstructedWith(array()); - $this->__toString()->shouldReturn('exact([])'); - } - - function it_generates_proper_string_representation_for_array() - { - $this->beConstructedWith(array('zet', 42)); - $this->__toString()->shouldReturn('exact(["zet", 42])'); - } - - function it_generates_proper_string_representation_for_resource() - { - $resource = fopen(__FILE__, 'r'); - $this->beConstructedWith($resource); - $this->__toString()->shouldReturn('exact(stream:'.$resource.')'); - } - - /** - * @param \stdClass $object - */ - function it_generates_proper_string_representation_for_object($object) - { - $objHash = sprintf('%s:%s', - get_class($object->getWrappedObject()), - spl_object_hash($object->getWrappedObject()) - ); - - $this->beConstructedWith($object); - $this->__toString()->shouldReturn("exact($objHash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); - } -} - -class ExactValueTokenFixtureA -{ - public $errors; -} - -class ExactValueTokenFixtureB extends ExactValueTokenFixtureA -{ - public $errors; - public $value = null; - - public function __construct($value) - { - $this->value = $value; - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php deleted file mode 100644 index 00c3a215..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php +++ /dev/null @@ -1,152 +0,0 @@ -beConstructedWith(42); - } - - function it_is_initializable() - { - $this->shouldHaveType('Prophecy\Argument\Token\IdenticalValueToken'); - } - - function it_scores_11_if_string_value_is_identical_to_argument() - { - $this->beConstructedWith('foo'); - $this->scoreArgument('foo')->shouldReturn(11); - } - - function it_scores_11_if_boolean_value_is_identical_to_argument() - { - $this->beConstructedWith(false); - $this->scoreArgument(false)->shouldReturn(11); - } - - function it_scores_11_if_integer_value_is_identical_to_argument() - { - $this->beConstructedWith(31); - $this->scoreArgument(31)->shouldReturn(11); - } - - function it_scores_11_if_float_value_is_identical_to_argument() - { - $this->beConstructedWith(31.12); - $this->scoreArgument(31.12)->shouldReturn(11); - } - - function it_scores_11_if_array_value_is_identical_to_argument() - { - $this->beConstructedWith(array('foo' => 'bar')); - $this->scoreArgument(array('foo' => 'bar'))->shouldReturn(11); - } - - function it_scores_11_if_object_value_is_identical_to_argument() - { - $object = new \stdClass(); - - $this->beConstructedWith($object); - $this->scoreArgument($object)->shouldReturn(11); - } - - function it_scores_false_if_value_is_not_identical_to_argument() - { - $this->beConstructedWith(new \stdClass()); - $this->scoreArgument('foo')->shouldReturn(false); - } - - function it_scores_false_if_object_value_is_not_the_same_instance_than_argument() - { - $this->beConstructedWith(new \stdClass()); - $this->scoreArgument(new \stdClass())->shouldReturn(false); - } - - function it_scores_false_if_integer_value_is_not_identical_to_boolean_argument() - { - $this->beConstructedWith(1); - $this->scoreArgument(true)->shouldReturn(false); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_generates_proper_string_representation_for_integer() - { - $this->beConstructedWith(42); - $this->__toString()->shouldReturn('identical(42)'); - } - - function it_generates_proper_string_representation_for_string() - { - $this->beConstructedWith('some string'); - $this->__toString()->shouldReturn('identical("some string")'); - } - - function it_generates_single_line_representation_for_multiline_string() - { - $this->beConstructedWith("some\nstring"); - $this->__toString()->shouldReturn('identical("some\\nstring")'); - } - - function it_generates_proper_string_representation_for_double() - { - $this->beConstructedWith(42.3); - $this->__toString()->shouldReturn('identical(42.3)'); - } - - function it_generates_proper_string_representation_for_boolean_true() - { - $this->beConstructedWith(true); - $this->__toString()->shouldReturn('identical(true)'); - } - - function it_generates_proper_string_representation_for_boolean_false() - { - $this->beConstructedWith(false); - $this->__toString()->shouldReturn('identical(false)'); - } - - function it_generates_proper_string_representation_for_null() - { - $this->beConstructedWith(null); - $this->__toString()->shouldReturn('identical(null)'); - } - - function it_generates_proper_string_representation_for_empty_array() - { - $this->beConstructedWith(array()); - $this->__toString()->shouldReturn('identical([])'); - } - - function it_generates_proper_string_representation_for_array() - { - $this->beConstructedWith(array('zet', 42)); - $this->__toString()->shouldReturn('identical(["zet", 42])'); - } - - function it_generates_proper_string_representation_for_resource() - { - $resource = fopen(__FILE__, 'r'); - $this->beConstructedWith($resource); - $this->__toString()->shouldReturn('identical(stream:'.$resource.')'); - } - - function it_generates_proper_string_representation_for_object($object) - { - $objHash = sprintf('%s:%s', - get_class($object->getWrappedObject()), - spl_object_hash($object->getWrappedObject()) - ); - - $this->beConstructedWith($object); - $this->__toString()->shouldReturn("identical($objHash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php deleted file mode 100644 index bb5e3840..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php +++ /dev/null @@ -1,78 +0,0 @@ -beConstructedWith(array()); - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->beConstructedWith(array()); - $this->shouldNotBeLast(); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $token1 - * @param \Prophecy\Argument\Token\TokenInterface $token2 - * @param \Prophecy\Argument\Token\TokenInterface $token3 - */ - function it_generates_string_representation_from_all_tokens_imploded($token1, $token2, $token3) - { - $token1->__toString()->willReturn('token_1'); - $token2->__toString()->willReturn('token_2'); - $token3->__toString()->willReturn('token_3'); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->__toString()->shouldReturn('bool(token_1 AND token_2 AND token_3)'); - } - - function it_wraps_non_token_arguments_into_ExactValueToken() - { - $this->beConstructedWith(array(15, '1985')); - $this->__toString()->shouldReturn("bool(exact(15) AND exact(\"1985\"))"); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $token1 - * @param \Prophecy\Argument\Token\TokenInterface $token2 - */ - function it_scores_the_maximum_score_from_all_scores_returned_by_tokens($token1, $token2) - { - $token1->scoreArgument(1)->willReturn(10); - $token2->scoreArgument(1)->willReturn(5); - $this->beConstructedWith(array($token1, $token2)); - $this->scoreArgument(1)->shouldReturn(10); - } - - function it_does_not_score_if_there_are_no_arguments_or_tokens() - { - $this->beConstructedWith(array()); - $this->scoreArgument('any')->shouldReturn(false); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $token1 - * @param \Prophecy\Argument\Token\TokenInterface $token2 - */ - function it_does_not_score_if_either_of_tokens_does_not_score($token1, $token2) - { - $token1->scoreArgument(1)->willReturn(10); - $token1->scoreArgument(2)->willReturn(false); - - $token2->scoreArgument(1)->willReturn(false); - $token2->scoreArgument(2)->willReturn(10); - - $this->beConstructedWith(array($token1, $token2)); - - $this->scoreArgument(1)->shouldReturn(false); - $this->scoreArgument(2)->shouldReturn(false); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php deleted file mode 100644 index 7ce7f3d8..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php +++ /dev/null @@ -1,65 +0,0 @@ -beConstructedWith($token); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_holds_originating_token($token) - { - $this->getOriginatingToken()->shouldReturn($token); - } - - function it_has_simple_string_representation($token) - { - $token->__toString()->willReturn('value'); - $this->__toString()->shouldBe('not(value)'); - } - - function it_wraps_non_token_argument_into_ExactValueToken() - { - $this->beConstructedWith(5); - $token = $this->getOriginatingToken(); - $token->shouldhaveType('Prophecy\Argument\Token\ExactValueToken'); - $token->getValue()->shouldBe(5); - } - - function it_scores_4_if_preset_token_does_not_match_the_argument($token) - { - $token->scoreArgument('argument')->willReturn(false); - $this->scoreArgument('argument')->shouldBe(4); - } - - function it_does_not_score_if_preset_token_matches_argument($token) - { - $token->scoreArgument('argument')->willReturn(5); - $this->scoreArgument('argument')->shouldBe(false); - } - - function it_is_last_if_preset_token_is_last($token) - { - $token->isLast()->willReturn(true); - $this->shouldBeLast(); - } - - function it_is_not_last_if_preset_token_is_not_last($token) - { - $token->isLast()->willReturn(false); - $this->shouldNotBeLast(); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php deleted file mode 100644 index a783a15f..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php +++ /dev/null @@ -1,101 +0,0 @@ -beConstructedWith('getName', 'stdClass'); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - /** - * @param \ReflectionClass $reflection - */ - function it_scores_8_if_argument_object_has_specific_method_state($reflection) - { - $reflection->getName()->willReturn('stdClass'); - - $this->scoreArgument($reflection)->shouldReturn(8); - } - - /** - * @param \stdClass $class - */ - function it_scores_8_if_argument_object_has_specific_property_state($class) - { - $class->getName = 'stdClass'; - - $this->scoreArgument($class)->shouldReturn(8); - } - - function it_does_not_score_if_argument_method_state_does_not_match() - { - $value = new ObjectStateTokenFixtureB('ABC'); - $value2 = new ObjectStateTokenFixtureB('CBA'); - - $this->beConstructedWith('getSelf', $value); - $this->scoreArgument($value2)->shouldReturn(false); - } - - /** - * @param \stdClass $class - */ - function it_does_not_score_if_argument_property_state_does_not_match($class) - { - $class->getName = 'SplFileInfo'; - - $this->scoreArgument($class)->shouldReturn(false); - } - - /** - * @param \spec\Prophecy\Argument\Token\ObjectStateTokenFixtureA $class - */ - function it_does_not_score_if_argument_object_does_not_have_method_or_property($class) - { - $this->scoreArgument($class)->shouldReturn(false); - } - - function it_does_not_score_if_argument_is_not_object() - { - $this->scoreArgument(42)->shouldReturn(false); - } - - function it_has_simple_string_representation() - { - $this->__toString()->shouldReturn('state(getName(), "stdClass")'); - } -} - -class ObjectStateTokenFixtureA -{ - public $errors; -} - -class ObjectStateTokenFixtureB extends ObjectStateTokenFixtureA -{ - public $errors; - public $value = null; - - public function __construct($value) - { - $this->value = $value; - } - - public function getSelf() - { - return $this; - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php deleted file mode 100644 index c7fd2652..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php +++ /dev/null @@ -1,49 +0,0 @@ -beConstructedWith('a substring'); - } - - function it_is_initializable() - { - $this->shouldHaveType('Prophecy\Argument\Token\StringContainsToken'); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_holds_value() - { - $this->getValue()->shouldReturn('a substring'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_scores_6_if_the_argument_contains_the_value() - { - $this->scoreArgument('Argument containing a substring')->shouldReturn(6); - } - - function it_does_not_score_if_the_argument_does_not_contain_the_value() - { - $this->scoreArgument('Argument will not match')->shouldReturn(false); - } - - function its_string_representation_shows_substring() - { - $this->__toString()->shouldReturn('contains("a substring")'); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php deleted file mode 100644 index ae3e26e4..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php +++ /dev/null @@ -1,62 +0,0 @@ -beConstructedWith('integer'); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_scores_5_if_argument_matches_simple_type() - { - $this->beConstructedWith('integer'); - - $this->scoreArgument(42)->shouldReturn(5); - } - - function it_does_not_scores_if_argument_does_not_match_simple_type() - { - $this->beConstructedWith('integer'); - - $this->scoreArgument(42.0)->shouldReturn(false); - } - - /** - * @param \ReflectionObject $object - */ - function it_scores_5_if_argument_is_an_instance_of_specified_class($object) - { - $this->beConstructedWith('ReflectionClass'); - - $this->scoreArgument($object)->shouldReturn(5); - } - - function it_has_simple_string_representation() - { - $this->__toString()->shouldReturn('type(integer)'); - } - - /** - * @param \Prophecy\Argument\Token\TokenInterface $interface - */ - function it_scores_5_if_argument_is_an_instance_of_specified_interface($interface) - { - $this->beConstructedWith('Prophecy\Argument\Token\TokenInterface'); - - $this->scoreArgument($interface)->shouldReturn(5); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php deleted file mode 100644 index 990aa80a..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php +++ /dev/null @@ -1,101 +0,0 @@ -exact(42); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ExactValueToken'); - $token->getValue()->shouldReturn(42); - } - - function it_has_a_shortcut_for_any_argument_token() - { - $token = $this->any(); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\AnyValueToken'); - } - - function it_has_a_shortcut_for_multiple_arguments_token() - { - $token = $this->cetera(); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\AnyValuesToken'); - } - - function it_has_a_shortcut_for_type_token() - { - $token = $this->type('integer'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\TypeToken'); - } - - function it_has_a_shortcut_for_callback_token() - { - $token = $this->that('get_class'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\CallbackToken'); - } - - function it_has_a_shortcut_for_object_state_token() - { - $token = $this->which('getName', 'everzet'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ObjectStateToken'); - } - - function it_has_a_shortcut_for_logical_and_token() - { - $token = $this->allOf('integer', 5); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\LogicalAndToken'); - } - - function it_has_a_shortcut_for_array_count_token() - { - $token = $this->size(5); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayCountToken'); - } - - function it_has_a_shortcut_for_array_entry_token() - { - $token = $this->withEntry('key', 'value'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); - } - - function it_has_a_shortcut_for_array_every_entry_token() - { - $token = $this->withEveryEntry('value'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEveryEntryToken'); - } - - function it_has_a_shortcut_for_identical_value_token() - { - $token = $this->is('value'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\IdenticalValueToken'); - } - - function it_has_a_shortcut_for_array_entry_token_matching_any_key() - { - $token = $this->containing('value'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); - $token->getKey()->shouldHaveType('Prophecy\Argument\Token\AnyValueToken'); - } - - function it_has_a_shortcut_for_array_entry_token_matching_any_value() - { - $token = $this->withKey('key'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); - $token->getValue()->shouldHaveType('Prophecy\Argument\Token\AnyValueToken'); - } - - function it_has_a_shortcut_for_logical_not_token() - { - $token = $this->not('kagux'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\LogicalNotToken'); - } - - function it_has_a_shortcut_for_string_contains_token() - { - $token = $this->containingString('string'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\StringContainsToken'); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php deleted file mode 100644 index acf8d783..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php +++ /dev/null @@ -1,195 +0,0 @@ -scoreArguments(array(5, 2, 3))->willReturn(10); - $objectProphecy->getMethodProphecies()->willReturn(array()); - - $this->makeCall($objectProphecy, 'setValues', array(5, 2, 3)); - - $calls = $this->findCalls('setValues', $wildcard); - $calls->shouldHaveCount(1); - - $calls[0]->shouldBeAnInstanceOf('Prophecy\Call\Call'); - $calls[0]->getMethodName()->shouldReturn('setValues'); - $calls[0]->getArguments()->shouldReturn(array(5, 2, 3)); - $calls[0]->getReturnValue()->shouldReturn(null); - } - - function it_returns_null_for_any_call_through_makeCall_if_no_method_prophecies_added( - $objectProphecy - ) - { - $objectProphecy->getMethodProphecies()->willReturn(array()); - - $this->makeCall($objectProphecy, 'setValues', array(5, 2, 3))->shouldReturn(null); - } - - /** - * @param \Prophecy\Prophecy\MethodProphecy $method1 - * @param \Prophecy\Prophecy\MethodProphecy $method2 - * @param \Prophecy\Prophecy\MethodProphecy $method3 - * @param \Prophecy\Argument\ArgumentsWildcard $arguments1 - * @param \Prophecy\Argument\ArgumentsWildcard $arguments2 - * @param \Prophecy\Argument\ArgumentsWildcard $arguments3 - * @param \Prophecy\Promise\PromiseInterface $promise - */ - function it_executes_promise_of_method_prophecy_that_matches_signature_passed_to_makeCall( - $objectProphecy, $method1, $method2, $method3, $arguments1, $arguments2, $arguments3, - $promise - ) - { - $method1->getMethodName()->willReturn('getName'); - $method1->getArgumentsWildcard()->willReturn($arguments1); - $arguments1->scoreArguments(array('world', 'everything'))->willReturn(false); - - $method2->getMethodName()->willReturn('setTitle'); - $method2->getArgumentsWildcard()->willReturn($arguments2); - $arguments2->scoreArguments(array('world', 'everything'))->willReturn(false); - - $method3->getMethodName()->willReturn('getName'); - $method3->getArgumentsWildcard()->willReturn($arguments3); - $method3->getPromise()->willReturn($promise); - $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200); - - $objectProphecy->getMethodProphecies()->willReturn(array( - 'method1' => array($method1), - 'method2' => array($method2, $method3) - )); - $objectProphecy->getMethodProphecies('getName')->willReturn(array($method1, $method3)); - $objectProphecy->reveal()->willReturn(new \stdClass()); - - $promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method3)->willReturn(42); - - $this->makeCall($objectProphecy, 'getName', array('world', 'everything'))->shouldReturn(42); - - $calls = $this->findCalls('getName', $arguments3); - $calls->shouldHaveCount(1); - $calls[0]->getReturnValue()->shouldReturn(42); - } - - /** - * @param \Prophecy\Prophecy\MethodProphecy $method1 - * @param \Prophecy\Prophecy\MethodProphecy $method2 - * @param \Prophecy\Prophecy\MethodProphecy $method3 - * @param \Prophecy\Argument\ArgumentsWildcard $arguments1 - * @param \Prophecy\Argument\ArgumentsWildcard $arguments2 - * @param \Prophecy\Argument\ArgumentsWildcard $arguments3 - * @param \Prophecy\Promise\PromiseInterface $promise - */ - function it_executes_promise_of_method_prophecy_that_matches_with_highest_score_to_makeCall( - $objectProphecy, $method1, $method2, $method3, $arguments1, $arguments2, $arguments3, - $promise - ) - { - $method1->getMethodName()->willReturn('getName'); - $method1->getArgumentsWildcard()->willReturn($arguments1); - $arguments1->scoreArguments(array('world', 'everything'))->willReturn(50); - - $method2->getMethodName()->willReturn('getName'); - $method2->getArgumentsWildcard()->willReturn($arguments2); - $method2->getPromise()->willReturn($promise); - $arguments2->scoreArguments(array('world', 'everything'))->willReturn(300); - - $method3->getMethodName()->willReturn('getName'); - $method3->getArgumentsWildcard()->willReturn($arguments3); - $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200); - - $objectProphecy->getMethodProphecies()->willReturn(array( - 'method1' => array($method1), - 'method2' => array($method2, $method3) - )); - $objectProphecy->getMethodProphecies('getName')->willReturn(array( - $method1, $method2, $method3 - )); - $objectProphecy->reveal()->willReturn(new \stdClass()); - - $promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method2) - ->willReturn('second'); - - $this->makeCall($objectProphecy, 'getName', array('world', 'everything')) - ->shouldReturn('second'); - } - - /** - * @param \Prophecy\Prophecy\MethodProphecy $method - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - */ - function it_throws_exception_if_call_does_not_match_any_of_defined_method_prophecies( - $objectProphecy, $method, $arguments - ) - { - $method->getMethodName()->willReturn('getName'); - $method->getArgumentsWildcard()->willReturn($arguments); - $arguments->scoreArguments(array('world', 'everything'))->willReturn(false); - $arguments->__toString()->willReturn('arg1, arg2'); - - $objectProphecy->getMethodProphecies()->willReturn(array('method1' => array($method))); - $objectProphecy->getMethodProphecies('getName')->willReturn(array($method)); - - $this->shouldThrow('Prophecy\Exception\Call\UnexpectedCallException') - ->duringMakeCall($objectProphecy, 'getName', array('world', 'everything')); - } - - /** - * @param \Prophecy\Prophecy\MethodProphecy $method - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - */ - function it_returns_null_if_method_prophecy_that_matches_makeCall_arguments_has_no_promise( - $objectProphecy, $method, $arguments - ) - { - $method->getMethodName()->willReturn('getName'); - $method->getArgumentsWildcard()->willReturn($arguments); - $method->getPromise()->willReturn(null); - $arguments->scoreArguments(array('world', 'everything'))->willReturn(100); - - $objectProphecy->getMethodProphecies()->willReturn(array($method)); - $objectProphecy->getMethodProphecies('getName')->willReturn(array($method)); - - $this->makeCall($objectProphecy, 'getName', array('world', 'everything')) - ->shouldReturn(null); - } - - /** - * @param \Prophecy\Argument\ArgumentsWildcard $wildcard - */ - function it_finds_recorded_calls_by_a_method_name_and_arguments_wildcard( - $objectProphecy, $wildcard - ) - { - $objectProphecy->getMethodProphecies()->willReturn(array()); - - $this->makeCall($objectProphecy, 'getName', array('world')); - $this->makeCall($objectProphecy, 'getName', array('everything')); - $this->makeCall($objectProphecy, 'setName', array(42)); - - $wildcard->scoreArguments(array('world'))->willReturn(false); - $wildcard->scoreArguments(array('everything'))->willReturn(10); - - $calls = $this->findCalls('getName', $wildcard); - - $calls->shouldHaveCount(1); - $calls[0]->getMethodName()->shouldReturn('getName'); - $calls[0]->getArguments()->shouldReturn(array('everything')); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php deleted file mode 100644 index d1a85391..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php +++ /dev/null @@ -1,54 +0,0 @@ -beConstructedWith('setValues', array(5, 2), 42, $exception, 'some_file.php', 23); - } - - function it_exposes_method_name_through_getter() - { - $this->getMethodName()->shouldReturn('setValues'); - } - - function it_exposes_arguments_through_getter() - { - $this->getArguments()->shouldReturn(array(5, 2)); - } - - function it_exposes_return_value_through_getter() - { - $this->getReturnValue()->shouldReturn(42); - } - - function it_exposes_exception_through_getter($exception) - { - $this->getException()->shouldReturn($exception); - } - - function it_exposes_file_and_line_through_getter() - { - $this->getFile()->shouldReturn('some_file.php'); - $this->getLine()->shouldReturn(23); - } - - function it_returns_shortpath_to_callPlace() - { - $this->getCallPlace()->shouldReturn('some_file.php:23'); - } - - function it_returns_unknown_as_callPlace_if_no_file_or_line_provided() - { - $this->beConstructedWith('setValues', array(), 0, null, null, null); - - $this->getCallPlace()->shouldReturn('unknown'); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php deleted file mode 100644 index c174e73c..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php +++ /dev/null @@ -1,39 +0,0 @@ -shouldHaveType('SebastianBergmann\Comparator\Comparator'); - } - - function it_accepts_only_closures() - { - $this->accepts(123, 321)->shouldReturn(false); - $this->accepts('string', 'string')->shouldReturn(false); - $this->accepts(false, true)->shouldReturn(false); - $this->accepts(true, false)->shouldReturn(false); - $this->accepts((object)array(), (object)array())->shouldReturn(false); - $this->accepts(function(){}, (object)array())->shouldReturn(false); - $this->accepts(function(){}, (object)array())->shouldReturn(false); - - $this->accepts(function(){}, function(){})->shouldReturn(true); - } - - function it_asserts_that_all_closures_are_different() - { - $this->shouldThrow()->duringAssertEquals(function(){}, function(){}); - } - - function it_asserts_that_all_closures_are_different_even_if_its_the_same_closure() - { - $closure = function(){}; - - $this->shouldThrow()->duringAssertEquals($closure, $closure); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php deleted file mode 100644 index 6b13336d..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php +++ /dev/null @@ -1,20 +0,0 @@ -shouldHaveType('SebastianBergmann\Comparator\Factory'); - } - - function it_should_have_ClosureComparator_registered() - { - $comparator = $this->getInstance()->getComparatorFor(function(){}, function(){}); - $comparator->shouldHaveType('Prophecy\Comparator\ClosureComparator'); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php deleted file mode 100644 index 2d7d934d..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php +++ /dev/null @@ -1,59 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function its_priority_is_100() - { - $this->getPriority()->shouldReturn(100); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_supports_anything($node) - { - $this->supports($node)->shouldReturn(true); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $class - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method - * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $arg1 - * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $arg2 - */ - function it_makes_all_constructor_arguments_optional($class, $method, $arg1, $arg2) - { - $class->hasMethod('__construct')->willReturn(true); - $class->getMethod('__construct')->willReturn($method); - $method->getArguments()->willReturn(array($arg1, $arg2)); - - $arg1->setDefault(null)->shouldBeCalled(); - $arg2->setDefault(null)->shouldBeCalled(); - - $method->setCode(Argument::type('string'))->shouldBeCalled(); - - $this->apply($class); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $class - */ - function it_creates_new_constructor_if_object_has_none($class) - { - $class->hasMethod('__construct')->willReturn(false); - $class->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode')) - ->shouldBeCalled(); - - $this->apply($class); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php deleted file mode 100644 index 8c348b86..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php +++ /dev/null @@ -1,37 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function its_priority_is_minus_50() - { - $this->getPriority()->shouldReturn(-50); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method - * @param \Prophecy\Doubler\Generator\Node\MethodNode $getterMethod - */ - function it_uses_parent_code_for_setTraceOptions($node, $method, $getterMethod) - { - $node->hasMethod('setTraceOptions')->willReturn(true); - $node->getMethod('setTraceOptions')->willReturn($method); - $node->hasMethod('getTraceOptions')->willReturn(true); - $node->getMethod('getTraceOptions')->willReturn($getterMethod); - - $method->useParentCode()->shouldBeCalled(); - $getterMethod->useParentCode()->shouldBeCalled(); - - $this->apply($node); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php deleted file mode 100644 index 200d9619..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php +++ /dev/null @@ -1,44 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function its_priority_is_49() - { - $this->getPriority()->shouldReturn(49); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method1 - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method2 - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method3 - */ - function it_will_remove_echo_and_eval_methods($node, $method1, $method2, $method3) - { - $node->removeMethod('eval')->shouldBeCalled(); - $node->removeMethod('echo')->shouldBeCalled(); - - $method1->getName()->willReturn('echo'); - $method2->getName()->willReturn('eval'); - $method3->getName()->willReturn('notKeyword'); - - $node->getMethods()->willReturn(array( - 'echo' => $method1, - 'eval' => $method2, - 'notKeyword' => $method3, - )); - - $this->apply($node); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php deleted file mode 100644 index cb1d0f01..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php +++ /dev/null @@ -1,76 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_supports_anything($node) - { - $this->supports($node)->shouldReturn(true); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_discovers_api_using_phpdoc($node) - { - $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApi'); - - $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled(); - - $this->apply($node); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_ignores_existing_methods($node) - { - $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiExtended'); - - $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled(); - $node->addMethod(new MethodNode('definedMethod'))->shouldNotBeCalled(); - - $this->apply($node); - } - - function it_has_50_priority() - { - $this->getPriority()->shouldReturn(50); - } -} - -/** - * @method void undefinedMethod() - */ -class MagicalApi -{ - /** - * @return void - */ - public function definedMethod() - { - - } -} - -/** - * @method void undefinedMethod() - * @method void definedMethod() - */ -class MagicalApiExtended extends MagicalApi -{ - -} \ No newline at end of file diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php deleted file mode 100644 index c460814c..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php +++ /dev/null @@ -1,83 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function it_has_priority_of_0() - { - $this->getPriority()->shouldReturn(0); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_supports_any_class($node) - { - $this->supports($node)->shouldReturn(true); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_forces_class_to_implement_ProphecySubjectInterface($node) - { - $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->shouldBeCalled(); - - $node->addProperty('objectProphecy', 'private')->willReturn(null); - $node->getMethods()->willReturn(array()); - $node->hasMethod(Argument::any())->willReturn(false); - $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); - $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); - - $this->apply($node); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - * @param \Prophecy\Doubler\Generator\Node\MethodNode $constructor - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method1 - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method2 - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method3 - */ - function it_forces_all_class_methods_except_constructor_to_proxy_calls_into_prophecy_makeCall( - $node, $constructor, $method1, $method2, $method3 - ) - { - $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->willReturn(null); - $node->addProperty('objectProphecy', 'private')->willReturn(null); - $node->hasMethod(Argument::any())->willReturn(false); - $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); - $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); - - $constructor->getName()->willReturn('__construct'); - $method1->getName()->willReturn('method1'); - $method2->getName()->willReturn('method2'); - $method3->getName()->willReturn('method3'); - - $node->getMethods()->willReturn(array( - 'method1' => $method1, - 'method2' => $method2, - 'method3' => $method3, - )); - - $constructor->setCode(Argument::any())->shouldNotBeCalled(); - - $method1->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') - ->shouldBeCalled(); - $method2->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') - ->shouldBeCalled(); - $method3->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') - ->shouldBeCalled(); - - $this->apply($node); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php deleted file mode 100644 index 4116e4df..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php +++ /dev/null @@ -1,47 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function its_priority_is_50() - { - $this->getPriority()->shouldReturn(50); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $reflectionClassNode - * @param \Prophecy\Doubler\Generator\Node\ClassNode $anotherClassNode - */ - function it_supports_ReflectionClass_only($reflectionClassNode, $anotherClassNode) - { - $reflectionClassNode->getParentClass()->willReturn('ReflectionClass'); - $anotherClassNode->getParentClass()->willReturn('stdClass'); - - $this->supports($reflectionClassNode)->shouldReturn(true); - $this->supports($anotherClassNode)->shouldReturn(false); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $class - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method - * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $arg1 - * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $arg2 - */ - function it_makes_all_newInstance_arguments_optional($class, $method, $arg1, $arg2) - { - $class->getMethod('newInstance')->willReturn($method); - $method->getArguments()->willReturn(array($arg1)); - $arg1->setDefault(null)->shouldBeCalled(); - - $this->apply($class); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php deleted file mode 100644 index 37fe82f6..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php +++ /dev/null @@ -1,91 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function its_priority_is_50() - { - $this->getPriority()->shouldReturn(50); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_does_not_support_nodes_without_parent_class($node) - { - $node->getParentClass()->willReturn('stdClass'); - $this->supports($node)->shouldReturn(false); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_supports_nodes_with_SplFileInfo_as_parent_class($node) - { - $node->getParentClass()->willReturn('SplFileInfo'); - $this->supports($node)->shouldReturn(true); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_supports_nodes_with_derivative_of_SplFileInfo_as_parent_class($node) - { - $node->getParentClass()->willReturn('SplFileInfo'); - $this->supports($node)->shouldReturn(true); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_adds_a_method_to_node_if_not_exists($node) - { - $node->hasMethod('__construct')->willReturn(false); - $node->addMethod(Argument::any())->shouldBeCalled(); - $node->getParentClass()->shouldBeCalled(); - - $this->apply($node); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method - */ - function it_updates_existing_method_if_found($node, $method) - { - $node->hasMethod('__construct')->willReturn(true); - $node->getMethod('__construct')->willReturn($method); - $node->getParentClass()->shouldBeCalled(); - - $method->useParentCode()->shouldBeCalled(); - - $this->apply($node); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method - */ - function it_should_not_supply_a_file_for_a_directory_iterator($node, $method) - { - $node->hasMethod('__construct')->willReturn(true); - $node->getMethod('__construct')->willReturn($method); - $node->getParentClass()->willReturn('DirectoryIterator'); - - $method->setCode(Argument::that(function($value) { - return strpos($value, '.php') === false; - }))->shouldBeCalled(); - - $this->apply($node); - } - -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php deleted file mode 100644 index 2279b720..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php +++ /dev/null @@ -1,61 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_supports_class_that_implements_only_Traversable($node) - { - $node->getInterfaces()->willReturn(array('Traversable')); - - $this->supports($node)->shouldReturn(true); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_does_not_support_class_that_implements_Iterator($node) - { - $node->getInterfaces()->willReturn(array('Traversable', 'Iterator')); - - $this->supports($node)->shouldReturn(false); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_does_not_support_class_that_implements_IteratorAggregate($node) - { - $node->getInterfaces()->willReturn(array('Traversable', 'IteratorAggregate')); - - $this->supports($node)->shouldReturn(false); - } - - function it_has_100_priority() - { - $this->getPriority()->shouldReturn(100); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_forces_node_to_implement_IteratorAggregate($node) - { - $node->addInterface('Iterator')->shouldBeCalled(); - - $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); - - $this->apply($node); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php deleted file mode 100644 index a39fa87f..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php +++ /dev/null @@ -1,122 +0,0 @@ -beConstructedWith($mirror, $creator, $namer); - } - - function it_does_not_have_patches_by_default() - { - $this->getClassPatches()->shouldHaveCount(0); - } - - /** - * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $patch - */ - function its_registerClassPatch_adds_a_patch_to_the_doubler($patch) - { - $this->registerClassPatch($patch); - $this->getClassPatches()->shouldReturn(array($patch)); - } - - /** - * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt1 - * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt2 - * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt3 - * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt4 - */ - function its_getClassPatches_sorts_patches_by_priority($alt1, $alt2, $alt3, $alt4) - { - $alt1->getPriority()->willReturn(2); - $alt2->getPriority()->willReturn(50); - $alt3->getPriority()->willReturn(10); - $alt4->getPriority()->willReturn(0); - - $this->registerClassPatch($alt1); - $this->registerClassPatch($alt2); - $this->registerClassPatch($alt3); - $this->registerClassPatch($alt4); - - $this->getClassPatches()->shouldReturn(array($alt2, $alt3, $alt1, $alt4)); - } - - /** - * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt1 - * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt2 - * @param \ReflectionClass $class - * @param \ReflectionClass $interface1 - * @param \ReflectionClass $interface2 - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function its_double_mirrors_alterates_and_instantiates_provided_class( - $mirror, $creator, $namer, $alt1, $alt2, $class, $interface1, $interface2, $node - ) - { - $mirror->reflect($class, array($interface1, $interface2))->willReturn($node); - $alt1->supports($node)->willReturn(true); - $alt2->supports($node)->willReturn(false); - $alt1->getPriority()->willReturn(1); - $alt2->getPriority()->willReturn(2); - $namer->name($class, array($interface1, $interface2))->willReturn('SplStack'); - $class->getName()->willReturn('stdClass'); - $interface1->getName()->willReturn('ArrayAccess'); - $interface2->getName()->willReturn('Iterator'); - - $alt1->apply($node)->shouldBeCalled(); - $alt2->apply($node)->shouldNotBeCalled(); - $creator->create('SplStack', $node)->shouldBeCalled(); - - $this->registerClassPatch($alt1); - $this->registerClassPatch($alt2); - - $this->double($class, array($interface1, $interface2)) - ->shouldReturnAnInstanceOf('SplStack'); - } - - /** - * @param \ReflectionClass $class - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_double_instantiates_a_class_with_constructor_argument($mirror, $class, $node, $namer) - { - $class->getName()->willReturn('ReflectionClass'); - $mirror->reflect($class, array())->willReturn($node); - $namer->name($class, array())->willReturn('ReflectionClass'); - - $double = $this->double($class, array(), array('stdClass')); - $double->shouldBeAnInstanceOf('ReflectionClass'); - $double->getName()->shouldReturn('stdClass'); - } - - /** - * @param \ReflectionClass $class - * @param \Prophecy\Doubler\Generator\Node\ClassNode $node - */ - function it_can_instantiate_class_with_final_constructor($mirror, $class, $node, $namer) - { - $class->getName()->willReturn('spec\Prophecy\Doubler\WithFinalConstructor'); - $mirror->reflect($class, array())->willReturn($node); - $namer->name($class, array())->willReturn('spec\Prophecy\Doubler\WithFinalConstructor'); - - $double = $this->double($class, array()); - - $double->shouldBeAnInstanceOf('spec\Prophecy\Doubler\WithFinalConstructor'); - } -} - -class WithFinalConstructor -{ - final public function __construct() {} -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php deleted file mode 100644 index fa65bc15..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php +++ /dev/null @@ -1,191 +0,0 @@ -getParentClass()->willReturn('RuntimeException'); - $class->getInterfaces()->willReturn(array( - 'Prophecy\Doubler\Generator\MirroredInterface', 'ArrayAccess', 'ArrayIterator' - )); - $class->getProperties()->willReturn(array('name' => 'public', 'email' => 'private')); - $class->getMethods()->willReturn(array($method1, $method2, $method3)); - - $method1->getName()->willReturn('getName'); - $method1->getVisibility()->willReturn('public'); - $method1->returnsReference()->willReturn(false); - $method1->isStatic()->willReturn(true); - $method1->getArguments()->willReturn(array($argument11, $argument12)); - $method1->hasReturnType()->willReturn(true); - $method1->getReturnType()->willReturn('string'); - $method1->getCode()->willReturn('return $this->name;'); - - $method2->getName()->willReturn('getEmail'); - $method2->getVisibility()->willReturn('protected'); - $method2->returnsReference()->willReturn(false); - $method2->isStatic()->willReturn(false); - $method2->getArguments()->willReturn(array($argument21)); - $method2->hasReturnType()->willReturn(false); - $method2->getCode()->willReturn('return $this->email;'); - - $method3->getName()->willReturn('getRefValue'); - $method3->getVisibility()->willReturn('public'); - $method3->returnsReference()->willReturn(true); - $method3->isStatic()->willReturn(false); - $method3->getArguments()->willReturn(array($argument31)); - $method3->hasReturnType()->willReturn(false); - $method3->getCode()->willReturn('return $this->refValue;'); - - $argument11->getName()->willReturn('fullname'); - $argument11->getTypeHint()->willReturn('array'); - $argument11->isOptional()->willReturn(true); - $argument11->getDefault()->willReturn(null); - $argument11->isPassedByReference()->willReturn(false); - - $argument12->getName()->willReturn('class'); - $argument12->getTypeHint()->willReturn('ReflectionClass'); - $argument12->isOptional()->willReturn(false); - $argument12->isPassedByReference()->willReturn(false); - - $argument21->getName()->willReturn('default'); - $argument21->getTypeHint()->willReturn(null); - $argument21->isOptional()->willReturn(true); - $argument21->getDefault()->willReturn('ever.zet@gmail.com'); - $argument21->isPassedByReference()->willReturn(false); - - $argument31->getName()->willReturn('refValue'); - $argument31->getTypeHint()->willReturn(null); - $argument31->isOptional()->willReturn(false); - $argument31->getDefault()->willReturn(); - $argument31->isPassedByReference()->willReturn(false); - - $code = $this->generate('CustomClass', $class); - $expected = <<<'PHP' -namespace { -class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator { -public $name; -private $email; - -public static function getName(array $fullname = NULL, \ReflectionClass $class): string { -return $this->name; -} -protected function getEmail( $default = 'ever.zet@gmail.com') { -return $this->email; -} -public function &getRefValue( $refValue) { -return $this->refValue; -} - -} -} -PHP; - $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); - $code->shouldBe($expected); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $class - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method - * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument - */ - function it_overrides_properly_methods_with_args_passed_by_reference( - $class, $method, $argument - ) - { - $class->getParentClass()->willReturn('RuntimeException'); - $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); - $class->getProperties()->willReturn(array()); - $class->getMethods()->willReturn(array($method)); - - $method->getName()->willReturn('getName'); - $method->getVisibility()->willReturn('public'); - $method->isStatic()->willReturn(false); - $method->getArguments()->willReturn(array($argument)); - $method->hasReturnType()->willReturn(false); - $method->returnsReference()->willReturn(false); - $method->getCode()->willReturn('return $this->name;'); - - $argument->getName()->willReturn('fullname'); - $argument->getTypeHint()->willReturn('array'); - $argument->isOptional()->willReturn(true); - $argument->getDefault()->willReturn(null); - $argument->isPassedByReference()->willReturn(true); - - $code = $this->generate('CustomClass', $class); - $expected =<<<'PHP' -namespace { -class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface { - -public function getName(array &$fullname = NULL) { -return $this->name; -} - -} -} -PHP; - $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); - $code->shouldBe($expected); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $class - */ - function it_generates_empty_class_for_empty_ClassNode($class) - { - $class->getParentClass()->willReturn('stdClass'); - $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); - $class->getProperties()->willReturn(array()); - $class->getMethods()->willReturn(array()); - - $code = $this->generate('CustomClass', $class); - $expected =<<<'PHP' -namespace { -class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface { - - -} -} -PHP; - $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); - $code->shouldBe($expected); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $class - */ - function it_wraps_class_in_namespace_if_it_is_namespaced($class) - { - $class->getParentClass()->willReturn('stdClass'); - $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); - $class->getProperties()->willReturn(array()); - $class->getMethods()->willReturn(array()); - - $code = $this->generate('My\Awesome\CustomClass', $class); - $expected =<<<'PHP' -namespace My\Awesome { -class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface { - - -} -} -PHP; - $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); - $code->shouldBe($expected); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php deleted file mode 100644 index c7b57009..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php +++ /dev/null @@ -1,44 +0,0 @@ -beConstructedWith($generator); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $class - */ - function it_evaluates_code_generated_by_ClassCodeGenerator($generator, $class) - { - $generator->generate('stdClass', $class)->shouldBeCalled()->willReturn( - 'return 42;' - ); - - $this->create('stdClass', $class)->shouldReturn(42); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ClassNode $class - */ - function it_throws_an_exception_if_class_does_not_exist_after_evaluation($generator, $class) - { - $generator->generate('CustomClass', $class)->shouldBeCalled()->willReturn( - 'return 42;' - ); - - $class->getParentClass()->willReturn('stdClass'); - $class->getInterfaces()->willReturn(array('Interface1', 'Interface2')); - - $this->shouldThrow('Prophecy\Exception\Doubler\ClassCreatorException') - ->duringCreate('CustomClass', $class); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassMirrorSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassMirrorSpec.php deleted file mode 100644 index 161f8509..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassMirrorSpec.php +++ /dev/null @@ -1,610 +0,0 @@ -getName()->willReturn('Custom\ClassName'); - $class->isInterface()->willReturn(false); - $class->isFinal()->willReturn(false); - $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array()); - $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array( - $method1, $method2, $method3 - )); - - $method1->getName()->willReturn('getName'); - $method2->getName()->willReturn('isPublic'); - $method3->getName()->willReturn('isAbstract'); - - $method1->isFinal()->willReturn(false); - $method2->isFinal()->willReturn(false); - $method3->isFinal()->willReturn(false); - - $method1->isProtected()->willReturn(false); - $method2->isProtected()->willReturn(false); - $method3->isProtected()->willReturn(false); - - $method1->isStatic()->willReturn(false); - $method2->isStatic()->willReturn(false); - $method3->isStatic()->willReturn(false); - - $method1->returnsReference()->willReturn(false); - $method2->returnsReference()->willReturn(false); - $method3->returnsReference()->willReturn(false); - - $method1->getParameters()->willReturn(array()); - $method2->getParameters()->willReturn(array()); - $method3->getParameters()->willReturn(array()); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $method1->hasReturnType()->willReturn(false); - $method2->hasReturnType()->willReturn(false); - $method3->hasReturnType()->willReturn(false); - } - - $classNode = $this->reflect($class, array()); - $classNode->shouldBeAnInstanceOf('Prophecy\Doubler\Generator\Node\ClassNode'); - $classNode->getParentClass()->shouldReturn('Custom\ClassName'); - - $methodNodes = $classNode->getMethods(); - $methodNodes->shouldHaveCount(3); - - $classNode->hasMethod('getName')->shouldReturn(true); - $classNode->hasMethod('isPublic')->shouldReturn(true); - $classNode->hasMethod('isAbstract')->shouldReturn(true); - } - - /** - * @param ReflectionClass $class - * @param ReflectionMethod $method - * @param ReflectionParameter $parameter - */ - function it_changes_argument_names_if_they_are_varying($class, $method, $parameter) - { - - $class->getName()->willReturn('Custom\ClassName'); - $class->isInterface()->willReturn(false); - $class->isFinal()->willReturn(false); - $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method)); - $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array()); - - $method->getParameters()->willReturn(array($parameter)); - $method->getName()->willReturn('methodName'); - $method->isFinal()->willReturn(false); - $method->isProtected()->willReturn(false); - $method->isStatic()->willReturn(false); - $method->returnsReference()->willReturn(false); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $method->hasReturnType()->willReturn(false); - } - - $parameter->getName()->willReturn('...'); - $parameter->isDefaultValueAvailable()->willReturn(true); - $parameter->getDefaultValue()->willReturn(null); - $parameter->isPassedByReference()->willReturn(false); - $parameter->getClass()->willReturn($class); - - $classNode = $this->reflect($class, array()); - - $methodNodes = $classNode->getMethods(); - - $argumentNodes = $methodNodes['methodName']->getArguments(); - $argumentNode = $argumentNodes[0]; - - $argumentNode->getName()->shouldReturn('__dot_dot_dot__'); - } - - /** - * @param ReflectionClass $class - * @param ReflectionMethod $method - */ - function it_reflects_protected_abstract_methods($class, $method) - { - $class->getName()->willReturn('Custom\ClassName'); - $class->isInterface()->willReturn(false); - $class->isFinal()->willReturn(false); - $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array($method)); - $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array()); - - $method->isProtected()->willReturn(true); - $method->isStatic()->willReturn(false); - $method->getParameters()->willReturn(array()); - $method->getName()->willReturn('innerDetail'); - $method->returnsReference()->willReturn(false); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $method->hasReturnType()->willReturn(false); - } - - $classNode = $this->reflect($class, array()); - $classNode->shouldBeAnInstanceOf('Prophecy\Doubler\Generator\Node\ClassNode'); - $classNode->getParentClass()->shouldReturn('Custom\ClassName'); - - $methodNodes = $classNode->getMethods(); - $methodNodes->shouldHaveCount(1); - - $methodNodes['innerDetail']->getVisibility()->shouldReturn('protected'); - } - - /** - * @param ReflectionClass $class - * @param ReflectionMethod $method - */ - function it_reflects_public_static_methods($class, $method) - { - $class->getName()->willReturn('Custom\ClassName'); - $class->isInterface()->willReturn(false); - $class->isFinal()->willReturn(false); - $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array($method)); - $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array()); - - $method->isProtected()->willReturn(true); - $method->isStatic()->willReturn(true); - $method->getParameters()->willReturn(array()); - $method->getName()->willReturn('innerDetail'); - $method->returnsReference()->willReturn(false); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $method->hasReturnType()->willReturn(false); - } - - $classNode = $this->reflect($class, array()); - $classNode->shouldBeAnInstanceOf('Prophecy\Doubler\Generator\Node\ClassNode'); - $classNode->getParentClass()->shouldReturn('Custom\ClassName'); - - $methodNodes = $classNode->getMethods(); - $methodNodes->shouldHaveCount(1); - - $methodNodes['innerDetail']->getVisibility()->shouldReturn('protected'); - $methodNodes['innerDetail']->isStatic()->shouldReturn(true); - } - - /** - * @param ReflectionClass $class - * @param ReflectionMethod $method - * @param ReflectionParameter $param1 - * @param ReflectionParameter $param2 - * @param ReflectionClass $typeHint - * @param ReflectionParameter $param3 - */ - function it_properly_reads_methods_arguments_with_types( - $class, $method, $param1, $param2, $typeHint, $param3 - ) - { - $class->getName()->willReturn('Custom\ClassName'); - $class->isInterface()->willReturn(false); - $class->isFinal()->willReturn(false); - $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array()); - $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method)); - - $method->getName()->willReturn('methodWithArgs'); - $method->isFinal()->willReturn(false); - $method->isProtected()->willReturn(true); - $method->isStatic()->willReturn(false); - $method->returnsReference()->willReturn(false); - $method->getParameters()->willReturn(array($param1, $param2, $param3)); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $method->hasReturnType()->willReturn(false); - } - - $param1->getName()->willReturn('arg_1'); - $param1->isArray()->willReturn(true); - $param1->getClass()->willReturn(null); - $param1->isDefaultValueAvailable()->willReturn(true); - $param1->isPassedByReference()->willReturn(false); - $param1->allowsNull()->willReturn(false); - $param1->getDefaultValue()->willReturn(array()); - - $param2->getName()->willReturn('arg2'); - $param2->isArray()->willReturn(false); - $param2->getClass()->willReturn($typeHint); - $param2->isDefaultValueAvailable()->willReturn(false); - $param2->isOptional()->willReturn(false); - $param2->isPassedByReference()->willReturn(false); - $param2->allowsNull()->willReturn(false); - $typeHint->getName()->willReturn('ArrayAccess'); - - $param3->getName()->willReturn('arg_3'); - $param3->isArray()->willReturn(false); - if (version_compare(PHP_VERSION, '5.4', '>=')) { - $param3->isCallable()->willReturn(true); - } - $param3->getClass()->willReturn(null); - $param3->isOptional()->willReturn(false); - $param3->isDefaultValueAvailable()->willReturn(false); - $param3->isPassedByReference()->willReturn(false); - $param3->allowsNull()->willReturn(true); - - $classNode = $this->reflect($class, array()); - $methodNodes = $classNode->getMethods(); - $argNodes = $methodNodes['methodWithArgs']->getArguments(); - - $argNodes[0]->getName()->shouldReturn('arg_1'); - $argNodes[0]->getTypeHint()->shouldReturn('array'); - $argNodes[0]->isOptional()->shouldReturn(true); - $argNodes[0]->getDefault()->shouldReturn(array()); - - $argNodes[1]->getName()->shouldReturn('arg2'); - $argNodes[1]->getTypeHint()->shouldReturn('ArrayAccess'); - $argNodes[1]->isOptional()->shouldReturn(false); - - $argNodes[2]->getName()->shouldReturn('arg_3'); - if (version_compare(PHP_VERSION, '5.4', '>=')) { - $argNodes[2]->getTypeHint()->shouldReturn('callable'); - $argNodes[2]->isOptional()->shouldReturn(true); - $argNodes[2]->getDefault()->shouldReturn(null); - } else { - $argNodes[2]->isOptional()->shouldReturn(false); - } - } - - /** - * @param ReflectionClass $class - * @param ReflectionMethod $method - * @param ReflectionParameter $param1 - */ - function it_marks_required_args_without_types_as_not_optional( - $class, $method, $param1 - ) - { - $class->getName()->willReturn('Custom\ClassName'); - $class->isInterface()->willReturn(false); - $class->isFinal()->willReturn(false); - $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array()); - $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method)); - - $method->getName()->willReturn('methodWithArgs'); - $method->isFinal()->willReturn(false); - $method->isProtected()->willReturn(false); - $method->isStatic()->willReturn(false); - $method->returnsReference()->willReturn(false); - $method->getParameters()->willReturn(array($param1)); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $method->hasReturnType()->willReturn(false); - } - - $param1->getName()->willReturn('arg_1'); - $param1->isArray()->willReturn(false); - if (version_compare(PHP_VERSION, '5.4', '>=')) { - $param1->isCallable()->willReturn(false); - } - $param1->getClass()->willReturn(null); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $param1->hasType()->willReturn(false); - } - - $param1->isDefaultValueAvailable()->willReturn(false); - $param1->isOptional()->willReturn(false); - $param1->isPassedByReference()->willReturn(false); - $param1->allowsNull()->willReturn(true); - if (defined('HHVM_VERSION')) { - $param1->getTypehintText()->willReturn(null); - } - - $classNode = $this->reflect($class, array()); - $methodNodes = $classNode->getMethods(); - $argNodes = $methodNodes['methodWithArgs']->getArguments(); - - $argNodes[0]->isOptional()->shouldReturn(false); - } - - /** - * @param ReflectionClass $class - * @param ReflectionMethod $method - * @param ReflectionParameter $param1 - * @param ReflectionParameter $param2 - * @param ReflectionClass $typeHint - */ - function it_marks_passed_by_reference_args_as_passed_by_reference( - $class, $method, $param1, $param2, $typeHint - ) - { - $class->getName()->willReturn('Custom\ClassName'); - $class->isInterface()->willReturn(false); - $class->isFinal()->willReturn(false); - $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array()); - $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method)); - - $method->getName()->willReturn('methodWithArgs'); - $method->isFinal()->willReturn(false); - $method->isProtected()->willReturn(false); - $method->isStatic()->willReturn(false); - $method->returnsReference()->willReturn(false); - $method->getParameters()->willReturn(array($param1, $param2)); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $method->hasReturnType()->willReturn(false); - } - - $param1->getName()->willReturn('arg_1'); - $param1->isArray()->willReturn(false); - if (version_compare(PHP_VERSION, '5.4', '>=')) { - $param1->isCallable()->willReturn(false); - } - $param1->getClass()->willReturn(null); - $param1->isDefaultValueAvailable()->willReturn(false); - $param1->isOptional()->willReturn(true); - $param1->isPassedByReference()->willReturn(true); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $param1->hasType()->willReturn(false); - } - - $param1->allowsNull()->willReturn(false); - if (defined('HHVM_VERSION')) { - $param1->getTypehintText()->willReturn(null); - } - - $param2->getName()->willReturn('arg2'); - $param2->isArray()->willReturn(false); - $param2->getClass()->willReturn($typeHint); - $param2->isDefaultValueAvailable()->willReturn(false); - $param2->isOptional()->willReturn(false); - $param2->isPassedByReference()->willReturn(false); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $param2->hasType()->willReturn(false); - } - - $param2->allowsNull()->willReturn(false); - $typeHint->getName()->willReturn('ArrayAccess'); - - $classNode = $this->reflect($class, array()); - $methodNodes = $classNode->getMethods(); - $argNodes = $methodNodes['methodWithArgs']->getArguments(); - - $argNodes[0]->isPassedByReference()->shouldReturn(true); - $argNodes[1]->isPassedByReference()->shouldReturn(false); - } - - /** - * @param ReflectionClass $class - */ - function it_throws_an_exception_if_class_is_final($class) - { - $class->isInterface()->willReturn(false); - $class->isFinal()->willReturn(true); - $class->getName()->willReturn('Custom\ClassName'); - - $this->shouldThrow('Prophecy\Exception\Doubler\ClassMirrorException') - ->duringReflect($class, array()); - } - - /** - * @param ReflectionClass $class - * @param ReflectionMethod $method - */ - function it_ignores_final_methods($class, $method) - { - $class->getName()->willReturn('Custom\ClassName'); - $class->isInterface()->willReturn(false); - $class->isFinal()->willReturn(false); - $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array()); - $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method)); - - $method->isFinal()->willReturn(true); - $method->getName()->willReturn('finalImplementation'); - - $classNode = $this->reflect($class, array()); - $classNode->getMethods()->shouldHaveCount(0); - } - - /** - * @param ReflectionClass $interface - */ - function it_throws_an_exception_if_interface_provided_instead_of_class($interface) - { - $interface->isInterface()->willReturn(true); - $interface->getName()->willReturn('Custom\ClassName'); - - $this->shouldThrow('Prophecy\Exception\InvalidArgumentException') - ->duringReflect($interface, array()); - } - - /** - * @param ReflectionClass $interface1 - * @param ReflectionClass $interface2 - * @param ReflectionMethod $method1 - * @param ReflectionMethod $method2 - * @param ReflectionMethod $method3 - */ - function it_reflects_all_interfaces_methods( - $interface1, $interface2, $method1, $method2, $method3 - ) - { - $interface1->getName()->willReturn('MyInterface1'); - $interface2->getName()->willReturn('MyInterface2'); - - $interface1->isInterface()->willReturn(true); - $interface2->isInterface()->willReturn(true); - - $interface1->getMethods()->willReturn(array($method1)); - $interface2->getMethods()->willReturn(array($method2, $method3)); - - $method1->getName()->willReturn('getName'); - $method2->getName()->willReturn('isPublic'); - $method3->getName()->willReturn('isAbstract'); - - $method1->isProtected()->willReturn(false); - $method2->isProtected()->willReturn(false); - $method3->isProtected()->willReturn(false); - - $method1->returnsReference()->willReturn(false); - $method2->returnsReference()->willReturn(false); - $method3->returnsReference()->willReturn(false); - - $method1->isStatic()->willReturn(false); - $method2->isStatic()->willReturn(false); - $method3->isStatic()->willReturn(false); - - $method1->getParameters()->willReturn(array()); - $method2->getParameters()->willReturn(array()); - $method3->getParameters()->willReturn(array()); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $method1->hasReturnType()->willReturn(false); - $method2->hasReturnType()->willReturn(false); - $method3->hasReturnType()->willReturn(false); - } - - $classNode = $this->reflect(null, array($interface1, $interface2)); - - $classNode->shouldBeAnInstanceOf('Prophecy\Doubler\Generator\Node\ClassNode'); - $classNode->getParentClass()->shouldReturn('stdClass'); - $classNode->getInterfaces()->shouldReturn(array( - 'Prophecy\Doubler\Generator\ReflectionInterface', 'MyInterface2', 'MyInterface1', - )); - - $methodNodes = $classNode->getMethods(); - $methodNodes->shouldHaveCount(3); - - $classNode->hasMethod('getName')->shouldReturn(true); - $classNode->hasMethod('isPublic')->shouldReturn(true); - $classNode->hasMethod('isAbstract')->shouldReturn(true); - } - - /** - * @param ReflectionClass $class - * @param ReflectionMethod $method1 - * @param ReflectionMethod $method2 - * @param ReflectionMethod $method3 - */ - function it_ignores_virtually_private_methods($class, $method1, $method2, $method3) - { - $class->getName()->willReturn('SomeClass'); - $class->isInterface()->willReturn(false); - $class->isFinal()->willReturn(false); - $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array()); - $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method1, $method2, $method3)); - - $method1->getName()->willReturn('_getName'); - $method2->getName()->willReturn('__toString'); - $method3->getName()->willReturn('isAbstract'); - - $method1->isFinal()->willReturn(false); - $method2->isFinal()->willReturn(false); - $method3->isFinal()->willReturn(false); - - $method1->isProtected()->willReturn(false); - $method2->isProtected()->willReturn(false); - $method3->isProtected()->willReturn(false); - - $method1->isStatic()->willReturn(false); - $method2->isStatic()->willReturn(false); - $method3->isStatic()->willReturn(false); - - $method1->returnsReference()->willReturn(false); - $method2->returnsReference()->willReturn(false); - $method3->returnsReference()->willReturn(false); - - $method1->getParameters()->willReturn(array()); - $method2->getParameters()->willReturn(array()); - $method3->getParameters()->willReturn(array()); - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - $method1->hasReturnType()->willReturn(false); - $method2->hasReturnType()->willReturn(false); - $method3->hasReturnType()->willReturn(false); - } - - $classNode = $this->reflect($class, array()); - $methodNodes = $classNode->getMethods(); - $methodNodes->shouldHaveCount(2); - - $classNode->hasMethod('isAbstract')->shouldReturn(true); - } - - /** - * @param ReflectionClass $class - * @param ReflectionMethod $method - */ - function it_does_not_throw_exception_for_virtually_private_finals($class, $method) - { - $class->getName()->willReturn('SomeClass'); - $class->isInterface()->willReturn(false); - $class->isFinal()->willReturn(false); - $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array()); - $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method)); - - $method->getName()->willReturn('__toString'); - $method->isFinal()->willReturn(true); - - $this->shouldNotThrow()->duringReflect($class, array()); - } - - /** - * @param ReflectionClass $class - */ - function it_throws_an_exception_if_class_provided_in_interfaces_list($class) - { - $class->getName()->willReturn('MyClass'); - $class->isInterface()->willReturn(false); - - $this->shouldThrow('InvalidArgumentException') - ->duringReflect(null, array($class)); - } - - function it_throws_an_exception_if_not_reflection_provided_as_interface() - { - $this->shouldThrow('InvalidArgumentException') - ->duringReflect(null, array(null)); - } - - function it_doesnt_fail_to_typehint_nonexistent_FQCN() - { - $classNode = $this->reflect(new ReflectionClass('spec\Prophecy\Doubler\Generator\OptionalDepsClass'), array()); - $method = $classNode->getMethod('iHaveAStrangeTypeHintedArg'); - $arguments = $method->getArguments(); - $arguments[0]->getTypeHint()->shouldBe('I\Simply\Am\Nonexistent'); - } - - function it_doesnt_fail_to_typehint_nonexistent_RQCN() - { - $classNode = $this->reflect(new ReflectionClass('spec\Prophecy\Doubler\Generator\OptionalDepsClass'), array()); - $method = $classNode->getMethod('iHaveAnEvenStrangerTypeHintedArg'); - $arguments = $method->getArguments(); - $arguments[0]->getTypeHint()->shouldBe('I\Simply\Am\Not'); - } - - function it_doesnt_use_scalar_typehints() - { - $classNode = $this->reflect(new ReflectionClass('ReflectionMethod'), array()); - $method = $classNode->getMethod('export'); - $arguments = $method->getArguments(); - $arguments[0]->getTypeHint()->shouldReturn(null); - $arguments[1]->getTypeHint()->shouldReturn(null); - $arguments[2]->getTypeHint()->shouldReturn(null); - } -} - -class OptionalDepsClass -{ - public function iHaveAStrangeTypeHintedArg(\I\Simply\Am\Nonexistent $class) - { - } - - public function iHaveAnEvenStrangerTypeHintedArg(Simply\Am\Not $class) - { - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php deleted file mode 100644 index cea578fa..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php +++ /dev/null @@ -1,62 +0,0 @@ -beConstructedWith('name'); - } - - function it_is_not_be_passed_by_reference_by_default() - { - $this->shouldNotBePassedByReference(); - } - - function it_is_passed_by_reference_if_marked() - { - $this->setAsPassedByReference(); - $this->shouldBePassedByReference(); - } - - function it_has_name_with_which_it_was_been_constructed() - { - $this->getName()->shouldReturn('name'); - } - - function it_has_no_typehint_by_default() - { - $this->getTypeHint()->shouldReturn(null); - } - - function its_typeHint_is_mutable() - { - $this->setTypeHint('array'); - $this->getTypeHint()->shouldReturn('array'); - } - - function it_does_not_have_default_value_by_default() - { - $this->getDefault()->shouldReturn(null); - } - - function it_is_not_optional_by_default() - { - $this->isOptional()->shouldReturn(false); - } - - function its_default_is_mutable() - { - $this->setDefault(array()); - $this->getDefault()->shouldReturn(array()); - } - - function it_is_marked_as_optional_when_default_is_set() - { - $this->setDefault(null); - $this->isOptional()->shouldReturn(true); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php deleted file mode 100644 index 18f0e1cc..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php +++ /dev/null @@ -1,154 +0,0 @@ -getParentClass()->shouldReturn('stdClass'); - } - - function its_parentClass_is_mutable() - { - $this->setParentClass('Exception'); - $this->getParentClass()->shouldReturn('Exception'); - } - - function its_parentClass_is_set_to_stdClass_if_user_set_null() - { - $this->setParentClass(null); - $this->getParentClass()->shouldReturn('stdClass'); - } - - function it_does_not_implement_any_interface_by_default() - { - $this->getInterfaces()->shouldHaveCount(0); - } - - function its_addInterface_adds_item_to_the_list_of_implemented_interfaces() - { - $this->addInterface('MyInterface'); - $this->getInterfaces()->shouldHaveCount(1); - } - - function its_hasInterface_returns_true_if_class_implements_interface() - { - $this->addInterface('MyInterface'); - $this->hasInterface('MyInterface')->shouldReturn(true); - } - - function its_hasInterface_returns_false_if_class_does_not_implements_interface() - { - $this->hasInterface('MyInterface')->shouldReturn(false); - } - - function it_supports_implementation_of_multiple_interfaces() - { - $this->addInterface('MyInterface'); - $this->addInterface('MySecondInterface'); - $this->getInterfaces()->shouldHaveCount(2); - } - - function it_ignores_same_interfaces_added_twice() - { - $this->addInterface('MyInterface'); - $this->addInterface('MyInterface'); - - $this->getInterfaces()->shouldHaveCount(1); - $this->getInterfaces()->shouldReturn(array('MyInterface')); - } - - function it_does_not_have_methods_by_default() - { - $this->getMethods()->shouldHaveCount(0); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method1 - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method2 - */ - function it_can_has_methods($method1, $method2) - { - $method1->getName()->willReturn('__construct'); - $method2->getName()->willReturn('getName'); - - $this->addMethod($method1); - $this->addMethod($method2); - - $this->getMethods()->shouldReturn(array( - '__construct' => $method1, - 'getName' => $method2 - )); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method - */ - function its_hasMethod_returns_true_if_method_exists($method) - { - $method->getName()->willReturn('getName'); - - $this->addMethod($method); - - $this->hasMethod('getName')->shouldReturn(true); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method - */ - function its_getMethod_returns_method_by_name($method) - { - $method->getName()->willReturn('getName'); - - $this->addMethod($method); - - $this->getMethod('getName')->shouldReturn($method); - } - - function its_hasMethod_returns_false_if_method_does_not_exists() - { - $this->hasMethod('getName')->shouldReturn(false); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\MethodNode $method - */ - function its_hasMethod_returns_false_if_method_has_been_removed($method) - { - $method->getName()->willReturn('getName'); - $this->addMethod($method); - $this->removeMethod('getName'); - - $this->hasMethod('getName')->shouldReturn(false); - } - - - function it_does_not_have_properties_by_default() - { - $this->getProperties()->shouldHaveCount(0); - } - - function it_is_able_to_have_properties() - { - $this->addProperty('title'); - $this->addProperty('text', 'private'); - $this->getProperties()->shouldReturn(array( - 'title' => 'public', - 'text' => 'private' - )); - } - - function its_addProperty_does_not_accept_unsupported_visibility() - { - $this->shouldThrow('InvalidArgumentException')->duringAddProperty('title', 'town'); - } - - function its_addProperty_lowercases_visibility_before_setting() - { - $this->addProperty('text', 'PRIVATE'); - $this->getProperties()->shouldReturn(array('text' => 'private')); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php deleted file mode 100644 index d67646da..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php +++ /dev/null @@ -1,138 +0,0 @@ -beConstructedWith('getTitle'); - } - - function it_has_a_name() - { - $this->getName()->shouldReturn('getTitle'); - } - - function it_has_public_visibility_by_default() - { - $this->getVisibility()->shouldReturn('public'); - } - - function its_visibility_is_mutable() - { - $this->setVisibility('private'); - $this->getVisibility()->shouldReturn('private'); - } - - function it_is_not_static_by_default() - { - $this->shouldNotBeStatic(); - } - - function it_does_not_return_a_reference_by_default() - { - $this->returnsReference()->shouldReturn(false); - } - - function it_should_be_settable_as_returning_a_reference_through_setter() - { - $this->setReturnsReference(); - $this->returnsReference()->shouldReturn(true); - } - - function it_should_be_settable_as_static_through_setter() - { - $this->setStatic(); - $this->shouldBeStatic(); - } - - function it_accepts_only_supported_visibilities() - { - $this->shouldThrow('InvalidArgumentException')->duringSetVisibility('stealth'); - } - - function it_lowercases_visibility_before_setting_it() - { - $this->setVisibility('Public'); - $this->getVisibility()->shouldReturn('public'); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument1 - * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument2 - */ - function its_useParentCode_causes_method_to_call_parent($argument1, $argument2) - { - $argument1->getName()->willReturn('objectName'); - $argument2->getName()->willReturn('default'); - - $this->addArgument($argument1); - $this->addArgument($argument2); - - $this->useParentCode(); - - $this->getCode()->shouldReturn( - 'return parent::getTitle($objectName, $default);' - ); - } - - function its_code_is_mutable() - { - $this->setCode('echo "code";'); - $this->getCode()->shouldReturn('echo "code";'); - } - - function its_reference_returning_methods_will_generate_exceptions() - { - $this->setCode('echo "code";'); - $this->setReturnsReference(); - $this->getCode()->shouldReturn("throw new \Prophecy\Exception\Doubler\ReturnByReferenceException('Returning by reference not supported', get_class(\$this), 'getTitle');"); - } - - function its_setCode_provided_with_null_cleans_method_body() - { - $this->setCode(null); - $this->getCode()->shouldReturn(''); - } - - function it_is_constructable_with_code() - { - $this->beConstructedWith('getTitle', 'die();'); - $this->getCode()->shouldReturn('die();'); - } - - function it_does_not_have_arguments_by_default() - { - $this->getArguments()->shouldHaveCount(0); - } - - /** - * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument1 - * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument2 - */ - function it_supports_adding_arguments($argument1, $argument2) - { - $this->addArgument($argument1); - $this->addArgument($argument2); - - $this->getArguments()->shouldReturn(array($argument1, $argument2)); - } - - function it_does_not_have_return_type_by_default() - { - $this->hasReturnType()->shouldReturn(false); - } - - function it_setReturnType_sets_return_type() - { - $returnType = 'string'; - - $this->setReturnType($returnType); - - $this->hasReturnType()->shouldReturn(true); - $this->getReturnType()->shouldReturn($returnType); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php deleted file mode 100644 index 7026126f..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php +++ /dev/null @@ -1,96 +0,0 @@ -beConstructedWith($doubler); - } - - /** - * @param \Prophecy\Prophecy\ProphecySubjectInterface $double - */ - function it_returns_anonymous_double_instance_by_default($doubler, $double) - { - $doubler->double(null, array())->willReturn($double); - - $this->getInstance()->shouldReturn($double); - } - - /** - * @param \Prophecy\Prophecy\ProphecySubjectInterface $double - * @param \ReflectionClass $class - */ - function it_returns_class_double_instance_if_set($doubler, $double, $class) - { - $doubler->double($class, array())->willReturn($double); - - $this->setParentClass($class); - - $this->getInstance()->shouldReturn($double); - } - - /** - * @param \Prophecy\Prophecy\ProphecySubjectInterface $double1 - * @param \Prophecy\Prophecy\ProphecySubjectInterface $double2 - */ - function it_returns_same_double_instance_if_called_2_times( - $doubler, $double1, $double2 - ) - { - $doubler->double(null, array())->willReturn($double1); - $doubler->double(null, array())->willReturn($double2); - - $this->getInstance()->shouldReturn($double2); - $this->getInstance()->shouldReturn($double2); - } - - function its_setParentClass_throws_ClassNotFoundException_if_class_not_found() - { - $this->shouldThrow('Prophecy\Exception\Doubler\ClassNotFoundException') - ->duringSetParentClass('SomeUnexistingClass'); - } - - /** - * @param \Prophecy\Prophecy\ProphecySubjectInterface $double - */ - function its_setParentClass_throws_exception_if_prophecy_is_already_created( - $doubler, $double - ) - { - $doubler->double(null, array())->willReturn($double); - - $this->getInstance(); - - $this->shouldThrow('Prophecy\Exception\Doubler\DoubleException') - ->duringSetParentClass('stdClass'); - } - - function its_addInterface_throws_InterfaceNotFoundException_if_no_interface_found() - { - $this->shouldThrow('Prophecy\Exception\Doubler\InterfaceNotFoundException') - ->duringAddInterface('SomeUnexistingInterface'); - } - - /** - * @param \Prophecy\Prophecy\ProphecySubjectInterface $double - */ - function its_addInterface_throws_exception_if_prophecy_is_already_created( - $doubler, $double - ) - { - $doubler->double(null, array())->willReturn($double); - - $this->getInstance(); - - $this->shouldThrow('Prophecy\Exception\Doubler\DoubleException') - ->duringAddInterface('ArrayAccess'); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php deleted file mode 100644 index a3e74919..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php +++ /dev/null @@ -1,72 +0,0 @@ -getName()->willReturn('stdClass'); - $this->name($class, array())->shouldStartWith('Double\stdClass\\'); - } - - /** - * @param \ReflectionClass $class - */ - function its_name_generates_name_based_on_namespaced_class_reflection($class) - { - $class->getName()->willReturn('Some\Custom\Class'); - $this->name($class, array())->shouldStartWith('Double\Some\Custom\Class\P'); - } - - /** - * @param \ReflectionClass $interface1 - * @param \ReflectionClass $interface2 - */ - function its_name_generates_name_based_on_interface_shortnames($interface1, $interface2) - { - $interface1->getShortName()->willReturn('HandlerInterface'); - $interface2->getShortName()->willReturn('LoaderInterface'); - - $this->name(null, array($interface1, $interface2))->shouldStartWith( - 'Double\HandlerInterface\LoaderInterface\P' - ); - } - - function it_generates_proper_name_for_no_class_and_interfaces_list() - { - $this->name(null, array())->shouldStartWith('Double\stdClass\P'); - } - - /** - * @param \ReflectionClass $class - * @param \ReflectionClass $interface1 - * @param \ReflectionClass $interface2 - */ - function its_name_generates_name_based_only_on_class_if_its_available( - $class, $interface1, $interface2 - ) - { - $class->getName()->willReturn('Some\Custom\Class'); - $interface1->getShortName()->willReturn('HandlerInterface'); - $interface2->getShortName()->willReturn('LoaderInterface'); - - $this->name($class, array($interface1, $interface2))->shouldStartWith( - 'Double\Some\Custom\Class\P' - ); - } - - public function getMatchers() - { - return array( - 'startWith' => function ($subject, $string) { - return 0 === strpos($subject, $string); - }, - ); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php deleted file mode 100644 index 6fd1a5c3..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php +++ /dev/null @@ -1,32 +0,0 @@ -beConstructedWith('msg', $objectProphecy, 'getName', array('arg1', 'arg2')); - } - - function it_is_prophecy_exception() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ObjectProphecyException'); - } - - function it_exposes_method_name_through_getter() - { - $this->getMethodName()->shouldReturn('getName'); - } - - function it_exposes_arguments_through_getter() - { - $this->getArguments()->shouldReturn(array('arg1', 'arg2')); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php deleted file mode 100644 index 58241385..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php +++ /dev/null @@ -1,28 +0,0 @@ -beConstructedWith('', $node); - } - - function it_is_a_prophecy_exception() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); - $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); - } - - function it_contains_a_reflected_node($node) - { - $this->getClassNode()->shouldReturn($node); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php deleted file mode 100644 index 21e31a34..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php +++ /dev/null @@ -1,27 +0,0 @@ -beConstructedWith('', $class); - } - - function it_is_a_prophecy_exception() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); - $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); - } - - function it_contains_a_reflected_class_link($class) - { - $this->getReflectedClass()->shouldReturn($class); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php deleted file mode 100644 index 251512b9..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php +++ /dev/null @@ -1,25 +0,0 @@ -beConstructedWith('msg', 'CustomClass'); - } - - function it_is_a_prophecy_exception() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); - $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoubleException'); - } - - function its_getClassname_returns_classname() - { - $this->getClassname()->shouldReturn('CustomClass'); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php deleted file mode 100644 index 6fe5a19a..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php +++ /dev/null @@ -1,14 +0,0 @@ -shouldBeAnInstanceOf('RuntimeException'); - $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php deleted file mode 100644 index ad1a439e..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php +++ /dev/null @@ -1,24 +0,0 @@ -beConstructedWith('msg', 'CustomInterface'); - } - - function it_extends_ClassNotFoundException() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\ClassNotFoundException'); - } - - function its_getClassname_returns_classname() - { - $this->getClassname()->shouldReturn('CustomInterface'); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php deleted file mode 100644 index a889dd7e..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php +++ /dev/null @@ -1,40 +0,0 @@ -beConstructedWith('', 'User', 'getName', array(1, 2, 3)); - } - - function it_is_DoubleException() - { - $this->shouldHaveType('Prophecy\Exception\Doubler\DoubleException'); - } - - function it_has_MethodName() - { - $this->getMethodName()->shouldReturn('getName'); - } - - function it_has_classnamej() - { - $this->getClassname()->shouldReturn('User'); - } - - function it_has_an_arguments_list() - { - $this->getArguments()->shouldReturn(array(1, 2, 3)); - } - - function it_has_a_default_null_argument_list() - { - $this->beConstructedWith('', 'User', 'getName'); - $this->getArguments()->shouldReturn(null); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php deleted file mode 100644 index 22a5ebdb..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php +++ /dev/null @@ -1,57 +0,0 @@ -beConstructedWith(null); - } - - function it_is_prediction_exception() - { - $this->shouldBeAnInstanceOf('RuntimeException'); - $this->shouldBeAnInstanceOf('Prophecy\Exception\Prediction\PredictionException'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - */ - function it_can_store_objectProphecy_link($object) - { - $this->setObjectProphecy($object); - $this->getObjectProphecy()->shouldReturn($object); - } - - function it_should_not_have_exceptions_at_the_beginning() - { - $this->getExceptions()->shouldHaveCount(0); - } - - /** - * @param \Prophecy\Exception\Prediction\PredictionException $exception - */ - function it_should_append_exception_through_append_method($exception) - { - $exception->getMessage()->willReturn('Exception #1'); - - $this->append($exception); - - $this->getExceptions()->shouldReturn(array($exception)); - } - - /** - * @param \Prophecy\Exception\Prediction\PredictionException $exception - */ - function it_should_update_message_during_append($exception) - { - $exception->getMessage()->willReturn('Exception #1'); - - $this->append($exception); - - $this->getMessage()->shouldReturn(" Exception #1"); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php deleted file mode 100644 index 473f1a2d..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php +++ /dev/null @@ -1,29 +0,0 @@ -getObjectProphecy()->willReturn($objectProphecy); - - $this->beConstructedWith('message', $methodProphecy); - } - - function it_is_PredictionException() - { - $this->shouldHaveType('Prophecy\Exception\Prediction\PredictionException'); - } - - function it_extends_MethodProphecyException() - { - $this->shouldHaveType('Prophecy\Exception\Prophecy\MethodProphecyException'); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php deleted file mode 100644 index adad975b..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php +++ /dev/null @@ -1,31 +0,0 @@ -getObjectProphecy()->willReturn($objectProphecy); - - $this->beConstructedWith('message', $methodProphecy, 5, array($call1, $call2)); - } - - function it_extends_UnexpectedCallsException() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Prediction\UnexpectedCallsException'); - } - - function it_should_expose_expectedCount_through_getter() - { - $this->getExpectedCount()->shouldReturn(5); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php deleted file mode 100644 index c0fe24d7..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php +++ /dev/null @@ -1,36 +0,0 @@ -getObjectProphecy()->willReturn($objectProphecy); - - $this->beConstructedWith('message', $methodProphecy, array($call1, $call2)); - } - - function it_is_PredictionException() - { - $this->shouldHaveType('Prophecy\Exception\Prediction\PredictionException'); - } - - function it_extends_MethodProphecyException() - { - $this->shouldHaveType('Prophecy\Exception\Prophecy\MethodProphecyException'); - } - - function it_should_expose_calls_list_through_getter($call1, $call2) - { - $this->getCalls()->shouldReturn(array($call1, $call2)); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php deleted file mode 100644 index 97cf9e10..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php +++ /dev/null @@ -1,30 +0,0 @@ -getObjectProphecy()->willReturn($objectProphecy); - - $this->beConstructedWith('message', $methodProphecy); - } - - function it_extends_DoubleException() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ObjectProphecyException'); - } - - function it_holds_a_stub_reference($methodProphecy) - { - $this->getMethodProphecy()->shouldReturn($methodProphecy); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php deleted file mode 100644 index bcacfedc..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php +++ /dev/null @@ -1,27 +0,0 @@ -beConstructedWith('message', $objectProphecy); - } - - function it_should_be_a_prophecy_exception() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ProphecyException'); - } - - function it_holds_double_reference($objectProphecy) - { - $this->getObjectProphecy()->shouldReturn($objectProphecy); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php deleted file mode 100644 index 3da8c599..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php +++ /dev/null @@ -1,42 +0,0 @@ -shouldHaveType('Prophecy\Prediction\PredictionInterface'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - * @param \Prophecy\Call\Call $call - */ - function it_does_nothing_if_there_is_more_than_one_call_been_made($object, $method, $call) - { - $this->check(array($call), $object, $method)->shouldReturn(null); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - */ - function it_throws_NoCallsException_if_no_calls_found($object, $method, $arguments) - { - $method->getObjectProphecy()->willReturn($object); - $method->getMethodName()->willReturn('getName'); - $method->getArgumentsWildcard()->willReturn($arguments); - $arguments->__toString()->willReturn('123'); - $object->reveal()->willReturn(new \stdClass()); - $object->findProphecyMethodCalls('getName', Argument::any())->willReturn(array()); - - $this->shouldThrow('Prophecy\Exception\Prediction\NoCallsException') - ->duringCheck(array(), $object, $method); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php deleted file mode 100644 index c6708927..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php +++ /dev/null @@ -1,54 +0,0 @@ -beConstructedWith(2); - } - - function it_is_prediction() - { - $this->shouldHaveType('Prophecy\Prediction\PredictionInterface'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - * @param \Prophecy\Call\Call $call1 - * @param \Prophecy\Call\Call $call2 - */ - function it_does_nothing_if_there_were_exact_amount_of_calls_being_made( - $object, $method, $call1, $call2 - ) - { - $this->check(array($call1, $call2), $object, $method)->shouldReturn(null); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - * @param \Prophecy\Call\Call $call - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - */ - function it_throws_UnexpectedCallsCountException_if_calls_found( - $object, $method, $call, $arguments - ) - { - $method->getObjectProphecy()->willReturn($object); - $method->getMethodName()->willReturn('getName'); - $method->getArgumentsWildcard()->willReturn($arguments); - $arguments->__toString()->willReturn('123'); - - $call->getMethodName()->willReturn('getName'); - $call->getArguments()->willReturn(array(5, 4, 'three')); - $call->getCallPlace()->willReturn('unknown'); - - $this->shouldThrow('Prophecy\Exception\Prediction\UnexpectedCallsCountException') - ->duringCheck(array($call), $object, $method); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php deleted file mode 100644 index 7fe475ef..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php +++ /dev/null @@ -1,36 +0,0 @@ -beConstructedWith('get_class'); - } - - function it_is_prediction() - { - $this->shouldHaveType('Prophecy\Prediction\PredictionInterface'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - * @param \Prophecy\Call\Call $call - */ - function it_proxies_call_to_callback($object, $method, $call) - { - $returnFirstCallCallback = function ($calls, $object, $method) { - throw new RuntimeException; - }; - - $this->beConstructedWith($returnFirstCallCallback); - - $this->shouldThrow('RuntimeException')->duringCheck(array($call), $object, $method); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php deleted file mode 100644 index a3ef9bcb..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php +++ /dev/null @@ -1,43 +0,0 @@ -shouldHaveType('Prophecy\Prediction\PredictionInterface'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_does_nothing_if_there_is_no_calls_made($object, $method) - { - $this->check(array(), $object, $method)->shouldReturn(null); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - * @param \Prophecy\Call\Call $call - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - */ - function it_throws_UnexpectedCallsException_if_calls_found($object, $method, $call, $arguments) - { - $method->getObjectProphecy()->willReturn($object); - $method->getMethodName()->willReturn('getName'); - $method->getArgumentsWildcard()->willReturn($arguments); - $arguments->__toString()->willReturn('123'); - - $call->getMethodName()->willReturn('getName'); - $call->getArguments()->willReturn(array(5, 4, 'three')); - $call->getCallPlace()->willReturn('unknown'); - - $this->shouldThrow('Prophecy\Exception\Prediction\UnexpectedCallsException') - ->duringCheck(array($call), $object, $method); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php deleted file mode 100644 index 5d99b1b1..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php +++ /dev/null @@ -1,110 +0,0 @@ -beConstructedWith('get_class'); - } - - function it_is_promise() - { - $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_should_execute_closure_callback($object, $method) - { - $firstArgumentCallback = function ($args) { - return $args[0]; - }; - - $this->beConstructedWith($firstArgumentCallback); - - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_should_execute_static_array_callback($object, $method) - { - $firstArgumentCallback = array('spec\Prophecy\Promise\ClassCallback', 'staticCallbackMethod'); - - $this->beConstructedWith($firstArgumentCallback); - - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_should_execute_instance_array_callback($object, $method) - { - $class = new ClassCallback(); - $firstArgumentCallback = array($class, 'callbackMethod'); - - $this->beConstructedWith($firstArgumentCallback); - - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_should_execute_string_function_callback($object, $method) - { - $firstArgumentCallback = 'spec\Prophecy\Promise\functionCallbackFirstArgument'; - - $this->beConstructedWith($firstArgumentCallback); - - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); - } - -} - -/** - * Class used to test callbackpromise - * - * @param array - * @return string - */ -class ClassCallback -{ - /** - * @param array $args - */ - function callbackMethod($args) - { - return $args[0]; - } - - /** - * @param array $args - */ - static function staticCallbackMethod($args) - { - return $args[0]; - } -} - -/** - * Callback function used to test callbackpromise - * - * @param array - * @return string - */ -function functionCallbackFirstArgument($args) -{ - return $args[0]; -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php deleted file mode 100644 index 4acb7bb0..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php +++ /dev/null @@ -1,41 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_should_return_first_argument_if_provided($object, $method) - { - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_should_return_null_if_no_arguments_provided($object, $method) - { - $this->execute(array(), $object, $method)->shouldReturn(null); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_should_return_nth_argument_if_provided($object, $method) - { - $this->beConstructedWith(1); - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('two'); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php deleted file mode 100644 index 18bfd87a..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php +++ /dev/null @@ -1,61 +0,0 @@ -beConstructedWith(array(42)); - } - - function it_is_promise() - { - $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_returns_value_it_was_constructed_with($object, $method) - { - $this->execute(array(), $object, $method)->shouldReturn(42); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_always_returns_last_value_left_in_the_return_values($object, $method) - { - $this->execute(array(), $object, $method)->shouldReturn(42); - $this->execute(array(), $object, $method)->shouldReturn(42); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_consequently_returns_multiple_values_it_was_constructed_with($object, $method) - { - $this->beConstructedWith(array(42, 24, 12)); - - $this->execute(array(), $object, $method)->shouldReturn(42); - $this->execute(array(), $object, $method)->shouldReturn(24); - $this->execute(array(), $object, $method)->shouldReturn(12); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_returns_null_if_constructed_with_empty_array($object, $method) - { - $this->beConstructedWith(array()); - - $this->execute(array(), $object, $method)->shouldReturn(null); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php deleted file mode 100644 index 5f448979..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php +++ /dev/null @@ -1,58 +0,0 @@ -beConstructedWith('RuntimeException'); - } - - function it_is_promise() - { - $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_instantiates_and_throws_exception_from_provided_classname($object, $method) - { - $this->beConstructedWith('InvalidArgumentException'); - - $this->shouldThrow('InvalidArgumentException') - ->duringExecute(array(), $object, $method); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_instantiates_exceptions_with_required_arguments($object, $method) - { - $this->beConstructedWith('spec\Prophecy\Promise\RequiredArgumentException'); - - $this->shouldThrow('spec\Prophecy\Promise\RequiredArgumentException') - ->duringExecute(array(), $object, $method); - } - - /** - * @param \Prophecy\Prophecy\ObjectProphecy $object - * @param \Prophecy\Prophecy\MethodProphecy $method - */ - function it_throws_provided_exception($object, $method) - { - $this->beConstructedWith($exc = new \RuntimeException('Some exception')); - - $this->shouldThrow($exc)->duringExecute(array(), $object, $method); - } -} - -class RequiredArgumentException extends \Exception -{ - final public function __construct($message, $code) {} -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php deleted file mode 100644 index 41ee8cde..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php +++ /dev/null @@ -1,384 +0,0 @@ -reveal()->willReturn($reflection); - - $this->beConstructedWith($objectProphecy, 'getName', null); - } - - function it_is_initializable() - { - $this->shouldHaveType('Prophecy\Prophecy\MethodProphecy'); - } - - function its_constructor_throws_MethodNotFoundException_for_unexisting_method($objectProphecy) - { - $this->shouldThrow('Prophecy\Exception\Doubler\MethodNotFoundException')->during( - '__construct', array($objectProphecy, 'getUnexisting', null) - ); - } - - /** - * @param ClassWithFinalMethod $subject - */ - function its_constructor_throws_MethodProphecyException_for_final_methods($objectProphecy, $subject) - { - $objectProphecy->reveal()->willReturn($subject); - - $this->shouldThrow('Prophecy\Exception\Prophecy\MethodProphecyException')->during( - '__construct', array($objectProphecy, 'finalMethod', null) - ); - } - - function its_constructor_transforms_array_passed_as_3rd_argument_to_ArgumentsWildcard( - $objectProphecy - ) - { - $this->beConstructedWith($objectProphecy, 'getName', array(42, 33)); - - $wildcard = $this->getArgumentsWildcard(); - $wildcard->shouldNotBe(null); - $wildcard->__toString()->shouldReturn('exact(42), exact(33)'); - } - - function its_constructor_does_not_touch_third_argument_if_it_is_null($objectProphecy) - { - $this->beConstructedWith($objectProphecy, 'getName', null); - - $wildcard = $this->getArgumentsWildcard(); - $wildcard->shouldBe(null); - } - - /** - * @param \Prophecy\Promise\PromiseInterface $promise - */ - function it_records_promise_through_will_method($promise, $objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->will($promise); - $this->getPromise()->shouldReturn($promise); - } - - /** - * @param \Prophecy\Promise\PromiseInterface $promise - */ - function it_adds_itself_to_ObjectProphecy_during_call_to_will($objectProphecy, $promise) - { - $objectProphecy->addMethodProphecy($this)->shouldBeCalled(); - - $this->will($promise); - } - - function it_adds_ReturnPromise_during_willReturn_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->willReturn(42); - $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ReturnPromise'); - } - - function it_adds_ThrowPromise_during_willThrow_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->willThrow('RuntimeException'); - $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ThrowPromise'); - } - - function it_adds_ReturnArgumentPromise_during_willReturnArgument_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->willReturnArgument(); - $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ReturnArgumentPromise'); - } - - function it_adds_ReturnArgumentPromise_during_willReturnArgument_call_with_index_argument($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->willReturnArgument(1); - $promise = $this->getPromise(); - $promise->shouldBeAnInstanceOf('Prophecy\Promise\ReturnArgumentPromise'); - $promise->execute(array('one', 'two'), $objectProphecy, $this)->shouldReturn('two'); - } - - function it_adds_CallbackPromise_during_will_call_with_callback_argument($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $callback = function () {}; - - $this->will($callback); - $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\CallbackPromise'); - } - - /** - * @param \Prophecy\Prediction\PredictionInterface $prediction - */ - function it_records_prediction_through_should_method($prediction, $objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->callOnWrappedObject('should', array($prediction)); - $this->getPrediction()->shouldReturn($prediction); - } - - function it_adds_CallbackPrediction_during_should_call_with_callback_argument($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $callback = function () {}; - - $this->callOnWrappedObject('should', array($callback)); - $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallbackPrediction'); - } - - /** - * @param \Prophecy\Prediction\PredictionInterface $prediction - */ - function it_adds_itself_to_ObjectProphecy_during_call_to_should($objectProphecy, $prediction) - { - $objectProphecy->addMethodProphecy($this)->shouldBeCalled(); - - $this->callOnWrappedObject('should', array($prediction)); - } - - function it_adds_CallPrediction_during_shouldBeCalled_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->callOnWrappedObject('shouldBeCalled', array()); - $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallPrediction'); - } - - function it_adds_NoCallsPrediction_during_shouldNotBeCalled_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->callOnWrappedObject('shouldNotBeCalled', array()); - $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\NoCallsPrediction'); - } - - function it_adds_CallTimesPrediction_during_shouldBeCalledTimes_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->callOnWrappedObject('shouldBeCalledTimes', array(5)); - $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallTimesPrediction'); - } - - /** - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - * @param \Prophecy\Prediction\PredictionInterface $prediction - * @param \Prophecy\Call\Call $call1 - * @param \Prophecy\Call\Call $call2 - */ - function it_checks_prediction_via_shouldHave_method_call( - $objectProphecy, $arguments, $prediction, $call1, $call2 - ) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->withArguments($arguments); - $this->callOnWrappedObject('shouldHave', array($prediction)); - } - - /** - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - * @param \Prophecy\Prediction\PredictionInterface $prediction - * @param \Prophecy\Call\Call $call1 - * @param \Prophecy\Call\Call $call2 - */ - function it_sets_return_promise_during_shouldHave_call_if_none_was_set_before( - $objectProphecy, $arguments, $prediction, $call1, $call2 - ) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->withArguments($arguments); - $this->callOnWrappedObject('shouldHave', array($prediction)); - - $this->getPromise()->shouldReturnAnInstanceOf('Prophecy\Promise\ReturnPromise'); - } - - /** - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - * @param \Prophecy\Prediction\PredictionInterface $prediction - * @param \Prophecy\Call\Call $call1 - * @param \Prophecy\Call\Call $call2 - * @param \Prophecy\Promise\PromiseInterface $promise - */ - function it_does_not_set_return_promise_during_shouldHave_call_if_it_was_set_before( - $objectProphecy, $arguments, $prediction, $call1, $call2, $promise - ) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->will($promise); - $this->withArguments($arguments); - $this->callOnWrappedObject('shouldHave', array($prediction)); - - $this->getPromise()->shouldReturn($promise); - } - - /** - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - * @param \Prophecy\Prediction\PredictionInterface $prediction1 - * @param \Prophecy\Prediction\PredictionInterface $prediction2 - * @param \Prophecy\Call\Call $call1 - * @param \Prophecy\Call\Call $call2 - * @param \Prophecy\Promise\PromiseInterface $promise - */ - function it_records_checked_predictions( - $objectProphecy, $arguments, $prediction1, $prediction2, $call1, $call2, $promise - ) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - $prediction1->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willReturn(); - $prediction2->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willReturn(); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->will($promise); - $this->withArguments($arguments); - $this->callOnWrappedObject('shouldHave', array($prediction1)); - $this->callOnWrappedObject('shouldHave', array($prediction2)); - - $this->getCheckedPredictions()->shouldReturn(array($prediction1, $prediction2)); - } - - /** - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - * @param \Prophecy\Prediction\PredictionInterface $prediction - * @param \Prophecy\Call\Call $call1 - * @param \Prophecy\Call\Call $call2 - * @param \Prophecy\Promise\PromiseInterface $promise - */ - function it_records_even_failed_checked_predictions( - $objectProphecy, $arguments, $prediction, $call1, $call2, $promise - ) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willThrow(new \RuntimeException()); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->will($promise); - $this->withArguments($arguments); - - try { - $this->callOnWrappedObject('shouldHave', array($prediction)); - } catch (\Exception $e) {} - - $this->getCheckedPredictions()->shouldReturn(array($prediction)); - } - - /** - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - * @param \Prophecy\Prediction\PredictionInterface $prediction - * @param \Prophecy\Call\Call $call1 - * @param \Prophecy\Call\Call $call2 - */ - function it_checks_prediction_via_shouldHave_method_call_with_callback( - $objectProphecy, $arguments, $prediction, $call1, $call2 - ) - { - $callback = function ($calls, $object, $method) { - throw new \RuntimeException; - }; - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->withArguments($arguments); - $this->shouldThrow('RuntimeException')->duringShouldHave($callback); - } - - function it_does_nothing_during_checkPrediction_if_no_prediction_set() - { - $this->checkPrediction()->shouldReturn(null); - } - - /** - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - * @param \Prophecy\Prediction\PredictionInterface $prediction - * @param \Prophecy\Call\Call $call1 - * @param \Prophecy\Call\Call $call2 - */ - function it_checks_set_prediction_during_checkPrediction( - $objectProphecy, $arguments, $prediction, $call1, $call2 - ) - { - $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->withArguments($arguments); - $this->callOnWrappedObject('should', array($prediction)); - $this->checkPrediction(); - } - - function it_links_back_to_ObjectProphecy_through_getter($objectProphecy) - { - $this->getObjectProphecy()->shouldReturn($objectProphecy); - } - - function it_has_MethodName() - { - $this->getMethodName()->shouldReturn('getName'); - } - - /** - * @param \Prophecy\Argument\ArgumentsWildcard $wildcard - */ - function it_contains_ArgumentsWildcard_it_was_constructed_with($objectProphecy, $wildcard) - { - $this->beConstructedWith($objectProphecy, 'getName', $wildcard); - - $this->getArgumentsWildcard()->shouldReturn($wildcard); - } - - /** - * @param \Prophecy\Argument\ArgumentsWildcard $wildcard - */ - function its_ArgumentWildcard_is_mutable_through_setter($wildcard) - { - $this->withArguments($wildcard); - - $this->getArgumentsWildcard()->shouldReturn($wildcard); - } - - function its_withArguments_transforms_passed_array_into_ArgumentsWildcard() - { - $this->withArguments(array(42, 33)); - - $wildcard = $this->getArgumentsWildcard(); - $wildcard->shouldNotBe(null); - $wildcard->__toString()->shouldReturn('exact(42), exact(33)'); - } - - function its_withArguments_throws_exception_if_wrong_arguments_provided() - { - $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')->duringWithArguments(42); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php deleted file mode 100644 index 7e249d9b..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php +++ /dev/null @@ -1,319 +0,0 @@ -beConstructedWith($lazyDouble); - - $lazyDouble->getInstance()->willReturn($double); - } - - function it_implements_ProphecyInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Prophecy\ProphecyInterface'); - } - - function it_sets_parentClass_during_willExtend_call($lazyDouble) - { - $lazyDouble->setParentClass('123')->shouldBeCalled(); - - $this->willExtend('123'); - } - - function it_adds_interface_during_willImplement_call($lazyDouble) - { - $lazyDouble->addInterface('222')->shouldBeCalled(); - - $this->willImplement('222'); - } - - function it_sets_constructor_arguments_during_willBeConstructedWith_call($lazyDouble) - { - $lazyDouble->setArguments(array(1, 2, 5))->shouldBeCalled(); - - $this->willBeConstructedWith(array(1, 2, 5)); - } - - function it_does_not_have_method_prophecies_by_default() - { - $this->getMethodProphecies()->shouldHaveCount(0); - } - - /** - * @param \Prophecy\Prophecy\MethodProphecy $method1 - * @param \Prophecy\Prophecy\MethodProphecy $method2 - * @param \Prophecy\Argument\ArgumentsWildcard $arguments - */ - function it_should_get_method_prophecies_by_method_name($method1, $method2, $arguments) - { - $method1->getMethodName()->willReturn('getName'); - $method1->getArgumentsWildcard()->willReturn($arguments); - $method2->getMethodName()->willReturn('setName'); - $method2->getArgumentsWildcard()->willReturn($arguments); - - $this->addMethodProphecy($method1); - $this->addMethodProphecy($method2); - - $methods = $this->getMethodProphecies('setName'); - $methods->shouldHaveCount(1); - $methods[0]->getMethodName()->shouldReturn('setName'); - } - - function it_should_return_empty_array_if_no_method_prophecies_found() - { - $methods = $this->getMethodProphecies('setName'); - $methods->shouldHaveCount(0); - } - - /** - * @param \Prophecy\Call\CallCenter $callCenter - */ - function it_should_proxy_makeProphecyMethodCall_to_CallCenter($lazyDouble, $callCenter) - { - $this->beConstructedWith($lazyDouble, $callCenter); - - $callCenter->makeCall($this->getWrappedObject(), 'setName', array('everzet'))->willReturn(42); - - $this->makeProphecyMethodCall('setName', array('everzet'))->shouldReturn(42); - } - - /** - * @param \Prophecy\Call\CallCenter $callCenter - * @param \Prophecy\Prophecy\RevealerInterface $revealer - */ - function it_should_reveal_arguments_and_return_values_from_callCenter( - $lazyDouble, $callCenter, $revealer - ) - { - $this->beConstructedWith($lazyDouble, $callCenter, $revealer); - - $revealer->reveal(array('question'))->willReturn(array('life')); - $revealer->reveal('answer')->willReturn(42); - - $callCenter->makeCall($this->getWrappedObject(), 'setName', array('life'))->willReturn('answer'); - - $this->makeProphecyMethodCall('setName', array('question'))->shouldReturn(42); - } - - /** - * @param \Prophecy\Call\CallCenter $callCenter - * @param \Prophecy\Argument\ArgumentsWildcard $wildcard - * @param \Prophecy\Call\Call $call - */ - function it_should_proxy_getProphecyMethodCalls_to_CallCenter( - $lazyDouble, $callCenter, $wildcard, $call - ) - { - $this->beConstructedWith($lazyDouble, $callCenter); - - $callCenter->findCalls('setName', $wildcard)->willReturn(array($call)); - - $this->findProphecyMethodCalls('setName', $wildcard)->shouldReturn(array($call)); - } - - /** - * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy - * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard - */ - function its_addMethodProphecy_adds_method_prophecy( - $methodProphecy, $argumentsWildcard - ) - { - $methodProphecy->getArgumentsWildcard()->willReturn($argumentsWildcard); - $methodProphecy->getMethodName()->willReturn('getUsername'); - - $this->addMethodProphecy($methodProphecy); - - $this->getMethodProphecies()->shouldReturn(array( - 'getUsername' => array($methodProphecy) - )); - } - - /** - * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy1 - * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy2 - * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard1 - * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard2 - */ - function its_addMethodProphecy_handles_prophecies_with_different_arguments( - $methodProphecy1, $methodProphecy2, $argumentsWildcard1, $argumentsWildcard2 - ) - { - $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); - $methodProphecy1->getMethodName()->willReturn('getUsername'); - - $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); - $methodProphecy2->getMethodName()->willReturn('getUsername'); - - $this->addMethodProphecy($methodProphecy1); - $this->addMethodProphecy($methodProphecy2); - - $this->getMethodProphecies()->shouldReturn(array( - 'getUsername' => array( - $methodProphecy1, - $methodProphecy2, - ) - )); - } - - /** - * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy1 - * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy2 - * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard1 - * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard2 - */ - function its_addMethodProphecy_handles_prophecies_for_different_methods( - $methodProphecy1, $methodProphecy2, $argumentsWildcard1, $argumentsWildcard2 - ) - { - $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); - $methodProphecy1->getMethodName()->willReturn('getUsername'); - - $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); - $methodProphecy2->getMethodName()->willReturn('isUsername'); - - $this->addMethodProphecy($methodProphecy1); - $this->addMethodProphecy($methodProphecy2); - - $this->getMethodProphecies()->shouldReturn(array( - 'getUsername' => array( - $methodProphecy1 - ), - 'isUsername' => array( - $methodProphecy2 - ) - )); - } - - /** - * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy - */ - function its_addMethodProphecy_throws_exception_when_method_has_no_ArgumentsWildcard( - $methodProphecy - ) - { - $methodProphecy->getArgumentsWildcard()->willReturn(null); - $methodProphecy->getObjectProphecy()->willReturn($this); - $methodProphecy->getMethodName()->willReturn('getTitle'); - - $this->shouldThrow('Prophecy\Exception\Prophecy\MethodProphecyException')->duringAddMethodProphecy( - $methodProphecy - ); - } - - function it_returns_null_after_checkPredictions_call_if_there_is_no_method_prophecies() - { - $this->checkProphecyMethodsPredictions()->shouldReturn(null); - } - - /** - * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy1 - * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy2 - * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard1 - * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard2 - */ - function it_throws_AggregateException_during_checkPredictions_if_predictions_fail( - $methodProphecy1, $methodProphecy2, $argumentsWildcard1, $argumentsWildcard2 - ) - { - $methodProphecy1->getMethodName()->willReturn('getName'); - $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); - $methodProphecy1->checkPrediction() - ->willThrow('Prophecy\Exception\Prediction\AggregateException'); - - $methodProphecy2->getMethodName()->willReturn('setName'); - $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); - $methodProphecy2->checkPrediction() - ->willThrow('Prophecy\Exception\Prediction\AggregateException'); - - $this->addMethodProphecy($methodProphecy1); - $this->addMethodProphecy($methodProphecy2); - - $this->shouldThrow('Prophecy\Exception\Prediction\AggregateException') - ->duringCheckProphecyMethodsPredictions(); - } - - /** - * @param \Prophecy\Doubler\Doubler $doubler - * @param \Prophecy\Prophecy\ProphecySubjectInterface $reflection - */ - function it_returns_new_MethodProphecy_instance_for_arbitrary_call($doubler, $reflection) - { - $doubler->double(Argument::any())->willReturn($reflection); - - $return = $this->getProphecy(); - $return->shouldBeAnInstanceOf('Prophecy\Prophecy\MethodProphecy'); - $return->getMethodName()->shouldReturn('getProphecy'); - } - - /** - * @param \Prophecy\Doubler\Doubler $doubler - * @param \Prophecy\Prophecy\ProphecySubjectInterface $reflection - */ - function it_returns_same_MethodProphecy_for_same_registered_signature($doubler, $reflection) - { - $doubler->double(Argument::any())->willReturn($reflection); - - $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(1, 2, 3)); - $methodProphecy2 = $this->getProphecy(1, 2, 3); - - $methodProphecy2->shouldBe($methodProphecy1); - } - - /** - * @param \Prophecy\Doubler\Doubler $doubler - * @param \Prophecy\Prophecy\ProphecySubjectInterface $reflection - */ - function it_returns_new_MethodProphecy_for_different_signatures($doubler, $reflection) - { - $doubler->double(Argument::any())->willReturn($reflection); - - $value = new ObjectProphecySpecFixtureB('ABC'); - $value2 = new ObjectProphecySpecFixtureB('CBA'); - - $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(1, 2, 3, $value)); - $methodProphecy2 = $this->getProphecy(1, 2, 3, $value2); - - $methodProphecy2->shouldNotBe($methodProphecy1); - } - - /** - * @param \Prophecy\Doubler\Doubler $doubler - * @param \Prophecy\Prophecy\ProphecySubjectInterface $reflection - */ - function it_returns_new_MethodProphecy_for_all_callback_signatures($doubler, $reflection) - { - $doubler->double(Argument::any())->willReturn($reflection); - - $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(function(){})); - $methodProphecy2 = $this->getProphecy(function(){}); - - $methodProphecy2->shouldNotBe($methodProphecy1); - } -} - -class ObjectProphecySpecFixtureA -{ - public $errors; -} - -class ObjectProphecySpecFixtureB extends ObjectProphecySpecFixtureA -{ - public $errors; - public $value = null; - - public function __construct($value) - { - $this->value = $value; - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php deleted file mode 100644 index 4d83d739..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php +++ /dev/null @@ -1,51 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Prophecy\RevealerInterface'); - } - - /** - * @param \Prophecy\Prophecy\ProphecyInterface $prophecy - * @param \stdClass $object - */ - function it_reveals_single_instance_of_ProphecyInterface($prophecy, $object) - { - $prophecy->reveal()->willReturn($object); - - $this->reveal($prophecy)->shouldReturn($object); - } - - /** - * @param \Prophecy\Prophecy\ProphecyInterface $prophecy1 - * @param \Prophecy\Prophecy\ProphecyInterface $prophecy2 - * @param \stdClass $object1 - * @param \stdClass $object2 - */ - function it_reveals_instances_of_ProphecyInterface_inside_array( - $prophecy1, $prophecy2, $object1, $object2 - ) - { - $prophecy1->reveal()->willReturn($object1); - $prophecy2->reveal()->willReturn($object2); - - $this->reveal(array( - array('item' => $prophecy2), - $prophecy1 - ))->shouldReturn(array( - array('item' => $object2), - $object1 - )); - } - - function it_does_not_touch_non_prophecy_interface() - { - $this->reveal(42)->shouldReturn(42); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php deleted file mode 100644 index 74d5976a..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php +++ /dev/null @@ -1,91 +0,0 @@ -double(null, array())->willReturn($double); - - $this->beConstructedWith($doubler); - } - - function it_constructs_new_prophecy_on_prophesize_call() - { - $prophecy = $this->prophesize(); - $prophecy->shouldBeAnInstanceOf('Prophecy\Prophecy\ObjectProphecy'); - } - - /** - * @param \Prophecy\Prophecy\ProphecySubjectInterface $newDouble - */ - function it_constructs_new_prophecy_with_parent_class_if_specified($doubler, $newDouble) - { - $doubler->double(Argument::any(), array())->willReturn($newDouble); - - $this->prophesize('Prophecy\Prophet')->reveal()->shouldReturn($newDouble); - } - - /** - * @param \Prophecy\Prophecy\ProphecySubjectInterface $newDouble - */ - function it_constructs_new_prophecy_with_interface_if_specified($doubler, $newDouble) - { - $doubler->double(null, Argument::any())->willReturn($newDouble); - - $this->prophesize('ArrayAccess')->reveal()->shouldReturn($newDouble); - } - - function it_exposes_all_created_prophecies_through_getter() - { - $prophecy1 = $this->prophesize(); - $prophecy2 = $this->prophesize(); - - $this->getProphecies()->shouldReturn(array($prophecy1, $prophecy2)); - } - - function it_does_nothing_during_checkPredictions_call_if_no_predictions_defined() - { - $this->checkPredictions()->shouldReturn(null); - } - - /** - * @param \Prophecy\Prophecy\MethodProphecy $method1 - * @param \Prophecy\Prophecy\MethodProphecy $method2 - * @param \Prophecy\Argument\ArgumentsWildcard $arguments1 - * @param \Prophecy\Argument\ArgumentsWildcard $arguments2 - */ - function it_throws_AggregateException_if_defined_predictions_fail( - $method1, $method2, $arguments1, $arguments2 - ) - { - $method1->getMethodName()->willReturn('getName'); - $method1->getArgumentsWildcard()->willReturn($arguments1); - $method1->checkPrediction()->willReturn(null); - - $method2->getMethodName()->willReturn('isSet'); - $method2->getArgumentsWildcard()->willReturn($arguments2); - $method2->checkPrediction()->willThrow( - 'Prophecy\Exception\Prediction\AggregateException' - ); - - $this->prophesize()->addMethodProphecy($method1); - $this->prophesize()->addMethodProphecy($method2); - - $this->shouldThrow('Prophecy\Exception\Prediction\AggregateException') - ->duringCheckPredictions(); - } - - function it_exposes_doubler_through_getter($doubler) - { - $this->getDoubler()->shouldReturn($doubler); - } -} diff --git a/tests/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php b/tests/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php deleted file mode 100644 index a4eef59f..00000000 --- a/tests/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php +++ /dev/null @@ -1,97 +0,0 @@ -stringify(42)->shouldReturn('42'); - } - - function it_generates_proper_string_representation_for_string() - { - $this->stringify('some string')->shouldReturn('"some string"'); - } - - function it_generates_single_line_representation_for_multiline_string() - { - $this->stringify("some\nstring")->shouldReturn('"some\\nstring"'); - } - - function it_generates_proper_string_representation_for_double() - { - $this->stringify(42.3)->shouldReturn('42.3'); - } - - function it_generates_proper_string_representation_for_boolean_true() - { - $this->stringify(true)->shouldReturn('true'); - } - - function it_generates_proper_string_representation_for_boolean_false() - { - $this->stringify(false)->shouldReturn('false'); - } - - function it_generates_proper_string_representation_for_null() - { - $this->stringify(null)->shouldReturn('null'); - } - - function it_generates_proper_string_representation_for_empty_array() - { - $this->stringify(array())->shouldReturn('[]'); - } - - function it_generates_proper_string_representation_for_array() - { - $this->stringify(array('zet', 42))->shouldReturn('["zet", 42]'); - } - - function it_generates_proper_string_representation_for_hash_containing_one_value() - { - $this->stringify(array('ever' => 'zet'))->shouldReturn('["ever" => "zet"]'); - } - - function it_generates_proper_string_representation_for_hash() - { - $this->stringify(array('ever' => 'zet', 52 => 'hey', 'num' => 42))->shouldReturn( - '["ever" => "zet", 52 => "hey", "num" => 42]' - ); - } - - function it_generates_proper_string_representation_for_resource() - { - $resource = fopen(__FILE__, 'r'); - $this->stringify($resource)->shouldReturn('stream:'.$resource); - } - - /** - * @param \stdClass $object - */ - function it_generates_proper_string_representation_for_object($object) - { - $objHash = sprintf('%s:%s', - get_class($object->getWrappedObject()), - spl_object_hash($object->getWrappedObject()) - ) . " Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n)"; - - $this->stringify($object)->shouldReturn("$objHash"); - } - - /** - * @param stdClass $object - */ - function it_generates_proper_string_representation_for_object_without_exporting($object) - { - $objHash = sprintf('%s:%s', - get_class($object->getWrappedObject()), - spl_object_hash($object->getWrappedObject()) - ); - - $this->stringify($object, false)->shouldReturn("$objHash"); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument.php deleted file mode 100644 index f2b33648..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument.php +++ /dev/null @@ -1,198 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy; - -use Prophecy\Argument\Token; - -/** - * Argument tokens shortcuts. - * - * @author Konstantin Kudryashov - */ -class Argument -{ - /** - * Checks that argument is exact value or object. - * - * @param mixed $value - * - * @return Token\ExactValueToken - */ - public static function exact($value) - { - return new Token\ExactValueToken($value); - } - - /** - * Checks that argument is of specific type or instance of specific class. - * - * @param string $type Type name (`integer`, `string`) or full class name - * - * @return Token\TypeToken - */ - public static function type($type) - { - return new Token\TypeToken($type); - } - - /** - * Checks that argument object has specific state. - * - * @param string $methodName - * @param mixed $value - * - * @return Token\ObjectStateToken - */ - public static function which($methodName, $value) - { - return new Token\ObjectStateToken($methodName, $value); - } - - /** - * Checks that argument matches provided callback. - * - * @param callable $callback - * - * @return Token\CallbackToken - */ - public static function that($callback) - { - return new Token\CallbackToken($callback); - } - - /** - * Matches any single value. - * - * @return Token\AnyValueToken - */ - public static function any() - { - return new Token\AnyValueToken; - } - - /** - * Matches all values to the rest of the signature. - * - * @return Token\AnyValuesToken - */ - public static function cetera() - { - return new Token\AnyValuesToken; - } - - /** - * Checks that argument matches all tokens - * - * @param mixed ... a list of tokens - * - * @return Token\LogicalAndToken - */ - public static function allOf() - { - return new Token\LogicalAndToken(func_get_args()); - } - - /** - * Checks that argument array or countable object has exact number of elements. - * - * @param integer $value array elements count - * - * @return Token\ArrayCountToken - */ - public static function size($value) - { - return new Token\ArrayCountToken($value); - } - - /** - * Checks that argument array contains (key, value) pair - * - * @param mixed $key exact value or token - * @param mixed $value exact value or token - * - * @return Token\ArrayEntryToken - */ - public static function withEntry($key, $value) - { - return new Token\ArrayEntryToken($key, $value); - } - - /** - * Checks that arguments array entries all match value - * - * @param mixed $value - * - * @return Token\ArrayEveryEntryToken - */ - public static function withEveryEntry($value) - { - return new Token\ArrayEveryEntryToken($value); - } - - /** - * Checks that argument array contains value - * - * @param mixed $value - * - * @return Token\ArrayEntryToken - */ - public static function containing($value) - { - return new Token\ArrayEntryToken(self::any(), $value); - } - - /** - * Checks that argument array has key - * - * @param mixed $key exact value or token - * - * @return Token\ArrayEntryToken - */ - public static function withKey($key) - { - return new Token\ArrayEntryToken($key, self::any()); - } - - /** - * Checks that argument does not match the value|token. - * - * @param mixed $value either exact value or argument token - * - * @return Token\LogicalNotToken - */ - public static function not($value) - { - return new Token\LogicalNotToken($value); - } - - /** - * @param string $value - * - * @return Token\StringContainsToken - */ - public static function containingString($value) - { - return new Token\StringContainsToken($value); - } - - /** - * Checks that argument is identical value. - * - * @param mixed $value - * - * @return Token\IdenticalValueToken - */ - public static function is($value) - { - return new Token\IdenticalValueToken($value); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php deleted file mode 100644 index a088f21d..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php +++ /dev/null @@ -1,101 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument; - -/** - * Arguments wildcarding. - * - * @author Konstantin Kudryashov - */ -class ArgumentsWildcard -{ - /** - * @var Token\TokenInterface[] - */ - private $tokens = array(); - private $string; - - /** - * Initializes wildcard. - * - * @param array $arguments Array of argument tokens or values - */ - public function __construct(array $arguments) - { - foreach ($arguments as $argument) { - if (!$argument instanceof Token\TokenInterface) { - $argument = new Token\ExactValueToken($argument); - } - - $this->tokens[] = $argument; - } - } - - /** - * Calculates wildcard match score for provided arguments. - * - * @param array $arguments - * - * @return false|int False OR integer score (higher - better) - */ - public function scoreArguments(array $arguments) - { - if (0 == count($arguments) && 0 == count($this->tokens)) { - return 1; - } - - $arguments = array_values($arguments); - $totalScore = 0; - foreach ($this->tokens as $i => $token) { - $argument = isset($arguments[$i]) ? $arguments[$i] : null; - if (1 >= $score = $token->scoreArgument($argument)) { - return false; - } - - $totalScore += $score; - - if (true === $token->isLast()) { - return $totalScore; - } - } - - if (count($arguments) > count($this->tokens)) { - return false; - } - - return $totalScore; - } - - /** - * Returns string representation for wildcard. - * - * @return string - */ - public function __toString() - { - if (null === $this->string) { - $this->string = implode(', ', array_map(function ($token) { - return (string) $token; - }, $this->tokens)); - } - - return $this->string; - } - - /** - * @return array - */ - public function getTokens() - { - return $this->tokens; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php deleted file mode 100644 index 50988112..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php +++ /dev/null @@ -1,52 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Any single value token. - * - * @author Konstantin Kudryashov - */ -class AnyValueToken implements TokenInterface -{ - /** - * Always scores 3 for any argument. - * - * @param $argument - * - * @return int - */ - public function scoreArgument($argument) - { - return 3; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return '*'; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php deleted file mode 100644 index f76b17bc..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php +++ /dev/null @@ -1,52 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Any values token. - * - * @author Konstantin Kudryashov - */ -class AnyValuesToken implements TokenInterface -{ - /** - * Always scores 2 for any argument. - * - * @param $argument - * - * @return int - */ - public function scoreArgument($argument) - { - return 2; - } - - /** - * Returns true to stop wildcard from processing other tokens. - * - * @return bool - */ - public function isLast() - { - return true; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return '* [, ...]'; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php deleted file mode 100644 index 96b4befd..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php +++ /dev/null @@ -1,86 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Array elements count token. - * - * @author Boris Mikhaylov - */ - -class ArrayCountToken implements TokenInterface -{ - private $count; - - /** - * @param integer $value - */ - public function __construct($value) - { - $this->count = $value; - } - - /** - * Scores 6 when argument has preset number of elements. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - return $this->isCountable($argument) && $this->hasProperCount($argument) ? 6 : false; - } - - /** - * Returns false. - * - * @return boolean - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('count(%s)', $this->count); - } - - /** - * Returns true if object is either array or instance of \Countable - * - * @param $argument - * @return bool - */ - private function isCountable($argument) - { - return (is_array($argument) || $argument instanceof \Countable); - } - - /** - * Returns true if $argument has expected number of elements - * - * @param array|\Countable $argument - * - * @return bool - */ - private function hasProperCount($argument) - { - return $this->count === count($argument); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php deleted file mode 100644 index 0305fc72..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php +++ /dev/null @@ -1,143 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use Prophecy\Exception\InvalidArgumentException; - -/** - * Array entry token. - * - * @author Boris Mikhaylov - */ -class ArrayEntryToken implements TokenInterface -{ - /** @var \Prophecy\Argument\Token\TokenInterface */ - private $key; - /** @var \Prophecy\Argument\Token\TokenInterface */ - private $value; - - /** - * @param mixed $key exact value or token - * @param mixed $value exact value or token - */ - public function __construct($key, $value) - { - $this->key = $this->wrapIntoExactValueToken($key); - $this->value = $this->wrapIntoExactValueToken($value); - } - - /** - * Scores half of combined scores from key and value tokens for same entry. Capped at 8. - * If argument implements \ArrayAccess without \Traversable, then key token is restricted to ExactValueToken. - * - * @param array|\ArrayAccess|\Traversable $argument - * - * @throws \Prophecy\Exception\InvalidArgumentException - * @return bool|int - */ - public function scoreArgument($argument) - { - if ($argument instanceof \Traversable) { - $argument = iterator_to_array($argument); - } - - if ($argument instanceof \ArrayAccess) { - $argument = $this->convertArrayAccessToEntry($argument); - } - - if (!is_array($argument) || empty($argument)) { - return false; - } - - $keyScores = array_map(array($this->key,'scoreArgument'), array_keys($argument)); - $valueScores = array_map(array($this->value,'scoreArgument'), $argument); - $scoreEntry = function ($value, $key) { - return $value && $key ? min(8, ($key + $value) / 2) : false; - }; - - return max(array_map($scoreEntry, $valueScores, $keyScores)); - } - - /** - * Returns false. - * - * @return boolean - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('[..., %s => %s, ...]', $this->key, $this->value); - } - - /** - * Returns key - * - * @return TokenInterface - */ - public function getKey() - { - return $this->key; - } - - /** - * Returns value - * - * @return TokenInterface - */ - public function getValue() - { - return $this->value; - } - - /** - * Wraps non token $value into ExactValueToken - * - * @param $value - * @return TokenInterface - */ - private function wrapIntoExactValueToken($value) - { - return $value instanceof TokenInterface ? $value : new ExactValueToken($value); - } - - /** - * Converts instance of \ArrayAccess to key => value array entry - * - * @param \ArrayAccess $object - * - * @return array|null - * @throws \Prophecy\Exception\InvalidArgumentException - */ - private function convertArrayAccessToEntry(\ArrayAccess $object) - { - if (!$this->key instanceof ExactValueToken) { - throw new InvalidArgumentException(sprintf( - 'You can only use exact value tokens to match key of ArrayAccess object'.PHP_EOL. - 'But you used `%s`.', - $this->key - )); - } - - $key = $this->key->getValue(); - - return $object->offsetExists($key) ? array($key => $object[$key]) : array(); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php deleted file mode 100644 index 5d41fa48..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php +++ /dev/null @@ -1,82 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Array every entry token. - * - * @author Adrien Brault - */ -class ArrayEveryEntryToken implements TokenInterface -{ - /** - * @var TokenInterface - */ - private $value; - - /** - * @param mixed $value exact value or token - */ - public function __construct($value) - { - if (!$value instanceof TokenInterface) { - $value = new ExactValueToken($value); - } - - $this->value = $value; - } - - /** - * {@inheritdoc} - */ - public function scoreArgument($argument) - { - if (!$argument instanceof \Traversable && !is_array($argument)) { - return false; - } - - $scores = array(); - foreach ($argument as $key => $argumentEntry) { - $scores[] = $this->value->scoreArgument($argumentEntry); - } - - if (empty($scores) || in_array(false, $scores, true)) { - return false; - } - - return array_sum($scores) / count($scores); - } - - /** - * {@inheritdoc} - */ - public function isLast() - { - return false; - } - - /** - * {@inheritdoc} - */ - public function __toString() - { - return sprintf('[%s, ..., %s]', $this->value, $this->value); - } - - /** - * @return TokenInterface - */ - public function getValue() - { - return $this->value; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php deleted file mode 100644 index f45ba20b..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php +++ /dev/null @@ -1,75 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use Prophecy\Exception\InvalidArgumentException; - -/** - * Callback-verified token. - * - * @author Konstantin Kudryashov - */ -class CallbackToken implements TokenInterface -{ - private $callback; - - /** - * Initializes token. - * - * @param callable $callback - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function __construct($callback) - { - if (!is_callable($callback)) { - throw new InvalidArgumentException(sprintf( - 'Callable expected as an argument to CallbackToken, but got %s.', - gettype($callback) - )); - } - - $this->callback = $callback; - } - - /** - * Scores 7 if callback returns true, false otherwise. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - return call_user_func($this->callback, $argument) ? 7 : false; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return 'callback()'; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php deleted file mode 100644 index aa960f3f..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php +++ /dev/null @@ -1,116 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; -use Prophecy\Util\StringUtil; - -/** - * Exact value token. - * - * @author Konstantin Kudryashov - */ -class ExactValueToken implements TokenInterface -{ - private $value; - private $string; - private $util; - private $comparatorFactory; - - /** - * Initializes token. - * - * @param mixed $value - * @param StringUtil $util - * @param ComparatorFactory $comparatorFactory - */ - public function __construct($value, StringUtil $util = null, ComparatorFactory $comparatorFactory = null) - { - $this->value = $value; - $this->util = $util ?: new StringUtil(); - - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); - } - - /** - * Scores 10 if argument matches preset value. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - if (is_object($argument) && is_object($this->value)) { - $comparator = $this->comparatorFactory->getComparatorFor( - $argument, $this->value - ); - - try { - $comparator->assertEquals($argument, $this->value); - return 10; - } catch (ComparisonFailure $failure) {} - } - - // If either one is an object it should be castable to a string - if (is_object($argument) xor is_object($this->value)) { - if (is_object($argument) && !method_exists($argument, '__toString')) { - return false; - } - - if (is_object($this->value) && !method_exists($this->value, '__toString')) { - return false; - } - } elseif (is_numeric($argument) && is_numeric($this->value)) { - // noop - } elseif (gettype($argument) !== gettype($this->value)) { - return false; - } - - return $argument == $this->value ? 10 : false; - } - - /** - * Returns preset value against which token checks arguments. - * - * @return mixed - */ - public function getValue() - { - return $this->value; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - if (null === $this->string) { - $this->string = sprintf('exact(%s)', $this->util->stringify($this->value)); - } - - return $this->string; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php deleted file mode 100644 index 0b6d23ab..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php +++ /dev/null @@ -1,74 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use Prophecy\Util\StringUtil; - -/** - * Identical value token. - * - * @author Florian Voutzinos - */ -class IdenticalValueToken implements TokenInterface -{ - private $value; - private $string; - private $util; - - /** - * Initializes token. - * - * @param mixed $value - * @param StringUtil $util - */ - public function __construct($value, StringUtil $util = null) - { - $this->value = $value; - $this->util = $util ?: new StringUtil(); - } - - /** - * Scores 11 if argument matches preset value. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - return $argument === $this->value ? 11 : false; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - if (null === $this->string) { - $this->string = sprintf('identical(%s)', $this->util->stringify($this->value)); - } - - return $this->string; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php deleted file mode 100644 index 4ee1b25e..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php +++ /dev/null @@ -1,80 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Logical AND token. - * - * @author Boris Mikhaylov - */ -class LogicalAndToken implements TokenInterface -{ - private $tokens = array(); - - /** - * @param array $arguments exact values or tokens - */ - public function __construct(array $arguments) - { - foreach ($arguments as $argument) { - if (!$argument instanceof TokenInterface) { - $argument = new ExactValueToken($argument); - } - $this->tokens[] = $argument; - } - } - - /** - * Scores maximum score from scores returned by tokens for this argument if all of them score. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - if (0 === count($this->tokens)) { - return false; - } - - $maxScore = 0; - foreach ($this->tokens as $token) { - $score = $token->scoreArgument($argument); - if (false === $score) { - return false; - } - $maxScore = max($score, $maxScore); - } - - return $maxScore; - } - - /** - * Returns false. - * - * @return boolean - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('bool(%s)', implode(' AND ', $this->tokens)); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php deleted file mode 100644 index 623efa57..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php +++ /dev/null @@ -1,73 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Logical NOT token. - * - * @author Boris Mikhaylov - */ -class LogicalNotToken implements TokenInterface -{ - /** @var \Prophecy\Argument\Token\TokenInterface */ - private $token; - - /** - * @param mixed $value exact value or token - */ - public function __construct($value) - { - $this->token = $value instanceof TokenInterface? $value : new ExactValueToken($value); - } - - /** - * Scores 4 when preset token does not match the argument. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - return false === $this->token->scoreArgument($argument) ? 4 : false; - } - - /** - * Returns true if preset token is last. - * - * @return bool|int - */ - public function isLast() - { - return $this->token->isLast(); - } - - /** - * Returns originating token. - * - * @return TokenInterface - */ - public function getOriginatingToken() - { - return $this->token; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('not(%s)', $this->token); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php deleted file mode 100644 index 8d93bfd6..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php +++ /dev/null @@ -1,104 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; -use Prophecy\Util\StringUtil; - -/** - * Object state-checker token. - * - * @author Konstantin Kudryashov - */ -class ObjectStateToken implements TokenInterface -{ - private $name; - private $value; - private $util; - private $comparatorFactory; - - /** - * Initializes token. - * - * @param string $methodName - * @param mixed $value Expected return value - * @param null|StringUtil $util - * @param ComparatorFactory $comparatorFactory - */ - public function __construct( - $methodName, - $value, - StringUtil $util = null, - ComparatorFactory $comparatorFactory = null - ) { - $this->name = $methodName; - $this->value = $value; - $this->util = $util ?: new StringUtil; - - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); - } - - /** - * Scores 8 if argument is an object, which method returns expected value. - * - * @param mixed $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - if (is_object($argument) && method_exists($argument, $this->name)) { - $actual = call_user_func(array($argument, $this->name)); - - $comparator = $this->comparatorFactory->getComparatorFor( - $actual, $this->value - ); - - try { - $comparator->assertEquals($actual, $this->value); - return 8; - } catch (ComparisonFailure $failure) { - return false; - } - } - - if (is_object($argument) && property_exists($argument, $this->name)) { - return $argument->{$this->name} === $this->value ? 8 : false; - } - - return false; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('state(%s(), %s)', - $this->name, - $this->util->stringify($this->value) - ); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php deleted file mode 100644 index 24ff8c2e..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * String contains token. - * - * @author Peter Mitchell - */ -class StringContainsToken implements TokenInterface -{ - private $value; - - /** - * Initializes token. - * - * @param string $value - */ - public function __construct($value) - { - $this->value = $value; - } - - public function scoreArgument($argument) - { - return strpos($argument, $this->value) !== false ? 6 : false; - } - - /** - * Returns preset value against which token checks arguments. - * - * @return mixed - */ - public function getValue() - { - return $this->value; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('contains("%s")', $this->value); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php deleted file mode 100644 index 625d3bad..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php +++ /dev/null @@ -1,43 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Argument token interface. - * - * @author Konstantin Kudryashov - */ -interface TokenInterface -{ - /** - * Calculates token match score for provided argument. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument); - - /** - * Returns true if this token prevents check of other tokens (is last one). - * - * @return bool|int - */ - public function isLast(); - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString(); -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php deleted file mode 100644 index cb65132c..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php +++ /dev/null @@ -1,76 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use Prophecy\Exception\InvalidArgumentException; - -/** - * Value type token. - * - * @author Konstantin Kudryashov - */ -class TypeToken implements TokenInterface -{ - private $type; - - /** - * @param string $type - */ - public function __construct($type) - { - $checker = "is_{$type}"; - if (!function_exists($checker) && !interface_exists($type) && !class_exists($type)) { - throw new InvalidArgumentException(sprintf( - 'Type or class name expected as an argument to TypeToken, but got %s.', $type - )); - } - - $this->type = $type; - } - - /** - * Scores 5 if argument has the same type this token was constructed with. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - $checker = "is_{$this->type}"; - if (function_exists($checker)) { - return call_user_func($checker, $argument) ? 5 : false; - } - - return $argument instanceof $this->type ? 5 : false; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('type(%s)', $this->type); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php deleted file mode 100644 index 2f3fbadb..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php +++ /dev/null @@ -1,127 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Call; - -use Exception; - -/** - * Call object. - * - * @author Konstantin Kudryashov - */ -class Call -{ - private $methodName; - private $arguments; - private $returnValue; - private $exception; - private $file; - private $line; - - /** - * Initializes call. - * - * @param string $methodName - * @param array $arguments - * @param mixed $returnValue - * @param Exception $exception - * @param null|string $file - * @param null|int $line - */ - public function __construct($methodName, array $arguments, $returnValue, - Exception $exception = null, $file, $line) - { - $this->methodName = $methodName; - $this->arguments = $arguments; - $this->returnValue = $returnValue; - $this->exception = $exception; - - if ($file) { - $this->file = $file; - $this->line = intval($line); - } - } - - /** - * Returns called method name. - * - * @return string - */ - public function getMethodName() - { - return $this->methodName; - } - - /** - * Returns called method arguments. - * - * @return array - */ - public function getArguments() - { - return $this->arguments; - } - - /** - * Returns called method return value. - * - * @return null|mixed - */ - public function getReturnValue() - { - return $this->returnValue; - } - - /** - * Returns exception that call thrown. - * - * @return null|Exception - */ - public function getException() - { - return $this->exception; - } - - /** - * Returns callee filename. - * - * @return string - */ - public function getFile() - { - return $this->file; - } - - /** - * Returns callee line number. - * - * @return int - */ - public function getLine() - { - return $this->line; - } - - /** - * Returns short notation for callee place. - * - * @return string - */ - public function getCallPlace() - { - if (null === $this->file) { - return 'unknown'; - } - - return sprintf('%s:%d', $this->file, $this->line); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php deleted file mode 100644 index 74958551..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php +++ /dev/null @@ -1,152 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Call; - -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Argument\ArgumentsWildcard; -use Prophecy\Util\StringUtil; -use Prophecy\Exception\Call\UnexpectedCallException; - -/** - * Calls receiver & manager. - * - * @author Konstantin Kudryashov - */ -class CallCenter -{ - private $util; - - /** - * @var Call[] - */ - private $recordedCalls = array(); - - /** - * Initializes call center. - * - * @param StringUtil $util - */ - public function __construct(StringUtil $util = null) - { - $this->util = $util ?: new StringUtil; - } - - /** - * Makes and records specific method call for object prophecy. - * - * @param ObjectProphecy $prophecy - * @param string $methodName - * @param array $arguments - * - * @return mixed Returns null if no promise for prophecy found or promise return value. - * - * @throws \Prophecy\Exception\Call\UnexpectedCallException If no appropriate method prophecy found - */ - public function makeCall(ObjectProphecy $prophecy, $methodName, array $arguments) - { - $backtrace = debug_backtrace(); - - $file = $line = null; - if (isset($backtrace[2]) && isset($backtrace[2]['file'])) { - $file = $backtrace[2]['file']; - $line = $backtrace[2]['line']; - } - - // If no method prophecies defined, then it's a dummy, so we'll just return null - if ('__destruct' === $methodName || 0 == count($prophecy->getMethodProphecies())) { - $this->recordedCalls[] = new Call($methodName, $arguments, null, null, $file, $line); - - return null; - } - - // There are method prophecies, so it's a fake/stub. Searching prophecy for this call - $matches = array(); - foreach ($prophecy->getMethodProphecies($methodName) as $methodProphecy) { - if (0 < $score = $methodProphecy->getArgumentsWildcard()->scoreArguments($arguments)) { - $matches[] = array($score, $methodProphecy); - } - } - - // If fake/stub doesn't have method prophecy for this call - throw exception - if (!count($matches)) { - throw $this->createUnexpectedCallException($prophecy, $methodName, $arguments); - } - - // Sort matches by their score value - @usort($matches, function ($match1, $match2) { return $match2[0] - $match1[0]; }); - - // If Highest rated method prophecy has a promise - execute it or return null instead - $returnValue = null; - $exception = null; - if ($promise = $matches[0][1]->getPromise()) { - try { - $returnValue = $promise->execute($arguments, $prophecy, $matches[0][1]); - } catch (\Exception $e) { - $exception = $e; - } - } - - $this->recordedCalls[] = new Call( - $methodName, $arguments, $returnValue, $exception, $file, $line - ); - - if (null !== $exception) { - throw $exception; - } - - return $returnValue; - } - - /** - * Searches for calls by method name & arguments wildcard. - * - * @param string $methodName - * @param ArgumentsWildcard $wildcard - * - * @return Call[] - */ - public function findCalls($methodName, ArgumentsWildcard $wildcard) - { - return array_values( - array_filter($this->recordedCalls, function (Call $call) use ($methodName, $wildcard) { - return $methodName === $call->getMethodName() - && 0 < $wildcard->scoreArguments($call->getArguments()) - ; - }) - ); - } - - private function createUnexpectedCallException(ObjectProphecy $prophecy, $methodName, - array $arguments) - { - $classname = get_class($prophecy->reveal()); - $argstring = implode(', ', array_map(array($this->util, 'stringify'), $arguments)); - $expected = implode("\n", array_map(function (MethodProphecy $methodProphecy) { - return sprintf(' - %s(%s)', - $methodProphecy->getMethodName(), - $methodProphecy->getArgumentsWildcard() - ); - }, call_user_func_array('array_merge', $prophecy->getMethodProphecies()))); - - return new UnexpectedCallException( - sprintf( - "Method call:\n". - " - %s(%s)\n". - "on %s was not expected, expected calls were:\n%s", - - $methodName, $argstring, $classname, $expected - ), - $prophecy, $methodName, $arguments - ); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php deleted file mode 100644 index 874e474c..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php +++ /dev/null @@ -1,42 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Comparator; - -use SebastianBergmann\Comparator\Comparator; -use SebastianBergmann\Comparator\ComparisonFailure; - -/** - * Closure comparator. - * - * @author Konstantin Kudryashov - */ -final class ClosureComparator extends Comparator -{ - public function accepts($expected, $actual) - { - return is_object($expected) && $expected instanceof \Closure - && is_object($actual) && $actual instanceof \Closure; - } - - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) - { - throw new ComparisonFailure( - $expected, - $actual, - // we don't need a diff - '', - '', - false, - 'all closures are born different' - ); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php deleted file mode 100644 index a7a12001..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php +++ /dev/null @@ -1,46 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Comparator; - -use SebastianBergmann\Comparator\Factory as BaseFactory; - -/** - * Prophecy comparator factory. - * - * @author Konstantin Kudryashov - */ -final class Factory extends BaseFactory -{ - /** - * @var Factory - */ - private static $instance; - - public function __construct() - { - parent::__construct(); - - $this->register(new ClosureComparator()); - } - - /** - * @return Factory - */ - public static function getInstance() - { - if (self::$instance === null) { - self::$instance = new Factory; - } - - return self::$instance; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php deleted file mode 100644 index d6b6b1a9..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php +++ /dev/null @@ -1,68 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler; - -use ReflectionClass; - -/** - * Cached class doubler. - * Prevents mirroring/creation of the same structure twice. - * - * @author Konstantin Kudryashov - */ -class CachedDoubler extends Doubler -{ - private $classes = array(); - - /** - * {@inheritdoc} - */ - public function registerClassPatch(ClassPatch\ClassPatchInterface $patch) - { - $this->classes[] = array(); - - parent::registerClassPatch($patch); - } - - /** - * {@inheritdoc} - */ - protected function createDoubleClass(ReflectionClass $class = null, array $interfaces) - { - $classId = $this->generateClassId($class, $interfaces); - if (isset($this->classes[$classId])) { - return $this->classes[$classId]; - } - - return $this->classes[$classId] = parent::createDoubleClass($class, $interfaces); - } - - /** - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces - * - * @return string - */ - private function generateClassId(ReflectionClass $class = null, array $interfaces) - { - $parts = array(); - if (null !== $class) { - $parts[] = $class->getName(); - } - foreach ($interfaces as $interface) { - $parts[] = $interface->getName(); - } - sort($parts); - - return md5(implode('', $parts)); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php deleted file mode 100644 index d6d19685..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php +++ /dev/null @@ -1,48 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; - -/** - * Class patch interface. - * Class patches extend doubles functionality or help - * Prophecy to avoid some internal PHP bugs. - * - * @author Konstantin Kudryashov - */ -interface ClassPatchInterface -{ - /** - * Checks if patch supports specific class node. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node); - - /** - * Applies patch to the specific class node. - * - * @param ClassNode $node - * @return void - */ - public function apply(ClassNode $node); - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher - earlier) - */ - public function getPriority(); -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php deleted file mode 100644 index 61998fc4..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php +++ /dev/null @@ -1,72 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; -use Prophecy\Doubler\Generator\Node\MethodNode; - -/** - * Disable constructor. - * Makes all constructor arguments optional. - * - * @author Konstantin Kudryashov - */ -class DisableConstructorPatch implements ClassPatchInterface -{ - /** - * Checks if class has `__construct` method. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - return true; - } - - /** - * Makes all class constructor arguments optional. - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - if (!$node->hasMethod('__construct')) { - $node->addMethod(new MethodNode('__construct', '')); - - return; - } - - $constructor = $node->getMethod('__construct'); - foreach ($constructor->getArguments() as $argument) { - $argument->setDefault(null); - } - - $constructor->setCode(<< - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; - -/** - * Exception patch for HHVM to remove the stubs from special methods - * - * @author Christophe Coevoet - */ -class HhvmExceptionPatch implements ClassPatchInterface -{ - /** - * Supports exceptions on HHVM. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - if (!defined('HHVM_VERSION')) { - return false; - } - - return 'Exception' === $node->getParentClass() || is_subclass_of($node->getParentClass(), 'Exception'); - } - - /** - * Removes special exception static methods from the doubled methods. - * - * @param ClassNode $node - * - * @return void - */ - public function apply(ClassNode $node) - { - if ($node->hasMethod('setTraceOptions')) { - $node->getMethod('setTraceOptions')->useParentCode(); - } - if ($node->hasMethod('getTraceOptions')) { - $node->getMethod('getTraceOptions')->useParentCode(); - } - } - - /** - * {@inheritdoc} - */ - public function getPriority() - { - return -50; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php deleted file mode 100644 index b0d9793a..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php +++ /dev/null @@ -1,135 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; - -/** - * Remove method functionality from the double which will clash with php keywords. - * - * @author Milan Magudia - */ -class KeywordPatch implements ClassPatchInterface -{ - /** - * Support any class - * - * @param ClassNode $node - * - * @return boolean - */ - public function supports(ClassNode $node) - { - return true; - } - - /** - * Remove methods that clash with php keywords - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - $methodNames = array_keys($node->getMethods()); - $methodsToRemove = array_intersect($methodNames, $this->getKeywords()); - foreach ($methodsToRemove as $methodName) { - $node->removeMethod($methodName); - } - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher - earlier) - */ - public function getPriority() { - return 49; - } - - /** - * Returns array of php keywords. - * - * @return array - */ - private function getKeywords() { - - return array( - '__halt_compiler', - 'abstract', - 'and', - 'array', - 'as', - 'break', - 'callable', - 'case', - 'catch', - 'class', - 'clone', - 'const', - 'continue', - 'declare', - 'default', - 'die', - 'do', - 'echo', - 'else', - 'elseif', - 'empty', - 'enddeclare', - 'endfor', - 'endforeach', - 'endif', - 'endswitch', - 'endwhile', - 'eval', - 'exit', - 'extends', - 'final', - 'finally', - 'for', - 'foreach', - 'function', - 'global', - 'goto', - 'if', - 'implements', - 'include', - 'include_once', - 'instanceof', - 'insteadof', - 'interface', - 'isset', - 'list', - 'namespace', - 'new', - 'or', - 'print', - 'private', - 'protected', - 'public', - 'require', - 'require_once', - 'return', - 'static', - 'switch', - 'throw', - 'trait', - 'try', - 'unset', - 'use', - 'var', - 'while', - 'xor', - 'yield', - ); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php deleted file mode 100644 index da454501..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php +++ /dev/null @@ -1,73 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use phpDocumentor\Reflection\DocBlock; -use Prophecy\Doubler\Generator\Node\ClassNode; -use Prophecy\Doubler\Generator\Node\MethodNode; - -/** - * Discover Magical API using "@method" PHPDoc format. - * - * @author Thomas Tourlourat - */ -class MagicCallPatch implements ClassPatchInterface -{ - /** - * Support any class - * - * @param ClassNode $node - * - * @return boolean - */ - public function supports(ClassNode $node) - { - return true; - } - - /** - * Discover Magical API - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - $parentClass = $node->getParentClass(); - $reflectionClass = new \ReflectionClass($parentClass); - - $phpdoc = new DocBlock($reflectionClass->getDocComment()); - - $tagList = $phpdoc->getTagsByName('method'); - - foreach($tagList as $tag) { - $methodName = $tag->getMethodName(); - - if (!$reflectionClass->hasMethod($methodName)) { - $methodNode = new MethodNode($tag->getMethodName()); - $methodNode->setStatic($tag->isStatic()); - - $node->addMethod($methodNode); - } - } - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return integer Priority number (higher - earlier) - */ - public function getPriority() - { - return 50; - } -} - diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php deleted file mode 100644 index ab0bb7c7..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php +++ /dev/null @@ -1,98 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; -use Prophecy\Doubler\Generator\Node\MethodNode; -use Prophecy\Doubler\Generator\Node\ArgumentNode; - -/** - * Add Prophecy functionality to the double. - * This is a core class patch for Prophecy. - * - * @author Konstantin Kudryashov - */ -class ProphecySubjectPatch implements ClassPatchInterface -{ - /** - * Always returns true. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - return true; - } - - /** - * Apply Prophecy functionality to class node. - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface'); - $node->addProperty('objectProphecy', 'private'); - - foreach ($node->getMethods() as $name => $method) { - if ('__construct' === strtolower($name)) { - continue; - } - - $method->setCode( - 'return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());' - ); - } - - $prophecySetter = new MethodNode('setProphecy'); - $prophecyArgument = new ArgumentNode('prophecy'); - $prophecyArgument->setTypeHint('Prophecy\Prophecy\ProphecyInterface'); - $prophecySetter->addArgument($prophecyArgument); - $prophecySetter->setCode('$this->objectProphecy = $prophecy;'); - - $prophecyGetter = new MethodNode('getProphecy'); - $prophecyGetter->setCode('return $this->objectProphecy;'); - - if ($node->hasMethod('__call')) { - $__call = $node->getMethod('__call'); - } else { - $__call = new MethodNode('__call'); - $__call->addArgument(new ArgumentNode('name')); - $__call->addArgument(new ArgumentNode('arguments')); - - $node->addMethod($__call); - } - - $__call->setCode(<<getProphecy(), func_get_arg(0) -); -PHP - ); - - $node->addMethod($prophecySetter); - $node->addMethod($prophecyGetter); - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher - earlier) - */ - public function getPriority() - { - return 0; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php deleted file mode 100644 index 9166aeef..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php +++ /dev/null @@ -1,57 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; - -/** - * ReflectionClass::newInstance patch. - * Makes first argument of newInstance optional, since it works but signature is misleading - * - * @author Florian Klein - */ -class ReflectionClassNewInstancePatch implements ClassPatchInterface -{ - /** - * Supports ReflectionClass - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - return 'ReflectionClass' === $node->getParentClass(); - } - - /** - * Updates newInstance's first argument to make it optional - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - foreach ($node->getMethod('newInstance')->getArguments() as $argument) { - $argument->setDefault(null); - } - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher = earlier) - */ - public function getPriority() - { - return 50; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php deleted file mode 100644 index 84011598..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php +++ /dev/null @@ -1,85 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; -use Prophecy\Doubler\Generator\Node\MethodNode; - -/** - * SplFileInfo patch. - * Makes SplFileInfo and derivative classes usable with Prophecy. - * - * @author Konstantin Kudryashov - */ -class SplFileInfoPatch implements ClassPatchInterface -{ - /** - * Supports everything that extends SplFileInfo. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - if (null === $node->getParentClass()) { - return false; - } - - return 'SplFileInfo' === $node->getParentClass() - || is_subclass_of($node->getParentClass(), 'SplFileInfo') - ; - } - - /** - * Updated constructor code to call parent one with dummy file argument. - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - if ($node->hasMethod('__construct')) { - $constructor = $node->getMethod('__construct'); - } else { - $constructor = new MethodNode('__construct'); - $node->addMethod($constructor); - } - - if ($this->nodeIsDirectoryIterator($node)) { - $constructor->setCode('return parent::__construct("' . __DIR__ . '");'); - return; - } - - $constructor->useParentCode(); - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher - earlier) - */ - public function getPriority() - { - return 50; - } - - /** - * @param ClassNode $node - * @return boolean - */ - private function nodeIsDirectoryIterator(ClassNode $node) - { - $parent = $node->getParentClass(); - return 'DirectoryIterator' === $parent - || is_subclass_of($parent, 'DirectoryIterator'); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php deleted file mode 100644 index eea02028..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php +++ /dev/null @@ -1,83 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; -use Prophecy\Doubler\Generator\Node\MethodNode; - -/** - * Traversable interface patch. - * Forces classes that implement interfaces, that extend Traversable to also implement Iterator. - * - * @author Konstantin Kudryashov - */ -class TraversablePatch implements ClassPatchInterface -{ - /** - * Supports nodetree, that implement Traversable, but not Iterator or IteratorAggregate. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - if (in_array('Iterator', $node->getInterfaces())) { - return false; - } - if (in_array('IteratorAggregate', $node->getInterfaces())) { - return false; - } - - foreach ($node->getInterfaces() as $interface) { - if ('Traversable' !== $interface && !is_subclass_of($interface, 'Traversable')) { - continue; - } - if ('Iterator' === $interface || is_subclass_of($interface, 'Iterator')) { - continue; - } - if ('IteratorAggregate' === $interface || is_subclass_of($interface, 'IteratorAggregate')) { - continue; - } - - return true; - } - - return false; - } - - /** - * Forces class to implement Iterator interface. - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - $node->addInterface('Iterator'); - - $node->addMethod(new MethodNode('current')); - $node->addMethod(new MethodNode('key')); - $node->addMethod(new MethodNode('next')); - $node->addMethod(new MethodNode('rewind')); - $node->addMethod(new MethodNode('valid')); - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher - earlier) - */ - public function getPriority() - { - return 100; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php deleted file mode 100644 index 699be3a2..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler; - -/** - * Core double interface. - * All doubled classes will implement this one. - * - * @author Konstantin Kudryashov - */ -interface DoubleInterface -{ -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php deleted file mode 100644 index a378ae27..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php +++ /dev/null @@ -1,146 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler; - -use Doctrine\Instantiator\Instantiator; -use Prophecy\Doubler\ClassPatch\ClassPatchInterface; -use Prophecy\Doubler\Generator\ClassMirror; -use Prophecy\Doubler\Generator\ClassCreator; -use Prophecy\Exception\InvalidArgumentException; -use ReflectionClass; - -/** - * Cached class doubler. - * Prevents mirroring/creation of the same structure twice. - * - * @author Konstantin Kudryashov - */ -class Doubler -{ - private $mirror; - private $creator; - private $namer; - - /** - * @var ClassPatchInterface[] - */ - private $patches = array(); - - /** - * @var \Doctrine\Instantiator\Instantiator - */ - private $instantiator; - - /** - * Initializes doubler. - * - * @param ClassMirror $mirror - * @param ClassCreator $creator - * @param NameGenerator $namer - */ - public function __construct(ClassMirror $mirror = null, ClassCreator $creator = null, - NameGenerator $namer = null) - { - $this->mirror = $mirror ?: new ClassMirror; - $this->creator = $creator ?: new ClassCreator; - $this->namer = $namer ?: new NameGenerator; - } - - /** - * Returns list of registered class patches. - * - * @return ClassPatchInterface[] - */ - public function getClassPatches() - { - return $this->patches; - } - - /** - * Registers new class patch. - * - * @param ClassPatchInterface $patch - */ - public function registerClassPatch(ClassPatchInterface $patch) - { - $this->patches[] = $patch; - - @usort($this->patches, function (ClassPatchInterface $patch1, ClassPatchInterface $patch2) { - return $patch2->getPriority() - $patch1->getPriority(); - }); - } - - /** - * Creates double from specific class or/and list of interfaces. - * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces Array of ReflectionClass instances - * @param array $args Constructor arguments - * - * @return DoubleInterface - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function double(ReflectionClass $class = null, array $interfaces, array $args = null) - { - foreach ($interfaces as $interface) { - if (!$interface instanceof ReflectionClass) { - throw new InvalidArgumentException(sprintf( - "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n". - "a second argument to `Doubler::double(...)`, but got %s.", - is_object($interface) ? get_class($interface).' class' : gettype($interface) - )); - } - } - - $classname = $this->createDoubleClass($class, $interfaces); - $reflection = new ReflectionClass($classname); - - if (null !== $args) { - return $reflection->newInstanceArgs($args); - } - if ((null === $constructor = $reflection->getConstructor()) - || ($constructor->isPublic() && !$constructor->isFinal())) { - return $reflection->newInstance(); - } - - if (!$this->instantiator) { - $this->instantiator = new Instantiator(); - } - - return $this->instantiator->instantiate($classname); - } - - /** - * Creates double class and returns its FQN. - * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces - * - * @return string - */ - protected function createDoubleClass(ReflectionClass $class = null, array $interfaces) - { - $name = $this->namer->name($class, $interfaces); - $node = $this->mirror->reflect($class, $interfaces); - - foreach ($this->patches as $patch) { - if ($patch->supports($node)) { - $patch->apply($node); - } - } - - $this->creator->create($name, $node); - - return $name; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php deleted file mode 100644 index 4d474e5b..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php +++ /dev/null @@ -1,92 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator; - -/** - * Class code creator. - * Generates PHP code for specific class node tree. - * - * @author Konstantin Kudryashov - */ -class ClassCodeGenerator -{ - /** - * Generates PHP code for class node. - * - * @param string $classname - * @param Node\ClassNode $class - * - * @return string - */ - public function generate($classname, Node\ClassNode $class) - { - $parts = explode('\\', $classname); - $classname = array_pop($parts); - $namespace = implode('\\', $parts); - - $code = sprintf("class %s extends \%s implements %s {\n", - $classname, $class->getParentClass(), implode(', ', - array_map(function ($interface) {return '\\'.$interface;}, $class->getInterfaces()) - ) - ); - - foreach ($class->getProperties() as $name => $visibility) { - $code .= sprintf("%s \$%s;\n", $visibility, $name); - } - $code .= "\n"; - - foreach ($class->getMethods() as $method) { - $code .= $this->generateMethod($method)."\n"; - } - $code .= "\n}"; - - return sprintf("namespace %s {\n%s\n}", $namespace, $code); - } - - private function generateMethod(Node\MethodNode $method) - { - $php = sprintf("%s %s function %s%s(%s)%s {\n", - $method->getVisibility(), - $method->isStatic() ? 'static' : '', - $method->returnsReference() ? '&':'', - $method->getName(), - implode(', ', $this->generateArguments($method->getArguments())), - $method->hasReturnType() ? sprintf(': %s', $method->getReturnType()) : '' - ); - $php .= $method->getCode()."\n"; - - return $php.'}'; - } - - private function generateArguments(array $arguments) - { - return array_map(function (Node\ArgumentNode $argument) { - $php = ''; - - if ($hint = $argument->getTypeHint()) { - if ('array' === $hint || 'callable' === $hint) { - $php .= $hint; - } else { - $php .= '\\'.$hint; - } - } - - $php .= ' '.($argument->isPassedByReference() ? '&' : '').'$'.$argument->getName(); - - if ($argument->isOptional()) { - $php .= ' = '.var_export($argument->getDefault(), true); - } - - return $php; - }, $arguments); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php deleted file mode 100644 index 882a4a4b..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator; - -use Prophecy\Exception\Doubler\ClassCreatorException; - -/** - * Class creator. - * Creates specific class in current environment. - * - * @author Konstantin Kudryashov - */ -class ClassCreator -{ - private $generator; - - /** - * Initializes creator. - * - * @param ClassCodeGenerator $generator - */ - public function __construct(ClassCodeGenerator $generator = null) - { - $this->generator = $generator ?: new ClassCodeGenerator; - } - - /** - * Creates class. - * - * @param string $classname - * @param Node\ClassNode $class - * - * @return mixed - * - * @throws \Prophecy\Exception\Doubler\ClassCreatorException - */ - public function create($classname, Node\ClassNode $class) - { - $code = $this->generator->generate($classname, $class); - $return = eval($code); - - if (!class_exists($classname, false)) { - if (count($class->getInterfaces())) { - throw new ClassCreatorException(sprintf( - 'Could not double `%s` and implement interfaces: [%s].', - $class->getParentClass(), implode(', ', $class->getInterfaces()) - ), $class); - } - - throw new ClassCreatorException( - sprintf('Could not double `%s`.', $class->getParentClass()), - $class - ); - } - - return $return; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php deleted file mode 100644 index 6a4ebde5..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php +++ /dev/null @@ -1,210 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator; - -use Prophecy\Exception\InvalidArgumentException; -use Prophecy\Exception\Doubler\ClassMirrorException; -use ReflectionClass; -use ReflectionMethod; -use ReflectionParameter; - -/** - * Class mirror. - * Core doubler class. Mirrors specific class and/or interfaces into class node tree. - * - * @author Konstantin Kudryashov - */ -class ClassMirror -{ - private static $reflectableMethods = array( - '__construct', - '__destruct', - '__sleep', - '__wakeup', - '__toString', - '__call', - ); - - /** - * Reflects provided arguments into class node. - * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces - * - * @return Node\ClassNode - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function reflect(ReflectionClass $class = null, array $interfaces) - { - $node = new Node\ClassNode; - - if (null !== $class) { - if (true === $class->isInterface()) { - throw new InvalidArgumentException(sprintf( - "Could not reflect %s as a class, because it\n". - "is interface - use the second argument instead.", - $class->getName() - )); - } - - $this->reflectClassToNode($class, $node); - } - - foreach ($interfaces as $interface) { - if (!$interface instanceof ReflectionClass) { - throw new InvalidArgumentException(sprintf( - "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n". - "a second argument to `ClassMirror::reflect(...)`, but got %s.", - is_object($interface) ? get_class($interface).' class' : gettype($interface) - )); - } - if (false === $interface->isInterface()) { - throw new InvalidArgumentException(sprintf( - "Could not reflect %s as an interface, because it\n". - "is class - use the first argument instead.", - $interface->getName() - )); - } - - $this->reflectInterfaceToNode($interface, $node); - } - - $node->addInterface('Prophecy\Doubler\Generator\ReflectionInterface'); - - return $node; - } - - private function reflectClassToNode(ReflectionClass $class, Node\ClassNode $node) - { - if (true === $class->isFinal()) { - throw new ClassMirrorException(sprintf( - 'Could not reflect class %s as it is marked final.', $class->getName() - ), $class); - } - - $node->setParentClass($class->getName()); - - foreach ($class->getMethods(ReflectionMethod::IS_ABSTRACT) as $method) { - if (false === $method->isProtected()) { - continue; - } - - $this->reflectMethodToNode($method, $node); - } - - foreach ($class->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { - if (0 === strpos($method->getName(), '_') - && !in_array($method->getName(), self::$reflectableMethods)) { - continue; - } - - if (true === $method->isFinal()) { - continue; - } - - $this->reflectMethodToNode($method, $node); - } - } - - private function reflectInterfaceToNode(ReflectionClass $interface, Node\ClassNode $node) - { - $node->addInterface($interface->getName()); - - foreach ($interface->getMethods() as $method) { - $this->reflectMethodToNode($method, $node); - } - } - - private function reflectMethodToNode(ReflectionMethod $method, Node\ClassNode $classNode) - { - $node = new Node\MethodNode($method->getName()); - - if (true === $method->isProtected()) { - $node->setVisibility('protected'); - } - - if (true === $method->isStatic()) { - $node->setStatic(); - } - - if (true === $method->returnsReference()) { - $node->setReturnsReference(); - } - - if (version_compare(PHP_VERSION, '7.0', '>=') && true === $method->hasReturnType()) { - $node->setReturnType((string) $method->getReturnType()); - } - - if (is_array($params = $method->getParameters()) && count($params)) { - foreach ($params as $param) { - $this->reflectArgumentToNode($param, $node); - } - } - - $classNode->addMethod($node); - } - - private function reflectArgumentToNode(ReflectionParameter $parameter, Node\MethodNode $methodNode) - { - $name = $parameter->getName() == '...' ? '__dot_dot_dot__' : $parameter->getName(); - $node = new Node\ArgumentNode($name); - - $typeHint = $this->getTypeHint($parameter); - $node->setTypeHint($typeHint); - - if (true === $parameter->isDefaultValueAvailable()) { - $node->setDefault($parameter->getDefaultValue()); - } elseif (true === $parameter->isOptional() - || (true === $parameter->allowsNull() && $typeHint)) { - $node->setDefault(null); - } - - if (true === $parameter->isPassedByReference()) { - $node->setAsPassedByReference(); - } - - $methodNode->addArgument($node); - } - - private function getTypeHint(ReflectionParameter $parameter) - { - if (null !== $className = $this->getParameterClassName($parameter)) { - return $className; - } - - if (true === $parameter->isArray()) { - return 'array'; - } - - if (version_compare(PHP_VERSION, '5.4', '>=') && true === $parameter->isCallable()) { - return 'callable'; - } - - if (version_compare(PHP_VERSION, '7.0', '>=') && true === $parameter->hasType()) { - return (string) $parameter->getType(); - } - - return null; - } - - private function getParameterClassName(ReflectionParameter $parameter) - { - try { - return $parameter->getClass() ? $parameter->getClass()->getName() : null; - } catch (\ReflectionException $e) { - preg_match('/\[\s\<\w+?>\s([\w,\\\]+)/s', $parameter, $matches); - - return isset($matches[1]) ? $matches[1] : null; - } - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php deleted file mode 100644 index a6c42a38..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php +++ /dev/null @@ -1,75 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator\Node; - -/** - * Argument node. - * - * @author Konstantin Kudryashov - */ -class ArgumentNode -{ - private $name; - private $typeHint; - private $default; - private $optional = false; - private $byReference = false; - - /** - * @param string $name - */ - public function __construct($name) - { - $this->name = $name; - } - - public function getName() - { - return $this->name; - } - - public function getTypeHint() - { - return $this->typeHint; - } - - public function setTypeHint($typeHint = null) - { - $this->typeHint = $typeHint; - } - - public function getDefault() - { - return $this->default; - } - - public function setDefault($default = null) - { - $this->optional = true; - $this->default = $default; - } - - public function isOptional() - { - return $this->optional; - } - - public function setAsPassedByReference($byReference = true) - { - $this->byReference = $byReference; - } - - public function isPassedByReference() - { - return $this->byReference; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php deleted file mode 100644 index b38cb4ea..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php +++ /dev/null @@ -1,130 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator\Node; - -use Prophecy\Exception\InvalidArgumentException; - -/** - * Class node. - * - * @author Konstantin Kudryashov - */ -class ClassNode -{ - private $parentClass = 'stdClass'; - private $interfaces = array(); - private $properties = array(); - - /** - * @var MethodNode[] - */ - private $methods = array(); - - public function getParentClass() - { - return $this->parentClass; - } - - /** - * @param string $class - */ - public function setParentClass($class) - { - $this->parentClass = $class ?: 'stdClass'; - } - - /** - * @return string[] - */ - public function getInterfaces() - { - return $this->interfaces; - } - - /** - * @param string $interface - */ - public function addInterface($interface) - { - if ($this->hasInterface($interface)) { - return; - } - - array_unshift($this->interfaces, $interface); - } - - /** - * @param string $interface - * - * @return bool - */ - public function hasInterface($interface) - { - return in_array($interface, $this->interfaces); - } - - public function getProperties() - { - return $this->properties; - } - - public function addProperty($name, $visibility = 'public') - { - $visibility = strtolower($visibility); - - if (!in_array($visibility, array('public', 'private', 'protected'))) { - throw new InvalidArgumentException(sprintf( - '`%s` property visibility is not supported.', $visibility - )); - } - - $this->properties[$name] = $visibility; - } - - /** - * @return MethodNode[] - */ - public function getMethods() - { - return $this->methods; - } - - public function addMethod(MethodNode $method) - { - $this->methods[$method->getName()] = $method; - } - - public function removeMethod($name) - { - unset($this->methods[$name]); - } - - /** - * @param string $name - * - * @return MethodNode|null - */ - public function getMethod($name) - { - return $this->hasMethod($name) ? $this->methods[$name] : null; - } - - /** - * @param string $name - * - * @return bool - */ - public function hasMethod($name) - { - return isset($this->methods[$name]); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php deleted file mode 100644 index eb953524..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php +++ /dev/null @@ -1,177 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator\Node; - -use Prophecy\Exception\InvalidArgumentException; - -/** - * Method node. - * - * @author Konstantin Kudryashov - */ -class MethodNode -{ - private $name; - private $code; - private $visibility = 'public'; - private $static = false; - private $returnsReference = false; - private $returnType; - - /** - * @var ArgumentNode[] - */ - private $arguments = array(); - - /** - * @param string $name - * @param string $code - */ - public function __construct($name, $code = null) - { - $this->name = $name; - $this->code = $code; - } - - public function getVisibility() - { - return $this->visibility; - } - - /** - * @param string $visibility - */ - public function setVisibility($visibility) - { - $visibility = strtolower($visibility); - - if (!in_array($visibility, array('public', 'private', 'protected'))) { - throw new InvalidArgumentException(sprintf( - '`%s` method visibility is not supported.', $visibility - )); - } - - $this->visibility = $visibility; - } - - public function isStatic() - { - return $this->static; - } - - public function setStatic($static = true) - { - $this->static = (bool) $static; - } - - public function returnsReference() - { - return $this->returnsReference; - } - - public function setReturnsReference() - { - $this->returnsReference = true; - } - - public function getName() - { - return $this->name; - } - - public function addArgument(ArgumentNode $argument) - { - $this->arguments[] = $argument; - } - - /** - * @return ArgumentNode[] - */ - public function getArguments() - { - return $this->arguments; - } - - public function hasReturnType() - { - return null !== $this->returnType; - } - - /** - * @param string $type - */ - public function setReturnType($type = null) - { - switch ($type) { - case '': - $this->returnType = null; - break; - - case 'string'; - case 'float': - case 'int': - case 'bool': - case 'array': - case 'callable': - $this->returnType = $type; - break; - - case 'double': - case 'real': - $this->returnType = 'float'; - break; - - case 'boolean': - $this->returnType = 'bool'; - break; - - case 'integer': - $this->returnType = 'int'; - break; - - default: - $this->returnType = '\\' . ltrim($type, '\\'); - } - } - - public function getReturnType() - { - return $this->returnType; - } - - /** - * @param string $code - */ - public function setCode($code) - { - $this->code = $code; - } - - public function getCode() - { - if ($this->returnsReference) - { - return "throw new \Prophecy\Exception\Doubler\ReturnByReferenceException('Returning by reference not supported', get_class(\$this), '{$this->name}');"; - } - - return (string) $this->code; - } - - public function useParentCode() - { - $this->code = sprintf( - 'return parent::%s(%s);', $this->getName(), implode(', ', - array_map(function (ArgumentNode $arg) { return '$'.$arg->getName(); }, $this->arguments) - ) - ); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php deleted file mode 100644 index d720b151..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator; - -/** - * Reflection interface. - * All reflected classes implement this interface. - * - * @author Konstantin Kudryashov - */ -interface ReflectionInterface -{ -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php deleted file mode 100644 index 8a99c4ce..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php +++ /dev/null @@ -1,127 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler; - -use Prophecy\Exception\Doubler\DoubleException; -use Prophecy\Exception\Doubler\ClassNotFoundException; -use Prophecy\Exception\Doubler\InterfaceNotFoundException; -use ReflectionClass; - -/** - * Lazy double. - * Gives simple interface to describe double before creating it. - * - * @author Konstantin Kudryashov - */ -class LazyDouble -{ - private $doubler; - private $class; - private $interfaces = array(); - private $arguments = null; - private $double; - - /** - * Initializes lazy double. - * - * @param Doubler $doubler - */ - public function __construct(Doubler $doubler) - { - $this->doubler = $doubler; - } - - /** - * Tells doubler to use specific class as parent one for double. - * - * @param string|ReflectionClass $class - * - * @throws \Prophecy\Exception\Doubler\ClassNotFoundException - * @throws \Prophecy\Exception\Doubler\DoubleException - */ - public function setParentClass($class) - { - if (null !== $this->double) { - throw new DoubleException('Can not extend class with already instantiated double.'); - } - - if (!$class instanceof ReflectionClass) { - if (!class_exists($class)) { - throw new ClassNotFoundException(sprintf('Class %s not found.', $class), $class); - } - - $class = new ReflectionClass($class); - } - - $this->class = $class; - } - - /** - * Tells doubler to implement specific interface with double. - * - * @param string|ReflectionClass $interface - * - * @throws \Prophecy\Exception\Doubler\InterfaceNotFoundException - * @throws \Prophecy\Exception\Doubler\DoubleException - */ - public function addInterface($interface) - { - if (null !== $this->double) { - throw new DoubleException( - 'Can not implement interface with already instantiated double.' - ); - } - - if (!$interface instanceof ReflectionClass) { - if (!interface_exists($interface)) { - throw new InterfaceNotFoundException( - sprintf('Interface %s not found.', $interface), - $interface - ); - } - - $interface = new ReflectionClass($interface); - } - - $this->interfaces[] = $interface; - } - - /** - * Sets constructor arguments. - * - * @param array $arguments - */ - public function setArguments(array $arguments = null) - { - $this->arguments = $arguments; - } - - /** - * Creates double instance or returns already created one. - * - * @return DoubleInterface - */ - public function getInstance() - { - if (null === $this->double) { - if (null !== $this->arguments) { - return $this->double = $this->doubler->double( - $this->class, $this->interfaces, $this->arguments - ); - } - - $this->double = $this->doubler->double($this->class, $this->interfaces); - } - - return $this->double; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php deleted file mode 100644 index d67ec6a4..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php +++ /dev/null @@ -1,52 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler; - -use ReflectionClass; - -/** - * Name generator. - * Generates classname for double. - * - * @author Konstantin Kudryashov - */ -class NameGenerator -{ - private static $counter = 1; - - /** - * Generates name. - * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces - * - * @return string - */ - public function name(ReflectionClass $class = null, array $interfaces) - { - $parts = array(); - - if (null !== $class) { - $parts[] = $class->getName(); - } else { - foreach ($interfaces as $interface) { - $parts[] = $interface->getShortName(); - } - } - - if (!count($parts)) { - $parts[] = 'stdClass'; - } - - return sprintf('Double\%s\P%d', implode('\\', $parts), self::$counter++); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php deleted file mode 100644 index 48ed2254..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php +++ /dev/null @@ -1,40 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Call; - -use Prophecy\Exception\Prophecy\ObjectProphecyException; -use Prophecy\Prophecy\ObjectProphecy; - -class UnexpectedCallException extends ObjectProphecyException -{ - private $methodName; - private $arguments; - - public function __construct($message, ObjectProphecy $objectProphecy, - $methodName, array $arguments) - { - parent::__construct($message, $objectProphecy); - - $this->methodName = $methodName; - $this->arguments = $arguments; - } - - public function getMethodName() - { - return $this->methodName; - } - - public function getArguments() - { - return $this->arguments; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php deleted file mode 100644 index 822918a2..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -use Prophecy\Doubler\Generator\Node\ClassNode; - -class ClassCreatorException extends \RuntimeException implements DoublerException -{ - private $node; - - public function __construct($message, ClassNode $node) - { - parent::__construct($message); - - $this->node = $node; - } - - public function getClassNode() - { - return $this->node; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php deleted file mode 100644 index 8fc53b8b..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -use ReflectionClass; - -class ClassMirrorException extends \RuntimeException implements DoublerException -{ - private $class; - - public function __construct($message, ReflectionClass $class) - { - parent::__construct($message); - - $this->class = $class; - } - - public function getReflectedClass() - { - return $this->class; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php deleted file mode 100644 index 5bc826d7..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -class ClassNotFoundException extends DoubleException -{ - private $classname; - - /** - * @param string $message - * @param string $classname - */ - public function __construct($message, $classname) - { - parent::__construct($message); - - $this->classname = $classname; - } - - public function getClassname() - { - return $this->classname; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php deleted file mode 100644 index 6642a58f..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php +++ /dev/null @@ -1,18 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -use RuntimeException; - -class DoubleException extends RuntimeException implements DoublerException -{ -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php deleted file mode 100644 index 9d6be179..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php +++ /dev/null @@ -1,18 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -use Prophecy\Exception\Exception; - -interface DoublerException extends Exception -{ -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php deleted file mode 100644 index e344dead..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php +++ /dev/null @@ -1,20 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -class InterfaceNotFoundException extends ClassNotFoundException -{ - public function getInterfaceName() - { - return $this->getClassname(); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php deleted file mode 100644 index b113941f..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php +++ /dev/null @@ -1,60 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -class MethodNotFoundException extends DoubleException -{ - /** - * @var string - */ - private $classname; - - /** - * @var string - */ - private $methodName; - - /** - * @var array - */ - private $arguments; - - /** - * @param string $message - * @param string $classname - * @param string $methodName - * @param null|Argument\ArgumentsWildcard|array $arguments - */ - public function __construct($message, $classname, $methodName, $arguments = null) - { - parent::__construct($message); - - $this->classname = $classname; - $this->methodName = $methodName; - $this->arguments = $arguments; - } - - public function getClassname() - { - return $this->classname; - } - - public function getMethodName() - { - return $this->methodName; - } - - public function getArguments() - { - return $this->arguments; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php deleted file mode 100644 index 63030497..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php +++ /dev/null @@ -1,41 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -class ReturnByReferenceException extends DoubleException -{ - private $classname; - private $methodName; - - /** - * @param string $message - * @param string $classname - * @param string $methodName - */ - public function __construct($message, $classname, $methodName) - { - parent::__construct($message); - - $this->classname = $classname; - $this->methodName = $methodName; - } - - public function getClassname() - { - return $this->classname; - } - - public function getMethodName() - { - return $this->methodName; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php deleted file mode 100644 index ac9fe4dd..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php +++ /dev/null @@ -1,26 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception; - -/** - * Core Prophecy exception interface. - * All Prophecy exceptions implement it. - * - * @author Konstantin Kudryashov - */ -interface Exception -{ - /** - * @return string - */ - public function getMessage(); -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php deleted file mode 100644 index bc91c690..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,16 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception; - -class InvalidArgumentException extends \InvalidArgumentException implements Exception -{ -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php deleted file mode 100644 index 44b598a4..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php +++ /dev/null @@ -1,50 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use Prophecy\Prophecy\ObjectProphecy; - -class AggregateException extends \RuntimeException implements PredictionException -{ - private $exceptions = array(); - private $objectProphecy; - - public function append(PredictionException $exception) - { - $message = $exception->getMessage(); - $message = ' '.strtr($message, array("\n" => "\n "))."\n"; - - $this->message = rtrim($this->message.$message); - $this->exceptions[] = $exception; - } - - /** - * @return PredictionException[] - */ - public function getExceptions() - { - return $this->exceptions; - } - - public function setObjectProphecy(ObjectProphecy $objectProphecy) - { - $this->objectProphecy = $objectProphecy; - } - - /** - * @return ObjectProphecy - */ - public function getObjectProphecy() - { - return $this->objectProphecy; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php deleted file mode 100644 index bbbbc3d9..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use RuntimeException; - -/** - * Basic failed prediction exception. - * Use it for custom prediction failures. - * - * @author Konstantin Kudryashov - */ -class FailedPredictionException extends RuntimeException implements PredictionException -{ -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php deleted file mode 100644 index 05ea4aad..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php +++ /dev/null @@ -1,18 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use Prophecy\Exception\Prophecy\MethodProphecyException; - -class NoCallsException extends MethodProphecyException implements PredictionException -{ -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php deleted file mode 100644 index 2596b1ef..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php +++ /dev/null @@ -1,18 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use Prophecy\Exception\Exception; - -interface PredictionException extends Exception -{ -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php deleted file mode 100644 index 9d905431..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use Prophecy\Prophecy\MethodProphecy; - -class UnexpectedCallsCountException extends UnexpectedCallsException -{ - private $expectedCount; - - public function __construct($message, MethodProphecy $methodProphecy, $count, array $calls) - { - parent::__construct($message, $methodProphecy, $calls); - - $this->expectedCount = intval($count); - } - - public function getExpectedCount() - { - return $this->expectedCount; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php deleted file mode 100644 index 7a99c2d7..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Exception\Prophecy\MethodProphecyException; - -class UnexpectedCallsException extends MethodProphecyException implements PredictionException -{ - private $calls = array(); - - public function __construct($message, MethodProphecy $methodProphecy, array $calls) - { - parent::__construct($message, $methodProphecy); - - $this->calls = $calls; - } - - public function getCalls() - { - return $this->calls; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php deleted file mode 100644 index 1b03eaf4..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prophecy; - -use Prophecy\Prophecy\MethodProphecy; - -class MethodProphecyException extends ObjectProphecyException -{ - private $methodProphecy; - - public function __construct($message, MethodProphecy $methodProphecy) - { - parent::__construct($message, $methodProphecy->getObjectProphecy()); - - $this->methodProphecy = $methodProphecy; - } - - /** - * @return MethodProphecy - */ - public function getMethodProphecy() - { - return $this->methodProphecy; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php deleted file mode 100644 index e345402e..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prophecy; - -use Prophecy\Prophecy\ObjectProphecy; - -class ObjectProphecyException extends \RuntimeException implements ProphecyException -{ - private $objectProphecy; - - public function __construct($message, ObjectProphecy $objectProphecy) - { - parent::__construct($message); - - $this->objectProphecy = $objectProphecy; - } - - /** - * @return ObjectProphecy - */ - public function getObjectProphecy() - { - return $this->objectProphecy; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php deleted file mode 100644 index 91573328..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php +++ /dev/null @@ -1,18 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prophecy; - -use Prophecy\Exception\Exception; - -interface ProphecyException extends Exception -{ -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php deleted file mode 100644 index b4787366..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php +++ /dev/null @@ -1,86 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prediction; - -use Prophecy\Call\Call; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Argument\ArgumentsWildcard; -use Prophecy\Argument\Token\AnyValuesToken; -use Prophecy\Util\StringUtil; -use Prophecy\Exception\Prediction\NoCallsException; - -/** - * Call prediction. - * - * @author Konstantin Kudryashov - */ -class CallPrediction implements PredictionInterface -{ - private $util; - - /** - * Initializes prediction. - * - * @param StringUtil $util - */ - public function __construct(StringUtil $util = null) - { - $this->util = $util ?: new StringUtil; - } - - /** - * Tests that there was at least one call. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\NoCallsException - */ - public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) - { - if (count($calls)) { - return; - } - - $methodCalls = $object->findProphecyMethodCalls( - $method->getMethodName(), - new ArgumentsWildcard(array(new AnyValuesToken)) - ); - - if (count($methodCalls)) { - throw new NoCallsException(sprintf( - "No calls have been made that match:\n". - " %s->%s(%s)\n". - "but expected at least one.\n". - "Recorded `%s(...)` calls:\n%s", - - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard(), - $method->getMethodName(), - $this->util->stringifyCalls($methodCalls) - ), $method); - } - - throw new NoCallsException(sprintf( - "No calls have been made that match:\n". - " %s->%s(%s)\n". - "but expected at least one.", - - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard() - ), $method); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php deleted file mode 100644 index 31c6c575..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php +++ /dev/null @@ -1,107 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prediction; - -use Prophecy\Call\Call; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Argument\ArgumentsWildcard; -use Prophecy\Argument\Token\AnyValuesToken; -use Prophecy\Util\StringUtil; -use Prophecy\Exception\Prediction\UnexpectedCallsCountException; - -/** - * Prediction interface. - * Predictions are logical test blocks, tied to `should...` keyword. - * - * @author Konstantin Kudryashov - */ -class CallTimesPrediction implements PredictionInterface -{ - private $times; - private $util; - - /** - * Initializes prediction. - * - * @param int $times - * @param StringUtil $util - */ - public function __construct($times, StringUtil $util = null) - { - $this->times = intval($times); - $this->util = $util ?: new StringUtil; - } - - /** - * Tests that there was exact amount of calls made. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\UnexpectedCallsCountException - */ - public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) - { - if ($this->times == count($calls)) { - return; - } - - $methodCalls = $object->findProphecyMethodCalls( - $method->getMethodName(), - new ArgumentsWildcard(array(new AnyValuesToken)) - ); - - if (count($calls)) { - $message = sprintf( - "Expected exactly %d calls that match:\n". - " %s->%s(%s)\n". - "but %d were made:\n%s", - - $this->times, - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard(), - count($calls), - $this->util->stringifyCalls($calls) - ); - } elseif (count($methodCalls)) { - $message = sprintf( - "Expected exactly %d calls that match:\n". - " %s->%s(%s)\n". - "but none were made.\n". - "Recorded `%s(...)` calls:\n%s", - - $this->times, - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard(), - $method->getMethodName(), - $this->util->stringifyCalls($methodCalls) - ); - } else { - $message = sprintf( - "Expected exactly %d calls that match:\n". - " %s->%s(%s)\n". - "but none were made.", - - $this->times, - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard() - ); - } - - throw new UnexpectedCallsCountException($message, $method, $this->times, $calls); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php deleted file mode 100644 index 44bc782c..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php +++ /dev/null @@ -1,65 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prediction; - -use Prophecy\Call\Call; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Exception\InvalidArgumentException; -use Closure; - -/** - * Callback prediction. - * - * @author Konstantin Kudryashov - */ -class CallbackPrediction implements PredictionInterface -{ - private $callback; - - /** - * Initializes callback prediction. - * - * @param callable $callback Custom callback - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function __construct($callback) - { - if (!is_callable($callback)) { - throw new InvalidArgumentException(sprintf( - 'Callable expected as an argument to CallbackPrediction, but got %s.', - gettype($callback) - )); - } - - $this->callback = $callback; - } - - /** - * Executes preset callback. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - */ - public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) - { - $callback = $this->callback; - - if ($callback instanceof Closure && method_exists('Closure', 'bind')) { - $callback = Closure::bind($callback, $object); - } - - call_user_func($callback, $calls, $object, $method); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php deleted file mode 100644 index 46ac5bfc..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php +++ /dev/null @@ -1,68 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prediction; - -use Prophecy\Call\Call; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Util\StringUtil; -use Prophecy\Exception\Prediction\UnexpectedCallsException; - -/** - * No calls prediction. - * - * @author Konstantin Kudryashov - */ -class NoCallsPrediction implements PredictionInterface -{ - private $util; - - /** - * Initializes prediction. - * - * @param null|StringUtil $util - */ - public function __construct(StringUtil $util = null) - { - $this->util = $util ?: new StringUtil; - } - - /** - * Tests that there were no calls made. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\UnexpectedCallsException - */ - public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) - { - if (!count($calls)) { - return; - } - - $verb = count($calls) === 1 ? 'was' : 'were'; - - throw new UnexpectedCallsException(sprintf( - "No calls expected that match:\n". - " %s->%s(%s)\n". - "but %d %s made:\n%s", - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard(), - count($calls), - $verb, - $this->util->stringifyCalls($calls) - ), $method, $calls); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php deleted file mode 100644 index f7fb06a9..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php +++ /dev/null @@ -1,37 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prediction; - -use Prophecy\Call\Call; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; - -/** - * Prediction interface. - * Predictions are logical test blocks, tied to `should...` keyword. - * - * @author Konstantin Kudryashov - */ -interface PredictionInterface -{ - /** - * Tests that double fulfilled prediction. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws object - * @return void - */ - public function check(array $calls, ObjectProphecy $object, MethodProphecy $method); -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php deleted file mode 100644 index 5f406bf7..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php +++ /dev/null @@ -1,66 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Promise; - -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Exception\InvalidArgumentException; -use Closure; - -/** - * Callback promise. - * - * @author Konstantin Kudryashov - */ -class CallbackPromise implements PromiseInterface -{ - private $callback; - - /** - * Initializes callback promise. - * - * @param callable $callback Custom callback - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function __construct($callback) - { - if (!is_callable($callback)) { - throw new InvalidArgumentException(sprintf( - 'Callable expected as an argument to CallbackPromise, but got %s.', - gettype($callback) - )); - } - - $this->callback = $callback; - } - - /** - * Evaluates promise callback. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return mixed - */ - public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) - { - $callback = $this->callback; - - if ($callback instanceof Closure && method_exists('Closure', 'bind')) { - $callback = Closure::bind($callback, $object); - } - - return call_user_func($callback, $args, $object, $method); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php deleted file mode 100644 index 382537b4..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php +++ /dev/null @@ -1,35 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Promise; - -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; - -/** - * Promise interface. - * Promises are logical blocks, tied to `will...` keyword. - * - * @author Konstantin Kudryashov - */ -interface PromiseInterface -{ - /** - * Evaluates promise. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return mixed - */ - public function execute(array $args, ObjectProphecy $object, MethodProphecy $method); -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php deleted file mode 100644 index a06724bc..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php +++ /dev/null @@ -1,61 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Promise; - -use Prophecy\Exception\InvalidArgumentException; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; - -/** - * Return argument promise. - * - * @author Konstantin Kudryashov - */ -class ReturnArgumentPromise implements PromiseInterface -{ - /** - * @var int - */ - private $index; - - /** - * Initializes callback promise. - * - * @param int $index The zero-indexed number of the argument to return - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function __construct($index = 0) - { - if (!is_int($index) || $index < 0) { - throw new InvalidArgumentException( - 'Zero-based index expected as argument to ReturnArgumentPromise, but got %s.', - $index - ); - } - $this->index = $index; - } - - /** - * Returns nth argument if has one, null otherwise. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return null|mixed - */ - public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) - { - return count($args) > $this->index ? $args[$this->index] : null; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php deleted file mode 100644 index c7d5ac59..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php +++ /dev/null @@ -1,55 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Promise; - -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; - -/** - * Return promise. - * - * @author Konstantin Kudryashov - */ -class ReturnPromise implements PromiseInterface -{ - private $returnValues = array(); - - /** - * Initializes promise. - * - * @param array $returnValues Array of values - */ - public function __construct(array $returnValues) - { - $this->returnValues = $returnValues; - } - - /** - * Returns saved values one by one until last one, then continuously returns last value. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return mixed - */ - public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) - { - $value = array_shift($this->returnValues); - - if (!count($this->returnValues)) { - $this->returnValues[] = $value; - } - - return $value; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php deleted file mode 100644 index 8007330a..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php +++ /dev/null @@ -1,91 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Promise; - -use Doctrine\Instantiator\Instantiator; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Exception\InvalidArgumentException; -use ReflectionClass; - -/** - * Throw promise. - * - * @author Konstantin Kudryashov - */ -class ThrowPromise implements PromiseInterface -{ - private $exception; - - /** - * @var \Doctrine\Instantiator\Instantiator - */ - private $instantiator; - - /** - * Initializes promise. - * - * @param string|\Exception $exception Exception class name or instance - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function __construct($exception) - { - if (is_string($exception)) { - if (!class_exists($exception) - && 'Exception' !== $exception - && !is_subclass_of($exception, 'Exception')) { - throw new InvalidArgumentException(sprintf( - 'Exception class or instance expected as argument to ThrowPromise, but got %s.', - gettype($exception) - )); - } - } elseif (!$exception instanceof \Exception) { - throw new InvalidArgumentException(sprintf( - 'Exception class or instance expected as argument to ThrowPromise, but got %s.', - gettype($exception) - )); - } - - $this->exception = $exception; - } - - /** - * Throws predefined exception. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws object - */ - public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) - { - if (is_string($this->exception)) { - $classname = $this->exception; - $reflection = new ReflectionClass($classname); - $constructor = $reflection->getConstructor(); - - if ($constructor->isPublic() && 0 == $constructor->getNumberOfRequiredParameters()) { - throw $reflection->newInstance(); - } - - if (!$this->instantiator) { - $this->instantiator = new Instantiator(); - } - - throw $this->instantiator->instantiate($classname); - } - - throw $this->exception; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php deleted file mode 100644 index 426df322..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php +++ /dev/null @@ -1,437 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -use Prophecy\Argument; -use Prophecy\Prophet; -use Prophecy\Promise; -use Prophecy\Prediction; -use Prophecy\Exception\Doubler\MethodNotFoundException; -use Prophecy\Exception\InvalidArgumentException; -use Prophecy\Exception\Prophecy\MethodProphecyException; - -/** - * Method prophecy. - * - * @author Konstantin Kudryashov - */ -class MethodProphecy -{ - private $objectProphecy; - private $methodName; - private $argumentsWildcard; - private $promise; - private $prediction; - private $checkedPredictions = array(); - private $bound = false; - - /** - * Initializes method prophecy. - * - * @param ObjectProphecy $objectProphecy - * @param string $methodName - * @param null|Argument\ArgumentsWildcard|array $arguments - * - * @throws \Prophecy\Exception\Doubler\MethodNotFoundException If method not found - */ - public function __construct(ObjectProphecy $objectProphecy, $methodName, $arguments = null) - { - $double = $objectProphecy->reveal(); - if (!method_exists($double, $methodName)) { - throw new MethodNotFoundException(sprintf( - 'Method `%s::%s()` is not defined.', get_class($double), $methodName - ), get_class($double), $methodName, $arguments); - } - - $this->objectProphecy = $objectProphecy; - $this->methodName = $methodName; - - $reflectedMethod = new \ReflectionMethod($double, $methodName); - if ($reflectedMethod->isFinal()) { - throw new MethodProphecyException(sprintf( - "Can not add prophecy for a method `%s::%s()`\n". - "as it is a final method.", - get_class($double), - $methodName - ), $this); - } - - if (null !== $arguments) { - $this->withArguments($arguments); - } - - if (version_compare(PHP_VERSION, '7.0', '>=') && true === $reflectedMethod->hasReturnType()) { - $type = (string) $reflectedMethod->getReturnType(); - $this->will(function () use ($type) { - switch ($type) { - case 'string': return ''; - case 'float': return 0.0; - case 'int': return 0; - case 'bool': return false; - case 'array': return array(); - - case 'callable': - case 'Closure': - return function () {}; - - case 'Traversable': - case 'Generator': - // Remove eval() when minimum version >=5.5 - $generator = eval('return function () { yield; };'); - return $generator(); - - default: - $prophet = new Prophet; - return $prophet->prophesize($type)->reveal(); - } - }); - } - } - - /** - * Sets argument wildcard. - * - * @param array|Argument\ArgumentsWildcard $arguments - * - * @return $this - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function withArguments($arguments) - { - if (is_array($arguments)) { - $arguments = new Argument\ArgumentsWildcard($arguments); - } - - if (!$arguments instanceof Argument\ArgumentsWildcard) { - throw new InvalidArgumentException(sprintf( - "Either an array or an instance of ArgumentsWildcard expected as\n". - 'a `MethodProphecy::withArguments()` argument, but got %s.', - gettype($arguments) - )); - } - - $this->argumentsWildcard = $arguments; - - return $this; - } - - /** - * Sets custom promise to the prophecy. - * - * @param callable|Promise\PromiseInterface $promise - * - * @return $this - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function will($promise) - { - if (is_callable($promise)) { - $promise = new Promise\CallbackPromise($promise); - } - - if (!$promise instanceof Promise\PromiseInterface) { - throw new InvalidArgumentException(sprintf( - 'Expected callable or instance of PromiseInterface, but got %s.', - gettype($promise) - )); - } - - $this->bindToObjectProphecy(); - $this->promise = $promise; - - return $this; - } - - /** - * Sets return promise to the prophecy. - * - * @see Prophecy\Promise\ReturnPromise - * - * @return $this - */ - public function willReturn() - { - return $this->will(new Promise\ReturnPromise(func_get_args())); - } - - /** - * Sets return argument promise to the prophecy. - * - * @param int $index The zero-indexed number of the argument to return - * - * @see Prophecy\Promise\ReturnArgumentPromise - * - * @return $this - */ - public function willReturnArgument($index = 0) - { - return $this->will(new Promise\ReturnArgumentPromise($index)); - } - - /** - * Sets throw promise to the prophecy. - * - * @see Prophecy\Promise\ThrowPromise - * - * @param string|\Exception $exception Exception class or instance - * - * @return $this - */ - public function willThrow($exception) - { - return $this->will(new Promise\ThrowPromise($exception)); - } - - /** - * Sets custom prediction to the prophecy. - * - * @param callable|Prediction\PredictionInterface $prediction - * - * @return $this - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function should($prediction) - { - if (is_callable($prediction)) { - $prediction = new Prediction\CallbackPrediction($prediction); - } - - if (!$prediction instanceof Prediction\PredictionInterface) { - throw new InvalidArgumentException(sprintf( - 'Expected callable or instance of PredictionInterface, but got %s.', - gettype($prediction) - )); - } - - $this->bindToObjectProphecy(); - $this->prediction = $prediction; - - return $this; - } - - /** - * Sets call prediction to the prophecy. - * - * @see Prophecy\Prediction\CallPrediction - * - * @return $this - */ - public function shouldBeCalled() - { - return $this->should(new Prediction\CallPrediction); - } - - /** - * Sets no calls prediction to the prophecy. - * - * @see Prophecy\Prediction\NoCallsPrediction - * - * @return $this - */ - public function shouldNotBeCalled() - { - return $this->should(new Prediction\NoCallsPrediction); - } - - /** - * Sets call times prediction to the prophecy. - * - * @see Prophecy\Prediction\CallTimesPrediction - * - * @param $count - * - * @return $this - */ - public function shouldBeCalledTimes($count) - { - return $this->should(new Prediction\CallTimesPrediction($count)); - } - - /** - * Checks provided prediction immediately. - * - * @param callable|Prediction\PredictionInterface $prediction - * - * @return $this - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function shouldHave($prediction) - { - if (is_callable($prediction)) { - $prediction = new Prediction\CallbackPrediction($prediction); - } - - if (!$prediction instanceof Prediction\PredictionInterface) { - throw new InvalidArgumentException(sprintf( - 'Expected callable or instance of PredictionInterface, but got %s.', - gettype($prediction) - )); - } - - if (null === $this->promise) { - $this->willReturn(); - } - - $calls = $this->getObjectProphecy()->findProphecyMethodCalls( - $this->getMethodName(), - $this->getArgumentsWildcard() - ); - - try { - $prediction->check($calls, $this->getObjectProphecy(), $this); - $this->checkedPredictions[] = $prediction; - } catch (\Exception $e) { - $this->checkedPredictions[] = $prediction; - - throw $e; - } - - return $this; - } - - /** - * Checks call prediction. - * - * @see Prophecy\Prediction\CallPrediction - * - * @return $this - */ - public function shouldHaveBeenCalled() - { - return $this->shouldHave(new Prediction\CallPrediction); - } - - /** - * Checks no calls prediction. - * - * @see Prophecy\Prediction\NoCallsPrediction - * - * @return $this - */ - public function shouldNotHaveBeenCalled() - { - return $this->shouldHave(new Prediction\NoCallsPrediction); - } - - /** - * Checks no calls prediction. - * - * @see Prophecy\Prediction\NoCallsPrediction - * @deprecated - * - * @return $this - */ - public function shouldNotBeenCalled() - { - return $this->shouldNotHaveBeenCalled(); - } - - /** - * Checks call times prediction. - * - * @see Prophecy\Prediction\CallTimesPrediction - * - * @param int $count - * - * @return $this - */ - public function shouldHaveBeenCalledTimes($count) - { - return $this->shouldHave(new Prediction\CallTimesPrediction($count)); - } - - /** - * Checks currently registered [with should(...)] prediction. - */ - public function checkPrediction() - { - if (null === $this->prediction) { - return; - } - - $this->shouldHave($this->prediction); - } - - /** - * Returns currently registered promise. - * - * @return null|Promise\PromiseInterface - */ - public function getPromise() - { - return $this->promise; - } - - /** - * Returns currently registered prediction. - * - * @return null|Prediction\PredictionInterface - */ - public function getPrediction() - { - return $this->prediction; - } - - /** - * Returns predictions that were checked on this object. - * - * @return Prediction\PredictionInterface[] - */ - public function getCheckedPredictions() - { - return $this->checkedPredictions; - } - - /** - * Returns object prophecy this method prophecy is tied to. - * - * @return ObjectProphecy - */ - public function getObjectProphecy() - { - return $this->objectProphecy; - } - - /** - * Returns method name. - * - * @return string - */ - public function getMethodName() - { - return $this->methodName; - } - - /** - * Returns arguments wildcard. - * - * @return Argument\ArgumentsWildcard - */ - public function getArgumentsWildcard() - { - return $this->argumentsWildcard; - } - - private function bindToObjectProphecy() - { - if ($this->bound) { - return; - } - - $this->getObjectProphecy()->addMethodProphecy($this); - $this->bound = true; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php deleted file mode 100644 index 43dba46d..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php +++ /dev/null @@ -1,279 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -use SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; -use Prophecy\Call\Call; -use Prophecy\Doubler\LazyDouble; -use Prophecy\Argument\ArgumentsWildcard; -use Prophecy\Call\CallCenter; -use Prophecy\Exception\Prophecy\ObjectProphecyException; -use Prophecy\Exception\Prophecy\MethodProphecyException; -use Prophecy\Exception\Prediction\AggregateException; -use Prophecy\Exception\Prediction\PredictionException; - -/** - * Object prophecy. - * - * @author Konstantin Kudryashov - */ -class ObjectProphecy implements ProphecyInterface -{ - private $lazyDouble; - private $callCenter; - private $revealer; - private $comparatorFactory; - - /** - * @var MethodProphecy[][] - */ - private $methodProphecies = array(); - - /** - * Initializes object prophecy. - * - * @param LazyDouble $lazyDouble - * @param CallCenter $callCenter - * @param RevealerInterface $revealer - * @param ComparatorFactory $comparatorFactory - */ - public function __construct( - LazyDouble $lazyDouble, - CallCenter $callCenter = null, - RevealerInterface $revealer = null, - ComparatorFactory $comparatorFactory = null - ) { - $this->lazyDouble = $lazyDouble; - $this->callCenter = $callCenter ?: new CallCenter; - $this->revealer = $revealer ?: new Revealer; - - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); - } - - /** - * Forces double to extend specific class. - * - * @param string $class - * - * @return $this - */ - public function willExtend($class) - { - $this->lazyDouble->setParentClass($class); - - return $this; - } - - /** - * Forces double to implement specific interface. - * - * @param string $interface - * - * @return $this - */ - public function willImplement($interface) - { - $this->lazyDouble->addInterface($interface); - - return $this; - } - - /** - * Sets constructor arguments. - * - * @param array $arguments - * - * @return $this - */ - public function willBeConstructedWith(array $arguments = null) - { - $this->lazyDouble->setArguments($arguments); - - return $this; - } - - /** - * Reveals double. - * - * @return object - * - * @throws \Prophecy\Exception\Prophecy\ObjectProphecyException If double doesn't implement needed interface - */ - public function reveal() - { - $double = $this->lazyDouble->getInstance(); - - if (null === $double || !$double instanceof ProphecySubjectInterface) { - throw new ObjectProphecyException( - "Generated double must implement ProphecySubjectInterface, but it does not.\n". - 'It seems you have wrongly configured doubler without required ClassPatch.', - $this - ); - } - - $double->setProphecy($this); - - return $double; - } - - /** - * Adds method prophecy to object prophecy. - * - * @param MethodProphecy $methodProphecy - * - * @throws \Prophecy\Exception\Prophecy\MethodProphecyException If method prophecy doesn't - * have arguments wildcard - */ - public function addMethodProphecy(MethodProphecy $methodProphecy) - { - $argumentsWildcard = $methodProphecy->getArgumentsWildcard(); - if (null === $argumentsWildcard) { - throw new MethodProphecyException(sprintf( - "Can not add prophecy for a method `%s::%s()`\n". - "as you did not specify arguments wildcard for it.", - get_class($this->reveal()), - $methodProphecy->getMethodName() - ), $methodProphecy); - } - - $methodName = $methodProphecy->getMethodName(); - - if (!isset($this->methodProphecies[$methodName])) { - $this->methodProphecies[$methodName] = array(); - } - - $this->methodProphecies[$methodName][] = $methodProphecy; - } - - /** - * Returns either all or related to single method prophecies. - * - * @param null|string $methodName - * - * @return MethodProphecy[] - */ - public function getMethodProphecies($methodName = null) - { - if (null === $methodName) { - return $this->methodProphecies; - } - - if (!isset($this->methodProphecies[$methodName])) { - return array(); - } - - return $this->methodProphecies[$methodName]; - } - - /** - * Makes specific method call. - * - * @param string $methodName - * @param array $arguments - * - * @return mixed - */ - public function makeProphecyMethodCall($methodName, array $arguments) - { - $arguments = $this->revealer->reveal($arguments); - $return = $this->callCenter->makeCall($this, $methodName, $arguments); - - return $this->revealer->reveal($return); - } - - /** - * Finds calls by method name & arguments wildcard. - * - * @param string $methodName - * @param ArgumentsWildcard $wildcard - * - * @return Call[] - */ - public function findProphecyMethodCalls($methodName, ArgumentsWildcard $wildcard) - { - return $this->callCenter->findCalls($methodName, $wildcard); - } - - /** - * Checks that registered method predictions do not fail. - * - * @throws \Prophecy\Exception\Prediction\AggregateException If any of registered predictions fail - */ - public function checkProphecyMethodsPredictions() - { - $exception = new AggregateException(sprintf("%s:\n", get_class($this->reveal()))); - $exception->setObjectProphecy($this); - - foreach ($this->methodProphecies as $prophecies) { - foreach ($prophecies as $prophecy) { - try { - $prophecy->checkPrediction(); - } catch (PredictionException $e) { - $exception->append($e); - } - } - } - - if (count($exception->getExceptions())) { - throw $exception; - } - } - - /** - * Creates new method prophecy using specified method name and arguments. - * - * @param string $methodName - * @param array $arguments - * - * @return MethodProphecy - */ - public function __call($methodName, array $arguments) - { - $arguments = new ArgumentsWildcard($this->revealer->reveal($arguments)); - - foreach ($this->getMethodProphecies($methodName) as $prophecy) { - $argumentsWildcard = $prophecy->getArgumentsWildcard(); - $comparator = $this->comparatorFactory->getComparatorFor( - $argumentsWildcard, $arguments - ); - - try { - $comparator->assertEquals($argumentsWildcard, $arguments); - return $prophecy; - } catch (ComparisonFailure $failure) {} - } - - return new MethodProphecy($this, $methodName, $arguments); - } - - /** - * Tries to get property value from double. - * - * @param string $name - */ - public function __get($name) - { - return $this->reveal()->$name; - } - - /** - * Tries to set property value to double. - * - * @param string $name - * @param string $value - */ - public function __set($name, $value) - { - $this->reveal()->$name = $this->revealer->reveal($value); - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php deleted file mode 100644 index 462f15a9..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php +++ /dev/null @@ -1,27 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -/** - * Core Prophecy interface. - * - * @author Konstantin Kudryashov - */ -interface ProphecyInterface -{ - /** - * Reveals prophecy object (double) . - * - * @return object - */ - public function reveal(); -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php deleted file mode 100644 index 2d839585..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -/** - * Controllable doubles interface. - * - * @author Konstantin Kudryashov - */ -interface ProphecySubjectInterface -{ - /** - * Sets subject prophecy. - * - * @param ProphecyInterface $prophecy - */ - public function setProphecy(ProphecyInterface $prophecy); - - /** - * Returns subject prophecy. - * - * @return ProphecyInterface - */ - public function getProphecy(); -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php deleted file mode 100644 index 60ecdac8..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php +++ /dev/null @@ -1,44 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -/** - * Basic prophecies revealer. - * - * @author Konstantin Kudryashov - */ -class Revealer implements RevealerInterface -{ - /** - * Unwraps value(s). - * - * @param mixed $value - * - * @return mixed - */ - public function reveal($value) - { - if (is_array($value)) { - return array_map(array($this, __FUNCTION__), $value); - } - - if (!is_object($value)) { - return $value; - } - - if ($value instanceof ProphecyInterface) { - $value = $value->reveal(); - } - - return $value; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php deleted file mode 100644 index ffc82bb6..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php +++ /dev/null @@ -1,29 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -/** - * Prophecies revealer interface. - * - * @author Konstantin Kudryashov - */ -interface RevealerInterface -{ - /** - * Unwraps value(s). - * - * @param mixed $value - * - * @return mixed - */ - public function reveal($value); -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophet.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Prophet.php deleted file mode 100644 index ac649234..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Prophet.php +++ /dev/null @@ -1,134 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy; - -use Prophecy\Doubler\Doubler; -use Prophecy\Doubler\LazyDouble; -use Prophecy\Doubler\ClassPatch; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\RevealerInterface; -use Prophecy\Prophecy\Revealer; -use Prophecy\Call\CallCenter; -use Prophecy\Util\StringUtil; -use Prophecy\Exception\Prediction\PredictionException; -use Prophecy\Exception\Prediction\AggregateException; - -/** - * Prophet creates prophecies. - * - * @author Konstantin Kudryashov - */ -class Prophet -{ - private $doubler; - private $revealer; - private $util; - - /** - * @var ObjectProphecy[] - */ - private $prophecies = array(); - - /** - * Initializes Prophet. - * - * @param null|Doubler $doubler - * @param null|RevealerInterface $revealer - * @param null|StringUtil $util - */ - public function __construct(Doubler $doubler = null, RevealerInterface $revealer = null, - StringUtil $util = null) - { - if (null === $doubler) { - $doubler = new Doubler; - $doubler->registerClassPatch(new ClassPatch\SplFileInfoPatch); - $doubler->registerClassPatch(new ClassPatch\TraversablePatch); - $doubler->registerClassPatch(new ClassPatch\DisableConstructorPatch); - $doubler->registerClassPatch(new ClassPatch\ProphecySubjectPatch); - $doubler->registerClassPatch(new ClassPatch\ReflectionClassNewInstancePatch); - $doubler->registerClassPatch(new ClassPatch\HhvmExceptionPatch()); - $doubler->registerClassPatch(new ClassPatch\MagicCallPatch); - $doubler->registerClassPatch(new ClassPatch\KeywordPatch); - } - - $this->doubler = $doubler; - $this->revealer = $revealer ?: new Revealer; - $this->util = $util ?: new StringUtil; - } - - /** - * Creates new object prophecy. - * - * @param null|string $classOrInterface Class or interface name - * - * @return ObjectProphecy - */ - public function prophesize($classOrInterface = null) - { - $this->prophecies[] = $prophecy = new ObjectProphecy( - new LazyDouble($this->doubler), - new CallCenter($this->util), - $this->revealer - ); - - if ($classOrInterface && class_exists($classOrInterface)) { - return $prophecy->willExtend($classOrInterface); - } - - if ($classOrInterface && interface_exists($classOrInterface)) { - return $prophecy->willImplement($classOrInterface); - } - - return $prophecy; - } - - /** - * Returns all created object prophecies. - * - * @return ObjectProphecy[] - */ - public function getProphecies() - { - return $this->prophecies; - } - - /** - * Returns Doubler instance assigned to this Prophet. - * - * @return Doubler - */ - public function getDoubler() - { - return $this->doubler; - } - - /** - * Checks all predictions defined by prophecies of this Prophet. - * - * @throws Exception\Prediction\AggregateException If any prediction fails - */ - public function checkPredictions() - { - $exception = new AggregateException("Some predictions failed:\n"); - foreach ($this->prophecies as $prophecy) { - try { - $prophecy->checkProphecyMethodsPredictions(); - } catch (PredictionException $e) { - $exception->append($e); - } - } - - if (count($exception->getExceptions())) { - throw $exception; - } - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php deleted file mode 100644 index 54d38321..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php +++ /dev/null @@ -1,185 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Exporting utility. - * - * This class is derived from the PHPUnit testing framework. - * - * @author Sebastiaan Stok - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License> - */ -class ExportUtil -{ - /** - * Exports a value into a string. - * - * The output of this method is similar to the output of print_r(), but - * improved in various aspects: - * - * - NULL is rendered as "null" (instead of "") - * - true is rendered as "true" (instead of "1") - * - FALSE is rendered as "false" (instead of "") - * - Strings are always quoted with single quotes - * - Carriage returns and newlines are normalized to \n - * - Recursion and repeated rendering is treated properly - * - * @param mixed $value The value to export - * @param integer $indentation The indentation level of the 2nd+ line - * - * @return string - */ - public static function export($value, $indentation = 0) - { - return static::recursiveExport($value, $indentation); - } - - /** - * Converts an object to an array containing all of its private, protected - * and public properties. - * - * @param object $object - * - * @return array - */ - public static function toArray($object) - { - $array = array(); - - foreach ((array) $object as $key => $value) { - // properties are transformed to keys in the following way: - - // private $property => "\0Classname\0property" - // protected $property => "\0*\0property" - // public $property => "property" - - if (preg_match('/^\0.+\0(.+)$/', $key, $matches)) { - $key = $matches[1]; - } - - $array[$key] = $value; - } - - // Some internal classes like SplObjectStorage don't work with the - // above (fast) mechanism nor with reflection - // Format the output similarly to print_r() in this case - if ($object instanceof SplObjectStorage) { - foreach ($object as $key => $value) { - $array[spl_object_hash($value)] = array( - 'obj' => $value, - 'inf' => $object->getInfo(), - ); - } - } - - return $array; - } - - /** - * Recursive implementation of export. - * - * @param mixed $value The value to export - * @param integer $indentation The indentation level of the 2nd+ line - * @param array $processedObjects Contains all objects that were already - * rendered - * - * @return string - */ - protected static function recursiveExport($value, $indentation, &$processedObjects = array()) - { - if ($value === null) { - return 'null'; - } - - if ($value === true) { - return 'true'; - } - - if ($value === false) { - return 'false'; - } - - if (is_string($value)) { - // Match for most non printable chars somewhat taking multibyte chars into account - if (preg_match('/[^\x09-\x0d\x20-\xff]/', $value)) { - return 'Binary String: 0x' . bin2hex($value); - } - - return "'" . str_replace(array("\r\n", "\n\r", "\r"), array("\n", "\n", "\n"), $value) . "'"; - } - - $origValue = $value; - - if (is_object($value)) { - if ($value instanceof ProphecyInterface) { - return sprintf('%s Object (*Prophecy*)', get_class($value)); - } elseif (in_array($value, $processedObjects, true)) { - return sprintf('%s Object (*RECURSION*)', get_class($value)); - } - - $processedObjects[] = $value; - - // Convert object to array - $value = self::toArray($value); - } - - if (is_array($value)) { - $whitespace = str_repeat(' ', $indentation); - - // There seems to be no other way to check arrays for recursion - // http://www.php.net/manual/en/language.types.array.php#73936 - preg_match_all('/\n \[(\w+)\] => Array\s+\*RECURSION\*/', print_r($value, true), $matches); - $recursiveKeys = array_unique($matches[1]); - - // Convert to valid array keys - // Numeric integer strings are automatically converted to integers - // by PHP - foreach ($recursiveKeys as $key => $recursiveKey) { - if ((string) (integer) $recursiveKey === $recursiveKey) { - $recursiveKeys[$key] = (integer) $recursiveKey; - } - } - - $content = ''; - - foreach ($value as $key => $val) { - if (in_array($key, $recursiveKeys, true)) { - $val = 'Array (*RECURSION*)'; - } else { - $val = self::recursiveExport($val, $indentation + 1, $processedObjects); - } - - $content .= $whitespace . ' ' . self::export($key) . ' => ' . $val . "\n"; - } - - if (strlen($content) > 0) { - $content = "\n" . $content . $whitespace; - } - - return sprintf( - "%s (%s)", - is_object($origValue) ? sprintf('%s:%s', get_class($origValue), spl_object_hash($origValue)) . ' Object' : 'Array', $content - ); - } - - if (is_double($value) && (double)(integer) $value === $value) { - return $value . '.0'; - } - - return (string) $value; - } -} diff --git a/tests/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php b/tests/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php deleted file mode 100644 index bb90156a..00000000 --- a/tests/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php +++ /dev/null @@ -1,89 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Util; - -use Prophecy\Call\Call; - -/** - * String utility. - * - * @author Konstantin Kudryashov - */ -class StringUtil -{ - /** - * Stringifies any provided value. - * - * @param mixed $value - * @param boolean $exportObject - * - * @return string - */ - public function stringify($value, $exportObject = true) - { - if (is_array($value)) { - if (range(0, count($value) - 1) === array_keys($value)) { - return '['.implode(', ', array_map(array($this, __FUNCTION__), $value)).']'; - } - - $stringify = array($this, __FUNCTION__); - - return '['.implode(', ', array_map(function ($item, $key) use ($stringify) { - return (is_integer($key) ? $key : '"'.$key.'"'). - ' => '.call_user_func($stringify, $item); - }, $value, array_keys($value))).']'; - } - if (is_resource($value)) { - return get_resource_type($value).':'.$value; - } - if (is_object($value)) { - return $exportObject ? ExportUtil::export($value) : sprintf('%s:%s', get_class($value), spl_object_hash($value)); - } - if (true === $value || false === $value) { - return $value ? 'true' : 'false'; - } - if (is_string($value)) { - $str = sprintf('"%s"', str_replace("\n", '\\n', $value)); - - if (50 <= strlen($str)) { - return substr($str, 0, 50).'"...'; - } - - return $str; - } - if (null === $value) { - return 'null'; - } - - return (string) $value; - } - - /** - * Stringifies provided array of calls. - * - * @param Call[] $calls Array of Call instances - * - * @return string - */ - public function stringifyCalls(array $calls) - { - $self = $this; - - return implode(PHP_EOL, array_map(function (Call $call) use ($self) { - return sprintf(' - %s(%s) @ %s', - $call->getMethodName(), - implode(', ', array_map(array($self, 'stringify'), $call->getArguments())), - str_replace(GETCWD().DIRECTORY_SEPARATOR, '', $call->getCallPlace()) - ); - }, $calls)); - } -} diff --git a/tests/vendor/phpunit/php-code-coverage/.php_cs b/tests/vendor/phpunit/php-code-coverage/.php_cs deleted file mode 100644 index 44bebf6a..00000000 --- a/tests/vendor/phpunit/php-code-coverage/.php_cs +++ /dev/null @@ -1,43 +0,0 @@ -files() - ->in('src') - ->in('tests') - ->name('*.php'); - -return Symfony\CS\Config\Config::create() - ->level(\Symfony\CS\FixerInterface::NONE_LEVEL) - ->fixers( - array( - 'duplicate_semicolon', - 'empty_return', - 'extra_empty_lines', - 'join_function', - 'list_commas', - 'no_blank_lines_after_class_opening', - 'no_empty_lines_after_phpdocs', - 'phpdoc_indent', - 'phpdoc_no_access', - 'phpdoc_no_empty_return', - 'phpdoc_no_package', - 'phpdoc_params', - 'phpdoc_scalar', - 'phpdoc_to_comment', - 'phpdoc_trim', - 'return', - 'self_accessor', - 'single_quote', - 'spaces_before_semicolon', - 'spaces_cast', - 'ternary_spaces', - 'trim_array_spaces', - 'unused_use', - 'whitespacy_lines', - 'align_double_arrow', - 'align_equals', - 'concat_with_spaces', - 'short_array_syntax' - ) - ) - ->finder($finder); - diff --git a/tests/vendor/phpunit/php-code-coverage/.travis.yml b/tests/vendor/phpunit/php-code-coverage/.travis.yml index 8bceea85..5c23715f 100644 --- a/tests/vendor/phpunit/php-code-coverage/.travis.yml +++ b/tests/vendor/phpunit/php-code-coverage/.travis.yml @@ -1,10 +1,14 @@ language: php php: + - 5.3.3 + - 5.3 + - 5.4 + - 5.5 - 5.6 before_script: - - COMPOSER_ROOT_VERSION=dev-master composer install --prefer-source + - COMPOSER_ROOT_VERSION=dev-master composer install --dev --prefer-source script: vendor/bin/phpunit --configuration ./build/travis-ci.xml diff --git a/tests/vendor/phpunit/php-code-coverage/CONTRIBUTING.md b/tests/vendor/phpunit/php-code-coverage/CONTRIBUTING.md index 76a43458..40dbc25e 100644 --- a/tests/vendor/phpunit/php-code-coverage/CONTRIBUTING.md +++ b/tests/vendor/phpunit/php-code-coverage/CONTRIBUTING.md @@ -1 +1,5 @@ -Please refer to [https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md) for details on how to contribute to this project. +Pull Requests for bug fixes should be made against the current release branch (2.0). + +Pull Requests for new features should be made against master. + +For further notes please refer to [https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md) diff --git a/tests/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md b/tests/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md deleted file mode 100644 index 353b6f65..00000000 --- a/tests/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md +++ /dev/null @@ -1,56 +0,0 @@ -# Changes in PHP_CodeCoverage 2.2 - -All notable changes of the PHP_CodeCoverage 2.2 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [2.2.4] - 2015-10-06 - -### Fixed - -* Fixed [#391](https://github.com/sebastianbergmann/php-code-coverage/pull/391): Missing `` tag - -## [2.2.3] - 2015-09-14 - -### Fixed - -* Fixed [#368](https://github.com/sebastianbergmann/php-code-coverage/pull/368): Blacklists and whitelists are not merged when merging data sets -* Fixed [#370](https://github.com/sebastianbergmann/php-code-coverage/issues/370): Confusing statistics for source file that declares a class without methods -* Fixed [#372](https://github.com/sebastianbergmann/php-code-coverage/pull/372): Nested classes and functions are not handled correctly -* Fixed [#382](https://github.com/sebastianbergmann/php-code-coverage/issues/382): Crap4J report generates incorrect XML logfile - -## [2.2.2] - 2015-08-04 - -### Added - -* Reintroduced the `PHP_CodeCoverage_Driver_HHVM` driver as an extension of `PHP_CodeCoverage_Driver_Xdebug` that does not use `xdebug_start_code_coverage()` with options not supported by HHVM - -### Changed - -* Bumped required version of `sebastian/environment` to 1.3.2 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365) - -## [2.2.1] - 2015-08-02 - -### Changed - -* Bumped required version of `sebastian/environment` to 1.3.1 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365) - -## [2.2.0] - 2015-08-01 - -### Added - -* Added a driver for PHPDBG (requires PHP 7) -* Added `PHP_CodeCoverage::setDisableIgnoredLines()` to disable the ignoring of lines using annotations such as `@codeCoverageIgnore` - -### Changed - -* Annotating a method with `@deprecated` now has the same effect as annotating it with `@codeCoverageIgnore` - -### Removed - -* The dedicated driver for HHVM, `PHP_CodeCoverage_Driver_HHVM` has been removed - -[2.2.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.3...2.2.4 -[2.2.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.2...2.2.3 -[2.2.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.1...2.2.2 -[2.2.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.0...2.2.1 -[2.2.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.1...2.2.0 - diff --git a/tests/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md b/tests/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md deleted file mode 100644 index af7eaeb1..00000000 --- a/tests/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md +++ /dev/null @@ -1,24 +0,0 @@ -# Changes in PHP_CodeCoverage 3.0 - -All notable changes of the PHP_CodeCoverage 3.0 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [3.0.1] - 2015-10-06 - -### Fixed - -* Fixed [#391](https://github.com/sebastianbergmann/php-code-coverage/pull/391): Missing `` tag - -## [3.0.0] - 2015-10-02 - -### Changed - -* It is now mandatory to configure a whitelist - -### Removed - -* The blacklist functionality has been removed -* PHP_CodeCoverage is no longer supported on PHP 5.3, PHP 5.4, and PHP 5.5 - -[3.0.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2...3.0.0 - diff --git a/tests/vendor/phpunit/php-code-coverage/README.md b/tests/vendor/phpunit/php-code-coverage/README.md index 43dcb61b..6ca608a4 100644 --- a/tests/vendor/phpunit/php-code-coverage/README.md +++ b/tests/vendor/phpunit/php-code-coverage/README.md @@ -7,27 +7,16 @@ ## Requirements -PHP 5.6 is required but using the latest version of PHP is highly recommended - -### PHP 5 - -[Xdebug](http://xdebug.org/) is the only source of raw code coverage data supported for PHP 5. Version 2.1.3 of Xdebug is required but using the latest version is highly recommended. - -### PHP 7 - -[phpdbg](http://phpdbg.com/docs) is currently the only source of raw code coverage data supported for PHP 7. Once Xdebug has been updated for PHP 7 it, too, will be supported. - -### HHVM - -A version of HHVM that implements the Xdebug API for code coverage (`xdebug_*_code_coverage()`) is required. +* PHP 5.3.3 is required but using the latest version of PHP is highly recommended +* [Xdebug](http://xdebug.org/) 2.1.3 is required but using the latest version of Xdebug is highly recommended ## Installation -To add PHP_CodeCoverage as a local, per-project dependency to your project, simply add a dependency on `phpunit/php-code-coverage` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on PHP_CodeCoverage 3.0: +To add PHP_CodeCoverage as a local, per-project dependency to your project, simply add a dependency on `phpunit/php-code-coverage` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on PHP_CodeCoverage 2.0: { "require": { - "phpunit/php-code-coverage": "^3" + "phpunit/php-code-coverage": "~2.0" } } @@ -48,3 +37,4 @@ $writer->process($coverage, '/tmp/clover.xml'); $writer = new PHP_CodeCoverage_Report_HTML; $writer->process($coverage, '/tmp/code-coverage-report'); ``` + diff --git a/tests/vendor/phpunit/php-code-coverage/composer.json b/tests/vendor/phpunit/php-code-coverage/composer.json index 7c062282..23df5ba3 100644 --- a/tests/vendor/phpunit/php-code-coverage/composer.json +++ b/tests/vendor/phpunit/php-code-coverage/composer.json @@ -21,15 +21,15 @@ "irc": "irc://irc.freenode.net/phpunit" }, "require": { - "php": ">=5.6", + "php": ">=5.3.3", "phpunit/php-file-iterator": "~1.3", "phpunit/php-token-stream": "~1.3", "phpunit/php-text-template": "~1.2", - "sebastian/environment": "^1.3.2", + "sebastian/environment": "~1.0", "sebastian/version": "~1.0" }, "require-dev": { - "phpunit/phpunit": "~5", + "phpunit/phpunit": "~4", "ext-xdebug": ">=2.1.4" }, "suggest": { @@ -44,7 +44,7 @@ }, "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "2.0.x-dev" } } } diff --git a/tests/vendor/phpunit/php-code-coverage/scripts/auto_append.php b/tests/vendor/phpunit/php-code-coverage/scripts/auto_append.php new file mode 100644 index 00000000..6cd768d3 --- /dev/null +++ b/tests/vendor/phpunit/php-code-coverage/scripts/auto_append.php @@ -0,0 +1,5 @@ +stop(); + +$writer = new PHP_CodeCoverage_Report_HTML; +$writer->process($coverage, '/tmp/coverage'); diff --git a/tests/vendor/phpunit/php-code-coverage/scripts/auto_prepend.php b/tests/vendor/phpunit/php-code-coverage/scripts/auto_prepend.php new file mode 100644 index 00000000..7a8887a5 --- /dev/null +++ b/tests/vendor/phpunit/php-code-coverage/scripts/auto_prepend.php @@ -0,0 +1,10 @@ +filter(); + +$filter->addFileToBlacklist(__FILE__); +$filter->addFileToBlacklist(dirname(__FILE__) . '/auto_append.php'); + +$coverage->start($_SERVER['SCRIPT_FILENAME']); diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage.php index 65dfea5f..5725917b 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage.php @@ -13,7 +13,13 @@ /** * Provides collection functionality for PHP code coverage information. * - * @since Class available since Release 1.0.0 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.0.0 */ class PHP_CodeCoverage { @@ -28,32 +34,32 @@ class PHP_CodeCoverage private $filter; /** - * @var bool + * @var boolean */ private $cacheTokens = false; /** - * @var bool + * @var boolean */ private $checkForUnintentionallyCoveredCode = false; /** - * @var bool + * @var boolean */ private $forceCoversAnnotation = false; /** - * @var bool + * @var boolean */ private $mapTestClassNameToCoveredClassName = false; /** - * @var bool + * @var boolean */ private $addUncoveredFilesFromWhitelist = true; /** - * @var bool + * @var boolean */ private $processUncoveredFilesFromWhitelist = false; @@ -67,36 +73,39 @@ class PHP_CodeCoverage * * @var array */ - private $data = []; + private $data = array(); /** * @var array */ - private $ignoredLines = []; - - /** - * @var bool - */ - private $disableIgnoredLines = false; + private $ignoredLines = array(); /** * Test data. * * @var array */ - private $tests = []; + private $tests = array(); /** * Constructor. * - * @param PHP_CodeCoverage_Driver $driver - * @param PHP_CodeCoverage_Filter $filter - * @throws PHP_CodeCoverage_RuntimeException + * @param PHP_CodeCoverage_Driver $driver + * @param PHP_CodeCoverage_Filter $filter + * @throws PHP_CodeCoverage_Exception */ public function __construct(PHP_CodeCoverage_Driver $driver = null, PHP_CodeCoverage_Filter $filter = null) { if ($driver === null) { - $driver = $this->selectDriver(); + $runtime = new Runtime; + + if ($runtime->isHHVM()) { + $driver = new PHP_CodeCoverage_Driver_HHVM; + } elseif ($runtime->hasXdebug()) { + $driver = new PHP_CodeCoverage_Driver_Xdebug; + } else { + throw new PHP_CodeCoverage_Exception('No code coverage driver available'); + } } if ($filter === null) { @@ -127,8 +136,8 @@ public function getReport() public function clear() { $this->currentId = null; - $this->data = []; - $this->tests = []; + $this->data = array(); + $this->tests = array(); } /** @@ -145,7 +154,7 @@ public function filter() * Returns the collected code coverage data. * Set $raw = true to bypass all filters. * - * @param bool $raw + * @param bool $raw * @return array * @since Method available since Release 1.1.0 */ @@ -155,6 +164,12 @@ public function getData($raw = false) $this->addUncoveredFilesFromWhitelist(); } + // We need to apply the blacklist filter a second time + // when no whitelist is used. + if (!$raw && !$this->filter->hasWhitelist()) { + $this->applyListsFilter($this->data); + } + return $this->data; } @@ -194,14 +209,14 @@ public function setTests(array $tests) /** * Start collection of code coverage information. * - * @param mixed $id - * @param bool $clear - * @throws PHP_CodeCoverage_InvalidArgumentException + * @param mixed $id + * @param boolean $clear + * @throws PHP_CodeCoverage_Exception */ public function start($id, $clear = false) { if (!is_bool($clear)) { - throw PHP_CodeCoverage_InvalidArgumentException::create( + throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( 1, 'boolean' ); @@ -219,23 +234,23 @@ public function start($id, $clear = false) /** * Stop collection of code coverage information. * - * @param bool $append - * @param mixed $linesToBeCovered - * @param array $linesToBeUsed + * @param boolean $append + * @param mixed $linesToBeCovered + * @param array $linesToBeUsed * @return array - * @throws PHP_CodeCoverage_InvalidArgumentException + * @throws PHP_CodeCoverage_Exception */ - public function stop($append = true, $linesToBeCovered = [], array $linesToBeUsed = []) + public function stop($append = true, $linesToBeCovered = array(), array $linesToBeUsed = array()) { if (!is_bool($append)) { - throw PHP_CodeCoverage_InvalidArgumentException::create( + throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( 1, 'boolean' ); } if (!is_array($linesToBeCovered) && $linesToBeCovered !== false) { - throw PHP_CodeCoverage_InvalidArgumentException::create( + throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( 2, 'array or false' ); @@ -252,21 +267,21 @@ public function stop($append = true, $linesToBeCovered = [], array $linesToBeUse /** * Appends code coverage data. * - * @param array $data - * @param mixed $id - * @param bool $append - * @param mixed $linesToBeCovered - * @param array $linesToBeUsed - * @throws PHP_CodeCoverage_RuntimeException - */ - public function append(array $data, $id = null, $append = true, $linesToBeCovered = [], array $linesToBeUsed = []) + * @param array $data + * @param mixed $id + * @param boolean $append + * @param mixed $linesToBeCovered + * @param array $linesToBeUsed + * @throws PHP_CodeCoverage_Exception + */ + public function append(array $data, $id = null, $append = true, $linesToBeCovered = array(), array $linesToBeUsed = array()) { if ($id === null) { $id = $this->currentId; } if ($id === null) { - throw new PHP_CodeCoverage_RuntimeException; + throw new PHP_CodeCoverage_Exception; } $this->applyListsFilter($data); @@ -289,28 +304,16 @@ public function append(array $data, $id = null, $append = true, $linesToBeCovere return; } - $size = 'unknown'; $status = null; if ($id instanceof PHPUnit_Framework_TestCase) { - $_size = $id->getSize(); - - if ($_size == PHPUnit_Util_Test::SMALL) { - $size = 'small'; - } elseif ($_size == PHPUnit_Util_Test::MEDIUM) { - $size = 'medium'; - } elseif ($_size == PHPUnit_Util_Test::LARGE) { - $size = 'large'; - } - $status = $id->getStatus(); $id = get_class($id) . '::' . $id->getName(); } elseif ($id instanceof PHPUnit_Extensions_PhptTestCase) { - $size = 'large'; - $id = $id->getName(); + $id = $id->getName(); } - $this->tests[$id] = ['size' => $size, 'status' => $status]; + $this->tests[$id] = $status; foreach ($data as $file => $lines) { if (!$this->filter->isFile($file)) { @@ -318,10 +321,8 @@ public function append(array $data, $id = null, $append = true, $linesToBeCovere } foreach ($lines as $k => $v) { - if ($v == PHP_CodeCoverage_Driver::LINE_EXECUTED) { - if (empty($this->data[$file][$k]) || !in_array($id, $this->data[$file][$k])) { - $this->data[$file][$k][] = $id; - } + if ($v == 1) { + $this->data[$file][$k][] = $id; } } } @@ -334,10 +335,6 @@ public function append(array $data, $id = null, $append = true, $linesToBeCovere */ public function merge(PHP_CodeCoverage $that) { - $this->filter->setWhitelistedFiles( - array_merge($this->filter->getWhitelistedFiles(), $that->filter()->getWhitelistedFiles()) - ); - foreach ($that->data as $file => $lines) { if (!isset($this->data[$file])) { if (!$this->filter->isFiltered($file)) { @@ -361,18 +358,17 @@ public function merge(PHP_CodeCoverage $that) } $this->tests = array_merge($this->tests, $that->getTests()); - } /** - * @param bool $flag - * @throws PHP_CodeCoverage_InvalidArgumentException + * @param boolean $flag + * @throws PHP_CodeCoverage_Exception * @since Method available since Release 1.1.0 */ public function setCacheTokens($flag) { if (!is_bool($flag)) { - throw PHP_CodeCoverage_InvalidArgumentException::create( + throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( 1, 'boolean' ); @@ -390,14 +386,14 @@ public function getCacheTokens() } /** - * @param bool $flag - * @throws PHP_CodeCoverage_InvalidArgumentException + * @param boolean $flag + * @throws PHP_CodeCoverage_Exception * @since Method available since Release 2.0.0 */ public function setCheckForUnintentionallyCoveredCode($flag) { if (!is_bool($flag)) { - throw PHP_CodeCoverage_InvalidArgumentException::create( + throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( 1, 'boolean' ); @@ -407,13 +403,13 @@ public function setCheckForUnintentionallyCoveredCode($flag) } /** - * @param bool $flag - * @throws PHP_CodeCoverage_InvalidArgumentException + * @param boolean $flag + * @throws PHP_CodeCoverage_Exception */ public function setForceCoversAnnotation($flag) { if (!is_bool($flag)) { - throw PHP_CodeCoverage_InvalidArgumentException::create( + throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( 1, 'boolean' ); @@ -423,13 +419,13 @@ public function setForceCoversAnnotation($flag) } /** - * @param bool $flag - * @throws PHP_CodeCoverage_InvalidArgumentException + * @param boolean $flag + * @throws PHP_CodeCoverage_Exception */ public function setMapTestClassNameToCoveredClassName($flag) { if (!is_bool($flag)) { - throw PHP_CodeCoverage_InvalidArgumentException::create( + throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( 1, 'boolean' ); @@ -439,13 +435,13 @@ public function setMapTestClassNameToCoveredClassName($flag) } /** - * @param bool $flag - * @throws PHP_CodeCoverage_InvalidArgumentException + * @param boolean $flag + * @throws PHP_CodeCoverage_Exception */ public function setAddUncoveredFilesFromWhitelist($flag) { if (!is_bool($flag)) { - throw PHP_CodeCoverage_InvalidArgumentException::create( + throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( 1, 'boolean' ); @@ -455,13 +451,13 @@ public function setAddUncoveredFilesFromWhitelist($flag) } /** - * @param bool $flag - * @throws PHP_CodeCoverage_InvalidArgumentException + * @param boolean $flag + * @throws PHP_CodeCoverage_Exception */ public function setProcessUncoveredFilesFromWhitelist($flag) { if (!is_bool($flag)) { - throw PHP_CodeCoverage_InvalidArgumentException::create( + throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( 1, 'boolean' ); @@ -470,35 +466,19 @@ public function setProcessUncoveredFilesFromWhitelist($flag) $this->processUncoveredFilesFromWhitelist = $flag; } - /** - * @param bool $flag - * @throws PHP_CodeCoverage_InvalidArgumentException - */ - public function setDisableIgnoredLines($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_InvalidArgumentException::create( - 1, - 'boolean' - ); - } - - $this->disableIgnoredLines = $flag; - } - /** * Applies the @covers annotation filtering. * - * @param array $data - * @param mixed $linesToBeCovered - * @param array $linesToBeUsed - * @throws PHP_CodeCoverage_UnintentionallyCoveredCodeException + * @param array $data + * @param mixed $linesToBeCovered + * @param array $linesToBeUsed + * @throws PHP_CodeCoverage_Exception_UnintentionallyCoveredCode */ private function applyCoversAnnotationFilter(array &$data, $linesToBeCovered, array $linesToBeUsed) { if ($linesToBeCovered === false || ($this->forceCoversAnnotation && empty($linesToBeCovered))) { - $data = []; + $data = array(); return; } @@ -528,7 +508,7 @@ private function applyCoversAnnotationFilter(array &$data, $linesToBeCovered, ar } /** - * Applies the whitelist filtering. + * Applies the blacklist/whitelist filtering. * * @param array $data */ @@ -567,10 +547,10 @@ private function initializeFilesThatAreSeenTheFirstTime(array $data) { foreach ($data as $file => $lines) { if ($this->filter->isFile($file) && !isset($this->data[$file])) { - $this->data[$file] = []; + $this->data[$file] = array(); foreach ($lines as $k => $v) { - $this->data[$file][$k] = $v == -2 ? null : []; + $this->data[$file][$k] = $v == -2 ? null : array(); } } } @@ -581,7 +561,7 @@ private function initializeFilesThatAreSeenTheFirstTime(array $data) */ private function addUncoveredFilesFromWhitelist() { - $data = []; + $data = array(); $uncoveredFiles = array_diff( $this->filter->getWhitelist(), array_keys($this->data) @@ -599,12 +579,12 @@ private function addUncoveredFilesFromWhitelist() $uncoveredFiles ); } else { - $data[$uncoveredFile] = []; + $data[$uncoveredFile] = array(); $lines = count(file($uncoveredFile)); for ($i = 1; $i <= $lines; $i++) { - $data[$uncoveredFile][$i] = PHP_CodeCoverage_Driver::LINE_NOT_EXECUTED; + $data[$uncoveredFile][$i] = -1; } } } @@ -627,8 +607,8 @@ private function processUncoveredFileFromWhitelist($uncoveredFile, array &$data, if (!isset($data[$file]) && in_array($file, $uncoveredFiles)) { foreach (array_keys($fileCoverage) as $key) { - if ($fileCoverage[$key] == PHP_CodeCoverage_Driver::LINE_EXECUTED) { - $fileCoverage[$key] = PHP_CodeCoverage_Driver::LINE_NOT_EXECUTED; + if ($fileCoverage[$key] == 1) { + $fileCoverage[$key] = -1; } } @@ -640,31 +620,26 @@ private function processUncoveredFileFromWhitelist($uncoveredFile, array &$data, /** * Returns the lines of a source file that should be ignored. * - * @param string $filename + * @param string $filename * @return array - * @throws PHP_CodeCoverage_InvalidArgumentException + * @throws PHP_CodeCoverage_Exception * @since Method available since Release 2.0.0 */ private function getLinesToBeIgnored($filename) { if (!is_string($filename)) { - throw PHP_CodeCoverage_InvalidArgumentException::create( + throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( 1, 'string' ); } if (!isset($this->ignoredLines[$filename])) { - $this->ignoredLines[$filename] = []; - - if ($this->disableIgnoredLines) { - return $this->ignoredLines[$filename]; - } - - $ignore = false; - $stop = false; - $lines = file($filename); - $numLines = count($lines); + $this->ignoredLines[$filename] = array(); + $ignore = false; + $stop = false; + $lines = file($filename); + $numLines = count($lines); foreach ($lines as $index => $line) { if (!trim($line)) { @@ -702,7 +677,7 @@ private function getLinesToBeIgnored($filename) if (!$ignore) { $start = $token->getLine(); - $end = $start + substr_count($token, "\n"); + $end = $start + substr_count($token, "\n"); // Do not ignore the first line when there is a token // before the comment @@ -716,7 +691,7 @@ private function getLinesToBeIgnored($filename) // A DOC_COMMENT token or a COMMENT token starting with "/*" // does not contain the final \n character in its text - if (isset($lines[$i-1]) && 0 === strpos($_token, '/*') && '*/' === substr(trim($lines[$i-1]), -2)) { + if (0 === strpos($_token, '/*') && '*/' === substr(trim($lines[$i-1]), -2)) { $this->ignoredLines[$filename][] = $i; } } @@ -726,13 +701,11 @@ private function getLinesToBeIgnored($filename) case 'PHP_Token_TRAIT': case 'PHP_Token_CLASS': case 'PHP_Token_FUNCTION': - /* @var PHP_Token_Interface $token */ - $docblock = $token->getDocblock(); $this->ignoredLines[$filename][] = $token->getLine(); - if (strpos($docblock, '@codeCoverageIgnore') || strpos($docblock, '@deprecated')) { + if (strpos($docblock, '@codeCoverageIgnore')) { $endLine = $token->getEndLine(); for ($i = $token->getLine(); $i <= $endLine; $i++) { @@ -812,10 +785,10 @@ private function getLinesToBeIgnored($filename) } /** - * @param array $data - * @param array $linesToBeCovered - * @param array $linesToBeUsed - * @throws PHP_CodeCoverage_UnintentionallyCoveredCodeException + * @param array $data + * @param array $linesToBeCovered + * @param array $linesToBeUsed + * @throws PHP_CodeCoverage_Exception_UnintentionallyCoveredCode * @since Method available since Release 2.0.0 */ private function performUnintentionallyCoveredCodeCheck(array &$data, array $linesToBeCovered, array $linesToBeUsed) @@ -842,7 +815,7 @@ private function performUnintentionallyCoveredCodeCheck(array &$data, array $lin } if (!empty($message)) { - throw new PHP_CodeCoverage_UnintentionallyCoveredCodeException( + throw new PHP_CodeCoverage_Exception_UnintentionallyCoveredCode( $message ); } @@ -856,11 +829,11 @@ private function performUnintentionallyCoveredCodeCheck(array &$data, array $lin */ private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed) { - $allowedLines = []; + $allowedLines = array(); foreach (array_keys($linesToBeCovered) as $file) { if (!isset($allowedLines[$file])) { - $allowedLines[$file] = []; + $allowedLines[$file] = array(); } $allowedLines[$file] = array_merge( @@ -871,7 +844,7 @@ private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed) foreach (array_keys($linesToBeUsed) as $file) { if (!isset($allowedLines[$file])) { - $allowedLines[$file] = []; + $allowedLines[$file] = array(); } $allowedLines[$file] = array_merge( @@ -888,25 +861,4 @@ private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed) return $allowedLines; } - - /** - * @return PHP_CodeCoverage_Driver - * @throws PHP_CodeCoverage_RuntimeException - */ - private function selectDriver() - { - $runtime = new Runtime; - - if (!$runtime->canCollectCodeCoverage()) { - throw new PHP_CodeCoverage_RuntimeException('No code coverage driver available'); - } - - if ($runtime->isHHVM()) { - return new PHP_CodeCoverage_Driver_HHVM; - } elseif ($runtime->isPHPDBG()) { - return new PHP_CodeCoverage_Driver_PHPDBG; - } else { - return new PHP_CodeCoverage_Driver_Xdebug; - } - } } diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver.php index 8635acef..fd2ead8e 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver.php @@ -11,28 +11,16 @@ /** * Interface for code coverage drivers. * - * @since Class available since Release 1.0.0 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.0.0 */ interface PHP_CodeCoverage_Driver { - /** - * @var int - * @see http://xdebug.org/docs/code_coverage - */ - const LINE_EXECUTED = 1; - - /** - * @var int - * @see http://xdebug.org/docs/code_coverage - */ - const LINE_NOT_EXECUTED = -1; - - /** - * @var int - * @see http://xdebug.org/docs/code_coverage - */ - const LINE_NOT_EXECUTABLE = -2; - /** * Start collection of code coverage information. */ diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php index a9d8f0ce..324a99f5 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php @@ -11,16 +11,46 @@ /** * Driver for HHVM's code coverage functionality. * - * @since Class available since Release 2.2.2 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.3.0 * @codeCoverageIgnore */ -class PHP_CodeCoverage_Driver_HHVM extends PHP_CodeCoverage_Driver_Xdebug +class PHP_CodeCoverage_Driver_HHVM implements PHP_CodeCoverage_Driver { + /** + * Constructor. + */ + public function __construct() + { + if (!defined('HHVM_VERSION')) { + throw new PHP_CodeCoverage_Exception('This driver requires HHVM'); + } + } + /** * Start collection of code coverage information. */ public function start() { - xdebug_start_code_coverage(); + fb_enable_code_coverage(); + } + + /** + * Stop collection of code coverage information. + * + * @return array + */ + public function stop() + { + $codeCoverage = fb_get_code_coverage(true); + + fb_disable_code_coverage(); + + return $codeCoverage; } } diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php deleted file mode 100644 index 2c39c8c8..00000000 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php +++ /dev/null @@ -1,105 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Driver for PHPDBG's code coverage functionality. - * - * @since Class available since Release 2.2.0 - * @codeCoverageIgnore - */ -class PHP_CodeCoverage_Driver_PHPDBG implements PHP_CodeCoverage_Driver -{ - /** - * Constructor. - */ - public function __construct() - { - if (PHP_SAPI !== 'phpdbg') { - throw new PHP_CodeCoverage_RuntimeException( - 'This driver requires the PHPDBG SAPI' - ); - } - - if (!function_exists('phpdbg_start_oplog')) { - throw new PHP_CodeCoverage_RuntimeException( - 'This build of PHPDBG does not support code coverage' - ); - } - } - - /** - * Start collection of code coverage information. - */ - public function start() - { - phpdbg_start_oplog(); - } - - /** - * Stop collection of code coverage information. - * - * @return array - */ - public function stop() - { - static $fetchedLines = []; - - $dbgData = phpdbg_end_oplog(); - - if ($fetchedLines == []) { - $sourceLines = phpdbg_get_executable(); - } else { - $newFiles = array_diff( - get_included_files(), - array_keys($fetchedLines) - ); - - if ($newFiles) { - $sourceLines = phpdbg_get_executable( - ['files' => $newFiles] - ); - } else { - $sourceLines = []; - } - } - - foreach ($sourceLines as $file => $lines) { - foreach ($lines as $lineNo => $numExecuted) { - $sourceLines[$file][$lineNo] = self::LINE_NOT_EXECUTED; - } - } - - $fetchedLines = array_merge($fetchedLines, $sourceLines); - - return $this->detectExecutedLines($fetchedLines, $dbgData); - } - - /** - * Convert phpdbg based data into the format CodeCoverage expects - * - * @param array $sourceLines - * @param array $dbgData - * @return array - */ - private function detectExecutedLines(array $sourceLines, array $dbgData) - { - foreach ($dbgData as $file => $coveredLines) { - foreach ($coveredLines as $lineNo => $numExecuted) { - // phpdbg also reports $lineNo=0 when e.g. exceptions get thrown. - // make sure we only mark lines executed which are actually executable. - if (isset($sourceLines[$file][$lineNo])) { - $sourceLines[$file][$lineNo] = self::LINE_EXECUTED; - } - } - } - - return $sourceLines; - } -} diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php index 5cbb0d03..3b331886 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php @@ -11,7 +11,13 @@ /** * Driver for Xdebug's code coverage functionality. * - * @since Class available since Release 1.0.0 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.0.0 * @codeCoverageIgnore */ class PHP_CodeCoverage_Driver_Xdebug implements PHP_CodeCoverage_Driver @@ -22,12 +28,12 @@ class PHP_CodeCoverage_Driver_Xdebug implements PHP_CodeCoverage_Driver public function __construct() { if (!extension_loaded('xdebug')) { - throw new PHP_CodeCoverage_RuntimeException('This driver requires Xdebug'); + throw new PHP_CodeCoverage_Exception('This driver requires Xdebug'); } if (version_compare(phpversion('xdebug'), '2.2.0-dev', '>=') && !ini_get('xdebug.coverage_enable')) { - throw new PHP_CodeCoverage_RuntimeException( + throw new PHP_CodeCoverage_Exception( 'xdebug.coverage_enable=On has to be set in php.ini' ); } @@ -62,9 +68,11 @@ public function stop() private function cleanup(array $data) { foreach (array_keys($data) as $file) { - unset($data[$file][0]); + if (isset($data[$file][0])) { + unset($data[$file][0]); + } - if ($file != 'xdebug://debug-eval' && file_exists($file)) { + if (file_exists($file)) { $numLines = $this->getNumberOfLinesInFile($file); foreach (array_keys($data[$file]) as $line) { @@ -80,7 +88,7 @@ private function cleanup(array $data) /** * @param string $file - * @return int + * @return integer * @since Method available since Release 2.0.0 */ private function getNumberOfLinesInFile($file) diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception.php new file mode 100644 index 00000000..a960c08b --- /dev/null +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception.php @@ -0,0 +1,24 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Exception class for PHP_CodeCoverage component. + * + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.1.0 + */ +class PHP_CodeCoverage_Exception extends RuntimeException +{ +} diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/Exception.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/Exception.php deleted file mode 100644 index 9118a78b..00000000 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/Exception.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Exception interface for PHP_CodeCoverage component. - * - * @since Interface available since Release 3.0.0 - */ -interface PHP_CodeCoverage_Exception -{ -} diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/InvalidArgumentException.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/InvalidArgumentException.php deleted file mode 100644 index 68d072b6..00000000 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * @since Class available since Release 3.0.0 - */ -class PHP_CodeCoverage_InvalidArgumentException extends InvalidArgumentException implements PHP_CodeCoverage_Exception -{ - /** - * @param int $argument - * @param string $type - * @param mixed $value - * @return PHP_CodeCoverage_InvalidArgumentException - */ - public static function create($argument, $type, $value = null) - { - $stack = debug_backtrace(false); - - return new self( - sprintf( - 'Argument #%d%sof %s::%s() must be a %s', - $argument, - $value !== null ? ' (' . gettype($value) . '#' . $value . ')' : ' (No Value) ', - $stack[1]['class'], - $stack[1]['function'], - $type - ) - ); - } -} diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/RuntimeException.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/RuntimeException.php deleted file mode 100644 index bb6bc5ec..00000000 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/RuntimeException.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * @since Class available since Release 3.0.0 - */ -class PHP_CodeCoverage_RuntimeException extends RuntimeException implements PHP_CodeCoverage_Exception -{ -} diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php new file mode 100644 index 00000000..7f095038 --- /dev/null +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php @@ -0,0 +1,24 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Exception that is raised when code is unintentionally covered. + * + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 2.0.0 + */ +class PHP_CodeCoverage_Exception_UnintentionallyCoveredCode extends PHP_CodeCoverage_Exception +{ +} diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCodeException.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCodeException.php deleted file mode 100644 index 398276a3..00000000 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCodeException.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Exception that is raised when code is unintentionally covered. - * - * @since Class available since Release 2.0.0 - */ -class PHP_CodeCoverage_UnintentionallyCoveredCodeException extends PHP_CodeCoverage_RuntimeException -{ -} diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php index 06297e5d..fce8461e 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php @@ -9,18 +9,137 @@ */ /** - * Filter for whitelisting of code coverage information. + * Filter for blacklisting and whitelisting of code coverage information. * - * @since Class available since Release 1.0.0 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.0.0 */ class PHP_CodeCoverage_Filter { + /** + * Source files that are blacklisted. + * + * @var array + */ + private $blacklistedFiles = array(); + /** * Source files that are whitelisted. * * @var array */ - private $whitelistedFiles = []; + private $whitelistedFiles = array(); + + /** + * @var boolean + */ + private $blacklistPrefilled = false; + + /** + * A list of classes which are always blacklisted + * + * @var array + */ + public static $blacklistClassNames = array( + 'File_Iterator' => 1, + 'PHP_CodeCoverage' => 1, + 'PHP_Invoker' => 1, + 'PHP_Timer' => 1, + 'PHP_Token' => 1, + 'PHPUnit_Framework_TestCase' => 2, + 'PHPUnit_Extensions_Database_TestCase' => 2, + 'PHPUnit_Framework_MockObject_Generator' => 2, + 'PHPUnit_Extensions_SeleniumTestCase' => 2, + 'PHPUnit_Extensions_Story_TestCase' => 2, + 'Text_Template' => 1, + 'Symfony\Component\Yaml\Yaml' => 1, + 'SebastianBergmann\Diff\Diff' => 1, + 'SebastianBergmann\Environment\Runtime' => 1, + 'SebastianBergmann\Comparator\Comparator' => 1, + 'SebastianBergmann\Exporter\Exporter' => 1, + 'SebastianBergmann\GlobalState\Snapshot' => 1, + 'SebastianBergmann\RecursionContext\Context' => 1, + 'SebastianBergmann\Version' => 1, + 'Composer\Autoload\ClassLoader' => 1, + 'Doctrine\Instantiator\Instantiator' => 1, + 'phpDocumentor\Reflection\DocBlock' => 1, + 'Prophecy\Prophet' => 1 + ); + + /** + * Adds a directory to the blacklist (recursively). + * + * @param string $directory + * @param string $suffix + * @param string $prefix + */ + public function addDirectoryToBlacklist($directory, $suffix = '.php', $prefix = '') + { + $facade = new File_Iterator_Facade; + $files = $facade->getFilesAsArray($directory, $suffix, $prefix); + + foreach ($files as $file) { + $this->addFileToBlacklist($file); + } + } + + /** + * Adds a file to the blacklist. + * + * @param string $filename + */ + public function addFileToBlacklist($filename) + { + $this->blacklistedFiles[realpath($filename)] = true; + } + + /** + * Adds files to the blacklist. + * + * @param array $files + */ + public function addFilesToBlacklist(array $files) + { + foreach ($files as $file) { + $this->addFileToBlacklist($file); + } + } + + /** + * Removes a directory from the blacklist (recursively). + * + * @param string $directory + * @param string $suffix + * @param string $prefix + */ + public function removeDirectoryFromBlacklist($directory, $suffix = '.php', $prefix = '') + { + $facade = new File_Iterator_Facade; + $files = $facade->getFilesAsArray($directory, $suffix, $prefix); + + foreach ($files as $file) { + $this->removeFileFromBlacklist($file); + } + } + + /** + * Removes a file from the blacklist. + * + * @param string $filename + */ + public function removeFileFromBlacklist($filename) + { + $filename = realpath($filename); + + if (isset($this->blacklistedFiles[$filename])) { + unset($this->blacklistedFiles[$filename]); + } + } /** * Adds a directory to the whitelist (recursively). @@ -95,8 +214,7 @@ public function removeFileFromWhitelist($filename) /** * Checks whether a filename is a real filename. * - * @param string $filename - * @return bool + * @param string $filename */ public function isFile($filename) { @@ -117,8 +235,13 @@ public function isFile($filename) /** * Checks whether or not a file is filtered. * - * @param string $filename - * @return bool + * When the whitelist is empty (default), blacklisting is used. + * When the whitelist is not empty, whitelisting is used. + * + * @param string $filename + * @param boolean $ignoreWhitelist + * @return boolean + * @throws PHP_CodeCoverage_Exception */ public function isFiltered($filename) { @@ -128,7 +251,25 @@ public function isFiltered($filename) $filename = realpath($filename); - return !isset($this->whitelistedFiles[$filename]); + if (!empty($this->whitelistedFiles)) { + return !isset($this->whitelistedFiles[$filename]); + } + + if (!$this->blacklistPrefilled) { + $this->prefillBlacklist(); + } + + return isset($this->blacklistedFiles[$filename]); + } + + /** + * Returns the list of blacklisted files. + * + * @return array + */ + public function getBlacklist() + { + return array_keys($this->blacklistedFiles); } /** @@ -144,7 +285,7 @@ public function getWhitelist() /** * Returns whether this filter has a whitelist. * - * @return bool + * @return boolean * @since Method available since Release 1.1.0 */ public function hasWhitelist() @@ -152,6 +293,65 @@ public function hasWhitelist() return !empty($this->whitelistedFiles); } + /** + * @since Method available since Release 1.2.3 + */ + private function prefillBlacklist() + { + if (defined('__PHPUNIT_PHAR__')) { + $this->addFileToBlacklist(__PHPUNIT_PHAR__); + } + + foreach (self::$blacklistClassNames as $className => $parent) { + $this->addDirectoryContainingClassToBlacklist($className, $parent); + } + + $this->blacklistPrefilled = true; + } + + /** + * @param string $className + * @param integer $parent + * @since Method available since Release 1.2.3 + */ + private function addDirectoryContainingClassToBlacklist($className, $parent = 1) + { + if (!class_exists($className)) { + return; + } + + $reflector = new ReflectionClass($className); + $directory = $reflector->getFileName(); + + for ($i = 0; $i < $parent; $i++) { + $directory = dirname($directory); + } + + $this->addDirectoryToBlacklist($directory); + } + + /** + * Returns the blacklisted files. + * + * @return array + * @since Method available since Release 2.0.0 + */ + public function getBlacklistedFiles() + { + return $this->blacklistedFiles; + } + + /** + * Sets the blacklisted files. + * + * @param array $blacklistedFiles + * @since Method available since Release 2.0.0 + */ + public function setBlacklistedFiles($blacklistedFiles) + { + $this->blacklistedFiles = $blacklistedFiles; + } + /** * Returns the whitelisted files. * diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php index aed52d71..c29e1755 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php @@ -11,7 +11,13 @@ /** * Generates a Clover XML logfile from an PHP_CodeCoverage object. * - * @since Class available since Release 1.0.0 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.0.0 */ class PHP_CodeCoverage_Report_Clover { @@ -23,7 +29,7 @@ class PHP_CodeCoverage_Report_Clover */ public function process(PHP_CodeCoverage $coverage, $target = null, $name = null) { - $xmlDocument = new DOMDocument('1.0', 'UTF-8'); + $xmlDocument = new DOMDocument('1.0', 'UTF-8'); $xmlDocument->formatOutput = true; $xmlCoverage = $xmlDocument->createElement('coverage'); @@ -39,7 +45,7 @@ public function process(PHP_CodeCoverage $coverage, $target = null, $name = null $xmlCoverage->appendChild($xmlProject); - $packages = []; + $packages = array(); $report = $coverage->getReport(); unset($coverage); @@ -55,7 +61,7 @@ public function process(PHP_CodeCoverage $coverage, $target = null, $name = null $classes = $item->getClassesAndTraits(); $coverage = $item->getCoverageData(); - $lines = []; + $lines = array(); foreach ($classes as $className => $class) { $classStatements = 0; @@ -84,12 +90,12 @@ public function process(PHP_CodeCoverage $coverage, $target = null, $name = null } } - $lines[$method['startLine']] = [ + $lines[$method['startLine']] = array( 'count' => $methodCount, 'crap' => $method['crap'], 'type' => 'method', 'name' => $methodName - ]; + ); } if (!empty($class['package']['namespace'])) { @@ -160,9 +166,9 @@ public function process(PHP_CodeCoverage $coverage, $target = null, $name = null continue; } - $lines[$line] = [ + $lines[$line] = array( 'count' => count($data), 'type' => 'stmt' - ]; + ); } ksort($lines); diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php index 3801107b..8e1f11a9 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php @@ -9,29 +9,17 @@ */ /** - * @since Class available since Release 2.0.0 + * @category PHP + * @package CodeCoverage + * @author Zsolt Takács + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 2.0.0 */ class PHP_CodeCoverage_Report_Crap4j { - /** - * @var int - */ - private $threshold; - - /** - * @param int $threshold - */ - public function __construct($threshold = 30) - { - if (!is_int($threshold)) { - throw PHP_CodeCoverage_InvalidArgumentException::create( - 1, - 'integer' - ); - } - - $this->threshold = $threshold; - } + private $threshold = 30; /** * @param PHP_CodeCoverage $coverage @@ -41,7 +29,7 @@ public function __construct($threshold = 30) */ public function process(PHP_CodeCoverage $coverage, $target = null, $name = null) { - $document = new DOMDocument('1.0', 'UTF-8'); + $document = new DOMDocument('1.0', 'UTF-8'); $document->formatOutput = true; $root = $document->createElement('crap_result'); @@ -112,14 +100,7 @@ public function process(PHP_CodeCoverage $coverage, $target = null, $name = null $stats->appendChild($document->createElement('crapMethodCount', $fullCrapMethodCount)); $stats->appendChild($document->createElement('crapLoad', round($fullCrapLoad))); $stats->appendChild($document->createElement('totalCrap', $fullCrap)); - - if ($fullMethodCount > 0) { - $crapMethodPercent = $this->roundValue((100 * $fullCrapMethodCount) / $fullMethodCount); - } else { - $crapMethodPercent = 0; - } - - $stats->appendChild($document->createElement('crapMethodPercent', $crapMethodPercent)); + $stats->appendChild($document->createElement('crapMethodPercent', $this->roundValue(100 * $fullCrapMethodCount / $fullMethodCount))); $root->appendChild($stats); $root->appendChild($methodsNode); @@ -135,16 +116,9 @@ public function process(PHP_CodeCoverage $coverage, $target = null, $name = null } } - /** - * @param float $crapValue - * @param int $cyclomaticComplexity - * @param float $coveragePercent - * @return float - */ private function getCrapLoad($crapValue, $cyclomaticComplexity, $coveragePercent) { $crapLoad = 0; - if ($crapValue >= $this->threshold) { $crapLoad += $cyclomaticComplexity * (1.0 - $coveragePercent / 100); $crapLoad += $cyclomaticComplexity / $this->threshold; @@ -153,10 +127,6 @@ private function getCrapLoad($crapValue, $cyclomaticComplexity, $coveragePercent return $crapLoad; } - /** - * @param float $value - * @return float - */ private function roundValue($value) { return round($value, 2); diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php index 519e92e9..b9bffdf9 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php @@ -11,12 +11,18 @@ /** * Factory for PHP_CodeCoverage_Report_Node_* object graphs. * - * @since Class available since Release 1.1.0 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.1.0 */ class PHP_CodeCoverage_Report_Factory { /** - * @param PHP_CodeCoverage $coverage + * @param PHP_CodeCoverage $coverage * @return PHP_CodeCoverage_Report_Node_Directory */ public function create(PHP_CodeCoverage $coverage) @@ -42,7 +48,7 @@ public function create(PHP_CodeCoverage $coverage) * @param PHP_CodeCoverage_Report_Node_Directory $root * @param array $items * @param array $tests - * @param bool $cacheTokens + * @param boolean $cacheTokens */ private function addItems(PHP_CodeCoverage_Report_Node_Directory $root, array $items, array $tests, $cacheTokens) { @@ -105,7 +111,7 @@ private function addItems(PHP_CodeCoverage_Report_Node_Directory $root, array $i */ private function buildDirectoryStructure($files) { - $result = []; + $result = array(); foreach ($files as $path => $file) { $path = explode('/', $path); @@ -231,7 +237,7 @@ private function reducePaths(&$files) $max = count($original); for ($i = 0; $i < $max; $i++) { - $files[implode('/', $paths[$i])] = $files[$original[$i]]; + $files[join('/', $paths[$i])] = $files[$original[$i]]; unset($files[$original[$i]]); } diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php index 4829dd68..c67db46a 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php @@ -11,7 +11,13 @@ /** * Generates an HTML report from an PHP_CodeCoverage object. * - * @since Class available since Release 1.0.0 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.0.0 */ class PHP_CodeCoverage_Report_HTML { @@ -26,21 +32,21 @@ class PHP_CodeCoverage_Report_HTML private $generator; /** - * @var int + * @var integer */ private $lowUpperBound; /** - * @var int + * @var integer */ private $highLowerBound; /** * Constructor. * - * @param int $lowUpperBound - * @param int $highLowerBound - * @param string $generator + * @param integer $lowUpperBound + * @param integer $highLowerBound + * @param string $generator */ public function __construct($lowUpperBound = 50, $highLowerBound = 90, $generator = '') { @@ -132,7 +138,7 @@ private function copyFiles($target) { $dir = $this->getDirectory($target . 'css'); copy($this->templatePath . 'css/bootstrap.min.css', $dir . 'bootstrap.min.css'); - copy($this->templatePath . 'css/nv.d3.min.css', $dir . 'nv.d3.min.css'); + copy($this->templatePath . 'css/nv.d3.css', $dir . 'nv.d3.css'); copy($this->templatePath . 'css/style.css', $dir . 'style.css'); $dir = $this->getDirectory($target . 'fonts'); @@ -145,7 +151,7 @@ private function copyFiles($target) $dir = $this->getDirectory($target . 'js'); copy($this->templatePath . 'js/bootstrap.min.js', $dir . 'bootstrap.min.js'); copy($this->templatePath . 'js/d3.min.js', $dir . 'd3.min.js'); - copy($this->templatePath . 'js/holder.min.js', $dir . 'holder.min.js'); + copy($this->templatePath . 'js/holder.js', $dir . 'holder.js'); copy($this->templatePath . 'js/html5shiv.min.js', $dir . 'html5shiv.min.js'); copy($this->templatePath . 'js/jquery.min.js', $dir . 'jquery.min.js'); copy($this->templatePath . 'js/nv.d3.min.js', $dir . 'nv.d3.min.js'); @@ -153,9 +159,9 @@ private function copyFiles($target) } /** - * @param string $directory + * @param string $directory * @return string - * @throws PHP_CodeCoverage_RuntimeException + * @throws PHP_CodeCoverage_Exception * @since Method available since Release 1.2.0 */ private function getDirectory($directory) @@ -172,7 +178,7 @@ private function getDirectory($directory) return $directory; } - throw new PHP_CodeCoverage_RuntimeException( + throw new PHP_CodeCoverage_Exception( sprintf( 'Directory "%s" does not exist.', $directory diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php index 63ebb672..c42a741e 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php @@ -13,7 +13,13 @@ /** * Base class for PHP_CodeCoverage_Report_Node renderers. * - * @since Class available since Release 1.1.0 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.1.0 */ abstract class PHP_CodeCoverage_Report_HTML_Renderer { @@ -33,12 +39,12 @@ abstract class PHP_CodeCoverage_Report_HTML_Renderer protected $date; /** - * @var int + * @var integer */ protected $lowUpperBound; /** - * @var int + * @var integer */ protected $highLowerBound; @@ -50,15 +56,15 @@ abstract class PHP_CodeCoverage_Report_HTML_Renderer /** * Constructor. * - * @param string $templatePath - * @param string $generator - * @param string $date - * @param int $lowUpperBound - * @param int $highLowerBound + * @param string $templatePath + * @param string $generator + * @param string $date + * @param integer $lowUpperBound + * @param integer $highLowerBound */ public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound) { - $version = new SebastianBergmann\Version('3.0.1', dirname(dirname(dirname(dirname(__DIR__))))); + $version = new SebastianBergmann\Version('2.0.17', dirname(dirname(dirname(dirname(__DIR__))))); $this->templatePath = $templatePath; $this->generator = $generator; @@ -75,73 +81,70 @@ public function __construct($templatePath, $generator, $date, $lowUpperBound, $h */ protected function renderItemTemplate(Text_Template $template, array $data) { - $numSeparator = ' / '; + $numSeperator = ' / '; + $classesBar = ' '; + $classesLevel = 'None'; + $classesNumber = ' '; if (isset($data['numClasses']) && $data['numClasses'] > 0) { $classesLevel = $this->getColorLevel($data['testedClassesPercent']); - $classesNumber = $data['numTestedClasses'] . $numSeparator . + $classesNumber = $data['numTestedClasses'] . $numSeperator . $data['numClasses']; $classesBar = $this->getCoverageBar( $data['testedClassesPercent'] ); - } else { - $classesLevel = 'success'; - $classesNumber = '0' . $numSeparator . '0'; - $classesBar = $this->getCoverageBar(100); } + $methodsBar = ' '; + $methodsLevel = 'None'; + $methodsNumber = ' '; + if ($data['numMethods'] > 0) { $methodsLevel = $this->getColorLevel($data['testedMethodsPercent']); - $methodsNumber = $data['numTestedMethods'] . $numSeparator . + $methodsNumber = $data['numTestedMethods'] . $numSeperator . $data['numMethods']; $methodsBar = $this->getCoverageBar( $data['testedMethodsPercent'] ); - } else { - $methodsLevel = 'success'; - $methodsNumber = '0' . $numSeparator . '0'; - $methodsBar = $this->getCoverageBar(100); - $data['testedMethodsPercentAsString'] = '100.00%'; } + $linesBar = ' '; + $linesLevel = 'None'; + $linesNumber = ' '; + if ($data['numExecutableLines'] > 0) { $linesLevel = $this->getColorLevel($data['linesExecutedPercent']); - $linesNumber = $data['numExecutedLines'] . $numSeparator . + $linesNumber = $data['numExecutedLines'] . $numSeperator . $data['numExecutableLines']; $linesBar = $this->getCoverageBar( $data['linesExecutedPercent'] ); - } else { - $linesLevel = 'success'; - $linesNumber = '0' . $numSeparator . '0'; - $linesBar = $this->getCoverageBar(100); - $data['linesExecutedPercentAsString'] = '100.00%'; } $template->setVar( - [ - 'icon' => isset($data['icon']) ? $data['icon'] : '', - 'crap' => isset($data['crap']) ? $data['crap'] : '', - 'name' => $data['name'], - 'lines_bar' => $linesBar, + array( + 'icon' => isset($data['icon']) ? $data['icon'] : '', + 'crap' => isset($data['crap']) ? $data['crap'] : '', + 'name' => $data['name'], + 'lines_bar' => $linesBar, 'lines_executed_percent' => $data['linesExecutedPercentAsString'], - 'lines_level' => $linesLevel, - 'lines_number' => $linesNumber, - 'methods_bar' => $methodsBar, + 'lines_level' => $linesLevel, + 'lines_number' => $linesNumber, + 'methods_bar' => $methodsBar, 'methods_tested_percent' => $data['testedMethodsPercentAsString'], - 'methods_level' => $methodsLevel, - 'methods_number' => $methodsNumber, - 'classes_bar' => $classesBar, + 'methods_level' => $methodsLevel, + 'methods_number' => $methodsNumber, + 'classes_bar' => $classesBar, 'classes_tested_percent' => isset($data['testedClassesPercentAsString']) ? $data['testedClassesPercentAsString'] : '', - 'classes_level' => $classesLevel, - 'classes_number' => $classesNumber - ] + 'classes_level' => $classesLevel, + 'classes_number' => $classesNumber + ) ); return $template->render(); @@ -156,7 +159,7 @@ protected function setCommonTemplateVariables(Text_Template $template, PHP_CodeC $runtime = new Runtime; $template->setVar( - [ + array( 'id' => $node->getId(), 'full_path' => $node->getPath(), 'path_to_root' => $this->getPathToRoot($node), @@ -169,7 +172,7 @@ protected function setCommonTemplateVariables(Text_Template $template, PHP_CodeC 'generator' => $this->generator, 'low_upper_bound' => $this->lowUpperBound, 'high_lower_bound' => $this->highLowerBound - ] + ) ); } @@ -177,7 +180,7 @@ protected function getBreadcrumbs(PHP_CodeCoverage_Report_Node $node) { $breadcrumbs = ''; $path = $node->getPathAsArray(); - $pathToRoot = []; + $pathToRoot = array(); $max = count($path); if ($node instanceof PHP_CodeCoverage_Report_Node_File) { @@ -248,20 +251,20 @@ protected function getCoverageBar($percent) '}}' ); - $template->setVar(['level' => $level, 'percent' => sprintf('%.2F', $percent)]); + $template->setVar(array('level' => $level, 'percent' => sprintf("%.2F", $percent))); return $template->render(); } /** - * @param int $percent + * @param integer $percent * @return string */ protected function getColorLevel($percent) { - if ($percent <= $this->lowUpperBound) { + if ($percent < $this->lowUpperBound) { return 'danger'; - } elseif ($percent > $this->lowUpperBound && + } elseif ($percent >= $this->lowUpperBound && $percent < $this->highLowerBound) { return 'warning'; } else { diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php index b61766a8..deac0b77 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php @@ -11,7 +11,13 @@ /** * Renders the dashboard for a PHP_CodeCoverage_Report_Node_Directory node. * - * @since Class available since Release 1.1.0 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.1.0 */ class PHP_CodeCoverage_Report_HTML_Renderer_Dashboard extends PHP_CodeCoverage_Report_HTML_Renderer { @@ -37,7 +43,7 @@ public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file) $projectRisks = $this->projectRisks($classes, $baseLink); $template->setVar( - [ + array( 'insufficient_coverage_classes' => $insufficientCoverage['class'], 'insufficient_coverage_methods' => $insufficientCoverage['method'], 'project_risks_classes' => $projectRisks['class'], @@ -46,7 +52,7 @@ public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file) 'complexity_method' => $complexity['method'], 'class_coverage_distribution' => $coverageDistribution['class'], 'method_coverage_distribution' => $coverageDistribution['method'] - ] + ) ); $template->renderTo($file); @@ -61,7 +67,7 @@ public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file) */ protected function complexity(array $classes, $baseLink) { - $result = ['class' => [], 'method' => []]; + $result = array('class' => array(), 'method' => array()); foreach ($classes as $className => $class) { foreach ($class['methods'] as $methodName => $method) { @@ -69,7 +75,7 @@ protected function complexity(array $classes, $baseLink) $methodName = $className . '::' . $methodName; } - $result['method'][] = [ + $result['method'][] = array( $method['coverage'], $method['ccn'], sprintf( @@ -77,10 +83,10 @@ protected function complexity(array $classes, $baseLink) str_replace($baseLink, '', $method['link']), $methodName ) - ]; + ); } - $result['class'][] = [ + $result['class'][] = array( $class['coverage'], $class['ccn'], sprintf( @@ -88,13 +94,13 @@ protected function complexity(array $classes, $baseLink) str_replace($baseLink, '', $class['link']), $className ) - ]; + ); } - return [ - 'class' => json_encode($result['class']), + return array( + 'class' => json_encode($result['class']), 'method' => json_encode($result['method']) - ]; + ); } /** @@ -105,8 +111,8 @@ protected function complexity(array $classes, $baseLink) */ protected function coverageDistribution(array $classes) { - $result = [ - 'class' => [ + $result = array( + 'class' => array( '0%' => 0, '0-10%' => 0, '10-20%' => 0, @@ -119,8 +125,8 @@ protected function coverageDistribution(array $classes) '80-90%' => 0, '90-100%' => 0, '100%' => 0 - ], - 'method' => [ + ), + 'method' => array( '0%' => 0, '0-10%' => 0, '10-20%' => 0, @@ -133,8 +139,8 @@ protected function coverageDistribution(array $classes) '80-90%' => 0, '90-100%' => 0, '100%' => 0 - ] - ]; + ) + ); foreach ($classes as $class) { foreach ($class['methods'] as $methodName => $method) { @@ -160,10 +166,10 @@ protected function coverageDistribution(array $classes) } } - return [ - 'class' => json_encode(array_values($result['class'])), + return array( + 'class' => json_encode(array_values($result['class'])), 'method' => json_encode(array_values($result['method'])) - ]; + ); } /** @@ -175,9 +181,9 @@ protected function coverageDistribution(array $classes) */ protected function insufficientCoverage(array $classes, $baseLink) { - $leastTestedClasses = []; - $leastTestedMethods = []; - $result = ['class' => '', 'method' => '']; + $leastTestedClasses = array(); + $leastTestedMethods = array(); + $result = array('class' => '', 'method' => ''); foreach ($classes as $className => $class) { foreach ($class['methods'] as $methodName => $method) { @@ -213,7 +219,7 @@ protected function insufficientCoverage(array $classes, $baseLink) list($class, $method) = explode('::', $methodName); $result['method'] .= sprintf( - '
' . "\n", + ' ' . "\n", str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']), $methodName, $method, @@ -233,9 +239,9 @@ protected function insufficientCoverage(array $classes, $baseLink) */ protected function projectRisks(array $classes, $baseLink) { - $classRisks = []; - $methodRisks = []; - $result = ['class' => '', 'method' => '']; + $classRisks = array(); + $methodRisks = array(); + $result = array('class' => '', 'method' => ''); foreach ($classes as $className => $class) { foreach ($class['methods'] as $methodName => $method) { diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php index b7c0d0d6..1e21d26a 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php @@ -11,7 +11,13 @@ /** * Renders a PHP_CodeCoverage_Report_Node_Directory node. * - * @since Class available since Release 1.1.0 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.1.0 */ class PHP_CodeCoverage_Report_HTML_Renderer_Directory extends PHP_CodeCoverage_Report_HTML_Renderer { @@ -36,10 +42,10 @@ public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file) } $template->setVar( - [ + array( 'id' => $node->getId(), 'items' => $items - ] + ) ); $template->renderTo($file); @@ -47,12 +53,12 @@ public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file) /** * @param PHP_CodeCoverage_Report_Node $item - * @param bool $total + * @param boolean $total * @return string */ protected function renderItem(PHP_CodeCoverage_Report_Node $item, $total = false) { - $data = [ + $data = array( 'numClasses' => $item->getNumClassesAndTraits(), 'numTestedClasses' => $item->getNumTestedClassesAndTraits(), 'numMethods' => $item->getNumMethods(), @@ -65,7 +71,7 @@ protected function renderItem(PHP_CodeCoverage_Report_Node $item, $total = false 'testedMethodsPercentAsString' => $item->getTestedMethodsPercent(), 'testedClassesPercent' => $item->getTestedClassesAndTraitsPercent(false), 'testedClassesPercentAsString' => $item->getTestedClassesAndTraitsPercent() - ]; + ); if ($total) { $data['name'] = 'Total'; diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php index bb3eed48..907a39f0 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php @@ -33,23 +33,24 @@ /** * Renders a PHP_CodeCoverage_Report_Node_File node. * - * @since Class available since Release 1.1.0 + * @category PHP + * @package CodeCoverage + * @author Sebastian Bergmann + * @copyright Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/php-code-coverage + * @since Class available since Release 1.1.0 */ class PHP_CodeCoverage_Report_HTML_Renderer_File extends PHP_CodeCoverage_Report_HTML_Renderer { - /** - * @var int - */ - private $htmlspecialcharsFlags; - /** * Constructor. * - * @param string $templatePath - * @param string $generator - * @param string $date - * @param int $lowUpperBound - * @param int $highLowerBound + * @param string $templatePath + * @param string $generator + * @param string $date + * @param integer $lowUpperBound + * @param integer $highLowerBound */ public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound) { @@ -60,12 +61,6 @@ public function __construct($templatePath, $generator, $date, $lowUpperBound, $h $lowUpperBound, $highLowerBound ); - - $this->htmlspecialcharsFlags = ENT_COMPAT; - - if (PHP_VERSION_ID >= 50400 && defined('ENT_SUBSTITUTE')) { - $this->htmlspecialcharsFlags = $this->htmlspecialcharsFlags | ENT_HTML401 | ENT_SUBSTITUTE; - } } /** @@ -77,10 +72,10 @@ public function render(PHP_CodeCoverage_Report_Node_File $node, $file) $template = new Text_Template($this->templatePath . 'file.html', '{{', '}}'); $template->setVar( - [ + array( 'items' => $this->renderItems($node), 'lines' => $this->renderSource($node) - ] + ) ); $this->setCommonTemplateVariables($template, $node); @@ -97,14 +92,12 @@ protected function renderItems(PHP_CodeCoverage_Report_Node_File $node) $template = new Text_Template($this->templatePath . 'file_item.html', '{{', '}}'); $methodItemTemplate = new Text_Template( - $this->templatePath . 'method_item.html', - '{{', - '}}' + $this->templatePath . 'method_item.html', '{{', '}}' ); $items = $this->renderItemTemplate( $template, - [ + array( 'name' => 'Total', 'numClasses' => $node->getNumClassesAndTraits(), 'numTestedClasses' => $node->getNumTestedClassesAndTraits(), @@ -119,7 +112,7 @@ protected function renderItems(PHP_CodeCoverage_Report_Node_File $node) 'testedClassesPercent' => $node->getTestedClassesAndTraitsPercent(false), 'testedClassesPercentAsString' => $node->getTestedClassesAndTraitsPercent(), 'crap' => 'CRAP' - ] + ) ); $items .= $this->renderFunctionItems( @@ -168,53 +161,51 @@ protected function renderTraitOrClassItems(array $items, Text_Template $template $buffer .= $this->renderItemTemplate( $template, - [ + array( 'name' => $name, 'numClasses' => 1, 'numTestedClasses' => $numTestedMethods == $numMethods ? 1 : 0, 'numMethods' => $numMethods, 'numTestedMethods' => $numTestedMethods, 'linesExecutedPercent' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - false - ), + $item['executedLines'], + $item['executableLines'], + false + ), 'linesExecutedPercentAsString' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - true - ), + $item['executedLines'], + $item['executableLines'], + true + ), 'numExecutedLines' => $item['executedLines'], 'numExecutableLines' => $item['executableLines'], 'testedMethodsPercent' => PHP_CodeCoverage_Util::percent( - $numTestedMethods, - $numMethods, - false - ), + $numTestedMethods, + $numMethods, + false + ), 'testedMethodsPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedMethods, - $numMethods, - true - ), + $numTestedMethods, + $numMethods, + true + ), 'testedClassesPercent' => PHP_CodeCoverage_Util::percent( - $numTestedMethods == $numMethods ? 1 : 0, - 1, - false - ), + $numTestedMethods == $numMethods ? 1 : 0, + 1, + false + ), 'testedClassesPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedMethods == $numMethods ? 1 : 0, - 1, - true - ), + $numTestedMethods == $numMethods ? 1 : 0, + 1, + true + ), 'crap' => $item['crap'] - ] + ) ); foreach ($item['methods'] as $method) { $buffer .= $this->renderFunctionOrMethodItem( - $methodItemTemplate, - $method, - ' ' + $methodItemTemplate, $method, ' ' ); } } @@ -237,8 +228,7 @@ protected function renderFunctionItems(array $functions, Text_Template $template foreach ($functions as $function) { $buffer .= $this->renderFunctionOrMethodItem( - $template, - $function + $template, $function ); } @@ -255,40 +245,39 @@ protected function renderFunctionOrMethodItem(Text_Template $template, array $it return $this->renderItemTemplate( $template, - [ + array( 'name' => sprintf( - '%s%s', + '%s%s', $indent, $item['startLine'], - htmlspecialchars($item['signature']), - isset($item['functionName']) ? $item['functionName'] : $item['methodName'] + htmlspecialchars($item['signature']) ), 'numMethods' => 1, 'numTestedMethods' => $numTestedItems, 'linesExecutedPercent' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - false - ), + $item['executedLines'], + $item['executableLines'], + false + ), 'linesExecutedPercentAsString' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - true - ), + $item['executedLines'], + $item['executableLines'], + true + ), 'numExecutedLines' => $item['executedLines'], 'numExecutableLines' => $item['executableLines'], 'testedMethodsPercent' => PHP_CodeCoverage_Util::percent( - $numTestedItems, - 1, - false - ), + $numTestedItems, + 1, + false + ), 'testedMethodsPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedItems, - 1, - true - ), + $numTestedItems, + 1, + true + ), 'crap' => $item['crap'] - ] + ) ); } @@ -305,6 +294,7 @@ protected function renderSource(PHP_CodeCoverage_Report_Node_File $node) $i = 1; foreach ($codeLines as $line) { + $numTests = ''; $trClass = ''; $popoverContent = ''; $popoverTitle = ''; @@ -317,7 +307,7 @@ protected function renderSource(PHP_CodeCoverage_Report_Node_File $node) } elseif ($numTests == 0) { $trClass = ' class="danger"'; } else { - $lineCss = 'covered-by-large-tests'; + $trClass = ' class="success popin"'; $popoverContent = '
    '; if ($numTests > 1) { @@ -327,55 +317,42 @@ protected function renderSource(PHP_CodeCoverage_Report_Node_File $node) } foreach ($coverageData[$i] as $test) { - if ($lineCss == 'covered-by-large-tests' && $testData[$test]['size'] == 'medium') { - $lineCss = 'covered-by-medium-tests'; - } elseif ($testData[$test]['size'] == 'small') { - $lineCss = 'covered-by-small-tests'; - } - - switch ($testData[$test]['status']) { - case 0: - switch ($testData[$test]['size']) { - case 'small': - $testCSS = ' class="covered-by-small-tests"'; - break; - - case 'medium': - $testCSS = ' class="covered-by-medium-tests"'; - break; - - default: - $testCSS = ' class="covered-by-large-tests"'; - break; - } + switch ($testData[$test]) { + case 0: { + $testCSS = ' class="success"'; + } break; case 1: - case 2: + case 2: { $testCSS = ' class="warning"'; + } break; - case 3: + case 3: { $testCSS = ' class="danger"'; + } break; - case 4: + case 4: { $testCSS = ' class="danger"'; + } break; - default: - $testCSS = ''; + default: { + $testCSS = ''; + } } $popoverContent .= sprintf( '%s', + $testCSS, htmlspecialchars($test) ); } $popoverContent .= '
'; - $trClass = ' class="' . $lineCss . ' popin"'; } } @@ -413,7 +390,7 @@ protected function loadFile($file) { $buffer = file_get_contents($file); $tokens = token_get_all($buffer); - $result = ['']; + $result = array(''); $i = 0; $stringFlag = false; $fileEndsWithNewLine = substr($buffer, -1) == "\n"; @@ -425,6 +402,7 @@ protected function loadFile($file) if ($token === '"' && $tokens[$j - 1] !== '\\') { $result[$i] .= sprintf( '%s', + htmlspecialchars($token) ); @@ -432,6 +410,7 @@ protected function loadFile($file) } else { $result[$i] .= sprintf( '%s', + htmlspecialchars($token) ); } @@ -439,12 +418,12 @@ protected function loadFile($file) continue; } - list($token, $value) = $token; + list ($token, $value) = $token; $value = str_replace( - ["\t", ' '], - ['    ', ' '], - htmlspecialchars($value, $this->htmlspecialcharsFlags) + array("\t", ' '), + array('    ', ' '), + htmlspecialchars($value) ); if ($value === "\n") { @@ -460,13 +439,15 @@ protected function loadFile($file) $colour = 'string'; } else { switch ($token) { - case T_INLINE_HTML: + case T_INLINE_HTML: { $colour = 'html'; + } break; case T_COMMENT: - case T_DOC_COMMENT: + case T_DOC_COMMENT: { $colour = 'comment'; + } break; case T_ABSTRACT: @@ -524,17 +505,20 @@ protected function loadFile($file) case T_USE: case T_VAR: case T_WHILE: - case T_YIELD: + case T_YIELD: { $colour = 'keyword'; + } break; - default: - $colour = 'default'; + default: { + $colour = 'default'; + } } } $result[$i] .= sprintf( '%s', + $colour, $line ); diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.css b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.css index cd1c616a..28f154de 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.css +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.css @@ -1,5 +1,5 @@ /*! - * Bootstrap v3.3.4 (http://getbootstrap.com) + * Bootstrap v3.3.2 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px \9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px)and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px)and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px)and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file + *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px \9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.css b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.css new file mode 100644 index 00000000..cae83482 --- /dev/null +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.css @@ -0,0 +1,769 @@ + +/******************** + * HTML CSS + */ + + +.chartWrap { + margin: 0; + padding: 0; + overflow: hidden; +} + +/******************** + Box shadow and border radius styling +*/ +.nvtooltip.with-3d-shadow, .with-3d-shadow .nvtooltip { + -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2); + -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2); + box-shadow: 0 5px 10px rgba(0,0,0,.2); + + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +/******************** + * TOOLTIP CSS + */ + +.nvtooltip { + position: absolute; + background-color: rgba(255,255,255,1.0); + padding: 1px; + border: 1px solid rgba(0,0,0,.2); + z-index: 10000; + + font-family: Arial; + font-size: 13px; + text-align: left; + pointer-events: none; + + white-space: nowrap; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/*Give tooltips that old fade in transition by + putting a "with-transitions" class on the container div. +*/ +.nvtooltip.with-transitions, .with-transitions .nvtooltip { + transition: opacity 250ms linear; + -moz-transition: opacity 250ms linear; + -webkit-transition: opacity 250ms linear; + + transition-delay: 250ms; + -moz-transition-delay: 250ms; + -webkit-transition-delay: 250ms; +} + +.nvtooltip.x-nvtooltip, +.nvtooltip.y-nvtooltip { + padding: 8px; +} + +.nvtooltip h3 { + margin: 0; + padding: 4px 14px; + line-height: 18px; + font-weight: normal; + background-color: rgba(247,247,247,0.75); + text-align: center; + + border-bottom: 1px solid #ebebeb; + + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.nvtooltip p { + margin: 0; + padding: 5px 14px; + text-align: center; +} + +.nvtooltip span { + display: inline-block; + margin: 2px 0; +} + +.nvtooltip table { + margin: 6px; + border-spacing:0; +} + + +.nvtooltip table td { + padding: 2px 9px 2px 0; + vertical-align: middle; +} + +.nvtooltip table td.key { + font-weight:normal; +} +.nvtooltip table td.value { + text-align: right; + font-weight: bold; +} + +.nvtooltip table tr.highlight td { + padding: 1px 9px 1px 0; + border-bottom-style: solid; + border-bottom-width: 1px; + border-top-style: solid; + border-top-width: 1px; +} + +.nvtooltip table td.legend-color-guide div { + width: 8px; + height: 8px; + vertical-align: middle; +} + +.nvtooltip .footer { + padding: 3px; + text-align: center; +} + + +.nvtooltip-pending-removal { + position: absolute; + pointer-events: none; +} + + +/******************** + * SVG CSS + */ + + +svg { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + /* Trying to get SVG to act like a greedy block in all browsers */ + display: block; + width:100%; + height:100%; +} + + +svg text { + font: normal 12px Arial; +} + +svg .title { + font: bold 14px Arial; +} + +.nvd3 .nv-background { + fill: white; + fill-opacity: 0; + /* + pointer-events: none; + */ +} + +.nvd3.nv-noData { + font-size: 18px; + font-weight: bold; +} + + +/********** +* Brush +*/ + +.nv-brush .extent { + fill-opacity: .125; + shape-rendering: crispEdges; +} + + + +/********** +* Legend +*/ + +.nvd3 .nv-legend .nv-series { + cursor: pointer; +} + +.nvd3 .nv-legend .disabled circle { + fill-opacity: 0; +} + + + +/********** +* Axes +*/ +.nvd3 .nv-axis { + pointer-events:none; +} + +.nvd3 .nv-axis path { + fill: none; + stroke: #000; + stroke-opacity: .75; + shape-rendering: crispEdges; +} + +.nvd3 .nv-axis path.domain { + stroke-opacity: .75; +} + +.nvd3 .nv-axis.nv-x path.domain { + stroke-opacity: 0; +} + +.nvd3 .nv-axis line { + fill: none; + stroke: #e5e5e5; + shape-rendering: crispEdges; +} + +.nvd3 .nv-axis .zero line, +/*this selector may not be necessary*/ .nvd3 .nv-axis line.zero { + stroke-opacity: .75; +} + +.nvd3 .nv-axis .nv-axisMaxMin text { + font-weight: bold; +} + +.nvd3 .x .nv-axis .nv-axisMaxMin text, +.nvd3 .x2 .nv-axis .nv-axisMaxMin text, +.nvd3 .x3 .nv-axis .nv-axisMaxMin text { + text-anchor: middle +} + + + +/********** +* Brush +*/ + +.nv-brush .resize path { + fill: #eee; + stroke: #666; +} + + + +/********** +* Bars +*/ + +.nvd3 .nv-bars .negative rect { + zfill: brown; +} + +.nvd3 .nv-bars rect { + zfill: steelblue; + fill-opacity: .75; + + transition: fill-opacity 250ms linear; + -moz-transition: fill-opacity 250ms linear; + -webkit-transition: fill-opacity 250ms linear; +} + +.nvd3 .nv-bars rect.hover { + fill-opacity: 1; +} + +.nvd3 .nv-bars .hover rect { + fill: lightblue; +} + +.nvd3 .nv-bars text { + fill: rgba(0,0,0,0); +} + +.nvd3 .nv-bars .hover text { + fill: rgba(0,0,0,1); +} + + +/********** +* Bars +*/ + +.nvd3 .nv-multibar .nv-groups rect, +.nvd3 .nv-multibarHorizontal .nv-groups rect, +.nvd3 .nv-discretebar .nv-groups rect { + stroke-opacity: 0; + + transition: fill-opacity 250ms linear; + -moz-transition: fill-opacity 250ms linear; + -webkit-transition: fill-opacity 250ms linear; +} + +.nvd3 .nv-multibar .nv-groups rect:hover, +.nvd3 .nv-multibarHorizontal .nv-groups rect:hover, +.nvd3 .nv-discretebar .nv-groups rect:hover { + fill-opacity: 1; +} + +.nvd3 .nv-discretebar .nv-groups text, +.nvd3 .nv-multibarHorizontal .nv-groups text { + font-weight: bold; + fill: rgba(0,0,0,1); + stroke: rgba(0,0,0,0); +} + +/*********** +* Pie Chart +*/ + +.nvd3.nv-pie path { + stroke-opacity: 0; + transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear; + -moz-transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear; + -webkit-transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear; + +} + +.nvd3.nv-pie .nv-slice text { + stroke: #000; + stroke-width: 0; +} + +.nvd3.nv-pie path { + stroke: #fff; + stroke-width: 1px; + stroke-opacity: 1; +} + +.nvd3.nv-pie .hover path { + fill-opacity: .7; +} +.nvd3.nv-pie .nv-label { + pointer-events: none; +} +.nvd3.nv-pie .nv-label rect { + fill-opacity: 0; + stroke-opacity: 0; +} + +/********** +* Lines +*/ + +.nvd3 .nv-groups path.nv-line { + fill: none; + stroke-width: 1.5px; + /* + stroke-linecap: round; + shape-rendering: geometricPrecision; + + transition: stroke-width 250ms linear; + -moz-transition: stroke-width 250ms linear; + -webkit-transition: stroke-width 250ms linear; + + transition-delay: 250ms + -moz-transition-delay: 250ms; + -webkit-transition-delay: 250ms; + */ +} + +.nvd3 .nv-groups path.nv-line.nv-thin-line { + stroke-width: 1px; +} + + +.nvd3 .nv-groups path.nv-area { + stroke: none; + /* + stroke-linecap: round; + shape-rendering: geometricPrecision; + + stroke-width: 2.5px; + transition: stroke-width 250ms linear; + -moz-transition: stroke-width 250ms linear; + -webkit-transition: stroke-width 250ms linear; + + transition-delay: 250ms + -moz-transition-delay: 250ms; + -webkit-transition-delay: 250ms; + */ +} + +.nvd3 .nv-line.hover path { + stroke-width: 6px; +} + +/* +.nvd3.scatter .groups .point { + fill-opacity: 0.1; + stroke-opacity: 0.1; +} + */ + +.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point { + fill-opacity: 0; + stroke-opacity: 0; +} + +.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point { + fill-opacity: .5 !important; + stroke-opacity: .5 !important; +} + + +.with-transitions .nvd3 .nv-groups .nv-point { + transition: stroke-width 250ms linear, stroke-opacity 250ms linear; + -moz-transition: stroke-width 250ms linear, stroke-opacity 250ms linear; + -webkit-transition: stroke-width 250ms linear, stroke-opacity 250ms linear; + +} + +.nvd3.nv-scatter .nv-groups .nv-point.hover, +.nvd3 .nv-groups .nv-point.hover { + stroke-width: 7px; + fill-opacity: .95 !important; + stroke-opacity: .95 !important; +} + + +.nvd3 .nv-point-paths path { + stroke: #aaa; + stroke-opacity: 0; + fill: #eee; + fill-opacity: 0; +} + + + +.nvd3 .nv-indexLine { + cursor: ew-resize; +} + + +/********** +* Distribution +*/ + +.nvd3 .nv-distribution { + pointer-events: none; +} + + + +/********** +* Scatter +*/ + +/* **Attempting to remove this for useVoronoi(false), need to see if it's required anywhere +.nvd3 .nv-groups .nv-point { + pointer-events: none; +} +*/ + +.nvd3 .nv-groups .nv-point.hover { + stroke-width: 20px; + stroke-opacity: .5; +} + +.nvd3 .nv-scatter .nv-point.hover { + fill-opacity: 1; +} + +/* +.nv-group.hover .nv-point { + fill-opacity: 1; +} +*/ + + +/********** +* Stacked Area +*/ + +.nvd3.nv-stackedarea path.nv-area { + fill-opacity: .7; + /* + stroke-opacity: .65; + fill-opacity: 1; + */ + stroke-opacity: 0; + + transition: fill-opacity 250ms linear, stroke-opacity 250ms linear; + -moz-transition: fill-opacity 250ms linear, stroke-opacity 250ms linear; + -webkit-transition: fill-opacity 250ms linear, stroke-opacity 250ms linear; + + /* + transition-delay: 500ms; + -moz-transition-delay: 500ms; + -webkit-transition-delay: 500ms; + */ + +} + +.nvd3.nv-stackedarea path.nv-area.hover { + fill-opacity: .9; + /* + stroke-opacity: .85; + */ +} +/* +.d3stackedarea .groups path { + stroke-opacity: 0; +} + */ + + + +.nvd3.nv-stackedarea .nv-groups .nv-point { + stroke-opacity: 0; + fill-opacity: 0; +} + +/* +.nvd3.nv-stackedarea .nv-groups .nv-point.hover { + stroke-width: 20px; + stroke-opacity: .75; + fill-opacity: 1; +}*/ + + + +/********** +* Line Plus Bar +*/ + +.nvd3.nv-linePlusBar .nv-bar rect { + fill-opacity: .75; +} + +.nvd3.nv-linePlusBar .nv-bar rect:hover { + fill-opacity: 1; +} + + +/********** +* Bullet +*/ + +.nvd3.nv-bullet { font: 10px sans-serif; } +.nvd3.nv-bullet .nv-measure { fill-opacity: .8; } +.nvd3.nv-bullet .nv-measure:hover { fill-opacity: 1; } +.nvd3.nv-bullet .nv-marker { stroke: #000; stroke-width: 2px; } +.nvd3.nv-bullet .nv-markerTriangle { stroke: #000; fill: #fff; stroke-width: 1.5px; } +.nvd3.nv-bullet .nv-tick line { stroke: #666; stroke-width: .5px; } +.nvd3.nv-bullet .nv-range.nv-s0 { fill: #eee; } +.nvd3.nv-bullet .nv-range.nv-s1 { fill: #ddd; } +.nvd3.nv-bullet .nv-range.nv-s2 { fill: #ccc; } +.nvd3.nv-bullet .nv-title { font-size: 14px; font-weight: bold; } +.nvd3.nv-bullet .nv-subtitle { fill: #999; } + + +.nvd3.nv-bullet .nv-range { + fill: #bababa; + fill-opacity: .4; +} +.nvd3.nv-bullet .nv-range:hover { + fill-opacity: .7; +} + + + +/********** +* Sparkline +*/ + +.nvd3.nv-sparkline path { + fill: none; +} + +.nvd3.nv-sparklineplus g.nv-hoverValue { + pointer-events: none; +} + +.nvd3.nv-sparklineplus .nv-hoverValue line { + stroke: #333; + stroke-width: 1.5px; + } + +.nvd3.nv-sparklineplus, +.nvd3.nv-sparklineplus g { + pointer-events: all; +} + +.nvd3 .nv-hoverArea { + fill-opacity: 0; + stroke-opacity: 0; +} + +.nvd3.nv-sparklineplus .nv-xValue, +.nvd3.nv-sparklineplus .nv-yValue { + /* + stroke: #666; + */ + stroke-width: 0; + font-size: .9em; + font-weight: normal; +} + +.nvd3.nv-sparklineplus .nv-yValue { + stroke: #f66; +} + +.nvd3.nv-sparklineplus .nv-maxValue { + stroke: #2ca02c; + fill: #2ca02c; +} + +.nvd3.nv-sparklineplus .nv-minValue { + stroke: #d62728; + fill: #d62728; +} + +.nvd3.nv-sparklineplus .nv-currentValue { + /* + stroke: #444; + fill: #000; + */ + font-weight: bold; + font-size: 1.1em; +} + +/********** +* historical stock +*/ + +.nvd3.nv-ohlcBar .nv-ticks .nv-tick { + stroke-width: 2px; +} + +.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover { + stroke-width: 4px; +} + +.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive { + stroke: #2ca02c; +} + +.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative { + stroke: #d62728; +} + +.nvd3.nv-historicalStockChart .nv-axis .nv-axislabel { + font-weight: bold; +} + +.nvd3.nv-historicalStockChart .nv-dragTarget { + fill-opacity: 0; + stroke: none; + cursor: move; +} + +.nvd3 .nv-brush .extent { + /* + cursor: ew-resize !important; + */ + fill-opacity: 0 !important; +} + +.nvd3 .nv-brushBackground rect { + stroke: #000; + stroke-width: .4; + fill: #fff; + fill-opacity: .7; +} + + + +/********** +* Indented Tree +*/ + + +/** + * TODO: the following 3 selectors are based on classes used in the example. I should either make them standard and leave them here, or move to a CSS file not included in the library + */ +.nvd3.nv-indentedtree .name { + margin-left: 5px; +} + +.nvd3.nv-indentedtree .clickable { + color: #08C; + cursor: pointer; +} + +.nvd3.nv-indentedtree span.clickable:hover { + color: #005580; + text-decoration: underline; +} + + +.nvd3.nv-indentedtree .nv-childrenCount { + display: inline-block; + margin-left: 5px; +} + +.nvd3.nv-indentedtree .nv-treeicon { + cursor: pointer; + /* + cursor: n-resize; + */ +} + +.nvd3.nv-indentedtree .nv-treeicon.nv-folded { + cursor: pointer; + /* + cursor: s-resize; + */ +} + +/********** +* Parallel Coordinates +*/ + +.nvd3 .background path { + fill: none; + stroke: #ccc; + stroke-opacity: .4; + shape-rendering: crispEdges; +} + +.nvd3 .foreground path { + fill: none; + stroke: steelblue; + stroke-opacity: .7; +} + +.nvd3 .brush .extent { + fill-opacity: .3; + stroke: #fff; + shape-rendering: crispEdges; +} + +.nvd3 .axis line, .axis path { + fill: none; + stroke: #000; + shape-rendering: crispEdges; +} + +.nvd3 .axis text { + text-shadow: 0 1px 0 #fff; +} + +/**** +Interactive Layer +*/ +.nvd3 .nv-interactiveGuideLine { + pointer-events:none; +} +.nvd3 line.nv-guideline { + stroke: #ccc; +} \ No newline at end of file diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.min.css b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.min.css deleted file mode 100644 index 7a6f7fe9..00000000 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.min.css +++ /dev/null @@ -1 +0,0 @@ -.nvd3 .nv-axis{pointer-events:none;opacity:1}.nvd3 .nv-axis path{fill:none;stroke:#000;stroke-opacity:.75;shape-rendering:crispEdges}.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{fill:none;stroke:#e5e5e5;shape-rendering:crispEdges}.nvd3 .nv-axis .zero line,.nvd3 .nv-axis line.zero{stroke-opacity:.75}.nvd3 .nv-axis .nv-axisMaxMin text{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nvd3 .nv-axis.nv-disabled{opacity:0}.nvd3 .nv-bars rect{fill-opacity:.75;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-bars rect.hover{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:rgba(0,0,0,0)}.nvd3 .nv-bars .hover text{fill:rgba(0,0,0,1)}.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect,.nvd3 .nv-discretebar .nv-groups rect{stroke-opacity:0;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,.nvd3 .nv-candlestickBar .nv-ticks rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover{fill-opacity:1}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:rgba(0,0,0,1);stroke:rgba(0,0,0,0)}.nvd3 .nv-boxplot circle{fill-opacity:.5}.nvd3 .nv-boxplot circle:hover{fill-opacity:1}.nvd3 .nv-boxplot rect:hover{fill-opacity:1}.nvd3 line.nv-boxplot-median{stroke:#000}.nv-boxplot-tick:hover{stroke-width:2.5px}.nvd3.nv-bullet{font:10px sans-serif}.nvd3.nv-bullet .nv-measure{fill-opacity:.8}.nvd3.nv-bullet .nv-measure:hover{fill-opacity:1}.nvd3.nv-bullet .nv-marker{stroke:#000;stroke-width:2px}.nvd3.nv-bullet .nv-markerTriangle{stroke:#000;fill:#fff;stroke-width:1.5px}.nvd3.nv-bullet .nv-tick line{stroke:#666;stroke-width:.5px}.nvd3.nv-bullet .nv-range.nv-s0{fill:#eee}.nvd3.nv-bullet .nv-range.nv-s1{fill:#ddd}.nvd3.nv-bullet .nv-range.nv-s2{fill:#ccc}.nvd3.nv-bullet .nv-title{font-size:14px;font-weight:700}.nvd3.nv-bullet .nv-subtitle{fill:#999}.nvd3.nv-bullet .nv-range{fill:#bababa;fill-opacity:.4}.nvd3.nv-bullet .nv-range:hover{fill-opacity:.7}.nvd3.nv-candlestickBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect{stroke:#d62728;fill:#d62728}.with-transitions .nv-candlestickBar .nv-ticks .nv-tick{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-candlestickBar .nv-ticks line{stroke:#333}.nvd3 .nv-legend .nv-disabled rect{}.nvd3 .nv-check-box .nv-box{fill-opacity:0;stroke-width:2}.nvd3 .nv-check-box .nv-check{fill-opacity:0;stroke-width:4}.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check{opacity:0}.nvd3.nv-linePlusBar .nv-bar rect{fill-opacity:.75}.nvd3.nv-linePlusBar .nv-bar rect:hover{fill-opacity:1}.nvd3 .nv-groups path.nv-line{fill:none}.nvd3 .nv-groups path.nv-area{stroke:none}.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point{fill-opacity:0;stroke-opacity:0}.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point{fill-opacity:.5!important;stroke-opacity:.5!important}.with-transitions .nvd3 .nv-groups .nv-point{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-scatter .nv-groups .nv-point.hover,.nvd3 .nv-groups .nv-point.hover{stroke-width:7px;fill-opacity:.95!important;stroke-opacity:.95!important}.nvd3 .nv-point-paths path{stroke:#aaa;stroke-opacity:0;fill:#eee;fill-opacity:0}.nvd3 .nv-indexLine{cursor:ew-resize}svg.nvd3-svg{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;display:block;width:100%;height:100%}.nvtooltip.with-3d-shadow,.with-3d-shadow .nvtooltip{-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nvd3 text{font:400 12px Arial}.nvd3 .title{font:700 14px Arial}.nvd3 .nv-background{fill:#fff;fill-opacity:0}.nvd3.nv-noData{font-size:18px;font-weight:700}.nv-brush .extent{fill-opacity:.125;shape-rendering:crispEdges}.nv-brush .resize path{fill:#eee;stroke:#666}.nvd3 .nv-legend .nv-series{cursor:pointer}.nvd3 .nv-legend .nv-disabled circle{fill-opacity:0}.nvd3 .nv-brush .extent{fill-opacity:0!important}.nvd3 .nv-brushBackground rect{stroke:#000;stroke-width:.4;fill:#fff;fill-opacity:.7}.nvd3.nv-ohlcBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive{stroke:#2ca02c}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative{stroke:#d62728}.nvd3 .background path{fill:none;stroke:#EEE;stroke-opacity:.4;shape-rendering:crispEdges}.nvd3 .foreground path{fill:none;stroke-opacity:.7}.nvd3 .nv-parallelCoordinates-brush .extent{fill:#fff;fill-opacity:.6;stroke:gray;shape-rendering:crispEdges}.nvd3 .nv-parallelCoordinates .hover{fill-opacity:1;stroke-width:3px}.nvd3 .missingValuesline line{fill:none;stroke:#000;stroke-width:1;stroke-opacity:1;stroke-dasharray:5,5}.nvd3.nv-pie path{stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-pie .nv-pie-title{font-size:24px;fill:rgba(19,196,249,.59)}.nvd3.nv-pie .nv-slice text{stroke:#000;stroke-width:0}.nvd3.nv-pie path{stroke:#fff;stroke-width:1px;stroke-opacity:1}.nvd3.nv-pie .hover path{fill-opacity:.7}.nvd3.nv-pie .nv-label{pointer-events:none}.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvd3 .nv-scatter .nv-point.hover{fill-opacity:1}.nv-noninteractive{pointer-events:none}.nv-distx,.nv-disty{pointer-events:none}.nvd3.nv-sparkline path{fill:none}.nvd3.nv-sparklineplus g.nv-hoverValue{pointer-events:none}.nvd3.nv-sparklineplus .nv-hoverValue line{stroke:#333;stroke-width:1.5px}.nvd3.nv-sparklineplus,.nvd3.nv-sparklineplus g{pointer-events:all}.nvd3 .nv-hoverArea{fill-opacity:0;stroke-opacity:0}.nvd3.nv-sparklineplus .nv-xValue,.nvd3.nv-sparklineplus .nv-yValue{stroke-width:0;font-size:.9em;font-weight:400}.nvd3.nv-sparklineplus .nv-yValue{stroke:#f66}.nvd3.nv-sparklineplus .nv-maxValue{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-sparklineplus .nv-minValue{stroke:#d62728;fill:#d62728}.nvd3.nv-sparklineplus .nv-currentValue{font-weight:700;font-size:1.1em}.nvd3.nv-stackedarea path.nv-area{fill-opacity:.7;stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-stackedarea path.nv-area.hover{fill-opacity:.9}.nvd3.nv-stackedarea .nv-groups .nv-point{stroke-opacity:0;fill-opacity:0}.nvtooltip{position:absolute;background-color:rgba(255,255,255,1);color:rgba(0,0,0,1);padding:1px;border:1px solid rgba(0,0,0,.2);z-index:10000;display:block;font-family:Arial;font-size:13px;text-align:left;pointer-events:none;white-space:nowrap;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.nvtooltip{background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.5);border-radius:4px}.nvtooltip.with-transitions,.with-transitions .nvtooltip{transition:opacity 50ms linear;-moz-transition:opacity 50ms linear;-webkit-transition:opacity 50ms linear;transition-delay:200ms;-moz-transition-delay:200ms;-webkit-transition-delay:200ms}.nvtooltip.x-nvtooltip,.nvtooltip.y-nvtooltip{padding:8px}.nvtooltip h3{margin:0;padding:4px 14px;line-height:18px;font-weight:400;background-color:rgba(247,247,247,.75);color:rgba(0,0,0,1);text-align:center;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.nvtooltip p{margin:0;padding:5px 14px;text-align:center}.nvtooltip span{display:inline-block;margin:2px 0}.nvtooltip table{margin:6px;border-spacing:0}.nvtooltip table td{padding:2px 9px 2px 0;vertical-align:middle}.nvtooltip table td.key{font-weight:400}.nvtooltip table td.value{text-align:right;font-weight:700}.nvtooltip table tr.highlight td{padding:1px 9px 1px 0;border-bottom-style:solid;border-bottom-width:1px;border-top-style:solid;border-top-width:1px}.nvtooltip table td.legend-color-guide div{width:8px;height:8px;vertical-align:middle}.nvtooltip table td.legend-color-guide div{width:12px;height:12px;border:1px solid #999}.nvtooltip .footer{padding:3px;text-align:center}.nvtooltip-pending-removal{pointer-events:none;display:none}.nvd3 .nv-interactiveGuideLine{pointer-events:none}.nvd3 line.nv-guideline{stroke:#ccc} \ No newline at end of file diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/style.css b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/style.css index 824fb317..ff146a58 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/style.css +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/style.css @@ -32,18 +32,10 @@ body { border: 0 !important; } -.table tbody tr.covered-by-large-tests, li.covered-by-large-tests, tr.success, td.success, li.success, span.success { +.table tbody td.success, li.success, span.success { background-color: #dff0d8; } -.table tbody tr.covered-by-medium-tests, li.covered-by-medium-tests { - background-color: #c3e3b5; -} - -.table tbody tr.covered-by-small-tests, li.covered-by-small-tests { - background-color: #99cb84; -} - .table tbody tr.danger, .table tbody td.danger, li.danger, span.danger { background-color: #f2dede; } @@ -119,4 +111,4 @@ svg text { height:245px; overflow-x:hidden; overflow-y:scroll; -} +} \ No newline at end of file diff --git a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist index ed189886..3ae8ba18 100644 --- a/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist +++ b/tests/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist @@ -5,7 +5,7 @@ Dashboard for {{full_path}} - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/vendor/phpunit/php-file-iterator/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php b/tests/vendor/phpunit/php-file-iterator/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php new file mode 100644 index 00000000..bf9d520d --- /dev/null +++ b/tests/vendor/phpunit/php-file-iterator/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php @@ -0,0 +1,22 @@ +getTokens(); + + if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE || + $tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) { + + $phpcsFile->addError( + 'Concatenation operator must be surrounded by whitespace', + $stackPtr + ); + } + } +} diff --git a/tests/vendor/phpunit/php-file-iterator/build/PHPCS/ruleset.xml b/tests/vendor/phpunit/php-file-iterator/build/PHPCS/ruleset.xml new file mode 100644 index 00000000..402f2140 --- /dev/null +++ b/tests/vendor/phpunit/php-file-iterator/build/PHPCS/ruleset.xml @@ -0,0 +1,35 @@ + + + Sebastian Bergmann's coding standard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/vendor/phpunit/php-file-iterator/build/phpmd.xml b/tests/vendor/phpunit/php-file-iterator/build/phpmd.xml new file mode 100644 index 00000000..23ecb8b0 --- /dev/null +++ b/tests/vendor/phpunit/php-file-iterator/build/phpmd.xml @@ -0,0 +1,27 @@ + + + + Sebastian Bergmann's ruleset + + + + + + + + + + + + + + + + + + + diff --git a/tests/vendor/phpunit/php-file-iterator/composer.json b/tests/vendor/phpunit/php-file-iterator/composer.json index c6527943..1ddd5b88 100644 --- a/tests/vendor/phpunit/php-file-iterator/composer.json +++ b/tests/vendor/phpunit/php-file-iterator/composer.json @@ -24,13 +24,10 @@ }, "autoload": { "classmap": [ - "src/" + "File/" ] }, - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - } + "include-path": [ + "" + ] } - diff --git a/tests/vendor/phpunit/php-file-iterator/package.xml b/tests/vendor/phpunit/php-file-iterator/package.xml new file mode 100644 index 00000000..f6ca981b --- /dev/null +++ b/tests/vendor/phpunit/php-file-iterator/package.xml @@ -0,0 +1,65 @@ + + + File_Iterator + pear.phpunit.de + FilterIterator implementation that filters files based on a list of suffixes. + FilterIterator implementation that filters files based on a list of suffixes. + + Sebastian Bergmann + sb + sb@sebastian-bergmann.de + yes + + 2013-10-10 + + 1.3.4 + 1.3.0 + + + stable + stable + + The BSD 3-Clause License + http://github.com/sebastianbergmann/php-file-iterator/tree + + + + + + + + + + + + + + + + + + + + + + + + + + + 5.3.3 + + + 1.9.4 + + + + + diff --git a/tests/vendor/phpunit/php-file-iterator/src/Factory.php b/tests/vendor/phpunit/php-file-iterator/src/Factory.php deleted file mode 100644 index 19c93ad4..00000000 --- a/tests/vendor/phpunit/php-file-iterator/src/Factory.php +++ /dev/null @@ -1,91 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Factory Method implementation that creates a File_Iterator that operates on - * an AppendIterator that contains an RecursiveDirectoryIterator for each given - * path. - * - * @since Class available since Release 1.1.0 - */ -class File_Iterator_Factory -{ - /** - * @param array|string $paths - * @param array|string $suffixes - * @param array|string $prefixes - * @param array $exclude - * @return AppendIterator - */ - public function getFileIterator($paths, $suffixes = '', $prefixes = '', array $exclude = array()) - { - if (is_string($paths)) { - $paths = array($paths); - } - - $paths = $this->getPathsAfterResolvingWildcards($paths); - $exclude = $this->getPathsAfterResolvingWildcards($exclude); - - if (is_string($prefixes)) { - if ($prefixes != '') { - $prefixes = array($prefixes); - } else { - $prefixes = array(); - } - } - - if (is_string($suffixes)) { - if ($suffixes != '') { - $suffixes = array($suffixes); - } else { - $suffixes = array(); - } - } - - $iterator = new AppendIterator; - - foreach ($paths as $path) { - if (is_dir($path)) { - $iterator->append( - new File_Iterator( - new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::FOLLOW_SYMLINKS) - ), - $suffixes, - $prefixes, - $exclude, - $path - ) - ); - } - } - - return $iterator; - } - - /** - * @param array $paths - * @return array - */ - protected function getPathsAfterResolvingWildcards(array $paths) - { - $_paths = array(); - - foreach ($paths as $path) { - if ($locals = glob($path, GLOB_ONLYDIR)) { - $_paths = array_merge($_paths, $locals); - } else { - $_paths[] = $path; - } - } - - return $_paths; - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/.php_cs b/tests/vendor/phpunit/phpunit-mock-objects/.php_cs deleted file mode 100644 index 44bebf6a..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/.php_cs +++ /dev/null @@ -1,43 +0,0 @@ -files() - ->in('src') - ->in('tests') - ->name('*.php'); - -return Symfony\CS\Config\Config::create() - ->level(\Symfony\CS\FixerInterface::NONE_LEVEL) - ->fixers( - array( - 'duplicate_semicolon', - 'empty_return', - 'extra_empty_lines', - 'join_function', - 'list_commas', - 'no_blank_lines_after_class_opening', - 'no_empty_lines_after_phpdocs', - 'phpdoc_indent', - 'phpdoc_no_access', - 'phpdoc_no_empty_return', - 'phpdoc_no_package', - 'phpdoc_params', - 'phpdoc_scalar', - 'phpdoc_to_comment', - 'phpdoc_trim', - 'return', - 'self_accessor', - 'single_quote', - 'spaces_before_semicolon', - 'spaces_cast', - 'ternary_spaces', - 'trim_array_spaces', - 'unused_use', - 'whitespacy_lines', - 'align_double_arrow', - 'align_equals', - 'concat_with_spaces', - 'short_array_syntax' - ) - ) - ->finder($finder); - diff --git a/tests/vendor/phpunit/phpunit-mock-objects/.travis.yml b/tests/vendor/phpunit/phpunit-mock-objects/.travis.yml index 95ffa231..b6a76ecd 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/.travis.yml +++ b/tests/vendor/phpunit/phpunit-mock-objects/.travis.yml @@ -7,10 +7,17 @@ before_script: script: ./vendor/bin/phpunit --configuration ./build/travis-ci.xml php: + - 5.3.3 + - 5.3 + - 5.4 + - 5.5 - 5.6 - - 7.0 - hhvm +matrix: + allow_failures: + - php: hhvm + notifications: email: false webhooks: diff --git a/tests/vendor/phpunit/phpunit-mock-objects/CONTRIBUTING.md b/tests/vendor/phpunit/phpunit-mock-objects/CONTRIBUTING.md index 76a43458..b2905398 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/CONTRIBUTING.md +++ b/tests/vendor/phpunit/phpunit-mock-objects/CONTRIBUTING.md @@ -1 +1,5 @@ -Please refer to [https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md) for details on how to contribute to this project. +Pull Requests for bug fixes should be made against the current release branch (1.2). + +Pull Requests for new features should be made against master. + +For further notes please refer to [https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md) diff --git a/tests/vendor/phpunit/phpunit-mock-objects/LICENSE b/tests/vendor/phpunit/phpunit-mock-objects/LICENSE index 3705d2be..6c7e93b1 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/LICENSE +++ b/tests/vendor/phpunit/phpunit-mock-objects/LICENSE @@ -1,6 +1,6 @@ PHPUnit_MockObject -Copyright (c) 2002-2015, Sebastian Bergmann . +Copyright (c) 2002-2014, Sebastian Bergmann . All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/tests/vendor/phpunit/phpunit-mock-objects/README.md b/tests/vendor/phpunit/phpunit-mock-objects/README.md index 5dea6b1f..60dd0f72 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/README.md +++ b/tests/vendor/phpunit/phpunit-mock-objects/README.md @@ -1,5 +1,5 @@ -[![Build Status](https://img.shields.io/travis/sebastianbergmann/phpunit-mock-objects/master.svg?style=flat-square)](https://travis-ci.org/sebastianbergmann/phpunit-mock-objects) -[![Latest Stable Version](https://img.shields.io/packagist/v/phpunit/phpunit-mock-objects.svg?style=flat-square)](https://packagist.org/packages/phpunit/phpunit-mock-objects) +[![Latest Stable Version](https://poser.pugx.org/phpunit/phpunit-mock-objects/v/stable.png)](https://packagist.org/packages/phpunit/phpunit-mock-objects) +[![Build Status](https://travis-ci.org/sebastianbergmann/phpunit-mock-objects.png?branch=2.0)](https://travis-ci.org/sebastianbergmann/phpunit-mock-objects) # PHPUnit_MockObject @@ -11,11 +11,11 @@ ## Installation -To add PHPUnit_MockObject as a local, per-project dependency to your project, simply add a dependency on `phpunit/phpunit-mock-objects` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on PHPUnit_MockObject 2.3: +To add PHPUnit_MockObject as a local, per-project dependency to your project, simply add a dependency on `phpunit/phpunit-mock-objects` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on PHPUnit_MockObject 2.0: { "require": { - "phpunit/phpunit-mock-objects": "2.3.*" + "phpunit/phpunit-mock-objects": "2.0.*" } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/build.xml b/tests/vendor/phpunit/phpunit-mock-objects/build.xml index c93503eb..aa44cbec 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/build.xml +++ b/tests/vendor/phpunit/phpunit-mock-objects/build.xml @@ -30,6 +30,14 @@ + + + + + + + + diff --git a/tests/vendor/phpunit/phpunit-mock-objects/build/travis-ci.xml b/tests/vendor/phpunit/phpunit-mock-objects/build/travis-ci.xml index b8498fbe..92b0c168 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/build/travis-ci.xml +++ b/tests/vendor/phpunit/phpunit-mock-objects/build/travis-ci.xml @@ -1,6 +1,6 @@ diff --git a/tests/vendor/phpunit/phpunit-mock-objects/composer.json b/tests/vendor/phpunit/phpunit-mock-objects/composer.json index 0f9d445b..2dd28d65 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/composer.json +++ b/tests/vendor/phpunit/phpunit-mock-objects/composer.json @@ -20,13 +20,11 @@ "irc": "irc://irc.freenode.net/phpunit" }, "require": { - "php": ">=5.6", - "phpunit/php-text-template": "~1.2", - "doctrine/instantiator": "^1.0.2", - "sebastian/exporter": "~1.2" + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": ">=4.0.0,<4.1.0" }, "suggest": { "ext-soap": "*" @@ -36,15 +34,13 @@ "src/" ] }, - "autoload-dev": { - "classmap": [ - "tests/_fixture/" - ] - }, "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "2.0.x-dev" } - } + }, + "include-path": [ + "" + ] } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/phpunit.xml.dist b/tests/vendor/phpunit/phpunit-mock-objects/phpunit.xml.dist index e2186ea2..170ba327 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/phpunit.xml.dist +++ b/tests/vendor/phpunit/phpunit-mock-objects/phpunit.xml.dist @@ -1,6 +1,6 @@ diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php index 6f369a11..67c2b6c0 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -16,7 +50,13 @@ * is recorded using id() and then defined in order using * PHPUnit_Framework_MockObject_Builder_Match::after(). * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Builder_Identity { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php index c20347ba..3bab645e 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -16,7 +50,13 @@ * more natural way of reading the expectation. This class should be together * with the test case PHPUnit_Framework_MockObject_TestCase. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Builder_InvocationMocker implements PHPUnit_Framework_MockObject_Builder_MethodNameMatch { @@ -38,7 +78,7 @@ public function __construct(PHPUnit_Framework_MockObject_Stub_MatcherCollection { $this->collection = $collection; $this->matcher = new PHPUnit_Framework_MockObject_Matcher( - $invocationMatcher + $invocationMatcher ); $this->collection->addMatcher($this->matcher); @@ -76,16 +116,13 @@ public function will(PHPUnit_Framework_MockObject_Stub $stub) /** * @param mixed $value - * @param mixed $nextValues, ... * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker */ - public function willReturn($value, ...$nextValues) + public function willReturn($value) { - $stub = count($nextValues) === 0 ? - new PHPUnit_Framework_MockObject_Stub_Return($value) : - new PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls( - array_merge([$value], $nextValues) - ); + $stub = new PHPUnit_Framework_MockObject_Stub_Return( + $value + ); return $this->will($stub); } @@ -97,7 +134,7 @@ public function willReturn($value, ...$nextValues) public function willReturnMap(array $valueMap) { $stub = new PHPUnit_Framework_MockObject_Stub_ReturnValueMap( - $valueMap + $valueMap ); return $this->will($stub); @@ -110,7 +147,7 @@ public function willReturnMap(array $valueMap) public function willReturnArgument($argumentIndex) { $stub = new PHPUnit_Framework_MockObject_Stub_ReturnArgument( - $argumentIndex + $argumentIndex ); return $this->will($stub); @@ -123,7 +160,7 @@ public function willReturnArgument($argumentIndex) public function willReturnCallback($callback) { $stub = new PHPUnit_Framework_MockObject_Stub_ReturnCallback( - $callback + $callback ); return $this->will($stub); @@ -134,18 +171,20 @@ public function willReturnCallback($callback) */ public function willReturnSelf() { - $stub = new PHPUnit_Framework_MockObject_Stub_ReturnSelf; + $stub = new PHPUnit_Framework_MockObject_Stub_ReturnSelf(); return $this->will($stub); } /** - * @param mixed $values, ... + * @param mixed $value, ... * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker */ - public function willReturnOnConsecutiveCalls(...$values) + public function willReturnOnConsecutiveCalls() { - $stub = new PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls($values); + $args = func_get_args(); + + $stub = new PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls($args); return $this->will($stub); } @@ -173,64 +212,48 @@ public function after($id) } /** - * Validate that a parameters matcher can be defined, throw exceptions otherwise. - * - * @throws PHPUnit_Framework_Exception + * @param mixed $argument, ... + * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker */ - private function canDefineParameters() + public function with() { - if ($this->matcher->methodNameMatcher === null) { + $args = func_get_args(); + + if ($this->matcher->methodNameMatcher === NULL) { throw new PHPUnit_Framework_Exception( - 'Method name matcher is not defined, cannot define parameter ' . - ' matcher without one' + 'Method name matcher is not defined, cannot define parameter ' . + ' matcher without one' ); } - if ($this->matcher->parametersMatcher !== null) { + if ($this->matcher->parametersMatcher !== NULL) { throw new PHPUnit_Framework_Exception( - 'Parameter matcher is already defined, cannot redefine' + 'Parameter matcher is already defined, cannot redefine' ); } - } - - /** - * @param mixed $argument, ... - * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker - */ - public function with() - { - $args = func_get_args(); - - $this->canDefineParameters(); $this->matcher->parametersMatcher = new PHPUnit_Framework_MockObject_Matcher_Parameters($args); return $this; } - /** - * @param mixed ...$argument - * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker - */ - public function withConsecutive() - { - - $args = func_get_args(); - - $this->canDefineParameters(); - - $this->matcher->parametersMatcher = - new PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters($args); - - return $this; - } - /** * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker */ public function withAnyParameters() { - $this->canDefineParameters(); + if ($this->matcher->methodNameMatcher === NULL) { + throw new PHPUnit_Framework_Exception( + 'Method name matcher is not defined, cannot define parameter ' . + 'matcher without one' + ); + } + + if ($this->matcher->parametersMatcher !== NULL) { + throw new PHPUnit_Framework_Exception( + 'Parameter matcher is already defined, cannot redefine' + ); + } $this->matcher->parametersMatcher = new PHPUnit_Framework_MockObject_Matcher_AnyParameters; @@ -243,9 +266,9 @@ public function withAnyParameters() */ public function method($constraint) { - if ($this->matcher->methodNameMatcher !== null) { + if ($this->matcher->methodNameMatcher !== NULL) { throw new PHPUnit_Framework_Exception( - 'Method name matcher is already defined, cannot redefine' + 'Method name matcher is already defined, cannot redefine' ); } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php index 1cbd040f..4acedd30 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php @@ -1,17 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Builder interface for invocation order matches. * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Builder_Match extends PHPUnit_Framework_MockObject_Builder_Stub { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php index 96bfb1e2..3576a56f 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php @@ -1,17 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Builder interface for matcher of method names. * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Builder_MethodNameMatch extends PHPUnit_Framework_MockObject_Builder_ParametersMatch { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php index 831156b1..7b5c7027 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -13,7 +47,13 @@ * * This interface relates to PHPUnit_Framework_MockObject_Builder_Identity. * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Builder_Namespace { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php index 79d96f2d..2bd8849c 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php @@ -1,17 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Builder interface for parameter matchers. * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Builder_ParametersMatch extends PHPUnit_Framework_MockObject_Builder_Match { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php index cc96bacb..156e0f80 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php @@ -1,17 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Builder interface for stubs which are actions replacing an invocation. * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Builder_Stub extends PHPUnit_Framework_MockObject_Builder_Identity { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php index 736784bd..a0cd1f30 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php @@ -1,15 +1,54 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 2.0.6 */ /** - * @since Class available since Release 2.0.6 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 2.0.6 */ class PHPUnit_Framework_MockObject_BadMethodCallException extends BadMethodCallException implements PHPUnit_Framework_MockObject_Exception { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php index bc8c81de..8ce99ff2 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php @@ -1,17 +1,56 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 2.0.0 */ /** * Interface for exceptions used by PHPUnit_MockObject. * - * @since Interface available since Release 2.0.6 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 2.0.6 */ interface PHPUnit_Framework_MockObject_Exception { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php index 1e9b6f17..b13ab685 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php @@ -1,15 +1,54 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 2.0.6 */ /** - * @since Class available since Release 2.0.6 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 2.0.6 */ class PHPUnit_Framework_MockObject_RuntimeException extends RuntimeException implements PHPUnit_Framework_MockObject_Exception { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php index 4f700039..7e2983ca 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php @@ -1,146 +1,178 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ -use Doctrine\Instantiator\Instantiator; -use Doctrine\Instantiator\Exception\InvalidArgumentException as InstantiatorInvalidArgumentException; -use Doctrine\Instantiator\Exception\UnexpectedValueException as InstantiatorUnexpectedValueException; +if (!function_exists('trait_exists')) { + function trait_exists($traitname, $autoload = true) + { + return false; + } +} /** * Mock Object Code Generator * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Generator { /** * @var array */ - private static $cache = []; + private static $cache = array(); /** * @var array */ - private $legacyBlacklistedMethodNames = [ - '__CLASS__' => true, - '__DIR__' => true, - '__FILE__' => true, - '__FUNCTION__' => true, - '__LINE__' => true, - '__METHOD__' => true, - '__NAMESPACE__' => true, - '__TRAIT__' => true, - '__clone' => true, - '__halt_compiler' => true, - 'abstract' => true, - 'and' => true, - 'array' => true, - 'as' => true, - 'break' => true, - 'callable' => true, - 'case' => true, - 'catch' => true, - 'class' => true, - 'clone' => true, - 'const' => true, - 'continue' => true, - 'declare' => true, - 'default' => true, - 'die' => true, - 'do' => true, - 'echo' => true, - 'else' => true, - 'elseif' => true, - 'empty' => true, - 'enddeclare' => true, - 'endfor' => true, - 'endforeach' => true, - 'endif' => true, - 'endswitch' => true, - 'endwhile' => true, - 'eval' => true, - 'exit' => true, - 'expects' => true, - 'extends' => true, - 'final' => true, - 'for' => true, - 'foreach' => true, - 'function' => true, - 'global' => true, - 'goto' => true, - 'if' => true, - 'implements' => true, - 'include' => true, - 'include_once' => true, - 'instanceof' => true, - 'insteadof' => true, - 'interface' => true, - 'isset' => true, - 'list' => true, - 'namespace' => true, - 'new' => true, - 'or' => true, - 'print' => true, - 'private' => true, - 'protected' => true, - 'public' => true, - 'require' => true, - 'require_once' => true, - 'return' => true, - 'static' => true, - 'switch' => true, - 'throw' => true, - 'trait' => true, - 'try' => true, - 'unset' => true, - 'use' => true, - 'var' => true, - 'while' => true, - 'xor' => true - ]; + protected $blacklistedMethodNames = array( + '__CLASS__' => TRUE, + '__DIR__' => TRUE, + '__FILE__' => TRUE, + '__FUNCTION__' => TRUE, + '__LINE__' => TRUE, + '__METHOD__' => TRUE, + '__NAMESPACE__' => TRUE, + '__TRAIT__' => TRUE, + '__clone' => TRUE, + '__halt_compiler' => TRUE, + 'abstract' => TRUE, + 'and' => TRUE, + 'array' => TRUE, + 'as' => TRUE, + 'break' => TRUE, + 'callable' => TRUE, + 'case' => TRUE, + 'catch' => TRUE, + 'class' => TRUE, + 'clone' => TRUE, + 'const' => TRUE, + 'continue' => TRUE, + 'declare' => TRUE, + 'default' => TRUE, + 'die' => TRUE, + 'do' => TRUE, + 'echo' => TRUE, + 'else' => TRUE, + 'elseif' => TRUE, + 'empty' => TRUE, + 'enddeclare' => TRUE, + 'endfor' => TRUE, + 'endforeach' => TRUE, + 'endif' => TRUE, + 'endswitch' => TRUE, + 'endwhile' => TRUE, + 'eval' => TRUE, + 'exit' => TRUE, + 'expects' => TRUE, + 'extends' => TRUE, + 'final' => TRUE, + 'for' => TRUE, + 'foreach' => TRUE, + 'function' => TRUE, + 'global' => TRUE, + 'goto' => TRUE, + 'if' => TRUE, + 'implements' => TRUE, + 'include' => TRUE, + 'include_once' => TRUE, + 'instanceof' => TRUE, + 'insteadof' => TRUE, + 'interface' => TRUE, + 'isset' => TRUE, + 'list' => TRUE, + 'namespace' => TRUE, + 'new' => TRUE, + 'or' => TRUE, + 'print' => TRUE, + 'private' => TRUE, + 'protected' => TRUE, + 'public' => TRUE, + 'require' => TRUE, + 'require_once' => TRUE, + 'return' => TRUE, + 'static' => TRUE, + 'switch' => TRUE, + 'throw' => TRUE, + 'trait' => TRUE, + 'try' => TRUE, + 'unset' => TRUE, + 'use' => TRUE, + 'var' => TRUE, + 'while' => TRUE, + 'xor' => TRUE + ); /** - * @var array + * @var boolean */ - private $blacklistedMethodNames = [ - '__CLASS__' => true, - '__DIR__' => true, - '__FILE__' => true, - '__FUNCTION__' => true, - '__LINE__' => true, - '__METHOD__' => true, - '__NAMESPACE__' => true, - '__TRAIT__' => true, - '__clone' => true, - '__halt_compiler' => true, - ]; + protected $soapLoaded = NULL; /** * Returns a mock object for the specified class. * - * @param array|string $type - * @param array $methods - * @param array $arguments - * @param string $mockClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param bool $cloneArguments - * @param bool $callOriginalMethods - * @param object $proxyTarget + * @param array|string $type + * @param array $methods + * @param array $arguments + * @param string $mockClassName + * @param boolean $callOriginalConstructor + * @param boolean $callOriginalClone + * @param boolean $callAutoload + * @param boolean $cloneArguments + * @param boolean $callOriginalMethods + * @param object $proxyTarget * @return object * @throws InvalidArgumentException * @throws PHPUnit_Framework_Exception * @throws PHPUnit_Framework_MockObject_RuntimeException * @since Method available since Release 1.0.0 */ - public function getMock($type, $methods = [], array $arguments = [], $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = true, $callOriginalMethods = false, $proxyTarget = null) + public function getMock($type, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE, $cloneArguments = TRUE, $callOriginalMethods = FALSE, $proxyTarget = NULL) { if (!is_array($type) && !is_string($type)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'array or string'); @@ -151,88 +183,63 @@ public function getMock($type, $methods = [], array $arguments = [], $mockClassN } if (!is_array($methods) && !is_null($methods)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'array', $methods); - } - - if ($type === 'Traversable' || $type === '\\Traversable') { - $type = 'Iterator'; + throw new InvalidArgumentException; } - if (is_array($type)) { - $type = array_unique(array_map( - function ($type) { - if ($type === 'Traversable' || - $type === '\\Traversable' || - $type === '\\Iterator') { - return 'Iterator'; - } - - return $type; - }, - $type - )); - } - - if (null !== $methods) { + if (NULL !== $methods) { foreach ($methods as $method) { if (!preg_match('~[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*~', $method)) { throw new PHPUnit_Framework_Exception( - sprintf( - 'Cannot stub or mock method with invalid name "%s"', - $method - ) + sprintf( + 'Cannot stub or mock method with invalid name "%s"', + $method + ) ); } } if ($methods != array_unique($methods)) { throw new PHPUnit_Framework_MockObject_RuntimeException( - sprintf( - 'Cannot stub or mock using a method list that contains duplicates: "%s"', - implode(', ', $methods) - ) + sprintf( + 'Cannot stub or mock using a method list that contains duplicates: "%s"', + implode(', ', $methods) + ) ); } } - if ($mockClassName != '' && class_exists($mockClassName, false)) { + if ($mockClassName != '' && class_exists($mockClassName, FALSE)) { $reflect = new ReflectionClass($mockClassName); - if (!$reflect->implementsInterface('PHPUnit_Framework_MockObject_MockObject')) { + if (!$reflect->implementsInterface("PHPUnit_Framework_MockObject_MockObject")) { throw new PHPUnit_Framework_MockObject_RuntimeException( - sprintf( - 'Class "%s" already exists.', - $mockClassName - ) + sprintf( + 'Class "%s" already exists.', + $mockClassName + ) ); } } - if ($callOriginalConstructor === false && $callOriginalMethods === true) { - throw new PHPUnit_Framework_MockObject_RuntimeException( - 'Proxying to original methods requires invoking the original constructor' - ); - } - $mock = $this->generate( - $type, - $methods, - $mockClassName, - $callOriginalClone, - $callAutoload, - $cloneArguments, - $callOriginalMethods + $type, + $methods, + $mockClassName, + $callOriginalClone, + $callAutoload, + $cloneArguments, + $callOriginalMethods ); return $this->getObject( - $mock['code'], - $mock['mockClassName'], - $type, - $callOriginalConstructor, - $callAutoload, - $arguments, - $callOriginalMethods, - $proxyTarget + $mock['code'], + $mock['mockClassName'], + $type, + $callOriginalConstructor, + $callAutoload, + $arguments, + $callOriginalMethods, + $proxyTarget ); } @@ -240,14 +247,14 @@ function ($type) { * @param string $code * @param string $className * @param array|string $type - * @param bool $callOriginalConstructor - * @param bool $callAutoload + * @param boolean $callOriginalConstructor + * @param boolean $callAutoload * @param array $arguments - * @param bool $callOriginalMethods + * @param boolean $callOriginalMethods * @param object $proxyTarget * @return object */ - private function getObject($code, $className, $type = '', $callOriginalConstructor = false, $callAutoload = false, array $arguments = [], $callOriginalMethods = false, $proxyTarget = null) + protected function getObject($code, $className, $type = '', $callOriginalConstructor = FALSE, $callAutoload = FALSE, array $arguments = array(), $callOriginalMethods = FALSE, $proxyTarget = NULL) { $this->evalClass($code, $className); @@ -261,21 +268,22 @@ private function getObject($code, $className, $type = '', $callOriginalConstruct $object = $class->newInstanceArgs($arguments); } } else { - try { - $instantiator = new Instantiator; - $object = $instantiator->instantiate($className); - } catch (InstantiatorUnexpectedValueException $exception) { - if ($exception->getPrevious()) { - $exception = $exception->getPrevious(); - } - - throw new PHPUnit_Framework_MockObject_RuntimeException( - $exception->getMessage() - ); - } catch (InstantiatorInvalidArgumentException $exception) { - throw new PHPUnit_Framework_MockObject_RuntimeException( - $exception->getMessage() + $class = new ReflectionClass('ReflectionClass'); + $hasNewInstanceWithoutConstructor = $class->hasMethod('newInstanceWithoutConstructor');; + + $class = new ReflectionClass($className); + $isInternal = $this->isInternalClass($class); + + if ($isInternal || !$hasNewInstanceWithoutConstructor) { + $object = unserialize( + sprintf('%s:%d:"%s":0:{}', + (version_compare(PHP_VERSION, '5.4', '>') && $class->implementsInterface("Serializable") ? "C" : "O"), + strlen($className), + $className + ) ); + } else { + $object = $class->newInstanceWithoutConstructor(); } } @@ -299,9 +307,9 @@ private function getObject($code, $className, $type = '', $callOriginalConstruct * @param string $code * @param string $className */ - private function evalClass($code, $className) + protected function evalClass($code, $className) { - if (!class_exists($className, false)) { + if (!class_exists($className, FALSE)) { eval($code); } } @@ -311,20 +319,20 @@ private function evalClass($code, $className) * methods of the class mocked. Concrete methods to mock can be specified with * the last parameter * - * @param string $originalClassName - * @param array $arguments - * @param string $mockClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param array $mockedMethods - * @param bool $cloneArguments + * @param string $originalClassName + * @param array $arguments + * @param string $mockClassName + * @param boolean $callOriginalConstructor + * @param boolean $callOriginalClone + * @param boolean $callAutoload + * @param array $mockedMethods + * @param boolean $cloneArguments * @return object * @since Method available since Release 1.0.0 * @throws PHPUnit_Framework_MockObject_RuntimeException * @throws PHPUnit_Framework_Exception */ - public function getMockForAbstractClass($originalClassName, array $arguments = [], $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = [], $cloneArguments = true) + public function getMockForAbstractClass($originalClassName, array $arguments = array(), $mockClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE, $mockedMethods = array(), $cloneArguments = TRUE) { if (!is_string($originalClassName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); @@ -346,22 +354,22 @@ interface_exists($originalClassName, $callAutoload)) { } if (empty($methods)) { - $methods = null; + $methods = NULL; } return $this->getMock( - $originalClassName, - $methods, - $arguments, - $mockClassName, - $callOriginalConstructor, - $callOriginalClone, - $callAutoload, - $cloneArguments + $originalClassName, + $methods, + $arguments, + $mockClassName, + $callOriginalConstructor, + $callOriginalClone, + $callAutoload, + $cloneArguments ); } else { throw new PHPUnit_Framework_MockObject_RuntimeException( - sprintf('Class "%s" does not exist.', $originalClassName) + sprintf('Class "%s" does not exist.', $originalClassName) ); } } @@ -371,20 +379,20 @@ interface_exists($originalClassName, $callAutoload)) { * of the trait mocked. Concrete methods to mock can be specified with the * `$mockedMethods` parameter. * - * @param string $traitName - * @param array $arguments - * @param string $mockClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param array $mockedMethods - * @param bool $cloneArguments + * @param string $traitName + * @param array $arguments + * @param string $mockClassName + * @param boolean $callOriginalConstructor + * @param boolean $callOriginalClone + * @param boolean $callAutoload + * @param array $mockedMethods + * @param boolean $cloneArguments * @return object * @since Method available since Release 1.2.3 * @throws PHPUnit_Framework_MockObject_RuntimeException * @throws PHPUnit_Framework_Exception */ - public function getMockForTrait($traitName, array $arguments = [], $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = [], $cloneArguments = true) + public function getMockForTrait($traitName, array $arguments = array(), $mockClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE, $mockedMethods = array(), $cloneArguments = TRUE) { if (!is_string($traitName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); @@ -396,36 +404,34 @@ public function getMockForTrait($traitName, array $arguments = [], $mockClassNam if (!trait_exists($traitName, $callAutoload)) { throw new PHPUnit_Framework_MockObject_RuntimeException( - sprintf( - 'Trait "%s" does not exist.', - $traitName - ) + sprintf( + 'Trait "%s" does not exist.', + $traitName + ) ); } $className = $this->generateClassName( - $traitName, - '', - 'Trait_' + $traitName, '', 'Trait_' ); $templateDir = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Generator' . DIRECTORY_SEPARATOR; $classTemplate = new Text_Template( - $templateDir . 'trait_class.tpl' - ); + $templateDir . 'trait_class.tpl' + ); $classTemplate->setVar( - [ + array( 'prologue' => 'abstract ', 'class_name' => $className['className'], 'trait_name' => $traitName - ] + ) ); $this->evalClass( - $classTemplate->render(), - $className['className'] + $classTemplate->render(), + $className['className'] ); return $this->getMockForAbstractClass($className['className'], $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $mockedMethods, $cloneArguments); @@ -434,18 +440,18 @@ public function getMockForTrait($traitName, array $arguments = [], $mockClassNam /** * Returns an object for the specified trait. * - * @param string $traitName - * @param array $arguments - * @param string $traitClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload + * @param string $traitName + * @param array $arguments + * @param string $traitClassName + * @param boolean $callOriginalConstructor + * @param boolean $callOriginalClone + * @param boolean $callAutoload * @return object * @since Method available since Release 1.1.0 * @throws PHPUnit_Framework_MockObject_RuntimeException * @throws PHPUnit_Framework_Exception */ - public function getObjectForTrait($traitName, array $arguments = [], $traitClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true) + public function getObjectForTrait($traitName, array $arguments = array(), $traitClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE) { if (!is_string($traitName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); @@ -457,36 +463,34 @@ public function getObjectForTrait($traitName, array $arguments = [], $traitClass if (!trait_exists($traitName, $callAutoload)) { throw new PHPUnit_Framework_MockObject_RuntimeException( - sprintf( - 'Trait "%s" does not exist.', - $traitName - ) + sprintf( + 'Trait "%s" does not exist.', + $traitName + ) ); } $className = $this->generateClassName( - $traitName, - $traitClassName, - 'Trait_' + $traitName, $traitClassName, 'Trait_' ); $templateDir = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Generator' . DIRECTORY_SEPARATOR; $classTemplate = new Text_Template( - $templateDir . 'trait_class.tpl' - ); + $templateDir . 'trait_class.tpl' + ); $classTemplate->setVar( - [ + array( 'prologue' => '', 'class_name' => $className['className'], 'trait_name' => $traitName - ] + ) ); return $this->getObject( - $classTemplate->render(), - $className['className'] + $classTemplate->render(), + $className['className'] ); } @@ -494,13 +498,13 @@ public function getObjectForTrait($traitName, array $arguments = [], $traitClass * @param array|string $type * @param array $methods * @param string $mockClassName - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param bool $cloneArguments - * @param bool $callOriginalMethods + * @param boolean $callOriginalClone + * @param boolean $callAutoload + * @param boolean $cloneArguments + * @param boolean $callOriginalMethods * @return array */ - public function generate($type, array $methods = null, $mockClassName = '', $callOriginalClone = true, $callAutoload = true, $cloneArguments = true, $callOriginalMethods = false) + public function generate($type, array $methods = NULL, $mockClassName = '', $callOriginalClone = TRUE, $callAutoload = TRUE, $cloneArguments = TRUE, $callOriginalMethods = FALSE) { if (is_array($type)) { sort($type); @@ -508,11 +512,11 @@ public function generate($type, array $methods = null, $mockClassName = '', $cal if ($mockClassName == '') { $key = md5( - is_array($type) ? implode('_', $type) : $type . - serialize($methods) . - serialize($callOriginalClone) . - serialize($cloneArguments) . - serialize($callOriginalMethods) + is_array($type) ? join('_', $type) : $type . + serialize($methods) . + serialize($callOriginalClone) . + serialize($cloneArguments) . + serialize($callOriginalMethods) ); if (isset(self::$cache[$key])) { @@ -521,13 +525,13 @@ public function generate($type, array $methods = null, $mockClassName = '', $cal } $mock = $this->generateMock( - $type, - $methods, - $mockClassName, - $callOriginalClone, - $callAutoload, - $cloneArguments, - $callOriginalMethods + $type, + $methods, + $mockClassName, + $callOriginalClone, + $callAutoload, + $cloneArguments, + $callOriginalMethods ); if (isset($key)) { @@ -538,143 +542,150 @@ public function generate($type, array $methods = null, $mockClassName = '', $cal } /** - * @param string $wsdlFile - * @param string $className - * @param array $methods - * @param array $options + * @param string $wsdlFile + * @param string $className + * @param array $methods + * @param array $options * @return string * @throws PHPUnit_Framework_MockObject_RuntimeException */ - public function generateClassFromWsdl($wsdlFile, $className, array $methods = [], array $options = []) + public function generateClassFromWsdl($wsdlFile, $className, array $methods = array(), array $options = array()) { - if (!extension_loaded('soap')) { - throw new PHPUnit_Framework_MockObject_RuntimeException( - 'The SOAP extension is required to generate a mock object from WSDL.' - ); + if ($this->soapLoaded === NULL) { + $this->soapLoaded = extension_loaded('soap'); } - $options = array_merge($options, ['cache_wsdl' => WSDL_CACHE_NONE]); - $client = new SoapClient($wsdlFile, $options); - $_methods = array_unique($client->__getFunctions()); - unset($client); - - sort($_methods); - - $templateDir = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Generator' . DIRECTORY_SEPARATOR; - $methodTemplate = new Text_Template($templateDir . 'wsdl_method.tpl'); - $methodsBuffer = ''; - - foreach ($_methods as $method) { - $nameStart = strpos($method, ' ') + 1; - $nameEnd = strpos($method, '('); - $name = substr($method, $nameStart, $nameEnd - $nameStart); - - if (empty($methods) || in_array($name, $methods)) { - $args = explode( - ',', - substr( - $method, - $nameEnd + 1, - strpos($method, ')') - $nameEnd - 1 - ) - ); - $numArgs = count($args); + if ($this->soapLoaded) { + $options = array_merge($options, array('cache_wsdl'=>FALSE)); + $client = new SoapClient($wsdlFile, $options); + $_methods = array_unique($client->__getFunctions()); + unset($client); - for ($i = 0; $i < $numArgs; $i++) { - $args[$i] = substr($args[$i], strpos($args[$i], '$')); - } + sort($_methods); + + $templateDir = dirname(__FILE__) . DIRECTORY_SEPARATOR . + 'Generator' . DIRECTORY_SEPARATOR; + $methodTemplate = new Text_Template( + $templateDir . 'wsdl_method.tpl' + ); + $methodsBuffer = ''; + + foreach ($_methods as $method) { + $nameStart = strpos($method, ' ') + 1; + $nameEnd = strpos($method, '('); + $name = substr($method, $nameStart, $nameEnd - $nameStart); + + if (empty($methods) || in_array($name, $methods)) { + $args = explode( + ',', + substr( + $method, + $nameEnd + 1, + strpos($method, ')') - $nameEnd - 1 + ) + ); + $numArgs = count($args); + + for ($i = 0; $i < $numArgs; $i++) { + $args[$i] = substr($args[$i], strpos($args[$i], '$')); + } - $methodTemplate->setVar( - [ + $methodTemplate->setVar( + array( 'method_name' => $name, - 'arguments' => implode(', ', $args) - ] - ); + 'arguments' => join(', ', $args) + ) + ); - $methodsBuffer .= $methodTemplate->render(); + $methodsBuffer .= $methodTemplate->render(); + } } - } - $optionsBuffer = 'array('; + $optionsBuffer = 'array('; - foreach ($options as $key => $value) { - $optionsBuffer .= $key . ' => ' . $value; - } + foreach ($options as $key => $value) { + $optionsBuffer .= $key . ' => ' . $value; + } - $optionsBuffer .= ')'; + $optionsBuffer .= ')'; - $classTemplate = new Text_Template($templateDir . 'wsdl_class.tpl'); - $namespace = ''; + $classTemplate = new Text_Template( + $templateDir . 'wsdl_class.tpl' + ); - if (strpos($className, '\\') !== false) { - $parts = explode('\\', $className); - $className = array_pop($parts); - $namespace = 'namespace ' . implode('\\', $parts) . ';' . "\n\n"; - } + $namespace = ''; - $classTemplate->setVar( - [ + if (strpos($className, '\\') !== FALSE) { + $parts = explode('\\', $className); + $className = array_pop($parts); + $namespace = 'namespace ' . join('\\', $parts) . ';' . "\n\n"; + } + + $classTemplate->setVar( + array( 'namespace' => $namespace, 'class_name' => $className, 'wsdl' => $wsdlFile, 'options' => $optionsBuffer, 'methods' => $methodsBuffer - ] - ); + ) + ); - return $classTemplate->render(); + return $classTemplate->render(); + } else { + throw new PHPUnit_Framework_MockObject_RuntimeException( + 'The SOAP extension is required to generate a mock object ' . + 'from WSDL.' + ); + } } /** * @param array|string $type * @param array|null $methods * @param string $mockClassName - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param bool $cloneArguments - * @param bool $callOriginalMethods + * @param boolean $callOriginalClone + * @param boolean $callAutoload + * @param boolean $cloneArguments + * @param boolean $callOriginalMethods * @return array * @throws PHPUnit_Framework_Exception */ - private function generateMock($type, $methods, $mockClassName, $callOriginalClone, $callAutoload, $cloneArguments, $callOriginalMethods) + protected function generateMock($type, $methods, $mockClassName, $callOriginalClone, $callAutoload, $cloneArguments, $callOriginalMethods) { $templateDir = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Generator' . DIRECTORY_SEPARATOR; $classTemplate = new Text_Template( - $templateDir . 'mocked_class.tpl' - ); + $templateDir . 'mocked_class.tpl' + ); - $additionalInterfaces = []; + $additionalInterfaces = array(); $cloneTemplate = ''; - $isClass = false; - $isInterface = false; + $isClass = FALSE; + $isInterface = FALSE; $mockClassName = $this->generateClassName( - $type, - $mockClassName, - 'Mock_' + $type, $mockClassName, 'Mock_' ); if (is_array($type)) { foreach ($type as $_type) { if (!interface_exists($_type, $callAutoload)) { throw new PHPUnit_Framework_Exception( - sprintf( - 'Interface "%s" does not exist.', - $_type - ) + sprintf( + 'Interface "%s" does not exist.', $_type + ) ); } $additionalInterfaces[] = $_type; - foreach ($this->getClassMethods($_type) as $method) { + foreach (get_class_methods($_type) as $method) { if (in_array($method, $methods)) { throw new PHPUnit_Framework_Exception( - sprintf( - 'Duplicate method "%s" not allowed.', - $method - ) + sprintf( + 'Duplicate method "%s" not allowed.', $method + ) ); } @@ -684,10 +695,10 @@ private function generateMock($type, $methods, $mockClassName, $callOriginalClon } if (class_exists($mockClassName['fullClassName'], $callAutoload)) { - $isClass = true; + $isClass = TRUE; } else { if (interface_exists($mockClassName['fullClassName'], $callAutoload)) { - $isInterface = true; + $isInterface = TRUE; } } @@ -704,17 +715,17 @@ private function generateMock($type, $methods, $mockClassName, $callOriginalClon } $cloneTemplate = new Text_Template( - $templateDir . 'mocked_clone.tpl' + $templateDir . 'mocked_clone.tpl' ); } else { $class = new ReflectionClass($mockClassName['fullClassName']); if ($class->isFinal()) { throw new PHPUnit_Framework_Exception( - sprintf( - 'Class "%s" is declared "final" and cannot be mocked.', - $mockClassName['fullClassName'] - ) + sprintf( + 'Class "%s" is declared "final" and cannot be mocked.', + $mockClassName['fullClassName'] + ) ); } @@ -724,17 +735,17 @@ private function generateMock($type, $methods, $mockClassName, $callOriginalClon if (!$cloneMethod->isFinal()) { if ($callOriginalClone && !$isInterface) { $cloneTemplate = new Text_Template( - $templateDir . 'unmocked_clone.tpl' + $templateDir . 'unmocked_clone.tpl' ); } else { $cloneTemplate = new Text_Template( - $templateDir . 'mocked_clone.tpl' + $templateDir . 'mocked_clone.tpl' ); } } } else { $cloneTemplate = new Text_Template( - $templateDir . 'mocked_clone.tpl' + $templateDir . 'mocked_clone.tpl' ); } } @@ -745,11 +756,11 @@ private function generateMock($type, $methods, $mockClassName, $callOriginalClon if (is_array($methods) && empty($methods) && ($isClass || $isInterface)) { - $methods = $this->getClassMethods($mockClassName['fullClassName']); + $methods = get_class_methods($mockClassName['fullClassName']); } if (!is_array($methods)) { - $methods = []; + $methods = array(); } $mockedMethods = ''; @@ -760,7 +771,7 @@ private function generateMock($type, $methods, $mockClassName, $callOriginalClon !$class->implementsInterface('Iterator') && !$class->implementsInterface('IteratorAggregate')) { $additionalInterfaces[] = 'Iterator'; - $methods = array_merge($methods, $this->getClassMethods('Iterator')); + $methods = array_merge($methods, get_class_methods('Iterator')); } foreach ($methods as $methodName) { @@ -769,28 +780,22 @@ private function generateMock($type, $methods, $mockClassName, $callOriginalClon if ($this->canMockMethod($method)) { $mockedMethods .= $this->generateMockedMethodDefinitionFromExisting( - $templateDir, - $method, - $cloneArguments, - $callOriginalMethods + $templateDir, + $method, + $cloneArguments, + $callOriginalMethods ); } } catch (ReflectionException $e) { $mockedMethods .= $this->generateMockedMethodDefinition( - $templateDir, - $mockClassName['fullClassName'], - $methodName, - $cloneArguments + $templateDir, $mockClassName['fullClassName'], $methodName, $cloneArguments ); } } } else { foreach ($methods as $methodName) { $mockedMethods .= $this->generateMockedMethodDefinition( - $templateDir, - $mockClassName['fullClassName'], - $methodName, - $cloneArguments + $templateDir, $mockClassName['fullClassName'], $methodName, $cloneArguments ); } } @@ -806,25 +811,25 @@ private function generateMock($type, $methods, $mockClassName, $callOriginalClon } $classTemplate->setVar( - [ + array( 'prologue' => isset($prologue) ? $prologue : '', 'epilogue' => isset($epilogue) ? $epilogue : '', 'class_declaration' => $this->generateMockClassDeclaration( - $mockClassName, - $isInterface, - $additionalInterfaces - ), + $mockClassName, + $isInterface, + $additionalInterfaces + ), 'clone' => $cloneTemplate, 'mock_class_name' => $mockClassName['className'], 'mocked_methods' => $mockedMethods, 'method' => $method - ] + ) ); - return [ + return array( 'code' => $classTemplate->render(), 'mockClassName' => $mockClassName['className'] - ]; + ); } /** @@ -833,10 +838,10 @@ private function generateMock($type, $methods, $mockClassName, $callOriginalClon * @param string $prefix * @return array */ - private function generateClassName($type, $className, $prefix) + protected function generateClassName($type, $className, $prefix) { if (is_array($type)) { - $type = implode('_', $type); + $type = join('_', $type); } if ($type[0] == '\\') { @@ -847,7 +852,7 @@ private function generateClassName($type, $className, $prefix) if (count($classNameParts) > 1) { $type = array_pop($classNameParts); - $namespaceName = implode('\\', $classNameParts); + $namespaceName = join('\\', $classNameParts); $fullClassName = $namespaceName . '\\' . $type; } else { $namespaceName = ''; @@ -858,53 +863,45 @@ private function generateClassName($type, $className, $prefix) do { $className = $prefix . $type . '_' . substr(md5(microtime()), 0, 8); - } while (class_exists($className, false)); + } while (class_exists($className, FALSE)); } - return [ + return array( 'className' => $className, 'originalClassName' => $type, 'fullClassName' => $fullClassName, 'namespaceName' => $namespaceName - ]; + ); } /** - * @param array $mockClassName - * @param bool $isInterface - * @param array $additionalInterfaces + * @param array $mockClassName + * @param boolean $isInterface + * @param array $additionalInterfaces * @return array */ - private function generateMockClassDeclaration(array $mockClassName, $isInterface, array $additionalInterfaces = []) + protected function generateMockClassDeclaration(array $mockClassName, $isInterface, array $additionalInterfaces = array()) { $buffer = 'class '; $additionalInterfaces[] = 'PHPUnit_Framework_MockObject_MockObject'; - $interfaces = implode(', ', $additionalInterfaces); + $interfaces = implode(', ', $additionalInterfaces); if ($isInterface) { $buffer .= sprintf( - '%s implements %s', - $mockClassName['className'], - $interfaces + "%s implements %s, %s%s", + $mockClassName['className'], + $interfaces, + !empty($mockClassName['namespaceName']) ? $mockClassName['namespaceName'] . '\\' : '', + $mockClassName['originalClassName'] ); - - if (!in_array($mockClassName['originalClassName'], $additionalInterfaces)) { - $buffer .= ', '; - - if (!empty($mockClassName['namespaceName'])) { - $buffer .= $mockClassName['namespaceName'] . '\\'; - } - - $buffer .= $mockClassName['originalClassName']; - } } else { $buffer .= sprintf( - '%s extends %s%s implements %s', - $mockClassName['className'], - !empty($mockClassName['namespaceName']) ? $mockClassName['namespaceName'] . '\\' : '', - $mockClassName['originalClassName'], - $interfaces + "%s extends %s%s implements %s", + $mockClassName['className'], + !empty($mockClassName['namespaceName']) ? $mockClassName['namespaceName'] . '\\' : '', + $mockClassName['originalClassName'], + $interfaces ); } @@ -914,11 +911,11 @@ private function generateMockClassDeclaration(array $mockClassName, $isInterface /** * @param string $templateDir * @param ReflectionMethod $method - * @param bool $cloneArguments - * @param bool $callOriginalMethods + * @param boolean $cloneArguments + * @param boolean $callOriginalMethods * @return string */ - private function generateMockedMethodDefinitionFromExisting($templateDir, ReflectionMethod $method, $cloneArguments, $callOriginalMethods) + protected function generateMockedMethodDefinitionFromExisting($templateDir, ReflectionMethod $method, $cloneArguments, $callOriginalMethods) { if ($method->isPrivate()) { $modifier = 'private'; @@ -938,74 +935,57 @@ private function generateMockedMethodDefinitionFromExisting($templateDir, Reflec $reference = ''; } - if ($this->hasReturnType($method)) { - $returnType = (string) $method->getReturnType(); - } else { - $returnType = ''; - } - return $this->generateMockedMethodDefinition( - $templateDir, - $method->getDeclaringClass()->getName(), - $method->getName(), - $cloneArguments, - $modifier, - $this->getMethodParameters($method), - $this->getMethodParameters($method, true), - $returnType, - $reference, - $callOriginalMethods, - $method->isStatic() + $templateDir, + $method->getDeclaringClass()->getName(), + $method->getName(), + $cloneArguments, + $modifier, + $this->getMethodParameters($method), + $this->getMethodParameters($method, TRUE), + $reference, + $callOriginalMethods, + $method->isStatic() ); } /** - * @param string $templateDir - * @param string $className - * @param string $methodName - * @param bool $cloneArguments - * @param string $modifier - * @param string $arguments_decl - * @param string $arguments_call - * @param string $return_type - * @param string $reference - * @param bool $callOriginalMethods - * @param bool $static + * @param string $templateDir + * @param string $className + * @param string $methodName + * @param boolean $cloneArguments + * @param string $modifier + * @param string $arguments_decl + * @param string $arguments_call + * @param string $reference + * @param boolean $callOriginalMethods + * @param boolean $static * @return string */ - private function generateMockedMethodDefinition($templateDir, $className, $methodName, $cloneArguments = true, $modifier = 'public', $arguments_decl = '', $arguments_call = '', $return_type = '', $reference = '', $callOriginalMethods = false, $static = false) + protected function generateMockedMethodDefinition($templateDir, $className, $methodName, $cloneArguments = TRUE, $modifier = 'public', $arguments_decl = '', $arguments_call = '', $reference = '', $callOriginalMethods = FALSE, $static = FALSE) { if ($static) { $templateFile = 'mocked_static_method.tpl'; } else { $templateFile = sprintf( - '%s_method.tpl', - $callOriginalMethods ? 'proxied' : 'mocked' + '%s_method.tpl', + $callOriginalMethods ? 'proxied' : 'mocked' ); } - // Mocked interfaces returning 'self' must explicitly declare the - // interface name as the return type. See - // https://bugs.php.net/bug.php?id=70722 - if ($return_type === 'self') { - $return_type = $className; - } - $template = new Text_Template($templateDir . $templateFile); $template->setVar( - [ + array( 'arguments_decl' => $arguments_decl, 'arguments_call' => $arguments_call, - 'return_delim' => $return_type ? ': ' : '', - 'return_type' => $return_type, 'arguments_count' => !empty($arguments_call) ? count(explode(',', $arguments_call)) : 0, 'class_name' => $className, 'method_name' => $methodName, 'modifier' => $modifier, 'reference' => $reference, - 'clone_arguments' => $cloneArguments ? 'true' : 'false' - ] + 'clone_arguments' => $cloneArguments ? 'TRUE' : 'FALSE' + ) ); return $template->render(); @@ -1013,53 +993,31 @@ private function generateMockedMethodDefinition($templateDir, $className, $metho /** * @param ReflectionMethod $method - * @return bool + * @return boolean */ - private function canMockMethod(ReflectionMethod $method) + protected function canMockMethod(ReflectionMethod $method) { if ($method->isConstructor() || $method->isFinal() || - $method->isPrivate() || - $this->isMethodNameBlacklisted($method->getName())) { - return false; + isset($this->blacklistedMethodNames[$method->getName()])) { + return FALSE; } - return true; - } - - /** - * Returns whether i method name is blacklisted - * - * Since PHP 7 the only names that are still reserved for method names are the ones that start with an underscore - * - * @param string $name - * @return bool - */ - private function isMethodNameBlacklisted($name) - { - if (PHP_MAJOR_VERSION < 7 && isset($this->legacyBlacklistedMethodNames[$name])) { - return true; - } - - if (PHP_MAJOR_VERSION >= 7 && isset($this->blacklistedMethodNames[$name])) { - return true; - } - - return false; + return TRUE; } /** * Returns the parameters of a function or method. * - * @param ReflectionMethod $method - * @param bool $forCall + * @param ReflectionMethod $method + * @param boolean $forCall * @return string * @throws PHPUnit_Framework_MockObject_RuntimeException * @since Method available since Release 2.0.0 */ - private function getMethodParameters(ReflectionMethod $method, $forCall = false) + protected function getMethodParameters(ReflectionMethod $method, $forCall = FALSE) { - $parameters = []; + $parameters = array(); foreach ($method->getParameters() as $i => $parameter) { $name = '$' . $parameter->getName(); @@ -1071,53 +1029,42 @@ private function getMethodParameters(ReflectionMethod $method, $forCall = false) $name = '$arg' . $i; } - if ($this->isVariadic($parameter)) { - if ($forCall) { - continue; - } else { - $name = '...' . $name; - } - } - - $default = ''; - $reference = ''; - $typeDeclaration = ''; + $default = ''; + $reference = ''; + $typeHint = ''; if (!$forCall) { - if ($this->hasType($parameter)) { - $typeDeclaration = (string) $parameter->getType() . ' '; - } elseif ($parameter->isArray()) { - $typeDeclaration = 'array '; - } elseif ($parameter->isCallable()) { - $typeDeclaration = 'callable '; + if ($parameter->isArray()) { + $typeHint = 'array '; + } elseif ((defined('HHVM_VERSION') || version_compare(PHP_VERSION, '5.4.0', '>=')) + && $parameter->isCallable()) { + $typeHint = 'callable '; } else { try { $class = $parameter->getClass(); } catch (ReflectionException $e) { throw new PHPUnit_Framework_MockObject_RuntimeException( - sprintf( - 'Cannot mock %s::%s() because a class or ' . - 'interface used in the signature is not loaded', - $method->getDeclaringClass()->getName(), - $method->getName() - ), - 0, - $e + sprintf( + 'Cannot mock %s::%s() because a class or ' . + 'interface used in the signature is not loaded', + $method->getDeclaringClass()->getName(), + $method->getName() + ), + 0, + $e ); } - if ($class !== null) { - $typeDeclaration = $class->getName() . ' '; + if ($class !== NULL) { + $typeHint = $class->getName() . ' '; } } - if (!$this->isVariadic($parameter)) { - if ($parameter->isDefaultValueAvailable()) { - $value = $parameter->getDefaultValue(); - $default = ' = ' . var_export($value, true); - } elseif ($parameter->isOptional()) { - $default = ' = null'; - } + if ($parameter->isDefaultValueAvailable()) { + $value = $parameter->getDefaultValue(); + $default = ' = ' . var_export($value, TRUE); + } elseif ($parameter->isOptional()) { + $default = ' = null'; } } @@ -1125,57 +1072,27 @@ private function getMethodParameters(ReflectionMethod $method, $forCall = false) $reference = '&'; } - $parameters[] = $typeDeclaration . $reference . $name . $default; + $parameters[] = $typeHint . $reference . $name . $default; } - return implode(', ', $parameters); - } - - /** - * @param ReflectionParameter $parameter - * @return bool - * @since Method available since Release 2.2.1 - */ - private function isVariadic(ReflectionParameter $parameter) - { - return method_exists('ReflectionParameter', 'isVariadic') && $parameter->isVariadic(); - } - - /** - * @param ReflectionParameter $parameter - * @return bool - * @since Method available since Release 2.3.4 - */ - private function hasType(ReflectionParameter $parameter) - { - return method_exists('ReflectionParameter', 'hasType') && $parameter->hasType(); - } - - /** - * @param ReflectionMethod $method - * @return bool - */ - private function hasReturnType(ReflectionMethod $method) - { - return method_exists('ReflectionMethod', 'hasReturnType') && $method->hasReturnType(); + return join(', ', $parameters); } /** - * @param string $className - * @return array - * @since Method available since Release 2.3.2 + * @param ReflectionClass $class + * @return boolean + * @since Method available since Release 2.0.8 */ - private function getClassMethods($className) + private function isInternalClass(ReflectionClass $class) { - $class = new ReflectionClass($className); - $methods = []; - - foreach ($class->getMethods() as $method) { - if ($method->isPublic() || $method->isAbstract()) { - $methods[] = $method->getName(); + while ($class) { + if ($class->isInternal()) { + return true; } + + $class = $class->getParentClass(); } - return $methods; + return false; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class.tpl.dist b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class.tpl.dist index 4b781a17..a9a94cd0 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class.tpl.dist +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class.tpl.dist @@ -16,7 +16,7 @@ public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -28,12 +28,9 @@ return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } }{epilogue} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_method.tpl.dist b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_method.tpl.dist index 9364d270..e2f55d9f 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_method.tpl.dist +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_method.tpl.dist @@ -1,5 +1,5 @@ - {modifier} function {reference}{method_name}({arguments_decl}){return_delim}{return_type} + {modifier} function {reference}{method_name}({arguments_decl}) { $arguments = array({arguments_call}); $count = func_num_args(); @@ -13,9 +13,9 @@ } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - '{class_name}', '{method_name}', $arguments, '{return_type}', $this, {clone_arguments} - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + '{class_name}', '{method_name}', $arguments, $this, {clone_arguments} + ) ); return $result; diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_static_method.tpl.dist b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_static_method.tpl.dist index 9e56b717..5454b2f3 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_static_method.tpl.dist +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_static_method.tpl.dist @@ -1,5 +1,5 @@ - {modifier} function {reference}{method_name}({arguments_decl}){return_delim}{return_type} + {modifier} function {reference}{method_name}({arguments_decl}) { throw new PHPUnit_Framework_MockObject_BadMethodCallException; } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/proxied_method.tpl.dist b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/proxied_method.tpl.dist index 4b9cce81..15e89bd6 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/proxied_method.tpl.dist +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/proxied_method.tpl.dist @@ -1,5 +1,5 @@ - {modifier} function {reference}{method_name}({arguments_decl}){return_delim}{return_type} + {modifier} function {reference}{method_name}({arguments_decl}) { $arguments = array({arguments_call}); $count = func_num_args(); @@ -13,9 +13,9 @@ } $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - '{class_name}', '{method_name}', $arguments, '{return_type}', $this, {clone_arguments} - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + '{class_name}', '{method_name}', $arguments, $this, {clone_arguments} + ) ); return call_user_func_array(array($this->__phpunit_originalObject, "{method_name}"), $arguments); diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php index 34da11a2..992b927a 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php @@ -1,22 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Interface for invocations. * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Invocation { - /** - * @return mixed Mocked return value. - */ - public function generateReturnValue(); } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php index 3a7ab221..6cb98e70 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php @@ -1,17 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Represents a non-static invocation. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Invocation_Object extends PHPUnit_Framework_MockObject_Invocation_Static { @@ -24,13 +64,12 @@ class PHPUnit_Framework_MockObject_Invocation_Object extends PHPUnit_Framework_M * @param string $className * @param string $methodname * @param array $parameters - * @param string $returnType * @param object $object * @param object $cloneObjects */ - public function __construct($className, $methodName, array $parameters, $returnType, $object, $cloneObjects = false) + public function __construct($className, $methodName, array $parameters, $object, $cloneObjects = FALSE) { - parent::__construct($className, $methodName, $parameters, $returnType, $cloneObjects); + parent::__construct($className, $methodName, $parameters, $cloneObjects); $this->object = $object; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php index ef54d278..862367a0 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ use SebastianBergmann\Exporter\Exporter; @@ -13,26 +47,32 @@ /** * Represents a static invocation. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Invocation_Static implements PHPUnit_Framework_MockObject_Invocation, PHPUnit_Framework_SelfDescribing { /** * @var array */ - protected static $uncloneableExtensions = [ - 'mysqli' => true, - 'SQLite' => true, - 'sqlite3' => true, - 'tidy' => true, - 'xmlwriter' => true, - 'xsl' => true - ]; + protected static $uncloneableExtensions = array( + 'mysqli' => TRUE, + 'SQLite' => TRUE, + 'sqlite3' => TRUE, + 'tidy' => TRUE, + 'xmlwriter' => TRUE, + 'xsl' => TRUE + ); /** * @var array */ - protected static $uncloneableClasses = [ + protected static $uncloneableClasses = array( 'Closure', 'COMPersistHelper', 'IteratorIterator', @@ -40,7 +80,7 @@ class PHPUnit_Framework_MockObject_Invocation_Static implements PHPUnit_Framewor 'SplFileObject', 'PDORow', 'ZipArchive' - ]; + ); /** * @var string @@ -58,23 +98,16 @@ class PHPUnit_Framework_MockObject_Invocation_Static implements PHPUnit_Framewor public $parameters; /** - * @var string + * @param string $className + * @param string $methodname + * @param array $parameters + * @param boolean $cloneObjects */ - public $returnType; - - /** - * @param string $className - * @param string $methodname - * @param array $parameters - * @param string $returnType - * @param bool $cloneObjects - */ - public function __construct($className, $methodName, array $parameters, $returnType, $cloneObjects = false) + public function __construct($className, $methodName, array $parameters, $cloneObjects = FALSE) { $this->className = $className; $this->methodName = $methodName; $this->parameters = $parameters; - $this->returnType = $returnType; if (!$cloneObjects) { return; @@ -95,86 +128,56 @@ public function toString() $exporter = new Exporter; return sprintf( - '%s::%s(%s)%s', - $this->className, - $this->methodName, - implode( - ', ', - array_map( - [$exporter, 'shortenedExport'], - $this->parameters - ) - ), - $this->returnType ? sprintf(': %s', $this->returnType) : '' + "%s::%s(%s)", + + $this->className, + $this->methodName, + join( + ', ', + array_map( + array($exporter, 'shortenedExport'), + $this->parameters + ) + ) ); } - /** - * @return mixed Mocked return value. - */ - public function generateReturnValue() - { - switch ($this->returnType) { - case '': return; - case 'string': return ''; - case 'float': return 0.0; - case 'int': return 0; - case 'bool': return false; - case 'array': return []; - - case 'callable': - case 'Closure': - return function () {}; - - case 'Traversable': - case 'Generator': - $generator = function () { yield; }; - - return $generator(); - - default: - $generator = new PHPUnit_Framework_MockObject_Generator; - - return $generator->getMock($this->returnType); - } - } - /** * @param object $original * @return object */ protected function cloneObject($original) { - $cloneable = null; + $cloneable = NULL; $object = new ReflectionObject($original); // Check the blacklist before asking PHP reflection to work around // https://bugs.php.net/bug.php?id=53967 if ($object->isInternal() && isset(self::$uncloneableExtensions[$object->getExtensionName()])) { - $cloneable = false; + $cloneable = FALSE; } - if ($cloneable === null) { + if ($cloneable === NULL) { foreach (self::$uncloneableClasses as $class) { if ($original instanceof $class) { - $cloneable = false; + $cloneable = FALSE; break; } } } - if ($cloneable === null && method_exists($object, 'isCloneable')) { + if ($cloneable === NULL && method_exists($object, 'isCloneable')) { $cloneable = $object->isCloneable(); } - if ($cloneable === null && $object->hasMethod('__clone')) { + if ($cloneable === NULL && $object->hasMethod('__clone')) { $method = $object->getMethod('__clone'); $cloneable = $method->isPublic(); } - if ($cloneable === null) { - $cloneable = true; + if ($cloneable === NULL) { + $cloneable = TRUE; } if ($cloneable) { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php index ab95241c..ac407207 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -15,19 +49,25 @@ * Keeps track of all expectations and stubs as well as registering * identifications for builders. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_InvocationMocker implements PHPUnit_Framework_MockObject_Stub_MatcherCollection, PHPUnit_Framework_MockObject_Invokable, PHPUnit_Framework_MockObject_Builder_Namespace { /** * @var PHPUnit_Framework_MockObject_Matcher_Invocation[] */ - protected $matchers = []; + protected $matchers = array(); /** * @var PHPUnit_Framework_MockObject_Builder_Match[] */ - protected $builderMap = []; + protected $builderMap = array(); /** * @param PHPUnit_Framework_MockObject_Matcher_Invocation $matcher @@ -44,16 +84,16 @@ public function hasMatchers() { foreach ($this->matchers as $matcher) { if ($matcher->hasMatchers()) { - return true; + return TRUE; } } - return false; + return FALSE; } /** - * @param mixed $id - * @return bool|null + * @param mixed $id + * @return boolean|null */ public function lookupId($id) { @@ -61,7 +101,7 @@ public function lookupId($id) return $this->builderMap[$id]; } - return; + return NULL; } /** @@ -73,7 +113,7 @@ public function registerId($id, PHPUnit_Framework_MockObject_Builder_Match $buil { if (isset($this->builderMap[$id])) { throw new PHPUnit_Framework_Exception( - 'Match builder with id <' . $id . '> is already registered.' + 'Match builder with id <' . $id . '> is already registered.' ); } @@ -87,8 +127,7 @@ public function registerId($id, PHPUnit_Framework_MockObject_Builder_Match $buil public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher) { return new PHPUnit_Framework_MockObject_Builder_InvocationMocker( - $this, - $matcher + $this, $matcher ); } @@ -98,14 +137,13 @@ public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher */ public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation) { - $exception = null; - $hasReturnValue = false; + $exception = NULL; + $hasReturnValue = FALSE; if (strtolower($invocation->methodName) == '__tostring') { - $hasReturnValue = true; - $returnValue = ''; + $returnValue = ''; } else { - $returnValue = null; + $returnValue = NULL; } foreach ($this->matchers as $match) { @@ -115,7 +153,7 @@ public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation) if (!$hasReturnValue) { $returnValue = $value; - $hasReturnValue = true; + $hasReturnValue = TRUE; } } } catch (Exception $e) { @@ -123,34 +161,30 @@ public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation) } } - if ($exception !== null) { + if ($exception !== NULL) { throw $exception; } - if ($hasReturnValue) { - return $returnValue; - } - - return $invocation->generateReturnValue(); + return $returnValue; } /** * @param PHPUnit_Framework_MockObject_Invocation $invocation - * @return bool + * @return boolean */ public function matches(PHPUnit_Framework_MockObject_Invocation $invocation) { foreach ($this->matchers as $matcher) { if (!$matcher->matches($invocation)) { - return false; + return FALSE; } } - return true; + return TRUE; } /** - * @return bool + * @return boolean */ public function verify() { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php index b5699a0d..e02b2c29 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -14,7 +48,13 @@ * The invocation will be taken from a mock object and passed to an object * of this class. * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Invokable extends PHPUnit_Framework_MockObject_Verifiable { @@ -33,7 +73,7 @@ public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation); * * @param PHPUnit_Framework_MockObject_Invocation $invocation * The invocation object passed from mock object. - * @return bool + * @return boolean */ public function matches(PHPUnit_Framework_MockObject_Invocation $invocation); } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php index 6423b146..219c0d02 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -17,7 +51,13 @@ * * All properties are public so that they can easily be accessed by the builder. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Matcher implements PHPUnit_Framework_MockObject_Matcher_Invocation { @@ -29,27 +69,27 @@ class PHPUnit_Framework_MockObject_Matcher implements PHPUnit_Framework_MockObje /** * @var mixed */ - public $afterMatchBuilderId = null; + public $afterMatchBuilderId = NULL; /** - * @var bool + * @var boolean */ - public $afterMatchBuilderIsInvoked = false; + public $afterMatchBuilderIsInvoked = FALSE; /** * @var PHPUnit_Framework_MockObject_Matcher_MethodName */ - public $methodNameMatcher = null; + public $methodNameMatcher = NULL; /** * @var PHPUnit_Framework_MockObject_Matcher_Parameters */ - public $parametersMatcher = null; + public $parametersMatcher = NULL; /** * @var PHPUnit_Framework_MockObject_Stub */ - public $stub = null; + public $stub = NULL; /** * @param PHPUnit_Framework_MockObject_Matcher_Invocation $invocationMatcher @@ -64,29 +104,29 @@ public function __construct(PHPUnit_Framework_MockObject_Matcher_Invocation $inv */ public function toString() { - $list = []; + $list = array(); - if ($this->invocationMatcher !== null) { + if ($this->invocationMatcher !== NULL) { $list[] = $this->invocationMatcher->toString(); } - if ($this->methodNameMatcher !== null) { + if ($this->methodNameMatcher !== NULL) { $list[] = 'where ' . $this->methodNameMatcher->toString(); } - if ($this->parametersMatcher !== null) { + if ($this->parametersMatcher !== NULL) { $list[] = 'and ' . $this->parametersMatcher->toString(); } - if ($this->afterMatchBuilderId !== null) { + if ($this->afterMatchBuilderId !== NULL) { $list[] = 'after ' . $this->afterMatchBuilderId; } - if ($this->stub !== null) { + if ($this->stub !== NULL) { $list[] = 'will ' . $this->stub->toString(); } - return implode(' ', $list); + return join(' ', $list); } /** @@ -95,53 +135,55 @@ public function toString() */ public function invoked(PHPUnit_Framework_MockObject_Invocation $invocation) { - if ($this->invocationMatcher === null) { + if ($this->invocationMatcher === NULL) { throw new PHPUnit_Framework_Exception( - 'No invocation matcher is set' + 'No invocation matcher is set' ); } - if ($this->methodNameMatcher === null) { + if ($this->methodNameMatcher === NULL) { throw new PHPUnit_Framework_Exception('No method matcher is set'); } - if ($this->afterMatchBuilderId !== null) { + if ($this->afterMatchBuilderId !== NULL) { $builder = $invocation->object ->__phpunit_getInvocationMocker() ->lookupId($this->afterMatchBuilderId); if (!$builder) { throw new PHPUnit_Framework_Exception( - sprintf( - 'No builder found for match builder identification <%s>', - $this->afterMatchBuilderId - ) + sprintf( + 'No builder found for match builder identification <%s>', + + $this->afterMatchBuilderId + ) ); } $matcher = $builder->getMatcher(); if ($matcher && $matcher->invocationMatcher->hasBeenInvoked()) { - $this->afterMatchBuilderIsInvoked = true; + $this->afterMatchBuilderIsInvoked = TRUE; } } $this->invocationMatcher->invoked($invocation); try { - if ($this->parametersMatcher !== null && + if ( $this->parametersMatcher !== NULL && !$this->parametersMatcher->matches($invocation)) { $this->parametersMatcher->verify(); } } catch (PHPUnit_Framework_ExpectationFailedException $e) { throw new PHPUnit_Framework_ExpectationFailedException( - sprintf( - "Expectation failed for %s when %s\n%s", - $this->methodNameMatcher->toString(), - $this->invocationMatcher->toString(), - $e->getMessage() - ), - $e->getComparisonFailure() + sprintf( + "Expectation failed for %s when %s\n%s", + + $this->methodNameMatcher->toString(), + $this->invocationMatcher->toString(), + $e->getMessage() + ), + $e->getComparisonFailure() ); } @@ -149,71 +191,73 @@ public function invoked(PHPUnit_Framework_MockObject_Invocation $invocation) return $this->stub->invoke($invocation); } - return $invocation->generateReturnValue(); + return NULL; } /** * @param PHPUnit_Framework_MockObject_Invocation $invocation - * @return bool + * @return boolean */ public function matches(PHPUnit_Framework_MockObject_Invocation $invocation) { - if ($this->afterMatchBuilderId !== null) { + if ($this->afterMatchBuilderId !== NULL) { $builder = $invocation->object ->__phpunit_getInvocationMocker() ->lookupId($this->afterMatchBuilderId); if (!$builder) { throw new PHPUnit_Framework_Exception( - sprintf( - 'No builder found for match builder identification <%s>', - $this->afterMatchBuilderId - ) + sprintf( + 'No builder found for match builder identification <%s>', + + $this->afterMatchBuilderId + ) ); } $matcher = $builder->getMatcher(); if (!$matcher) { - return false; + return FALSE; } if (!$matcher->invocationMatcher->hasBeenInvoked()) { - return false; + return FALSE; } } - if ($this->invocationMatcher === null) { + if ($this->invocationMatcher === NULL) { throw new PHPUnit_Framework_Exception( - 'No invocation matcher is set' + 'No invocation matcher is set' ); } - if ($this->methodNameMatcher === null) { + if ($this->methodNameMatcher === NULL) { throw new PHPUnit_Framework_Exception('No method matcher is set'); } if (!$this->invocationMatcher->matches($invocation)) { - return false; + return FALSE; } try { if (!$this->methodNameMatcher->matches($invocation)) { - return false; + return FALSE; } } catch (PHPUnit_Framework_ExpectationFailedException $e) { throw new PHPUnit_Framework_ExpectationFailedException( - sprintf( - "Expectation failed for %s when %s\n%s", - $this->methodNameMatcher->toString(), - $this->invocationMatcher->toString(), - $e->getMessage() - ), - $e->getComparisonFailure() + sprintf( + "Expectation failed for %s when %s\n%s", + + $this->methodNameMatcher->toString(), + $this->invocationMatcher->toString(), + $e->getMessage() + ), + $e->getComparisonFailure() ); } - return true; + return TRUE; } /** @@ -222,36 +266,37 @@ public function matches(PHPUnit_Framework_MockObject_Invocation $invocation) */ public function verify() { - if ($this->invocationMatcher === null) { + if ($this->invocationMatcher === NULL) { throw new PHPUnit_Framework_Exception( - 'No invocation matcher is set' + 'No invocation matcher is set' ); } - if ($this->methodNameMatcher === null) { + if ($this->methodNameMatcher === NULL) { throw new PHPUnit_Framework_Exception('No method matcher is set'); } try { $this->invocationMatcher->verify(); - if ($this->parametersMatcher === null) { + if ($this->parametersMatcher === NULL) { $this->parametersMatcher = new PHPUnit_Framework_MockObject_Matcher_AnyParameters; } - $invocationIsAny = get_class($this->invocationMatcher) === 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount'; + $invocationIsAny = get_class($this->invocationMatcher) === 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount'; $invocationIsNever = get_class($this->invocationMatcher) === 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' && $this->invocationMatcher->isNever(); if (!$invocationIsAny && !$invocationIsNever) { $this->parametersMatcher->verify(); } } catch (PHPUnit_Framework_ExpectationFailedException $e) { throw new PHPUnit_Framework_ExpectationFailedException( - sprintf( - "Expectation failed for %s when %s.\n%s", - $this->methodNameMatcher->toString(), - $this->invocationMatcher->toString(), - PHPUnit_Framework_TestFailure::exceptionToString($e) - ) + sprintf( + "Expectation failed for %s when %s.\n%s", + + $this->methodNameMatcher->toString(), + $this->invocationMatcher->toString(), + PHPUnit_Framework_TestFailure::exceptionToString($e) + ) ); } } @@ -261,11 +306,11 @@ public function verify() */ public function hasMatchers() { - if ($this->invocationMatcher !== null && + if ($this->invocationMatcher !== NULL && !$this->invocationMatcher instanceof PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount) { - return true; + return TRUE; } - return false; + return FALSE; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php index 480f1fd1..cf066da8 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php @@ -1,18 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Invocation matcher which checks if a method has been invoked zero or more * times. This matcher will always match. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount extends PHPUnit_Framework_MockObject_Matcher_InvokedRecorder { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php index 482a14f5..5a0e11b1 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php @@ -1,17 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** - * Invocation matcher which allows any parameters to a method. + * Invocation matcher which allos any parameters to a method. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Matcher_AnyParameters extends PHPUnit_Framework_MockObject_Matcher_StatelessInvocation { @@ -25,10 +65,10 @@ public function toString() /** * @param PHPUnit_Framework_MockObject_Invocation $invocation - * @return bool + * @return boolean */ public function matches(PHPUnit_Framework_MockObject_Invocation $invocation) { - return true; + return TRUE; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php deleted file mode 100644 index c849665f..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php +++ /dev/null @@ -1,123 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Invocation matcher which looks for sets of specific parameters in the invocations. - * - * Checks the parameters of the incoming invocations, the parameter list is - * checked against the defined constraints in $parameters. If the constraint - * is met it will return true in matches(). - * - * It takes a list of match groups and and increases a call index after each invocation. - * So the first invocation uses the first group of constraints, the second the next and so on. - */ -class PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters extends PHPUnit_Framework_MockObject_Matcher_StatelessInvocation -{ - /** - * @var array - */ - private $_parameterGroups = []; - - /** - * @var array - */ - private $_invocations = []; - - /** - * @param array $parameterGroups - */ - public function __construct(array $parameterGroups) - { - foreach ($parameterGroups as $index => $parameters) { - foreach ($parameters as $parameter) { - if (!($parameter instanceof \PHPUnit_Framework_Constraint)) { - $parameter = new \PHPUnit_Framework_Constraint_IsEqual($parameter); - } - $this->_parameterGroups[$index][] = $parameter; - } - } - } - - /** - * @return string - */ - public function toString() - { - $text = 'with consecutive parameters'; - - return $text; - } - - /** - * @param PHPUnit_Framework_MockObject_Invocation $invocation - * @return bool - */ - public function matches(PHPUnit_Framework_MockObject_Invocation $invocation) - { - $this->_invocations[] = $invocation; - $callIndex = count($this->_invocations) - 1; - $this->verifyInvocation($invocation, $callIndex); - - return false; - } - - public function verify() - { - foreach ($this->_invocations as $callIndex => $invocation) { - $this->verifyInvocation($invocation, $callIndex); - } - } - - /** - * Verify a single invocation - * - * @param PHPUnit_Framework_MockObject_Invocation $invocation - * @param int $callIndex - * @throws PHPUnit_Framework_ExpectationFailedException - */ - private function verifyInvocation(PHPUnit_Framework_MockObject_Invocation $invocation, $callIndex) - { - - if (isset($this->_parameterGroups[$callIndex])) { - $parameters = $this->_parameterGroups[$callIndex]; - } else { - // no parameter assertion for this call index - return; - } - - if ($invocation === null) { - throw new PHPUnit_Framework_ExpectationFailedException( - 'Mocked method does not exist.' - ); - } - - if (count($invocation->parameters) < count($parameters)) { - throw new PHPUnit_Framework_ExpectationFailedException( - sprintf( - 'Parameter count for invocation %s is too low.', - $invocation->toString() - ) - ); - } - - foreach ($parameters as $i => $parameter) { - $parameter->evaluate( - $invocation->parameters[$i], - sprintf( - 'Parameter %s for invocation #%d %s does not match expected ' . - 'value.', - $i, - $callIndex, - $invocation->toString() - ) - ); - } - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php index cbe428cb..7891a7b4 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php @@ -1,18 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Interface for classes which matches an invocation based on its * method name, argument, order or call count. * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Matcher_Invocation extends PHPUnit_Framework_SelfDescribing, PHPUnit_Framework_MockObject_Verifiable { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php index 1b170894..0d3a8e89 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -18,22 +52,28 @@ * * If the index is never reached it will throw an exception in index. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex implements PHPUnit_Framework_MockObject_Matcher_Invocation { /** - * @var int + * @var integer */ protected $sequenceIndex; /** - * @var int + * @var integer */ protected $currentIndex = -1; /** - * @param int $sequenceIndex + * @param integer $sequenceIndex */ public function __construct($sequenceIndex) { @@ -50,7 +90,7 @@ public function toString() /** * @param PHPUnit_Framework_MockObject_Invocation $invocation - * @return bool + * @return boolean */ public function matches(PHPUnit_Framework_MockObject_Invocation $invocation) { @@ -76,10 +116,11 @@ public function verify() { if ($this->currentIndex < $this->sequenceIndex) { throw new PHPUnit_Framework_ExpectationFailedException( - sprintf( - 'The expected invocation at index %s was never reached.', - $this->sequenceIndex - ) + sprintf( + 'The expected invocation at index %s was never reached.', + + $this->sequenceIndex + ) ); } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php deleted file mode 100644 index 23bf05b4..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Invocation matcher which checks if a method has been invoked at least - * N times. - * - * @since Class available since Release 2.2.0 - */ -class PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount extends PHPUnit_Framework_MockObject_Matcher_InvokedRecorder -{ - /** - * @var int - */ - private $requiredInvocations; - - /** - * @param int $requiredInvocations - */ - public function __construct($requiredInvocations) - { - $this->requiredInvocations = $requiredInvocations; - } - - /** - * @return string - */ - public function toString() - { - return 'invoked at least ' . $this->requiredInvocations . ' times'; - } - - /** - * Verifies that the current expectation is valid. If everything is OK the - * code should just return, if not it must throw an exception. - * - * @throws PHPUnit_Framework_ExpectationFailedException - */ - public function verify() - { - $count = $this->getInvocationCount(); - - if ($count < $this->requiredInvocations) { - throw new PHPUnit_Framework_ExpectationFailedException( - 'Expected invocation at least ' . $this->requiredInvocations . - ' times but it occured ' . $count . ' time(s).' - ); - } - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php index 4df2dd1b..5b4d36f2 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -14,7 +48,13 @@ * * If the number of invocations is 0 it will throw an exception in verify. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce extends PHPUnit_Framework_MockObject_Matcher_InvokedRecorder { @@ -38,7 +78,7 @@ public function verify() if ($count < 1) { throw new PHPUnit_Framework_ExpectationFailedException( - 'Expected invocation at least once but it never occured.' + 'Expected invocation at least once but it never occured.' ); } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php deleted file mode 100644 index df9f124a..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Invocation matcher which checks if a method has been invoked at least - * N times. - * - * @since Class available since Release 2.2.0 - */ -class PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount extends PHPUnit_Framework_MockObject_Matcher_InvokedRecorder -{ - /** - * @var int - */ - private $allowedInvocations; - - /** - * @param int $allowedInvocations - */ - public function __construct($allowedInvocations) - { - $this->allowedInvocations = $allowedInvocations; - } - - /** - * @return string - */ - public function toString() - { - return 'invoked at most ' . $this->allowedInvocations . ' times'; - } - - /** - * Verifies that the current expectation is valid. If everything is OK the - * code should just return, if not it must throw an exception. - * - * @throws PHPUnit_Framework_ExpectationFailedException - */ - public function verify() - { - $count = $this->getInvocationCount(); - - if ($count > $this->allowedInvocations) { - throw new PHPUnit_Framework_ExpectationFailedException( - 'Expected invocation at most ' . $this->allowedInvocations . - ' times but it occured ' . $count . ' time(s).' - ); - } - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php index d87dd356..848f420e 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -16,17 +50,23 @@ * If the number is less it will later be checked in verify() and also throw an * exception. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Matcher_InvokedCount extends PHPUnit_Framework_MockObject_Matcher_InvokedRecorder { /** - * @var int + * @var integer */ protected $expectedCount; /** - * @param int $expectedCount + * @param integer $expectedCount */ public function __construct($expectedCount) { @@ -34,7 +74,7 @@ public function __construct($expectedCount) } /** - * @return bool + * @return boolean */ public function isNever() { @@ -75,10 +115,11 @@ public function invoked(PHPUnit_Framework_MockObject_Invocation $invocation) default: { $message .= sprintf( - 'was not expected to be called more than %d times.', - $this->expectedCount + 'was not expected to be called more than %d times.', + + $this->expectedCount ); - } + } } throw new PHPUnit_Framework_ExpectationFailedException($message); @@ -97,12 +138,13 @@ public function verify() if ($count !== $this->expectedCount) { throw new PHPUnit_Framework_ExpectationFailedException( - sprintf( - 'Method was expected to be called %d times, ' . - 'actually called %d times.', - $this->expectedCount, - $count - ) + sprintf( + 'Method was expected to be called %d times, ' . + 'actually called %d times.', + + $this->expectedCount, + $count + ) ); } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php index d6cae5ee..9a345164 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -14,7 +48,13 @@ * This abstract class can be implemented by matchers which needs to check the * number of times an invocation has occured. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 * @abstract */ abstract class PHPUnit_Framework_MockObject_Matcher_InvokedRecorder implements PHPUnit_Framework_MockObject_Matcher_Invocation @@ -22,10 +62,10 @@ abstract class PHPUnit_Framework_MockObject_Matcher_InvokedRecorder implements P /** * @var PHPUnit_Framework_MockObject_Invocation[] */ - protected $invocations = []; + protected $invocations = array(); /** - * @return int + * @return integer */ public function getInvocationCount() { @@ -41,7 +81,7 @@ public function getInvocations() } /** - * @return bool + * @return boolean */ public function hasBeenInvoked() { @@ -58,10 +98,10 @@ public function invoked(PHPUnit_Framework_MockObject_Invocation $invocation) /** * @param PHPUnit_Framework_MockObject_Invocation $invocation - * @return bool + * @return boolean */ public function matches(PHPUnit_Framework_MockObject_Invocation $invocation) { - return true; + return TRUE; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php index 1e32c7be..8b9ec10d 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -15,7 +49,13 @@ * the defined constraint $constraint. If the constraint is met it will return * true in matches(). * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Matcher_MethodName extends PHPUnit_Framework_MockObject_Matcher_StatelessInvocation { @@ -36,11 +76,7 @@ public function __construct($constraint) } $constraint = new PHPUnit_Framework_Constraint_IsEqual( - $constraint, - 0, - 10, - false, - true + $constraint, 0, 10, FALSE, TRUE ); } @@ -57,10 +93,10 @@ public function toString() /** * @param PHPUnit_Framework_MockObject_Invocation $invocation - * @return bool + * @return boolean */ public function matches(PHPUnit_Framework_MockObject_Invocation $invocation) { - return $this->constraint->evaluate($invocation->methodName, '', true); + return $this->constraint->evaluate($invocation->methodName, '', TRUE); } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php index bec0ab93..1bb79f2f 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -15,14 +49,20 @@ * checked against the defined constraints in $parameters. If the constraint * is met it will return true in matches(). * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Matcher_Parameters extends PHPUnit_Framework_MockObject_Matcher_StatelessInvocation { /** - * @var PHPUnit_Framework_Constraint[] + * @var array */ - protected $parameters = []; + protected $parameters = array(); /** * @var PHPUnit_Framework_MockObject_Invocation @@ -37,7 +77,7 @@ public function __construct(array $parameters) foreach ($parameters as $parameter) { if (!($parameter instanceof PHPUnit_Framework_Constraint)) { $parameter = new PHPUnit_Framework_Constraint_IsEqual( - $parameter + $parameter ); } @@ -65,13 +105,14 @@ public function toString() /** * @param PHPUnit_Framework_MockObject_Invocation $invocation - * @return bool + * @return boolean */ public function matches(PHPUnit_Framework_MockObject_Invocation $invocation) { $this->invocation = $invocation; + $this->verify(); - return $this->verify(); + return count($invocation->parameters) < count($this->parameters); } /** @@ -87,41 +128,33 @@ public function matches(PHPUnit_Framework_MockObject_Invocation $invocation) */ public function verify() { - if ($this->invocation === null) { + if ($this->invocation === NULL) { throw new PHPUnit_Framework_ExpectationFailedException( - 'Mocked method does not exist.' + 'Mocked method does not exist.' ); } if (count($this->invocation->parameters) < count($this->parameters)) { - $message = 'Parameter count for invocation %s is too low.'; - - // The user called `->with($this->anything())`, but may have meant - // `->withAnyParameters()`. - // - // @see https://github.com/sebastianbergmann/phpunit-mock-objects/issues/199 - if (count($this->parameters) === 1 && - get_class($this->parameters[0]) === 'PHPUnit_Framework_Constraint_IsAnything') { - $message .= "\nTo allow 0 or more parameters with any value, omit ->with() or use ->withAnyParameters() instead."; - } - throw new PHPUnit_Framework_ExpectationFailedException( - sprintf($message, $this->invocation->toString()) + sprintf( + 'Parameter count for invocation %s is too low.', + + $this->invocation->toString() + ) ); } foreach ($this->parameters as $i => $parameter) { $parameter->evaluate( - $this->invocation->parameters[$i], - sprintf( - 'Parameter %s for invocation %s does not match expected ' . - 'value.', - $i, - $this->invocation->toString() - ) + $this->invocation->parameters[$i], + sprintf( + 'Parameter %s for invocation %s does not match expected ' . + 'value.', + + $i, + $this->invocation->toString() + ) ); } - - return true; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php index c2e263a8..3d0283ee 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -15,7 +49,13 @@ * This abstract class can be implemented by matchers which does not care about * state but only the current run-time value of the invocation itself. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 * @abstract */ abstract class PHPUnit_Framework_MockObject_Matcher_StatelessInvocation implements PHPUnit_Framework_MockObject_Matcher_Invocation diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php index fe49774b..3ff86556 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php @@ -1,16 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit_MockObject + * @author Giorgio Sironi + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Implementation of the Builder pattern for Mock objects. * + * @package PHPUnit_MockObject + * @author Giorgio Sironi + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects * @since File available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_MockBuilder @@ -28,7 +69,7 @@ class PHPUnit_Framework_MockObject_MockBuilder /** * @var array */ - private $methods = []; + private $methods = array(); /** * @var string @@ -38,37 +79,37 @@ class PHPUnit_Framework_MockObject_MockBuilder /** * @var array */ - private $constructorArgs = []; + private $constructorArgs = array(); /** - * @var bool + * @var boolean */ - private $originalConstructor = true; + private $originalConstructor = TRUE; /** - * @var bool + * @var boolean */ - private $originalClone = true; + private $originalClone = TRUE; /** - * @var bool + * @var boolean */ - private $autoload = true; + private $autoload = TRUE; /** - * @var bool + * @var boolean */ - private $cloneArguments = false; + private $cloneArguments = FALSE; /** - * @var bool + * @var boolean */ - private $callOriginalMethods = false; + private $callOriginalMethods = FALSE; /** * @var object */ - private $proxyTarget = null; + private $proxyTarget = NULL; /** * @param PHPUnit_Framework_TestCase $testCase @@ -88,16 +129,16 @@ public function __construct(PHPUnit_Framework_TestCase $testCase, $type) public function getMock() { return $this->testCase->getMock( - $this->type, - $this->methods, - $this->constructorArgs, - $this->mockClassName, - $this->originalConstructor, - $this->originalClone, - $this->autoload, - $this->cloneArguments, - $this->callOriginalMethods, - $this->proxyTarget + $this->type, + $this->methods, + $this->constructorArgs, + $this->mockClassName, + $this->originalConstructor, + $this->originalClone, + $this->autoload, + $this->cloneArguments, + $this->callOriginalMethods, + $this->proxyTarget ); } @@ -109,14 +150,14 @@ public function getMock() public function getMockForAbstractClass() { return $this->testCase->getMockForAbstractClass( - $this->type, - $this->constructorArgs, - $this->mockClassName, - $this->originalConstructor, - $this->originalClone, - $this->autoload, - $this->methods, - $this->cloneArguments + $this->type, + $this->constructorArgs, + $this->mockClassName, + $this->originalConstructor, + $this->originalClone, + $this->autoload, + $this->methods, + $this->cloneArguments ); } @@ -128,14 +169,14 @@ public function getMockForAbstractClass() public function getMockForTrait() { return $this->testCase->getMockForTrait( - $this->type, - $this->constructorArgs, - $this->mockClassName, - $this->originalConstructor, - $this->originalClone, - $this->autoload, - $this->methods, - $this->cloneArguments + $this->type, + $this->constructorArgs, + $this->mockClassName, + $this->originalConstructor, + $this->originalClone, + $this->autoload, + $this->methods, + $this->cloneArguments ); } @@ -185,7 +226,7 @@ public function setMockClassName($name) */ public function disableOriginalConstructor() { - $this->originalConstructor = false; + $this->originalConstructor = FALSE; return $this; } @@ -198,7 +239,7 @@ public function disableOriginalConstructor() */ public function enableOriginalConstructor() { - $this->originalConstructor = true; + $this->originalConstructor = TRUE; return $this; } @@ -210,7 +251,7 @@ public function enableOriginalConstructor() */ public function disableOriginalClone() { - $this->originalClone = false; + $this->originalClone = FALSE; return $this; } @@ -223,7 +264,7 @@ public function disableOriginalClone() */ public function enableOriginalClone() { - $this->originalClone = true; + $this->originalClone = TRUE; return $this; } @@ -235,7 +276,7 @@ public function enableOriginalClone() */ public function disableAutoload() { - $this->autoload = false; + $this->autoload = FALSE; return $this; } @@ -248,7 +289,7 @@ public function disableAutoload() */ public function enableAutoload() { - $this->autoload = true; + $this->autoload = TRUE; return $this; } @@ -261,7 +302,7 @@ public function enableAutoload() */ public function disableArgumentCloning() { - $this->cloneArguments = false; + $this->cloneArguments = FALSE; return $this; } @@ -274,7 +315,7 @@ public function disableArgumentCloning() */ public function enableArgumentCloning() { - $this->cloneArguments = true; + $this->cloneArguments = TRUE; return $this; } @@ -287,7 +328,7 @@ public function enableArgumentCloning() */ public function enableProxyingToOriginalMethods() { - $this->callOriginalMethods = true; + $this->callOriginalMethods = TRUE; return $this; } @@ -300,8 +341,8 @@ public function enableProxyingToOriginalMethods() */ public function disableProxyingToOriginalMethods() { - $this->callOriginalMethods = false; - $this->proxyTarget = null; + $this->callOriginalMethods = FALSE; + $this->proxyTarget = NULL; return $this; } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php index 927fd79b..f7534b38 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php @@ -1,19 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Interface for all mock objects which are generated by - * PHPUnit_Framework_MockObject_MockBuilder. + * PHPUnit_Framework_MockObject_Mock. * - * @method PHPUnit_Framework_MockObject_Builder_InvocationMocker method($constraint) - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_MockObject /*extends PHPUnit_Framework_MockObject_Verifiable*/ { @@ -44,9 +83,4 @@ public function __phpunit_getInvocationMocker(); * @throws PHPUnit_Framework_ExpectationFailedException */ public function __phpunit_verify(); - - /** - * @return bool - */ - public function __phpunit_hasMatchers(); } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php index 1414bcc1..ca8f2627 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php @@ -1,11 +1,45 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** @@ -14,7 +48,13 @@ * The stub object will replace the code for the stubbed method and return a * specific value instead of the original value. * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Stub extends PHPUnit_Framework_SelfDescribing { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php index afc353d9..10563c18 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php @@ -1,19 +1,59 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit_MockObject + * @author Patrick Müller + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ -use SebastianBergmann\Exporter\Exporter; - /** * Stubs a method by returning a user-defined stack of values. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Patrick Müller + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls implements PHPUnit_Framework_MockObject_Stub { @@ -38,11 +78,10 @@ public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation) public function toString() { - $exporter = new Exporter; - return sprintf( - 'return user-specified value %s', - $exporter->export($this->value) + 'return user-specified value %s', + + PHPUnit_Util_Type::export($this->value) ); } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php index 7f9359c5..1a4d476c 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php @@ -1,19 +1,59 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit_MockObject + * @author Oliver Schlicht + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ -use SebastianBergmann\Exporter\Exporter; - /** * Stubs a method by raising a user-defined exception. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Oliver Schlicht + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Stub_Exception implements PHPUnit_Framework_MockObject_Stub { @@ -31,11 +71,10 @@ public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation) public function toString() { - $exporter = new Exporter; - return sprintf( - 'raise user-specified exception %s', - $exporter->export($this->exception) + 'raise user-specified exception %s', + + PHPUnit_Util_Type::export($this->exception) ); } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php index 07a28777..cfdd6b77 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php @@ -1,17 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Stubs a method by returning a user-defined value. * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Stub_MatcherCollection { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php index 630504fe..9ef71ef6 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php @@ -1,19 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ -use SebastianBergmann\Exporter\Exporter; - /** * Stubs a method by returning a user-defined value. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Stub_Return implements PHPUnit_Framework_MockObject_Stub { @@ -31,11 +69,10 @@ public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation) public function toString() { - $exporter = new Exporter; - return sprintf( - 'return user-specified value %s', - $exporter->export($this->value) + 'return user-specified value %s', + + PHPUnit_Util_Type::export($this->value) ); } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php index fb79f4e9..68f6564c 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php @@ -1,17 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Stubs a method by returning an argument that was passed to the mocked method. * - * @since Class available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Stub_ReturnArgument extends PHPUnit_Framework_MockObject_Stub_Return { @@ -27,7 +67,7 @@ public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation) if (isset($invocation->parameters[$this->argumentIndex])) { return $invocation->parameters[$this->argumentIndex]; } else { - return; + return NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php index 601b354b..a093abf1 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php @@ -1,15 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** - * @since Class available since Release 1.0.0 + * + * + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.0.0 */ class PHPUnit_Framework_MockObject_Stub_ReturnCallback implements PHPUnit_Framework_MockObject_Stub { @@ -37,11 +79,12 @@ public function toString() } return sprintf( - 'return result of user defined callback %s%s%s() with the ' . - 'passed arguments', - $class, - $type, - $this->callback[1] + 'return result of user defined callback %s%s%s() with the ' . + 'passed arguments', + + $class, + $type, + $this->callback[1] ); } else { return 'return result of user defined callback ' . $this->callback . diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php index 582ab16c..b24bdb53 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php @@ -1,17 +1,59 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @author Kris Wallsmith + * @copyright 2010 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.1.0 */ /** * Stubs a method by returning the current object. * - * @since Class available since Release 1.1.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @author Kris Wallsmith + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.1.0 */ class PHPUnit_Framework_MockObject_Stub_ReturnSelf implements PHPUnit_Framework_MockObject_Stub { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php index 25ba4d1a..36e82c66 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php @@ -1,17 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.1.0 */ /** * Stubs a method by returning a value from a map. * - * @since Class available since Release 1.1.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Class available since Release 1.1.0 */ class PHPUnit_Framework_MockObject_Stub_ReturnValueMap implements PHPUnit_Framework_MockObject_Stub { @@ -37,7 +77,7 @@ public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation) } } - return; + return NULL; } public function toString() diff --git a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php index c19dfb33..21ccbf48 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php @@ -1,17 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** * Interface for classes which must verify a given expectation. * - * @since Interface available since Release 1.0.0 + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since Interface available since Release 1.0.0 */ interface PHPUnit_Framework_MockObject_Verifiable { diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php index 28e562f0..6663ab46 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php @@ -1,9 +1,6 @@ generator->getMock(StdClass::class, [0]); + $this->generator->getMock('StdClass', array(0)); } /** @@ -25,8 +22,7 @@ public function testGetMockFailsWhenInvalidFunctionNameIsPassedInAsAFunctionToMo */ public function testGetMockCanCreateNonExistingFunctions() { - $mock = $this->generator->getMock(StdClass::class, ['testFunction']); - + $mock = $this->generator->getMock('StdClass', array('testFunction')); $this->assertTrue(method_exists($mock, 'testFunction')); } @@ -37,20 +33,7 @@ public function testGetMockCanCreateNonExistingFunctions() */ public function testGetMockGeneratorFails() { - $this->generator->getMock(StdClass::class, ['foo', 'foo']); - } - - /** - * @covers PHPUnit_Framework_MockObject_Generator::getMock - * @covers PHPUnit_Framework_MockObject_Generator::isMethodNameBlacklisted - * @requires PHP 7 - */ - public function testGetMockBlacklistedMethodNamesPhp7() - { - $mock = $this->generator->getMock(InterfaceWithSemiReservedMethodName::class); - - $this->assertTrue(method_exists($mock, 'unset')); - $this->assertInstanceOf(InterfaceWithSemiReservedMethodName::class, $mock); + $mock = $this->generator->getMock('StdClass', array('foo', 'foo')); } /** @@ -58,8 +41,7 @@ public function testGetMockBlacklistedMethodNamesPhp7() */ public function testGetMockForAbstractClassDoesNotFailWhenFakingInterfaces() { - $mock = $this->generator->getMockForAbstractClass(Countable::class); - + $mock = $this->generator->getMockForAbstractClass('Countable'); $this->assertTrue(method_exists($mock, 'count')); } @@ -68,8 +50,7 @@ public function testGetMockForAbstractClassDoesNotFailWhenFakingInterfaces() */ public function testGetMockForAbstractClassStubbingAbstractClass() { - $mock = $this->generator->getMockForAbstractClass(AbstractMockTestClass::class); - + $mock = $this->generator->getMockForAbstractClass('AbstractMockTestClass'); $this->assertTrue(method_exists($mock, 'doSomething')); } @@ -79,13 +60,8 @@ public function testGetMockForAbstractClassStubbingAbstractClass() public function testGetMockForAbstractClassWithNonExistentMethods() { $mock = $this->generator->getMockForAbstractClass( - AbstractMockTestClass::class, - [], - '', - true, - true, - true, - ['nonexistentMethod'] + 'AbstractMockTestClass', array(), '', true, + true, true, array('nonexistentMethod') ); $this->assertTrue(method_exists($mock, 'nonexistentMethod')); @@ -97,7 +73,7 @@ public function testGetMockForAbstractClassWithNonExistentMethods() */ public function testGetMockForAbstractClassShouldCreateStubsOnlyForAbstractMethodWhenNoMethodsWereInformed() { - $mock = $this->generator->getMockForAbstractClass(AbstractMockTestClass::class); + $mock = $this->generator->getMockForAbstractClass('AbstractMockTestClass'); $mock->expects($this->any()) ->method('doSomething') @@ -114,39 +90,38 @@ public function testGetMockForAbstractClassShouldCreateStubsOnlyForAbstractMetho */ public function testGetMockForAbstractClassExpectingInvalidArgumentException($className, $mockClassName) { - $this->generator->getMockForAbstractClass($className, [], $mockClassName); + $mock = $this->generator->getMockForAbstractClass($className, array(), $mockClassName); } /** * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass * @expectedException PHPUnit_Framework_MockObject_RuntimeException */ - public function testGetMockForAbstractClassAbstractClassDoesNotExist() + public function testGetMockForAbstractClassAnstractClassDoesNotExist() { - $this->generator->getMockForAbstractClass('Tux'); + $mock = $this->generator->getMockForAbstractClass('Tux'); } - public function getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider() + /** + * Dataprovider for test "testGetMockForAbstractClassExpectingInvalidArgumentException" + */ + public static function getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider() { - return [ - 'className not a string' => [[], ''], - 'mockClassName not a string' => [Countable::class, new StdClass], - ]; + return array( + 'className not a string' => array(array(), ''), + 'mockClassName not a string' => array('Countable', new StdClass), + ); } /** * @covers PHPUnit_Framework_MockObject_Generator::getMockForTrait + * @requires PHP 5.4.0 */ public function testGetMockForTraitWithNonExistentMethodsAndNonAbstractMethods() { $mock = $this->generator->getMockForTrait( - AbstractTrait::class, - [], - '', - true, - true, - true, - ['nonexistentMethod'] + 'AbstractTrait', array(), '', true, + true, true, array('nonexistentMethod') ); $this->assertTrue(method_exists($mock, 'nonexistentMethod')); @@ -156,28 +131,12 @@ public function testGetMockForTraitWithNonExistentMethodsAndNonAbstractMethods() } /** - * @covers PHPUnit_Framework_MockObject_Generator::getMockForTrait + * @covers PHPUnit_Framework_MockObject_Generator::getMockForTrait + * @requires PHP 5.4.0 */ public function testGetMockForTraitStubbingAbstractMethod() { - $mock = $this->generator->getMockForTrait(AbstractTrait::class); - + $mock = $this->generator->getMockForTrait('AbstractTrait'); $this->assertTrue(method_exists($mock, 'doSomething')); } - - public function testGetMockForSingletonWithReflectionSuccess() - { - $mock = $this->generator->getMock(SingletonClass::class, ['doSomething'], [], '', false); - - $this->assertInstanceOf('SingletonClass', $mock); - } - - /** - * @covers PHPUnit_Framework_MockObject_Generator::getMock - * @expectedException PHPUnit_Framework_MockObject_RuntimeException - */ - public function testExceptionIsRaisedForMutuallyExclusiveOptions() - { - $this->generator->getMock(StdClass::class, [], [], '', false, true, true, true, true); - } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockBuilderTest.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockBuilderTest.php index c4dd63d0..c770e2a9 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockBuilderTest.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockBuilderTest.php @@ -1,14 +1,55 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Giorgio Sironi + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects + * @since File available since Release 1.0.0 */ /** + * @package PHPUnit_MockObject + * @author Giorgio Sironi + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://github.com/sebastianbergmann/phpunit-mock-objects * @since File available since Release 1.0.0 */ class Framework_MockBuilderTest extends PHPUnit_Framework_TestCase @@ -31,7 +72,7 @@ public function testByDefaultMocksAllMethods() public function testMethodsToMockCanBeSpecified() { $spec = $this->getMockBuilder('Mockable'); - $spec->setMethods(['mockableMethod']); + $spec->setMethods(array('mockableMethod')); $mock = $spec->getMock(); $this->assertNull($mock->mockableMethod()); $this->assertTrue($mock->anotherMockableMethod()); @@ -41,7 +82,7 @@ public function testByDefaultDoesNotPassArgumentsToTheConstructor() { $spec = $this->getMockBuilder('Mockable'); $mock = $spec->getMock(); - $this->assertEquals([null, null], $mock->constructorArgs); + $this->assertEquals(array(NULL, NULL), $mock->constructorArgs); } public function testMockClassNameCanBeSpecified() @@ -55,7 +96,7 @@ public function testMockClassNameCanBeSpecified() public function testConstructorArgumentsCanBeSpecified() { $spec = $this->getMockBuilder('Mockable'); - $spec->setConstructorArgs($expected = [23, 42]); + $spec->setConstructorArgs($expected = array(23, 42)); $mock = $spec->getMock(); $this->assertEquals($expected, $mock->constructorArgs); } @@ -70,8 +111,8 @@ public function testOriginalConstructorCanBeDisabled() public function testByDefaultOriginalCloneIsPreserved() { - $spec = $this->getMockBuilder('Mockable'); - $mock = $spec->getMock(); + $spec = $this->getMockBuilder('Mockable'); + $mock = $spec->getMock(); $cloned = clone $mock; $this->assertTrue($cloned->cloned); } @@ -80,9 +121,9 @@ public function testOriginalCloneCanBeDisabled() { $spec = $this->getMockBuilder('Mockable'); $spec->disableOriginalClone(); - $mock = $spec->getMock(); - $mock->cloned = false; - $cloned = clone $mock; + $mock = $spec->getMock(); + $mock->cloned = FALSE; + $cloned = clone $mock; $this->assertFalse($cloned->cloned); } @@ -96,8 +137,8 @@ public function testCallingAutoloadCanBeDisabled() public function testProvidesAFluentInterface() { $spec = $this->getMockBuilder('Mockable') - ->setMethods(['mockableMethod']) - ->setConstructorArgs([]) + ->setMethods(array('mockableMethod')) + ->setConstructorArgs(array()) ->setMockClassName('DummyClassName') ->disableOriginalConstructor() ->disableOriginalClone() diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/232.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/232.phpt deleted file mode 100644 index e02762ec..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/232.phpt +++ /dev/null @@ -1,128 +0,0 @@ ---TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) ---FILE-- -hi(); - } -} - -class Foo -{ - use ChildTrait; - - public function speak() - { - return $this->world(); - } -} - -require __DIR__ . '/../../vendor/autoload.php'; - -$generator = new PHPUnit_Framework_MockObject_Generator; - -$mock = $generator->generate( - 'Foo', - array(), - 'MockFoo', - true, - true -); - -print $mock['code']; -?> ---EXPECTF-- -class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject -{ - private $__phpunit_invocationMocker; - private $__phpunit_originalObject; - - public function __clone() - { - $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker(); - } - - public function speak() - { - $arguments = array(); - $count = func_num_args(); - - if ($count > 0) { - $_arguments = func_get_args(); - - for ($i = 0; $i < $count; $i++) { - $arguments[] = $_arguments[$i]; - } - } - - $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'speak', $arguments, '', $this, true - ) - ); - - return $result; - } - - public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher) - { - return $this->__phpunit_getInvocationMocker()->expects($matcher); - } - - public function method() - { - $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount; - $expects = $this->expects($any); - return call_user_func_array(array($expects, 'method'), func_get_args()); - } - - public function __phpunit_setOriginalObject($originalObject) - { - $this->__phpunit_originalObject = $originalObject; - } - - public function __phpunit_getInvocationMocker() - { - if ($this->__phpunit_invocationMocker === null) { - $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; - } - - return $this->__phpunit_invocationMocker; - } - - public function __phpunit_hasMatchers() - { - return $this->__phpunit_getInvocationMocker()->hasMatchers(); - } - - public function __phpunit_verify($unsetInvocationMocker = true) - { - $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } - } -} - diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Builder/InvocationMockerTest.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Builder/InvocationMockerTest.php deleted file mode 100644 index e7f69dba..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Builder/InvocationMockerTest.php +++ /dev/null @@ -1,38 +0,0 @@ -getMock('stdClass', ['foo']); - $mock - ->expects($this->any()) - ->method('foo') - ->willReturn(1); - $this->assertEquals(1, $mock->foo()); - } - - public function testWillReturnWithMultipleValues() - { - $mock = $this->getMock('stdClass', ['foo']); - $mock - ->expects($this->any()) - ->method('foo') - ->willReturn(1, 2, 3); - $this->assertEquals(1, $mock->foo()); - $this->assertEquals(2, $mock->foo()); - $this->assertEquals(3, $mock->foo()); - } - - public function testWillReturnOnConsecutiveCalls() - { - $mock = $this->getMock('stdClass', ['foo']); - $mock - ->expects($this->any()) - ->method('foo') - ->willReturnOnConsecutiveCalls(1, 2, 3); - $this->assertEquals(1, $mock->foo()); - $this->assertEquals(2, $mock->foo()); - $this->assertEquals(3, $mock->foo()); - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/ObjectTest.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/ObjectTest.php index 94ba45a3..110ee75a 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/ObjectTest.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/ObjectTest.php @@ -7,10 +7,8 @@ public function testConstructorRequiresClassAndMethodAndParametersAndObject() new PHPUnit_Framework_MockObject_Invocation_Object( 'FooClass', 'FooMethod', - ['an_argument'], - 'ReturnType', - new StdClass - ); + array('an_argument'), + new StdClass); } public function testAllowToGetClassNameSetInConstructor() @@ -18,10 +16,8 @@ public function testAllowToGetClassNameSetInConstructor() $invocation = new PHPUnit_Framework_MockObject_Invocation_Object( 'FooClass', 'FooMethod', - ['an_argument'], - 'ReturnType', - new StdClass - ); + array('an_argument'), + new StdClass); $this->assertSame('FooClass', $invocation->className); } @@ -31,10 +27,8 @@ public function testAllowToGetMethodNameSetInConstructor() $invocation = new PHPUnit_Framework_MockObject_Invocation_Object( 'FooClass', 'FooMethod', - ['an_argument'], - 'ReturnType', - new StdClass - ); + array('an_argument'), + new StdClass); $this->assertSame('FooMethod', $invocation->methodName); } @@ -46,26 +40,23 @@ public function testAllowToGetObjectSetInConstructor() $invocation = new PHPUnit_Framework_MockObject_Invocation_Object( 'FooClass', 'FooMethod', - ['an_argument'], - 'ReturnType', - $expectedObject - ); + array('an_argument'), + $expectedObject); $this->assertSame($expectedObject, $invocation->object); } public function testAllowToGetMethodParametersSetInConstructor() { - $expectedParameters = [ - 'foo', 5, ['a', 'b'], new StdClass, null, false - ]; + $expectedParameters = array( + 'foo', 5, array('a', 'b'), new StdClass, NULL, FALSE + ); $invocation = new PHPUnit_Framework_MockObject_Invocation_Object( - 'FooClass', - 'FooMethod', - $expectedParameters, - 'ReturnType', - new StdClass + 'FooClass', + 'FooMethod', + $expectedParameters, + new StdClass ); $this->assertSame($expectedParameters, $invocation->parameters); @@ -73,34 +64,18 @@ public function testAllowToGetMethodParametersSetInConstructor() public function testConstructorAllowToSetFlagCloneObjectsInParameters() { - $parameters = [new StdClass]; - $cloneObjects = true; + $parameters = array(new StdClass); + $cloneObjects = TRUE; $invocation = new PHPUnit_Framework_MockObject_Invocation_Object( - 'FooClass', - 'FooMethod', - $parameters, - 'ReturnType', - new StdClass, - $cloneObjects + 'FooClass', + 'FooMethod', + $parameters, + new StdClass, + $cloneObjects ); $this->assertEquals($parameters, $invocation->parameters); $this->assertNotSame($parameters, $invocation->parameters); } - - public function testAllowToGetReturnTypeSetInConstructor() - { - $expectedReturnType = 'string'; - - $invocation = new PHPUnit_Framework_MockObject_Invocation_Object( - 'FooClass', - 'FooMethod', - ['an_argument'], - $expectedReturnType, - new StdClass - ); - - $this->assertSame($expectedReturnType, $invocation->returnType); - } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/StaticTest.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/StaticTest.php index fb16c802..09e6e3c6 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/StaticTest.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/StaticTest.php @@ -4,49 +4,31 @@ class Framework_MockObject_Invocation_StaticTest extends PHPUnit_Framework_TestC { public function testConstructorRequiresClassAndMethodAndParameters() { - new PHPUnit_Framework_MockObject_Invocation_Static( - 'FooClass', - 'FooMethod', - ['an_argument'], - 'ReturnType' - ); + new PHPUnit_Framework_MockObject_Invocation_Static('FooClass', 'FooMethod', array('an_argument')); } public function testAllowToGetClassNameSetInConstructor() { - $invocation = new PHPUnit_Framework_MockObject_Invocation_Static( - 'FooClass', - 'FooMethod', - ['an_argument'], - 'ReturnType' - ); + $invocation = new PHPUnit_Framework_MockObject_Invocation_Static('FooClass', 'FooMethod', array('an_argument')); $this->assertSame('FooClass', $invocation->className); } public function testAllowToGetMethodNameSetInConstructor() { - $invocation = new PHPUnit_Framework_MockObject_Invocation_Static( - 'FooClass', - 'FooMethod', - ['an_argument'], - 'ReturnType' - ); + $invocation = new PHPUnit_Framework_MockObject_Invocation_Static('FooClass', 'FooMethod', array('an_argument')); $this->assertSame('FooMethod', $invocation->methodName); } public function testAllowToGetMethodParametersSetInConstructor() { - $expectedParameters = [ - 'foo', 5, ['a', 'b'], new StdClass, null, false - ]; + $expectedParameters = array( + 'foo', 5, array('a', 'b'), new StdClass, NULL, FALSE + ); $invocation = new PHPUnit_Framework_MockObject_Invocation_Static( - 'FooClass', - 'FooMethod', - $expectedParameters, - 'ReturnType' + 'FooClass', 'FooMethod', $expectedParameters ); $this->assertSame($expectedParameters, $invocation->parameters); @@ -54,33 +36,17 @@ public function testAllowToGetMethodParametersSetInConstructor() public function testConstructorAllowToSetFlagCloneObjectsInParameters() { - $parameters = [new StdClass]; - $cloneObjects = true; + $parameters = array(new StdClass); + $cloneObjects = TRUE; $invocation = new PHPUnit_Framework_MockObject_Invocation_Static( - 'FooClass', - 'FooMethod', - $parameters, - 'ReturnType', - $cloneObjects + 'FooClass', + 'FooMethod', + $parameters, + $cloneObjects ); $this->assertEquals($parameters, $invocation->parameters); $this->assertNotSame($parameters, $invocation->parameters); } - - public function testAllowToGetReturnTypeSetInConstructor() - { - $expectedReturnType = 'string'; - - $invocation = new PHPUnit_Framework_MockObject_Invocation_Static( - 'FooClass', - 'FooMethod', - ['an_argument'], - $expectedReturnType - ); - - $this->assertSame($expectedReturnType, $invocation->returnType); - } - } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Matcher/ConsecutiveParametersTest.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Matcher/ConsecutiveParametersTest.php deleted file mode 100644 index 38ad2b7f..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Matcher/ConsecutiveParametersTest.php +++ /dev/null @@ -1,45 +0,0 @@ -getMock('stdClass', ['foo']); - $mock - ->expects($this->any()) - ->method('foo') - ->withConsecutive( - ['bar'], - [21, 42] - ); - $mock->foo('bar'); - $mock->foo(21, 42); - } - - public function testIntegrationWithLessAssertionsThenMethodCalls() - { - $mock = $this->getMock('stdClass', ['foo']); - $mock - ->expects($this->any()) - ->method('foo') - ->withConsecutive( - ['bar'] - ); - $mock->foo('bar'); - $mock->foo(21, 42); - } - - public function testIntegrationExpectingException() - { - $mock = $this->getMock('stdClass', ['foo']); - $mock - ->expects($this->any()) - ->method('foo') - ->withConsecutive( - ['bar'], - [21, 42] - ); - $mock->foo('bar'); - $this->setExpectedException('PHPUnit_Framework_ExpectationFailedException'); - $mock->foo('invalid'); - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/abstract_class.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/abstract_class.phpt deleted file mode 100644 index 8e4f384f..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/abstract_class.phpt +++ /dev/null @@ -1,146 +0,0 @@ ---TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) ---FILE-- -generate( - 'Foo', - array(), - 'MockFoo', - true, - true -); - -print $mock['code']; -?> ---EXPECTF-- -class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject -{ - private $__phpunit_invocationMocker; - private $__phpunit_originalObject; - - public function __clone() - { - $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker(); - } - - public function one() - { - $arguments = array(); - $count = func_num_args(); - - if ($count > 0) { - $_arguments = func_get_args(); - - for ($i = 0; $i < $count; $i++) { - $arguments[] = $_arguments[$i]; - } - } - - $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'one', $arguments, '', $this, true - ) - ); - - return $result; - } - - public function two() - { - $arguments = array(); - $count = func_num_args(); - - if ($count > 0) { - $_arguments = func_get_args(); - - for ($i = 0; $i < $count; $i++) { - $arguments[] = $_arguments[$i]; - } - } - - $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'two', $arguments, '', $this, true - ) - ); - - return $result; - } - - protected function three() - { - $arguments = array(); - $count = func_num_args(); - - if ($count > 0) { - $_arguments = func_get_args(); - - for ($i = 0; $i < $count; $i++) { - $arguments[] = $_arguments[$i]; - } - } - - $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'three', $arguments, '', $this, true - ) - ); - - return $result; - } - - public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher) - { - return $this->__phpunit_getInvocationMocker()->expects($matcher); - } - - public function method() - { - $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount; - $expects = $this->expects($any); - return call_user_func_array(array($expects, 'method'), func_get_args()); - } - - public function __phpunit_setOriginalObject($originalObject) - { - $this->__phpunit_originalObject = $originalObject; - } - - public function __phpunit_getInvocationMocker() - { - if ($this->__phpunit_invocationMocker === null) { - $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; - } - - return $this->__phpunit_invocationMocker; - } - - public function __phpunit_hasMatchers() - { - return $this->__phpunit_getInvocationMocker()->hasMatchers(); - } - - public function __phpunit_verify($unsetInvocationMocker = true) - { - $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class.phpt index 73cc7937..2e40328c 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE) --FILE-- generate( - 'Foo', - array(), - 'MockFoo', - true, - true + 'Foo', + array(), + 'MockFoo', + TRUE, + TRUE ); print $mock['code']; @@ -52,9 +52,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'bar', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'Foo', 'bar', $arguments, $this, TRUE + ) ); return $result; @@ -74,9 +74,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'baz', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'Foo', 'baz', $arguments, $this, TRUE + ) ); return $result; @@ -101,7 +101,7 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -113,12 +113,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_clone.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_clone.phpt index d0dc024b..0f91a986 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_clone.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_clone.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE) --FILE-- generate( - 'Foo', - array(), - 'MockFoo', - true + 'Foo', + array(), + 'MockFoo', + TRUE ); print $mock['code']; @@ -53,7 +53,7 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -65,12 +65,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_constructor.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_constructor.phpt index 07437c14..6f037ee2 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_constructor.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_constructor.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE) --FILE-- generate( - 'Foo', - array(), - 'MockFoo', - true + 'Foo', + array(), + 'MockFoo', + TRUE ); print $mock['code']; @@ -52,7 +52,7 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -64,12 +64,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_clone.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_clone.phpt index 854c31e3..dc829389 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_clone.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_clone.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', false) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', FALSE) --FILE-- generate( - 'Foo', - array(), - 'MockFoo', - false + 'Foo', + array(), + 'MockFoo', + FALSE ); print $mock['code']; @@ -52,7 +52,7 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -64,12 +64,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_constructor.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_constructor.phpt index 07437c14..6f037ee2 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_constructor.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_constructor.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE) --FILE-- generate( - 'Foo', - array(), - 'MockFoo', - true + 'Foo', + array(), + 'MockFoo', + TRUE ); print $mock['code']; @@ -52,7 +52,7 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -64,12 +64,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_call_parent_constructor.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_call_parent_constructor.phpt index ea98a4e7..cfc43d89 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_call_parent_constructor.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_call_parent_constructor.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE) --FILE-- generate( - 'Foo', - array(), - 'MockFoo', - true + 'Foo', + array(), + 'MockFoo', + TRUE ); print $mock['code']; @@ -57,7 +57,7 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -69,12 +69,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_dont_call_parent_constructor.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_dont_call_parent_constructor.phpt index ea98a4e7..cfc43d89 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_dont_call_parent_constructor.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_dont_call_parent_constructor.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE) --FILE-- generate( - 'Foo', - array(), - 'MockFoo', - true + 'Foo', + array(), + 'MockFoo', + TRUE ); print $mock['code']; @@ -57,7 +57,7 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -69,12 +69,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_partial.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_partial.phpt index 74e21744..b8332aed 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_partial.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_partial.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array('bar'), 'MockFoo', true, true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array('bar'), 'MockFoo', TRUE, TRUE) --FILE-- generate( - 'Foo', - array('bar'), - 'MockFoo', - true, - true + 'Foo', + array('bar'), + 'MockFoo', + TRUE, + TRUE ); print $mock['code']; @@ -52,9 +52,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'bar', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'Foo', 'bar', $arguments, $this, TRUE + ) ); return $result; @@ -79,7 +79,7 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -91,12 +91,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_named_method.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_named_method.phpt index 93062201..6e1ddf63 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_named_method.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_named_method.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE) --FILE-- generate( - 'Foo', - array(), - 'MockFoo', - true, - true + 'Foo', + array(), + 'MockFoo', + TRUE, + TRUE ); print $mock['code']; @@ -48,9 +48,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'method', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'Foo', 'method', $arguments, $this, TRUE + ) ); return $result; @@ -68,7 +68,7 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -80,12 +80,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_with_variadic_arguments.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_with_variadic_arguments.phpt deleted file mode 100644 index 3c1b1db4..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_with_variadic_arguments.phpt +++ /dev/null @@ -1,98 +0,0 @@ ---TEST-- -PHPUnit_Framework_MockObject_Generator::generate('ClassWithMethodWithVariadicArguments', array(), 'MockFoo', true, true) ---FILE-- -generate( - 'ClassWithMethodWithVariadicArguments', - array(), - 'MockFoo', - true, - true -); - -print $mock['code']; -?> ---EXPECTF-- -class MockFoo extends ClassWithMethodWithVariadicArguments implements PHPUnit_Framework_MockObject_MockObject -{ - private $__phpunit_invocationMocker; - private $__phpunit_originalObject; - - public function __clone() - { - $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker(); - } - - public function methodWithVariadicArguments($a, ...$parameters) - { - $arguments = array($a); - $count = func_num_args(); - - if ($count > 1) { - $_arguments = func_get_args(); - - for ($i = 1; $i < $count; $i++) { - $arguments[] = $_arguments[$i]; - } - } - - $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'ClassWithMethodWithVariadicArguments', 'methodWithVariadicArguments', $arguments, '', $this, true - ) - ); - - return $result; - } - - public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher) - { - return $this->__phpunit_getInvocationMocker()->expects($matcher); - } - - public function method() - { - $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount; - $expects = $this->expects($any); - return call_user_func_array(array($expects, 'method'), func_get_args()); - } - - public function __phpunit_setOriginalObject($originalObject) - { - $this->__phpunit_originalObject = $originalObject; - } - - public function __phpunit_getInvocationMocker() - { - if ($this->__phpunit_invocationMocker === null) { - $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; - } - - return $this->__phpunit_invocationMocker; - } - - public function __phpunit_hasMatchers() - { - return $this->__phpunit_getInvocationMocker()->hasMatchers(); - } - - public function __phpunit_verify($unsetInvocationMocker = true) - { - $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/interface.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/interface.phpt index 4d27e6e4..2d38209e 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/interface.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/interface.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE) --FILE-- generate( - 'Foo', - array(), - 'MockFoo', - true, - true + 'Foo', + array(), + 'MockFoo', + TRUE, + TRUE ); print $mock['code']; @@ -46,9 +46,9 @@ class MockFoo implements PHPUnit_Framework_MockObject_MockObject, Foo } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'bar', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'Foo', 'bar', $arguments, $this, TRUE + ) ); return $result; @@ -73,7 +73,7 @@ class MockFoo implements PHPUnit_Framework_MockObject_MockObject, Foo public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -85,12 +85,9 @@ class MockFoo implements PHPUnit_Framework_MockObject_MockObject, Foo return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/invocation_object_clone_object.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/invocation_object_clone_object.phpt index 5b489c55..87a979e9 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/invocation_object_clone_object.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/invocation_object_clone_object.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true, true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE, TRUE) --FILE-- generate( - 'Foo', - array(), - 'MockFoo', - true, - true, - true + 'Foo', + array(), + 'MockFoo', + TRUE, + TRUE, + TRUE ); print $mock['code']; @@ -53,9 +53,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'bar', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'Foo', 'bar', $arguments, $this, TRUE + ) ); return $result; @@ -75,9 +75,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'baz', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'Foo', 'baz', $arguments, $this, TRUE + ) ); return $result; @@ -102,7 +102,7 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -114,12 +114,9 @@ class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class.phpt index 3a885309..e30bddc0 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', true, true) +PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE, TRUE) --FILE-- generate( - 'NS\Foo', - array(), - 'MockFoo', - true, - true + 'NS\Foo', + array(), + 'MockFoo', + TRUE, + TRUE ); print $mock['code']; @@ -54,9 +54,9 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'NS\Foo', 'bar', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'NS\Foo', 'bar', $arguments, $this, TRUE + ) ); return $result; @@ -76,9 +76,9 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'NS\Foo', 'baz', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'NS\Foo', 'baz', $arguments, $this, TRUE + ) ); return $result; @@ -103,7 +103,7 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -115,12 +115,9 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_clone.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_clone.phpt index a4cdd208..3dee9c91 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_clone.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_clone.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', true) +PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE) --FILE-- generate( - 'NS\Foo', - array(), - 'MockFoo', - true + 'NS\Foo', + array(), + 'MockFoo', + TRUE ); print $mock['code']; @@ -55,7 +55,7 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -67,12 +67,9 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_constructor.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_constructor.phpt index c88f766f..105a372b 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_constructor.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_constructor.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', true) +PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE) --FILE-- generate( - 'NS\Foo', - array(), - 'MockFoo', - true + 'NS\Foo', + array(), + 'MockFoo', + TRUE ); print $mock['code']; @@ -54,7 +54,7 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -66,12 +66,9 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_clone.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_clone.phpt index e104e74e..1de9253f 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_clone.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_clone.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', false) +PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', FALSE) --FILE-- generate( - 'NS\Foo', - array(), - 'MockFoo', - false + 'NS\Foo', + array(), + 'MockFoo', + FALSE ); print $mock['code']; @@ -54,7 +54,7 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -66,12 +66,9 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_constructor.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_constructor.phpt index c88f766f..105a372b 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_constructor.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_constructor.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', true) +PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE) --FILE-- generate( - 'NS\Foo', - array(), - 'MockFoo', - true + 'NS\Foo', + array(), + 'MockFoo', + TRUE ); print $mock['code']; @@ -54,7 +54,7 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -66,12 +66,9 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_call_parent_constructor.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_call_parent_constructor.phpt index 9343250e..6b9f6bcb 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_call_parent_constructor.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_call_parent_constructor.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', true) +PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE) --FILE-- generate( - 'NS\Foo', - array(), - 'MockFoo', - true + 'NS\Foo', + array(), + 'MockFoo', + TRUE ); print $mock['code']; @@ -59,7 +59,7 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -71,12 +71,9 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_dont_call_parent_constructor.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_dont_call_parent_constructor.phpt index 9343250e..6b9f6bcb 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_dont_call_parent_constructor.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_dont_call_parent_constructor.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', true) +PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE) --FILE-- generate( - 'NS\Foo', - array(), - 'MockFoo', - true + 'NS\Foo', + array(), + 'MockFoo', + TRUE ); print $mock['code']; @@ -59,7 +59,7 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -71,12 +71,9 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_partial.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_partial.phpt index 75f38598..86fee1cb 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_partial.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_partial.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array('bar'), 'MockFoo', true, true) +PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array('bar'), 'MockFoo', TRUE, TRUE) --FILE-- generate( - 'NS\Foo', - array('bar'), - 'MockFoo', - true, - true + 'NS\Foo', + array('bar'), + 'MockFoo', + TRUE, + TRUE ); print $mock['code']; @@ -54,9 +54,9 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'NS\Foo', 'bar', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'NS\Foo', 'bar', $arguments, $this, TRUE + ) ); return $result; @@ -81,7 +81,7 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -93,12 +93,9 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_interface.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_interface.phpt index d4147112..80486463 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_interface.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_interface.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', true, true) +PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE, TRUE) --FILE-- generate( - 'NS\Foo', - array(), - 'MockFoo', - true, - true + 'NS\Foo', + array(), + 'MockFoo', + TRUE, + TRUE ); print $mock['code']; @@ -48,9 +48,9 @@ class MockFoo implements PHPUnit_Framework_MockObject_MockObject, NS\Foo } $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'NS\Foo', 'bar', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'NS\Foo', 'bar', $arguments, $this, TRUE + ) ); return $result; @@ -75,7 +75,7 @@ class MockFoo implements PHPUnit_Framework_MockObject_MockObject, NS\Foo public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -87,12 +87,9 @@ class MockFoo implements PHPUnit_Framework_MockObject_MockObject, NS\Foo return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class.phpt index 348a8540..5dbb3852 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('NonExistentClass', array(), 'MockFoo', true, true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE) --FILE-- generate( - 'NonExistentClass', - array(), - 'MockFoo', - true, - true + 'Foo', + array(), + 'MockFoo', + TRUE, + TRUE ); print $mock['code']; ?> --EXPECTF-- -class NonExistentClass +class Foo { } -class MockFoo extends NonExistentClass implements PHPUnit_Framework_MockObject_MockObject +class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject { private $__phpunit_invocationMocker; private $__phpunit_originalObject; @@ -50,7 +50,7 @@ class MockFoo extends NonExistentClass implements PHPUnit_Framework_MockObject_M public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -62,12 +62,9 @@ class MockFoo extends NonExistentClass implements PHPUnit_Framework_MockObject_M return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace.phpt index 38dd2cdd..78689775 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE) --FILE-- generate( - 'NS\Foo', - array(), - 'MockFoo', - true, - true + 'NS\Foo', + array(), + 'MockFoo', + TRUE, + TRUE ); print $mock['code']; @@ -56,7 +56,7 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -68,13 +68,10 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace_starting_with_separator.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace_starting_with_separator.phpt index 514796ea..b59d1ddf 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace_starting_with_separator.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace_starting_with_separator.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE) --FILE-- generate( - '\NS\Foo', - array(), - 'MockFoo', - true, - true + '\NS\Foo', + array(), + 'MockFoo', + TRUE, + TRUE ); print $mock['code']; @@ -56,7 +56,7 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -68,13 +68,10 @@ class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/proxy.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/proxy.phpt index 0e83a82a..f31bf3ff 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/proxy.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/proxy.phpt @@ -1,5 +1,5 @@ --TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', null, 'ProxyFoo', true, true, true, true) +PHPUnit_Framework_MockObject_Generator::generate('Foo', NULL, 'ProxyFoo', TRUE, TRUE, TRUE, TRUE) --FILE-- generate( - 'Foo', array(), 'ProxyFoo', true, true, true, true + 'Foo', array(), 'ProxyFoo', TRUE, TRUE, TRUE, TRUE ); print $mock['code']; @@ -48,9 +48,9 @@ class ProxyFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject } $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'bar', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'Foo', 'bar', $arguments, $this, TRUE + ) ); return call_user_func_array(array($this->__phpunit_originalObject, "bar"), $arguments); @@ -70,9 +70,9 @@ class ProxyFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject } $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'baz', $arguments, '', $this, true - ) + new PHPUnit_Framework_MockObject_Invocation_Object( + 'Foo', 'baz', $arguments, $this, TRUE + ) ); return call_user_func_array(array($this->__phpunit_originalObject, "baz"), $arguments); @@ -97,7 +97,7 @@ class ProxyFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject public function __phpunit_getInvocationMocker() { - if ($this->__phpunit_invocationMocker === null) { + if ($this->__phpunit_invocationMocker === NULL) { $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; } @@ -109,12 +109,9 @@ class ProxyFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject return $this->__phpunit_getInvocationMocker()->hasMatchers(); } - public function __phpunit_verify($unsetInvocationMocker = true) + public function __phpunit_verify() { $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } + $this->__phpunit_invocationMocker = NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/return_type_declarations_object_method.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/return_type_declarations_object_method.phpt deleted file mode 100644 index d1c50e95..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/return_type_declarations_object_method.phpt +++ /dev/null @@ -1,103 +0,0 @@ ---TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) ---SKIPIF-- -= 7.0.0 required'; -?> ---FILE-- -generate( - 'Foo', - array(), - 'MockFoo', - true, - true -); - -print $mock['code']; -?> ---EXPECTF-- -class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject -{ - private $__phpunit_invocationMocker; - private $__phpunit_originalObject; - - public function __clone() - { - $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker(); - } - - public function bar(string $baz): Bar - { - $arguments = array($baz); - $count = func_num_args(); - - if ($count > 1) { - $_arguments = func_get_args(); - - for ($i = 1; $i < $count; $i++) { - $arguments[] = $_arguments[$i]; - } - } - - $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'bar', $arguments, 'Bar', $this, true - ) - ); - - return $result; - } - - public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher) - { - return $this->__phpunit_getInvocationMocker()->expects($matcher); - } - - public function method() - { - $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount; - $expects = $this->expects($any); - return call_user_func_array(array($expects, 'method'), func_get_args()); - } - - public function __phpunit_setOriginalObject($originalObject) - { - $this->__phpunit_originalObject = $originalObject; - } - - public function __phpunit_getInvocationMocker() - { - if ($this->__phpunit_invocationMocker === null) { - $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; - } - - return $this->__phpunit_invocationMocker; - } - - public function __phpunit_hasMatchers() - { - return $this->__phpunit_getInvocationMocker()->hasMatchers(); - } - - public function __phpunit_verify($unsetInvocationMocker = true) - { - $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/return_type_declarations_self.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/return_type_declarations_self.phpt deleted file mode 100644 index 97382e60..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/return_type_declarations_self.phpt +++ /dev/null @@ -1,100 +0,0 @@ ---TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) ---SKIPIF-- -= 7.0.0 required'; -?> ---FILE-- -generate( - 'Foo', - array(), - 'MockFoo', - true, - true -); - -print $mock['code']; -?> ---EXPECTF-- -class MockFoo implements PHPUnit_Framework_MockObject_MockObject, Foo -{ - private $__phpunit_invocationMocker; - private $__phpunit_originalObject; - - public function __clone() - { - $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker(); - } - - public function bar(string $baz): Foo - { - $arguments = array($baz); - $count = func_num_args(); - - if ($count > 1) { - $_arguments = func_get_args(); - - for ($i = 1; $i < $count; $i++) { - $arguments[] = $_arguments[$i]; - } - } - - $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'bar', $arguments, 'Foo', $this, true - ) - ); - - return $result; - } - - public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher) - { - return $this->__phpunit_getInvocationMocker()->expects($matcher); - } - - public function method() - { - $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount; - $expects = $this->expects($any); - return call_user_func_array(array($expects, 'method'), func_get_args()); - } - - public function __phpunit_setOriginalObject($originalObject) - { - $this->__phpunit_originalObject = $originalObject; - } - - public function __phpunit_getInvocationMocker() - { - if ($this->__phpunit_invocationMocker === null) { - $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; - } - - return $this->__phpunit_invocationMocker; - } - - public function __phpunit_hasMatchers() - { - return $this->__phpunit_getInvocationMocker()->hasMatchers(); - } - - public function __phpunit_verify($unsetInvocationMocker = true) - { - $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/return_type_declarations_static_method.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/return_type_declarations_static_method.phpt deleted file mode 100644 index 8bc7cfd2..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/return_type_declarations_static_method.phpt +++ /dev/null @@ -1,86 +0,0 @@ ---TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) ---SKIPIF-- -= 7.0.0 required'; -?> ---FILE-- -generate( - 'Foo', - array(), - 'MockFoo', - true, - true -); - -print $mock['code']; -?> ---EXPECTF-- -class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject -{ - private $__phpunit_invocationMocker; - private $__phpunit_originalObject; - - public function __clone() - { - $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker(); - } - - public static function bar(string $baz): Bar - { - throw new PHPUnit_Framework_MockObject_BadMethodCallException; - } - - public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher) - { - return $this->__phpunit_getInvocationMocker()->expects($matcher); - } - - public function method() - { - $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount; - $expects = $this->expects($any); - return call_user_func_array(array($expects, 'method'), func_get_args()); - } - - public function __phpunit_setOriginalObject($originalObject) - { - $this->__phpunit_originalObject = $originalObject; - } - - public function __phpunit_getInvocationMocker() - { - if ($this->__phpunit_invocationMocker === null) { - $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; - } - - return $this->__phpunit_invocationMocker; - } - - public function __phpunit_hasMatchers() - { - return $this->__phpunit_getInvocationMocker()->hasMatchers(); - } - - public function __phpunit_verify($unsetInvocationMocker = true) - { - $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/scalar_type_declarations.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/scalar_type_declarations.phpt deleted file mode 100644 index fea09499..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/scalar_type_declarations.phpt +++ /dev/null @@ -1,102 +0,0 @@ ---TEST-- -PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) ---SKIPIF-- -= 7.0.0 required'; -?> ---FILE-- -generate( - 'Foo', - array(), - 'MockFoo', - true, - true -); - -print $mock['code']; -?> ---EXPECTF-- -class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject -{ - private $__phpunit_invocationMocker; - private $__phpunit_originalObject; - - public function __clone() - { - $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker(); - } - - public function bar(string $baz) - { - $arguments = array($baz); - $count = func_num_args(); - - if ($count > 1) { - $_arguments = func_get_args(); - - for ($i = 1; $i < $count; $i++) { - $arguments[] = $_arguments[$i]; - } - } - - $result = $this->__phpunit_getInvocationMocker()->invoke( - new PHPUnit_Framework_MockObject_Invocation_Object( - 'Foo', 'bar', $arguments, '', $this, true - ) - ); - - return $result; - } - - public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher) - { - return $this->__phpunit_getInvocationMocker()->expects($matcher); - } - - public function method() - { - $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount; - $expects = $this->expects($any); - return call_user_func_array(array($expects, 'method'), func_get_args()); - } - - public function __phpunit_setOriginalObject($originalObject) - { - $this->__phpunit_originalObject = $originalObject; - } - - public function __phpunit_getInvocationMocker() - { - if ($this->__phpunit_invocationMocker === null) { - $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker; - } - - return $this->__phpunit_invocationMocker; - } - - public function __phpunit_hasMatchers() - { - return $this->__phpunit_getInvocationMocker()->hasMatchers(); - } - - public function __phpunit_verify($unsetInvocationMocker = true) - { - $this->__phpunit_getInvocationMocker()->verify(); - - if ($unsetInvocationMocker) { - $this->__phpunit_invocationMocker = null; - } - } -} diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class.phpt index 38a752d2..6b2d0a34 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class.phpt @@ -11,8 +11,8 @@ require __DIR__ . '/../../vendor/autoload.php'; $generator = new PHPUnit_Framework_MockObject_Generator; print $generator->generateClassFromWsdl( - dirname(dirname(__FILE__)) . '/_fixture/GoogleSearch.wsdl', - 'GoogleSearch' + dirname(dirname(__FILE__)) . '/_files/GoogleSearch.wsdl', + 'GoogleSearch' ); ?> --EXPECTF-- diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_namespace.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_namespace.phpt index d35ed090..dc819cf0 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_namespace.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_namespace.phpt @@ -11,8 +11,8 @@ require __DIR__ . '/../../vendor/autoload.php'; $generator = new PHPUnit_Framework_MockObject_Generator; print $generator->generateClassFromWsdl( - dirname(dirname(__FILE__)) . '/_fixture/GoogleSearch.wsdl', - 'My\\Space\\GoogleSearch' + dirname(dirname(__FILE__)) . '/_files/GoogleSearch.wsdl', + 'My\\Space\\GoogleSearch' ); ?> --EXPECTF-- diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_partial.phpt b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_partial.phpt index 8ca943f5..879fbd36 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_partial.phpt +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_partial.phpt @@ -11,9 +11,9 @@ require __DIR__ . '/../../vendor/autoload.php'; $generator = new PHPUnit_Framework_MockObject_Generator; print $generator->generateClassFromWsdl( - dirname(dirname(__FILE__)) . '/_fixture/GoogleSearch.wsdl', - 'GoogleSearch', - array('doGoogleSearch') + dirname(dirname(__FILE__)) . '/_files/GoogleSearch.wsdl', + 'GoogleSearch', + array('doGoogleSearch') ); ?> --EXPECTF-- diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObjectTest.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObjectTest.php index 7af949eb..2b37338d 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObjectTest.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/MockObjectTest.php @@ -1,14 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** + * + * + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @author Patrick Mueller + * @author Frank Kleine + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://www.phpunit.de/ * @since Class available since Release 3.0.0 */ class Framework_MockObjectTest extends PHPUnit_Framework_TestCase @@ -62,46 +106,6 @@ public function testMockedMethodIsCalledAtLeastOnce2() $mock->doSomething(); } - public function testMockedMethodIsCalledAtLeastTwice() - { - $mock = $this->getMock('AnInterface'); - $mock->expects($this->atLeast(2)) - ->method('doSomething'); - - $mock->doSomething(); - $mock->doSomething(); - } - - public function testMockedMethodIsCalledAtLeastTwice2() - { - $mock = $this->getMock('AnInterface'); - $mock->expects($this->atLeast(2)) - ->method('doSomething'); - - $mock->doSomething(); - $mock->doSomething(); - $mock->doSomething(); - } - - public function testMockedMethodIsCalledAtMostTwice() - { - $mock = $this->getMock('AnInterface'); - $mock->expects($this->atMost(2)) - ->method('doSomething'); - - $mock->doSomething(); - $mock->doSomething(); - } - - public function testMockedMethodIsCalledAtMosttTwice2() - { - $mock = $this->getMock('AnInterface'); - $mock->expects($this->atMost(2)) - ->method('doSomething'); - - $mock->doSomething(); - } - public function testMockedMethodIsCalledOnce() { $mock = $this->getMock('AnInterface'); @@ -182,10 +186,10 @@ public function testStubbedReturnValue() public function testStubbedReturnValueMap() { - $map = [ - ['a', 'b', 'c', 'd'], - ['e', 'f', 'g', 'h'] - ]; + $map = array( + array('a', 'b', 'c', 'd'), + array('e', 'f', 'g', 'h') + ); $mock = $this->getMock('AnInterface'); $mock->expects($this->any()) @@ -194,7 +198,7 @@ public function testStubbedReturnValueMap() $this->assertEquals('d', $mock->doSomething('a', 'b', 'c')); $this->assertEquals('h', $mock->doSomething('e', 'f', 'g')); - $this->assertEquals(null, $mock->doSomething('foo', 'bar')); + $this->assertEquals(NULL, $mock->doSomething('foo', 'bar')); $mock = $this->getMock('AnInterface'); $mock->expects($this->any()) @@ -203,7 +207,7 @@ public function testStubbedReturnValueMap() $this->assertEquals('d', $mock->doSomething('a', 'b', 'c')); $this->assertEquals('h', $mock->doSomething('e', 'f', 'g')); - $this->assertEquals(null, $mock->doSomething('foo', 'bar')); + $this->assertEquals(NULL, $mock->doSomething('foo', 'bar')); } public function testStubbedReturnArgument() @@ -225,14 +229,14 @@ public function testStubbedReturnArgument() public function testFunctionCallback() { - $mock = $this->getMock('SomeClass', ['doSomething'], [], '', false); + $mock = $this->getMock('SomeClass', array('doSomething'), array(), '', FALSE); $mock->expects($this->once()) ->method('doSomething') ->will($this->returnCallback('functionCallback')); $this->assertEquals('pass', $mock->doSomething('foo', 'bar')); - $mock = $this->getMock('SomeClass', ['doSomething'], [], '', false); + $mock = $this->getMock('SomeClass', array('doSomething'), array(), '', FALSE); $mock->expects($this->once()) ->method('doSomething') ->willReturnCallback('functionCallback'); @@ -280,20 +284,20 @@ public function testStubbedReturnOnConsecutiveCalls() public function testStaticMethodCallback() { - $mock = $this->getMock('SomeClass', ['doSomething'], [], '', false); + $mock = $this->getMock('SomeClass', array('doSomething'), array(), '', FALSE); $mock->expects($this->once()) ->method('doSomething') - ->will($this->returnCallback(['MethodCallback', 'staticCallback'])); + ->will($this->returnCallback(array('MethodCallback', 'staticCallback'))); $this->assertEquals('pass', $mock->doSomething('foo', 'bar')); } public function testPublicMethodCallback() { - $mock = $this->getMock('SomeClass', ['doSomething'], [], '', false); + $mock = $this->getMock('SomeClass', array('doSomething'), array(), '', FALSE); $mock->expects($this->once()) ->method('doSomething') - ->will($this->returnCallback([new MethodCallback, 'nonStaticCallback'])); + ->will($this->returnCallback(array(new MethodCallback, 'nonStaticCallback'))); $this->assertEquals('pass', $mock->doSomething('foo', 'bar')); } @@ -309,10 +313,10 @@ public function testMockClassOnlyGeneratedOnce() public function testMockClassDifferentForPartialMocks() { $mock1 = $this->getMock('PartialMockTestClass'); - $mock2 = $this->getMock('PartialMockTestClass', ['doSomething']); - $mock3 = $this->getMock('PartialMockTestClass', ['doSomething']); - $mock4 = $this->getMock('PartialMockTestClass', ['doAnotherThing']); - $mock5 = $this->getMock('PartialMockTestClass', ['doAnotherThing']); + $mock2 = $this->getMock('PartialMockTestClass', array('doSomething')); + $mock3 = $this->getMock('PartialMockTestClass', array('doSomething')); + $mock4 = $this->getMock('PartialMockTestClass', array('doAnotherThing')); + $mock5 = $this->getMock('PartialMockTestClass', array('doAnotherThing')); $this->assertNotEquals(get_class($mock1), get_class($mock2)); $this->assertNotEquals(get_class($mock1), get_class($mock3)); @@ -327,10 +331,10 @@ public function testMockClassDifferentForPartialMocks() public function testMockClassStoreOverrulable() { $mock1 = $this->getMock('PartialMockTestClass'); - $mock2 = $this->getMock('PartialMockTestClass', [], [], 'MyMockClassNameForPartialMockTestClass1'); + $mock2 = $this->getMock('PartialMockTestClass', array(), array(), 'MyMockClassNameForPartialMockTestClass1'); $mock3 = $this->getMock('PartialMockTestClass'); - $mock4 = $this->getMock('PartialMockTestClass', ['doSomething'], [], 'AnotherMockClassNameForPartialMockTestClass'); - $mock5 = $this->getMock('PartialMockTestClass', [], [], 'MyMockClassNameForPartialMockTestClass2'); + $mock4 = $this->getMock('PartialMockTestClass', array('doSomething'), array(), 'AnotherMockClassNameForPartialMockTestClass'); + $mock5 = $this->getMock('PartialMockTestClass', array(), array(), 'MyMockClassNameForPartialMockTestClass2'); $this->assertNotEquals(get_class($mock1), get_class($mock2)); $this->assertEquals(get_class($mock1), get_class($mock3)); @@ -356,7 +360,7 @@ public function testGetMockWithFixedClassNameCanProduceTheSameMockTwice() public function testOriginalConstructorSettingConsidered() { $mock1 = $this->getMock('PartialMockTestClass'); - $mock2 = $this->getMock('PartialMockTestClass', [], [], '', false); + $mock2 = $this->getMock('PartialMockTestClass', array(), array(), '', FALSE); $this->assertTrue($mock1->constructorCalled); $this->assertFalse($mock2->constructorCalled); @@ -365,7 +369,7 @@ public function testOriginalConstructorSettingConsidered() public function testOriginalCloneSettingConsidered() { $mock1 = $this->getMock('PartialMockTestClass'); - $mock2 = $this->getMock('PartialMockTestClass', [], [], '', true, false); + $mock2 = $this->getMock('PartialMockTestClass', array(), array(), '', TRUE, FALSE); $this->assertNotEquals(get_class($mock1), get_class($mock2)); } @@ -377,41 +381,29 @@ public function testGetMockForAbstractClass() ->method('doSomething'); } - public function traversableProvider() - { - return [ - ['Traversable'], - ['\Traversable'], - ['TraversableMockTestInterface'], - [['Traversable']], - [['Iterator','Traversable']], - [['\Iterator','\Traversable']] - ]; - } - - /** - * @dataProvider traversableProvider - */ - public function testGetMockForTraversable($type) + public function testGetMockForTraversableInterface() { - $mock = $this->getMock($type); + $mock = $this->getMock('TraversableMockTestInterface'); $this->assertInstanceOf('Traversable', $mock); } public function testMultipleInterfacesCanBeMockedInSingleObject() { - $mock = $this->getMock(['AnInterface', 'AnotherInterface']); + $mock = $this->getMock(array('AnInterface', 'AnotherInterface')); $this->assertInstanceOf('AnInterface', $mock); $this->assertInstanceOf('AnotherInterface', $mock); } + /** + * @requires PHP 5.4.0 + */ public function testGetMockForTrait() { $mock = $this->getMockForTrait('AbstractTrait'); $mock->expects($this->never())->method('doSomething'); $parent = get_parent_class($mock); - $traits = class_uses($parent, false); + $traits = class_uses($parent, FALSE); $this->assertContains('AbstractTrait', $traits); } @@ -442,7 +434,7 @@ public function testClonedMockObjectCanBeUsedInPlaceOfOriginalOne() $x = $this->getMock('stdClass'); $y = clone $x; - $mock = $this->getMock('stdClass', ['foo']); + $mock = $this->getMock('stdClass', array('foo')); $mock->expects($this->once())->method('foo')->with($this->equalTo($x)); $mock->foo($y); } @@ -452,7 +444,7 @@ public function testClonedMockObjectIsNotIdenticalToOriginalOne() $x = $this->getMock('stdClass'); $y = clone $x; - $mock = $this->getMock('stdClass', ['foo']); + $mock = $this->getMock('stdClass', array('foo')); $mock->expects($this->once())->method('foo')->with($this->logicalNot($this->identicalTo($x))); $mock->foo($y); } @@ -462,11 +454,11 @@ public function testObjectMethodCallWithArgumentCloningEnabled() $expectedObject = new StdClass; $mock = $this->getMockBuilder('SomeClass') - ->setMethods(['doSomethingElse']) + ->setMethods(array('doSomethingElse')) ->enableArgumentCloning() ->getMock(); - $actualArguments = []; + $actualArguments = array(); $mock->expects($this->any()) ->method('doSomethingElse') @@ -486,11 +478,11 @@ public function testObjectMethodCallWithArgumentCloningDisabled() $expectedObject = new StdClass; $mock = $this->getMockBuilder('SomeClass') - ->setMethods(['doSomethingElse']) + ->setMethods(array('doSomethingElse')) ->disableArgumentCloning() ->getMock(); - $actualArguments = []; + $actualArguments = array(); $mock->expects($this->any()) ->method('doSomethingElse') @@ -507,12 +499,12 @@ public function testObjectMethodCallWithArgumentCloningDisabled() public function testArgumentCloningOptionGeneratesUniqueMock() { $mockWithCloning = $this->getMockBuilder('SomeClass') - ->setMethods(['doSomethingElse']) + ->setMethods(array('doSomethingElse')) ->enableArgumentCloning() ->getMock(); $mockWithoutCloning = $this->getMockBuilder('SomeClass') - ->setMethods(['doSomethingElse']) + ->setMethods(array('doSomethingElse')) ->disableArgumentCloning() ->getMock(); @@ -521,7 +513,7 @@ public function testArgumentCloningOptionGeneratesUniqueMock() public function testVerificationOfMethodNameFailsWithoutParameters() { - $mock = $this->getMock('SomeClass', ['right', 'wrong'], [], '', true, true, true); + $mock = $this->getMock('SomeClass', array('right', 'wrong'), array(), '', TRUE, TRUE, TRUE); $mock->expects($this->once()) ->method('right'); @@ -542,7 +534,7 @@ public function testVerificationOfMethodNameFailsWithoutParameters() public function testVerificationOfMethodNameFailsWithParameters() { - $mock = $this->getMock('SomeClass', ['right', 'wrong'], [], '', true, true, true); + $mock = $this->getMock('SomeClass', array('right', 'wrong'), array(), '', TRUE, TRUE, TRUE); $mock->expects($this->once()) ->method('right'); @@ -563,18 +555,18 @@ public function testVerificationOfMethodNameFailsWithParameters() public function testVerificationOfMethodNameFailsWithWrongParameters() { - $mock = $this->getMock('SomeClass', ['right', 'wrong'], [], '', true, true, true); + $mock = $this->getMock('SomeClass', array('right', 'wrong'), array(), '', TRUE, TRUE, TRUE); $mock->expects($this->once()) ->method('right') - ->with(['first', 'second']); + ->with(array('first', 'second')); try { - $mock->right(['second']); + $mock->right(array('second')); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertSame( "Expectation failed for method name is equal to when invoked 1 time(s)\n" . "Parameter 0 for invocation SomeClass::right(Array (...)) does not match expected value.\n" - . 'Failed asserting that two arrays are equal.', + . "Failed asserting that two arrays are equal.", $e->getMessage() ); } @@ -604,7 +596,7 @@ public function testVerificationOfMethodNameFailsWithWrongParameters() public function testVerificationOfNeverFailsWithEmptyParameters() { - $mock = $this->getMock('SomeClass', ['right', 'wrong'], [], '', true, true, true); + $mock = $this->getMock('SomeClass', array('right', 'wrong'), array(), '', TRUE, TRUE, TRUE); $mock->expects($this->never()) ->method('right') ->with(); @@ -624,7 +616,7 @@ public function testVerificationOfNeverFailsWithEmptyParameters() public function testVerificationOfNeverFailsWithAnyParameters() { - $mock = $this->getMock('SomeClass', ['right', 'wrong'], [], '', true, true, true); + $mock = $this->getMock('SomeClass', array('right', 'wrong'), array(), '', TRUE, TRUE, TRUE); $mock->expects($this->never()) ->method('right') ->withAnyParameters(); @@ -642,45 +634,20 @@ public function testVerificationOfNeverFailsWithAnyParameters() $this->resetMockObjects(); } - /** - * @ticket 199 - */ - public function testWithAnythingInsteadOfWithAnyParameters() - { - $mock = $this->getMock('SomeClass', ['right'], [], '', true, true, true); - $mock->expects($this->once()) - ->method('right') - ->with($this->anything()); - - try { - $mock->right(); - $this->fail('Expected exception'); - } catch (PHPUnit_Framework_ExpectationFailedException $e) { - $this->assertSame( - "Expectation failed for method name is equal to when invoked 1 time(s)\n" . - "Parameter count for invocation SomeClass::right() is too low.\n" . - 'To allow 0 or more parameters with any value, omit ->with() or use ->withAnyParameters() instead.', - $e->getMessage() - ); - } - - $this->resetMockObjects(); - } - /** * See https://github.com/sebastianbergmann/phpunit-mock-objects/issues/81 */ public function testMockArgumentsPassedByReference() { $foo = $this->getMockBuilder('MethodCallbackByReference') - ->setMethods(['bar']) + ->setMethods(array('bar')) ->disableOriginalConstructor() ->disableArgumentCloning() ->getMock(); $foo->expects($this->any()) ->method('bar') - ->will($this->returnCallback([$foo, 'callback'])); + ->will($this->returnCallback(array($foo, 'callback'))); $a = $b = $c = 0; @@ -702,9 +669,9 @@ public function testMockArgumentsPassedByReference2() $foo->expects($this->any()) ->method('bar') ->will($this->returnCallback( - function (&$a, &$b, $c) { - $b = 1; - } + function (&$a, &$b, $c) { + $b = 1; + } )); $a = $b = $c = 0; @@ -720,7 +687,7 @@ function (&$a, &$b, $c) { public function testMockArgumentsPassedByReference3() { $foo = $this->getMockBuilder('MethodCallbackByReference') - ->setMethods(['bar']) + ->setMethods(array('bar')) ->disableOriginalConstructor() ->disableArgumentCloning() ->getMock(); @@ -731,7 +698,7 @@ public function testMockArgumentsPassedByReference3() $foo->expects($this->any()) ->method('bar') ->with($a, $b, $c) - ->will($this->returnCallback([$foo, 'callback'])); + ->will($this->returnCallback(array($foo, 'callback'))); $foo->bar($a, $b, $c); } @@ -742,7 +709,7 @@ public function testMockArgumentsPassedByReference3() public function testMockArgumentsPassedByReference4() { $foo = $this->getMockBuilder('MethodCallbackByReference') - ->setMethods(['bar']) + ->setMethods(array('bar')) ->disableOriginalConstructor() ->disableArgumentCloning() ->getMock(); @@ -752,8 +719,8 @@ public function testMockArgumentsPassedByReference4() $foo->expects($this->any()) ->method('bar') - ->with($this->isInstanceOf('stdClass'), $b, $c) - ->will($this->returnCallback([$foo, 'callback'])); + ->with($this->isInstanceOf("stdClass"), $b, $c) + ->will($this->returnCallback(array($foo, 'callback'))); $foo->bar($a, $b, $c); } @@ -763,7 +730,7 @@ public function testMockArgumentsPassedByReference4() */ public function testCreateMockFromWsdl() { - $mock = $this->getMockFromWsdl(__DIR__ . '/_fixture/GoogleSearch.wsdl', 'WsdlMock'); + $mock = $this->getMockFromWsdl(__DIR__ . '/_files/GoogleSearch.wsdl', 'WsdlMock'); $this->assertStringStartsWith( 'Mock_WsdlMock_', get_class($mock) @@ -775,7 +742,7 @@ public function testCreateMockFromWsdl() */ public function testCreateNamespacedMockFromWsdl() { - $mock = $this->getMockFromWsdl(__DIR__ . '/_fixture/GoogleSearch.wsdl', 'My\\Space\\WsdlMock'); + $mock = $this->getMockFromWsdl(__DIR__ . '/_files/GoogleSearch.wsdl', 'My\\Space\\WsdlMock'); $this->assertStringStartsWith( 'Mock_WsdlMock_', get_class($mock) @@ -787,8 +754,8 @@ public function testCreateNamespacedMockFromWsdl() */ public function testCreateTwoMocksOfOneWsdlFile() { - $mock = $this->getMockFromWsdl(__DIR__ . '/_fixture/GoogleSearch.wsdl'); - $mock = $this->getMockFromWsdl(__DIR__ . '/_fixture/GoogleSearch.wsdl'); + $mock = $this->getMockFromWsdl(__DIR__ . '/_files/GoogleSearch.wsdl'); + $mock = $this->getMockFromWsdl(__DIR__ . '/_files/GoogleSearch.wsdl'); } /** @@ -832,13 +799,6 @@ private function resetMockObjects() $refl = $refl->getParentClass(); $prop = $refl->getProperty('mockObjects'); $prop->setAccessible(true); - $prop->setValue($this, []); - } - - public function testStringableClassDoesNotThrow() - { - $mock = $this->getMock('StringableClass'); - - $this->assertInternalType('string', (string) $mock); + $prop->setValue($this, array()); } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/ProxyObjectTest.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/ProxyObjectTest.php index 2dde7e47..3e735211 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/ProxyObjectTest.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/ProxyObjectTest.php @@ -1,14 +1,54 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** + * @package PHPUnit_MockObject + * @author Sebastian Bergmann + * @copyright 2010-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @version Release: @package_version@ + * @link http://www.phpunit.de/ * @since Class available since Release 2.0.0 */ class Framework_ProxyObjectTest extends PHPUnit_Framework_TestCase diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractMockTestClass.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/_files/AbstractMockTestClass.php similarity index 64% rename from tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractMockTestClass.php rename to tests/vendor/phpunit/phpunit-mock-objects/tests/_files/AbstractMockTestClass.php index 1f2640cb..b006e2d5 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractMockTestClass.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/_files/AbstractMockTestClass.php @@ -1,5 +1,5 @@ constructorArgs = [$arg1, $arg2]; + $this->constructorArgs = array($arg1, $arg2); } public function mockableMethod() { // something different from NULL - return true; + return TRUE; } public function anotherMockableMethod() { // something different from NULL - return true; + return TRUE; } public function __clone() { - $this->cloned = true; + $this->cloned = TRUE; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/PartialMockTestClass.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/_files/PartialMockTestClass.php similarity index 69% rename from tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/PartialMockTestClass.php rename to tests/vendor/phpunit/phpunit-mock-objects/tests/_files/PartialMockTestClass.php index 06099933..1b119f12 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/PartialMockTestClass.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/_files/PartialMockTestClass.php @@ -1,11 +1,11 @@ constructorCalled = true; + $this->constructorCalled = TRUE; } public function doSomething() diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/SomeClass.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/_files/SomeClass.php similarity index 75% rename from tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/SomeClass.php rename to tests/vendor/phpunit/phpunit-mock-objects/tests/_files/SomeClass.php index a6e5f4c1..2cd53b21 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/SomeClass.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/_files/SomeClass.php @@ -3,11 +3,11 @@ class SomeClass { public function doSomething($a, $b) { - return; + return NULL; } public function doSomethingElse($c) { - return; + return NULL; } } diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/StaticMockTestClass.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/_files/StaticMockTestClass.php similarity index 100% rename from tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/StaticMockTestClass.php rename to tests/vendor/phpunit/phpunit-mock-objects/tests/_files/StaticMockTestClass.php diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/TraversableMockTestInterface.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/_files/TraversableMockTestInterface.php similarity index 100% rename from tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/TraversableMockTestInterface.php rename to tests/vendor/phpunit/phpunit-mock-objects/tests/_files/TraversableMockTestInterface.php diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/InterfaceWithSemiReservedMethodName.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/InterfaceWithSemiReservedMethodName.php deleted file mode 100644 index bcef2942..00000000 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/_fixture/InterfaceWithSemiReservedMethodName.php +++ /dev/null @@ -1,5 +0,0 @@ - '/_files/AbstractMockTestClass.php', + 'abstracttrait' => '/_files/AbstractTrait.php', + 'aninterface' => '/_files/AnInterface.php', + 'anotherinterface' => '/_files/AnotherInterface.php', + 'bar' => '/_files/Bar.php', + 'classthatimplementsserializable' => '/_files/ClassThatImplementsSerializable.php', + 'classwithstaticmethod' => '/_files/ClassWithStaticMethod.php', + 'foo' => '/_files/Foo.php', + 'framework_mockbuildertest' => '/MockBuilderTest.php', + 'framework_mockobject_generatortest' => '/GeneratorTest.php', + 'framework_mockobject_invocation_objecttest' => '/MockObject/Invocation/ObjectTest.php', + 'framework_mockobject_invocation_statictest' => '/MockObject/Invocation/StaticTest.php', + 'framework_mockobjecttest' => '/MockObjectTest.php', + 'framework_proxyobjecttest' => '/ProxyObjectTest.php', + 'interfacewithstaticmethod' => '/_files/InterfaceWithStaticMethod.php', + 'methodcallback' => '/_files/MethodCallback.php', + 'methodcallbackbyreference' => '/_files/MethodCallbackByReference.php', + 'mockable' => '/_files/Mockable.php', + 'partialmocktestclass' => '/_files/PartialMockTestClass.php', + 'someclass' => '/_files/SomeClass.php', + 'staticmocktestclass' => '/_files/StaticMockTestClass.php', + 'traversablemocktestinterface' => '/_files/TraversableMockTestInterface.php' + ); + } + $cn = strtolower($class); + if (isset($classes[$cn])) { + require __DIR__ . $classes[$cn]; + } + } +); +// @codeCoverageIgnoreEnd diff --git a/tests/vendor/phpunit/phpunit-mock-objects/tests/bootstrap.php b/tests/vendor/phpunit/phpunit-mock-objects/tests/bootstrap.php index 6575b39a..72b0a5a9 100644 --- a/tests/vendor/phpunit/phpunit-mock-objects/tests/bootstrap.php +++ b/tests/vendor/phpunit/phpunit-mock-objects/tests/bootstrap.php @@ -1,3 +1,5 @@ testId = $testId; } + + /** + * @return integer $testId + */ + public function getTestId() + { + return $this->testId; + } /** * @param string $name @@ -360,7 +368,7 @@ public function getPort() { return $this->port; } - + /** * @param integer $timeout for Selenium RC in seconds * @throws InvalidArgumentException @@ -431,7 +439,47 @@ public function setWaitForPageToLoad($flag) $this->useWaitForPageToLoad = $flag; } + /** + * Sets whether captureScreenshotOnFailure (TRUE) or (FALSE) + * if true, the takeScreenshot() is triggered in onNotSuccessfulTest(). + * + * @param boolean $flag + * @throws InvalidArgumentException + */ + public function setCaptureScreenshotOnFailure($flag) + { + if (!is_bool($flag)) { + throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); + } + $this->captureScreenshotOnFailure = $flag; + } + + /** + * @param string $screenshotUrl + * @throws InvalidArgumentException + */ + public function setScreenshotUrl($screenshotUrl) + { + if (!is_string($screenshotUrl)) { + throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); + } + + $this->screenshotUrl = $screenshotUrl; + } + /** + * @param string $screenshotPath + * @throws InvalidArgumentException + */ + public function setScreenshotPath($screenshotPath) + { + if (!is_string($screenshotPath)) { + throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); + } + + $this->screenshotPath = $screenshotPath; + } + /** * Adds allowed user commands into {@link self::$userCommands}. See * {@link self::__call()} (switch/case -> default) for usage. @@ -441,6 +489,8 @@ public function setWaitForPageToLoad($flag) * @return $this * @see self::__call() */ + + public function addUserCommand($command) { if (!is_string($command)) { diff --git a/tests/vendor/phpunit/phpunit-selenium/composer.json b/tests/vendor/phpunit/phpunit-selenium/composer.json index 778f8f8f..c1f00e2b 100644 --- a/tests/vendor/phpunit/phpunit-selenium/composer.json +++ b/tests/vendor/phpunit/phpunit-selenium/composer.json @@ -27,7 +27,7 @@ }, "require": { "php": ">=5.3.3", - "phpunit/phpunit": ">=3.7", + "phpunit/phpunit": "~3.7|~4.0", "sebastian/comparator": "~1.0", "ext-curl": "*", "ext-dom": "*" diff --git a/tests/vendor/phpunit/phpunit/.gitattributes b/tests/vendor/phpunit/phpunit/.gitattributes index 821227aa..461090b7 100644 --- a/tests/vendor/phpunit/phpunit/.gitattributes +++ b/tests/vendor/phpunit/phpunit/.gitattributes @@ -1,3 +1 @@ *.php diff=php -composer.json merge=ours -src/Runner/Version.php merge=ours diff --git a/tests/vendor/phpunit/phpunit/.gitignore b/tests/vendor/phpunit/phpunit/.gitignore index 65a2321e..5a3b3733 100644 --- a/tests/vendor/phpunit/phpunit/.gitignore +++ b/tests/vendor/phpunit/phpunit/.gitignore @@ -6,12 +6,11 @@ build/pdepend build/phar build/phpdox build/*.phar -build/*.phar.asc -tests/TextUI/*.diff -tests/TextUI/*.exp -tests/TextUI/*.log -tests/TextUI/*.out -tests/TextUI/*.php +Tests/TextUI/*.diff +Tests/TextUI/*.exp +Tests/TextUI/*.log +Tests/TextUI/*.out +Tests/TextUI/*.php /bin /vendor /composer.lock diff --git a/tests/vendor/phpunit/phpunit/.travis.yml b/tests/vendor/phpunit/phpunit/.travis.yml index e8d96327..852a8080 100644 --- a/tests/vendor/phpunit/phpunit/.travis.yml +++ b/tests/vendor/phpunit/phpunit/.travis.yml @@ -1,36 +1,29 @@ language: php php: - - 5.6 - - 7.0 - - hhvm + - 5.3.3 + - 5.3 + - 5.4 + - 5.5 + - 5.6 + - hhvm -matrix: - allow_failures: - - php: hhvm - -sudo: false +env: + - INSTALL_PHP_INVOKER=0 + - INSTALL_PHP_INVOKER=1 -before_install: - - composer self-update +before_script: + - sh -c "if [ '$INSTALL_PHP_INVOKER' = '1' ]; then composer require --dev --prefer-source phpunit/php-invoker:\>=1.2.0; else composer install --dev --prefer-source; fi" -install: - - travis_retry composer install --no-interaction --prefer-source +script: ./phpunit --configuration ./build/travis-ci.xml -script: - - ./phpunit - - ./phpunit --configuration ./build/travis-ci-fail.xml > /dev/null; if [ $? -eq 0 ]; then echo "SHOULD FAIL"; false; else echo "fail checked"; fi; - - xmllint --noout --schema phpunit.xsd phpunit.xml.dist - - xmllint --noout --schema phpunit.xsd tests/_files/configuration.xml - - xmllint --noout --schema phpunit.xsd tests/_files/configuration_empty.xml - - xmllint --noout --schema phpunit.xsd tests/_files/configuration_xinclude.xml -xinclude +matrix: + allow_failures: + - php: hhvm notifications: email: false - webhooks: - urls: - - https://webhooks.gitter.im/e/6668f52f3dd4e3f81960 - on_success: always - on_failure: always - on_start: false - + irc: + channels: + - "irc.freenode.org#phpunit" + use_notice: true diff --git a/tests/vendor/phpunit/phpunit/CODE_OF_CONDUCT.md b/tests/vendor/phpunit/phpunit/CODE_OF_CONDUCT.md deleted file mode 100644 index a4abb84b..00000000 --- a/tests/vendor/phpunit/phpunit/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,14 +0,0 @@ -# Contributor Code of Conduct - -As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. - -We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion. - -Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team. - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers. - -This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org/), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/) - diff --git a/tests/vendor/phpunit/phpunit/CONTRIBUTING.md b/tests/vendor/phpunit/phpunit/CONTRIBUTING.md index aee139f3..b6421e28 100644 --- a/tests/vendor/phpunit/phpunit/CONTRIBUTING.md +++ b/tests/vendor/phpunit/phpunit/CONTRIBUTING.md @@ -1,67 +1,23 @@ # Contributing to PHPUnit -## Contributor Code of Conduct +Contributions to PHPUnit, its related modules, and its documentation are always welcome. You make our lives easier by sending us your contributions through GitHub pull requests. -Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. - -## Workflow - -* Fork the project. -* Make your bug fix or feature addition. -* Add tests for it. This is important so we don't break it in a future version unintentionally. -* Send a pull request. Bonus points for topic branches. - -Please make sure that you have [set up your user name and email address](http://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) for use with Git. Strings such as `silly nick name ` look really stupid in the commit history of a project. - -Pull requests for bug fixes must be based on the current stable branch whereas pull requests for new features must be based on the current alpha branch (when `5.0` is the current stable branch, then `5.1` is the current beta branch and `5.2` is the current alpha branch). +Pull requests for bug fixes must be based on the current stable branch whereas pull requests for new features must be based on `master`. We are trying to keep backwards compatibility breaks in PHPUnit to an absolute minimum. Please take this into account when proposing changes. -Due to time constraints, we are not always able to respond as quickly as we would like. Please do not take delays personal and feel free to remind us if you feel that we forgot to respond. - -## Coding Guidelines - -This project comes with a configuration file for [php-cs-fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) (`.php_cs`) that you can use to (re)format your sourcecode for compliance with this project's coding guidelines: - -```bash -$ wget http://get.sensiolabs.org/php-cs-fixer.phar - -$ php php-cs-fixer.phar fix -``` +Due to time constraints, we are not always able to respond as quickly as we would like. Please do not take delays personal and feel free to remind us here or on IRC if you feel that we forgot to respond. -## Using PHPUnit from a Git checkout +## Using PHPUnit From a Git Checkout The following commands can be used to perform the initial checkout of PHPUnit: -```bash -$ git clone git://github.com/sebastianbergmann/phpunit.git - -$ cd phpunit -``` + git clone git://github.com/sebastianbergmann/phpunit.git + cd phpunit Retrieve PHPUnit's dependencies using [Composer](http://getcomposer.org/): -```bash -$ wget http://getcomposer.org/composer.phar - -$ php composer.phar install -``` - -The `phpunit` script can be used to invoke the PHPUnit test runner: - -```bash -$ ./phpunit --version -``` - -## Reporting issues - -Please use the most specific issue tracker to search for existing tickets and to open new tickets: - -* [General problems](https://github.com/sebastianbergmann/phpunit/issues) -* [Code Coverage](https://github.com/sebastianbergmann/php-code-coverage/issues) -* [Stub and Mock Objects](https://github.com/sebastianbergmann/phpunit-mock-objects/issues) -* [DbUnit](https://github.com/sebastianbergmann/dbunit/issues) -* [PHPUnit_Selenium](https://github.com/sebastianbergmann/phpunit-selenium/issues) -* [Documentation](https://github.com/sebastianbergmann/phpunit-documentation/issues) -* [Website](https://github.com/sebastianbergmann/phpunit-website/issues) + wget http://getcomposer.org/composer.phar + php composer.phar install +The `phpunit` script can be used to invoke the PHPUnit test runner. diff --git a/tests/vendor/phpunit/phpunit/ChangeLog-4.0.md b/tests/vendor/phpunit/phpunit/ChangeLog-4.0.md deleted file mode 100644 index dc71b017..00000000 --- a/tests/vendor/phpunit/phpunit/ChangeLog-4.0.md +++ /dev/null @@ -1,176 +0,0 @@ -# Changes in PHPUnit 4.0 - -All notable changes of the PHPUnit 4.0 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.0.20] - 2014-05-02 - -### Fixed - -* Fixed [#1242](https://github.com/sebastianbergmann/phpunit/issues/1242): `--self-update` uses OpenSSL API that is deprecated in PHP 5.6 - -## [4.0.19] - 2014-04-30 - -### Fixed - -* Fixed [#1193](https://github.com/sebastianbergmann/phpunit/issues/1193): Process isolation does not work correctly when PHPUnit is used from PHAR -* Fixed a BC break related to comparing `DOMNode` objects that was introduced in PHPUnit 4.0.18 - -## [4.0.18] - 2014-04-29 - -### Fixed - -* Fixed [#1218](https://github.com/sebastianbergmann/phpunit/issues/1218): `--self-update` destroys symlink - -## [4.0.17] - 2014-04-21 - -### Changed - -* [Display a message that the PEAR installation method is no longer supported when PHPUnit was installed using the PEAR Installer](https://github.com/sebastianbergmann/phpunit/commit/70b02c6be0176ab8ad3d3c9ec97480556c5dd63b) - -## [4.0.16] - 2014-04-20 - -### Fixed - -* [Fixed handling of the `--report-useless-tests`, `--strict-coverage`, `--disallow-test-output`, and `--enforce-time-limit` options](https://github.com/sebastianbergmann/phpunit/commit/38baa9670711adedfe44ef24a33b568f61f3f045) - -## [4.0.15] - 2014-04-16 - -New release of PHPUnit as PHAR and PEAR package with updated dependencies - -## [4.0.14] - 2014-03-28 - -New release of PHPUnit as PHAR and PEAR package with updated dependencies - -## [4.0.13] - 2014-03-26 - -New release of PHPUnit as PHAR and PEAR package with updated dependencies - -## [4.0.12] - 2014-03-20 - -### Changed - -* [Use blacklist from PHP_CodeCoverage](https://github.com/sebastianbergmann/phpunit/commit/16152ba4b8d0104ce34f60cb71b2b982ba84c898) - -## [4.0.11] - 2014-03-18 - -### Fixed - -* [Fixed unintended autoloader invokation triggered by the `@beforeClass` and `@afterClass` annotations](https://github.com/sebastianbergmann/phpunit/commit/f12e10fddc3ccbddb652a04d9036aeb5a6d54bff) - -## [4.0.10] - 2014-03-18 - -New release of PHPUnit as PHAR and PEAR package with updated dependencies (most notably a [fix](https://github.com/sebastianbergmann/phpunit-mock-objects/commit/c5e6274b8f2bf983cf883bb375cf44f99aff200e) in the mock object generator that caused a [performance regression](https://github.com/sebastianbergmann/phpunit/issues/1187)) - -## [4.0.9] - 2014-03-17 - -### Changed - -* Optimized the search for the `@before`, `@after`, `@beforeClass` and `@afterClass` annotations -* Optimized the usage of `SebastianBergmann\Environment\Runtime::canCollectCodeCoverage()` - -### Fixed - -* The "No code coverage will be generated." message was displayed even when code coverage reporting was not requested - -## [4.0.8] - 2014-03-17 - -### Fixed - -* Fixed [#1186](https://github.com/sebastianbergmann/phpunit/issues/1186): `@before` and `@after` methods are not called in `@dataProvider` methods - -## [4.0.7] - 2014-03-12 - -### Fixed - -* Removed dependency on `phpunit/dbunit` in `composer.json` that was unintentionally added in PHPUnit 4.0.6 - -## [4.0.6] - 2014-03-11 - -New release of PHPUnit as PHAR and PEAR package with updated dependencies - -## [4.0.5] - 2014-03-10 - -New release of PHPUnit as PHAR and PEAR package with updated dependencies - -## [4.0.4] - 2014-03-08 - -### Fixed - -* Fixed stacktrace filtering when PHPUnit is used from a PHAR - -## [4.0.3] - 2014-03-07 - -New release of PHPUnit as PHAR and PEAR package with updated dependencies - -## [4.0.2] - 2014-03-07 - -### Fixed - -* Fixed an issue related to displaying PHPUnit's version number - -## [4.0.1] - 2014-03-07 - -### Fixed - -* Fixed collection of code coverage data for tests that use a data provider - -## [4.0.0] - 2014-03-07 - -### Added - -* Implemented #382: Added the `$options` parameter to `PHPUnit_Framework_TestCase::getMockFromWsdl()` for configuring the `SoapClient` -* Implemented #628: Added `PHPUnit_Framework_Assert::countOf(), a shortcut to get a `PHPUnit_Framework_Constraint_Count` instance -* Implemented #711: `coverage-text` now has an XML `showOnlySummary` option -* Implemented #719: The `--stderr` switch now respects `--colors` and `--debug` -* Implemented #746: Allow identity checking for non-object types in all asserts that depend on `TraversableContains` -* Implemented #758: Show a proper stack trace when @expectedException fails due to a unexpected exception being thrown -* Implemented #773: Recursive and repeated arrays are more gracefully when comparison differences are exported -* Implemented #813: Added `@before`, `@after`, `@beforeClass` and `@afterClass` annotations -* Implemented #834: Added the `@requires OS` annotation -* Implemented #835: Printers that extend `PHPUnit_TextUI_ResultPrinter` should have similar construction -* Implemented #838: Added a base test listener -* Implemented #859: Added PHP label validation to attribute assertions -* Implemented #869: Added support for the adjacent sibling selector (+) to `PHPUnit_Util_XML::findNodes()` -* Implemented #871: Add Comparator for DateTime objects -* Implemented #877: Added new HTML5 tags to `PHPUnit_Util_XML::findNodes()` -* Added `--coverage-crap4j` switch to generate code coverage report in Crap4J XML format -* `assertCount()`, `assertNotCount()`, `assertSameSize()`, and `assertNotSameSize()` now support all objects that implement the `Traversable` interface - -### Changed - -* A test will now fail in strict mode when it uses the `@covers` annotation and code that is not expected to be covered is executed -* All relative paths in a configuration file are now resolved relative to that configuration file - -### Fixed - -* Fixed #240: XML strings are escaped by removing invalid characters -* Fixed #261: `setUp()` and `setUpBeforeClass()` are run before filters are applied -* Fixed #541: Excluded groups are counted towards total number of tests being executed -* Fixed #789: PHP INI settings would not be passed to child processes -* Fixed #806: Array references are now properly displayed in error output -* Fixed #808: Resources are now reported as `resource(13) of type (stream)` instead of `NULL` -* Fixed #873: PHPUnit suppresses exceptions thrown outside of test case function -* Fixed: `phpt` test cases now use the correct php binary when executed through wrapper scripts - -[4.0.20]: https://github.com/sebastianbergmann/phpunit/compare/4.0.19...4.0.20 -[4.0.19]: https://github.com/sebastianbergmann/phpunit/compare/4.0.18...4.0.19 -[4.0.18]: https://github.com/sebastianbergmann/phpunit/compare/4.0.17...4.0.18 -[4.0.17]: https://github.com/sebastianbergmann/phpunit/compare/4.0.16...4.0.17 -[4.0.16]: https://github.com/sebastianbergmann/phpunit/compare/4.0.15...4.0.16 -[4.0.15]: https://github.com/sebastianbergmann/phpunit/compare/4.0.14...4.0.15 -[4.0.14]: https://github.com/sebastianbergmann/phpunit/compare/4.0.13...4.0.14 -[4.0.13]: https://github.com/sebastianbergmann/phpunit/compare/4.0.12...4.0.13 -[4.0.12]: https://github.com/sebastianbergmann/phpunit/compare/4.0.11...4.0.12 -[4.0.11]: https://github.com/sebastianbergmann/phpunit/compare/4.0.10...4.0.11 -[4.0.10]: https://github.com/sebastianbergmann/phpunit/compare/4.0.9...4.0.10 -[4.0.9]: https://github.com/sebastianbergmann/phpunit/compare/4.0.8...4.0.9 -[4.0.8]: https://github.com/sebastianbergmann/phpunit/compare/4.0.7...4.0.8 -[4.0.7]: https://github.com/sebastianbergmann/phpunit/compare/4.0.6...4.0.7 -[4.0.6]: https://github.com/sebastianbergmann/phpunit/compare/4.0.5...4.0.6 -[4.0.5]: https://github.com/sebastianbergmann/phpunit/compare/4.0.4...4.0.5 -[4.0.4]: https://github.com/sebastianbergmann/phpunit/compare/4.0.3...4.0.4 -[4.0.3]: https://github.com/sebastianbergmann/phpunit/compare/4.0.2...4.0.3 -[4.0.2]: https://github.com/sebastianbergmann/phpunit/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/phpunit/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/phpunit/compare/3.7...4.0.0 - diff --git a/tests/vendor/phpunit/phpunit/ChangeLog-4.1.md b/tests/vendor/phpunit/phpunit/ChangeLog-4.1.md deleted file mode 100644 index d7f10a74..00000000 --- a/tests/vendor/phpunit/phpunit/ChangeLog-4.1.md +++ /dev/null @@ -1,73 +0,0 @@ -# Changes in PHPUnit 4.1 - -All notable changes of the PHPUnit 4.1 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.1.6] - 2014-08-17 - -### Fixed - -* Fixed [#1380](https://github.com/sebastianbergmann/phpunit/issues/1380): `assertMatch()` returns `Unexpected end tag : hr` -* Fixed [#1390](https://github.com/sebastianbergmann/phpunit/issues/1390): Licensing issue with third-party components bundled in PHAR distribution - -## [4.1.5] - 2014-08-07 - -### Changed - -* Implemented [#1330](https://github.com/sebastianbergmann/phpunit/issues/1330): Allow non-ambiguous shortened long options - -### Fixed - -* Fixed [#529](https://github.com/sebastianbergmann/phpunit/issues/529): Tests missed in execution when another test extends from it -* Fixed [#1149](https://github.com/sebastianbergmann/phpunit/issues/1149): Test swallows output buffer when run in a separate process -* Fixed [#1336](https://github.com/sebastianbergmann/phpunit/issues/1336): Problem in process isolation with global variables that contain an object which contains a string which contains multiple backslashes -* Fixed [#1337](https://github.com/sebastianbergmann/phpunit/issues/1337): Data Provider with `\` at the end of the name breaks with process isolation -* Fixed [#1345](https://github.com/sebastianbergmann/phpunit/issues/1345): Process isolation blocks infinitely upon fatal error in child process -* Fixed [#1354](https://github.com/sebastianbergmann/phpunit/issues/1354): PHPUnit test suite fails on Windows -* Fixed [#1369](https://github.com/sebastianbergmann/phpunit/issues/1369): Performance of `TestSuite::addTestFile()` and missing documentation -* Fixed [#1374](https://github.com/sebastianbergmann/phpunit/issues/1374): `tearDown()` is called despite unmet requirements - -## [4.1.4] - 2014-07-18 - -### Fixed - -* Fixed [#1265](https://github.com/sebastianbergmann/phpunit/issues/1265): `PHPUnit_Runner_StandardTestSuiteLoader` could not be configured as loader -* Fixed [#1311](https://github.com/sebastianbergmann/phpunit/issues/1311): Incomplete XML Schema for PHPUnit XML configuration file -* Fixed [#1314](https://github.com/sebastianbergmann/phpunit/issues/1314): Bug in configuration parser - -## [4.1.3] - 2014-06-11 - -New release of PHPUnit as PHP Archive (PHAR) with updated dependencies - -## [4.1.2] - 2014-06-07 - -New release of PHPUnit as PHP Archive (PHAR) with updated dependencies - -## [4.1.1] - 2014-05-24 - -### Added - -* Added `--selfupdate` alias for `--self-update` - -### Changed - -* Improved the fix for [#1133](https://github.com/sebastianbergmann/phpunit/issues/1133) - -### Fixed - -* Fixed the constructor argument for `SebastianBergmann\Version` - -## [4.1.0] - 2014-05-02 - -### Changed - -* The code to compare PHP values for equality (in `assertEquals()`, for instance) has been factored out into a [separate component](https://github.com/sebastianbergmann/comparator) -* [The mock object generator is now created lazily](https://github.com/sebastianbergmann/phpunit/pull/1165) - -[4.1.6]: https://github.com/sebastianbergmann/phpunit/compare/4.1.5...4.1.6 -[4.1.5]: https://github.com/sebastianbergmann/phpunit/compare/4.1.4...4.1.5 -[4.1.4]: https://github.com/sebastianbergmann/phpunit/compare/4.1.3...4.1.4 -[4.1.3]: https://github.com/sebastianbergmann/phpunit/compare/4.1.2...4.1.3 -[4.1.2]: https://github.com/sebastianbergmann/phpunit/compare/4.1.1...4.1.2 -[4.1.1]: https://github.com/sebastianbergmann/phpunit/compare/4.1.0...4.1.1 -[4.1.0]: https://github.com/sebastianbergmann/phpunit/compare/4.0...4.1.0 - diff --git a/tests/vendor/phpunit/phpunit/ChangeLog-4.2.md b/tests/vendor/phpunit/phpunit/ChangeLog-4.2.md deleted file mode 100644 index 0d902b74..00000000 --- a/tests/vendor/phpunit/phpunit/ChangeLog-4.2.md +++ /dev/null @@ -1,56 +0,0 @@ -# Changes in PHPUnit 4.2 - -All notable changes of the PHPUnit 4.2 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.2.5] - 2014-09-06 - -New release of PHPUnit as PHP Archive (PHAR) with updated dependencies - -## [4.2.4] - 2014-08-31 - -### Fixed - -* Fixed [#1413](https://github.com/sebastianbergmann/phpunit/issues/1413): `assertCount()` hangs in infinite loop on HHVM - -## [4.2.3] - 2014-08-28 - -### Fixed - -* Fixed [#1403](https://github.com/sebastianbergmann/phpunit/issues/1403): `phpunit --self-update` does not work - -## [4.2.2] - 2014-08-18 - -### Fixed - -* Fixed [#1399](https://github.com/sebastianbergmann/phpunit/issues/1399): `enforceTimeLimit` configuration option is not handled - -## [4.2.1] - 2014-08-17 - -### Fixed - -* Fixed [#1380](https://github.com/sebastianbergmann/phpunit/issues/1380): `assertMatch()` returns `Unexpected end tag : hr` -* Fixed [#1390](https://github.com/sebastianbergmann/phpunit/issues/1390): Licensing issue with third-party components bundled in PHAR distribution - -## [4.2.0] - 2014-08-08 - -### Added - -* Tests annotated with `@todo` will now be reported as risky when the `--disallow-todo-tests` option is used or `beStrictAboutTodoAnnotatedTests=true` is set in the configuration file -* The `atLeast()` and `atMost()` invocation count matchers were added - -### Changed - -* `trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);` is used now to indicate that a PHPUnit API method is deprecated; the old "system" for deprecating methods has been removed -* The PHP Archive (PHAR) distribution of PHPUnit can now be used as a library; `include()`ing or `require()`ing it will not execute the CLI test runner - -### Deprecated - -* The `assertTag()` and `assertSelect*()` assertion methods have been deprecated in favor of the [phpunit-dom-assertions](https://github.com/phpunit/phpunit-dom-assertions) extension; these methods will be removed in PHPUnit 5.0 - -[4.2.5]: https://github.com/sebastianbergmann/phpunit/compare/4.2.4...4.2.5 -[4.2.4]: https://github.com/sebastianbergmann/phpunit/compare/4.2.3...4.2.4 -[4.2.3]: https://github.com/sebastianbergmann/phpunit/compare/4.2.2...4.2.3 -[4.2.2]: https://github.com/sebastianbergmann/phpunit/compare/4.2.1...4.2.2 -[4.2.1]: https://github.com/sebastianbergmann/phpunit/compare/4.2.0...4.2.1 -[4.2.0]: https://github.com/sebastianbergmann/phpunit/compare/4.1...4.2.0 - diff --git a/tests/vendor/phpunit/phpunit/ChangeLog-4.3.md b/tests/vendor/phpunit/phpunit/ChangeLog-4.3.md deleted file mode 100644 index 99c2826e..00000000 --- a/tests/vendor/phpunit/phpunit/ChangeLog-4.3.md +++ /dev/null @@ -1,54 +0,0 @@ -# Changes in PHPUnit 4.3 - -All notable changes of the PHPUnit 4.3 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.3.5] - 2014-11-11 - -### Changed - -* Merged [#1484](https://github.com/sebastianbergmann/phpunit/issues/1484): Removed `lazymap` from blacklist as it is not longer used -* Merged [#1489](https://github.com/sebastianbergmann/phpunit/issues/1489): Do not send output from tests in process isolation when testing output - -## [4.3.4] - 2014-10-22 - -### Fixed - -* Fixed [#1428](https://github.com/sebastianbergmann/phpunit/issues/1428): Issue with Composer dependencies -* Fixed [#1447](https://github.com/sebastianbergmann/phpunit/issues/1447): PHPT tests treat line endings inconsistently - -## [4.3.3] - 2014-10-16 - -### Fixed - -* Fixed [#1471](https://github.com/sebastianbergmann/phpunit/issues/1471): Output made while test is running is printed although `expectOutputString()` is used when an assertion fails - -## [4.3.2] - 2014-10-16 - -### Fixed - -* Fixed [#1468](https://github.com/sebastianbergmann/phpunit/issues/1468): Incomplete and `@todo` annotated tests are counted twice - -## [4.3.1] - 2014-10-06 - -New release of PHPUnit as PHP Archive (PHAR) with updated dependencies - -## [4.3.0] - 2014-10-03 - -### Added - -* Merged [#1358](https://github.com/sebastianbergmann/phpunit/issues/1358): Implement `@expectedExceptionMessageRegExp` annotation -* Merged [#1360](https://github.com/sebastianbergmann/phpunit/issues/1360): Allow a test to identify whether it runs in isolation - -### Fixed - -* Fixed [#1216](https://github.com/sebastianbergmann/phpunit/issues/1216): Bootstrap does not have global variables set when `--bootstrap` is specified on commandline -* Fixed [#1351](https://github.com/sebastianbergmann/phpunit/issues/1351): `TestResult` object contains serialized test class upon test failure/exception in process isolation -* Fixed [#1437](https://github.com/sebastianbergmann/phpunit/issues/1437): Risky test messages mask failures - -[4.3.5]: https://github.com/sebastianbergmann/phpunit/compare/4.3.4...4.3.5 -[4.3.4]: https://github.com/sebastianbergmann/phpunit/compare/4.3.3...4.3.4 -[4.3.3]: https://github.com/sebastianbergmann/phpunit/compare/4.3.2...4.3.3 -[4.3.2]: https://github.com/sebastianbergmann/phpunit/compare/4.3.1...4.3.2 -[4.3.1]: https://github.com/sebastianbergmann/phpunit/compare/4.3.0...4.3.1 -[4.3.0]: https://github.com/sebastianbergmann/phpunit/compare/4.2...4.3.0 - diff --git a/tests/vendor/phpunit/phpunit/ChangeLog-4.4.md b/tests/vendor/phpunit/phpunit/ChangeLog-4.4.md deleted file mode 100644 index 312af5ae..00000000 --- a/tests/vendor/phpunit/phpunit/ChangeLog-4.4.md +++ /dev/null @@ -1,57 +0,0 @@ -# Changes in PHPUnit 4.4 - -All notable changes of the PHPUnit 4.4 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.4.5] - 2015-01-27 - -### Fixed - -* Fixed [#1592](https://github.com/sebastianbergmann/phpunit/issues/1592): Incorrect dependency information - -## [4.4.4] - 2015-01-24 - -### Fixed - -* Fixed [#1587](https://github.com/sebastianbergmann/phpunit/issues/1587): Class `SebastianBergmann\Exporter\Context` not found - -## [4.4.3] - 2015-01-24 - -New PHAR release due to updated dependencies - -## [4.4.2] - 2015-01-17 - -### Changed - -* Merged [#1573](https://github.com/sebastianbergmann/phpunit/issues/1573): Updates for the XSD for PHPUnit XML configuration - -### Fixed - -* Merged [#1567](https://github.com/sebastianbergmann/phpunit/issues/1567): `coverage-crap4j` missing in XSD for PHPUnit XML configuration -* Fixed [#1570](https://github.com/sebastianbergmann/phpunit/issues/1570): Test that prints output is marked as failure and not as risky when `--disallow-test-output` is used -* Fixed `--stderr` with `--tap` or `--testdox` options - -## [4.4.1] - 2014-12-28 - -### Changed - -* Merged [#1528](https://github.com/sebastianbergmann/phpunit/issues/1528): Add `expectedCount()` to `toString()` return value - -## [4.4.0] - 2014-12-05 - -### Added - -* Merged [#1371](https://github.com/sebastianbergmann/phpunit/issues/1371): Implement `assertArraySubset()` assertion -* Merged [#1439](https://github.com/sebastianbergmann/phpunit/issues/1439): Add support for `double` to `assertInternalType()` - -### Changed - -* Merged [#1427](https://github.com/sebastianbergmann/phpunit/issues/1427): Improve failure output for tests when provided data is binary -* Merged [#1458](https://github.com/sebastianbergmann/phpunit/issues/1458): Only enable colors when PHPUnit is run on a console (and output is not sent to a file) - -[4.4.5]: https://github.com/sebastianbergmann/phpunit/compare/4.4.4...4.4.5 -[4.4.4]: https://github.com/sebastianbergmann/phpunit/compare/4.4.3...4.4.4 -[4.4.3]: https://github.com/sebastianbergmann/phpunit/compare/4.4.2...4.4.3 -[4.4.2]: https://github.com/sebastianbergmann/phpunit/compare/4.4.1...4.4.2 -[4.4.1]: https://github.com/sebastianbergmann/phpunit/compare/4.4.0...4.4.1 -[4.4.0]: https://github.com/sebastianbergmann/phpunit/compare/4.3...4.4.0 - diff --git a/tests/vendor/phpunit/phpunit/ChangeLog-4.5.md b/tests/vendor/phpunit/phpunit/ChangeLog-4.5.md deleted file mode 100644 index 2313de10..00000000 --- a/tests/vendor/phpunit/phpunit/ChangeLog-4.5.md +++ /dev/null @@ -1,28 +0,0 @@ -# Changes in PHPUnit 4.5 - -All notable changes of the PHPUnit 4.5 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.5.1] - 2015-03-29 - -## [4.5.0] - 2015-02-05 - -### Added - -* Added out-of-the-box support for [Prophecy](https://github.com/phpspec/prophecy) -* Implemented [#137](https://github.com/sebastianbergmann/phpunit/issues/137): Add support for variable number of tests shown per line in default result printer - -### Changed - -* Merged [#1478](https://github.com/sebastianbergmann/phpunit/issues/1478): Improve the performance of `PHPUnit_Framework_Constraint_IsEqual` (which is used by `assertEquals()`, for instance) for the most common case - -### Deprecated - -* [Deprecated](https://github.com/sebastianbergmann/phpunit/commit/7abe7796f77b13fdf3cfc506fb987d6c2ab477f5) the `--strict` commandline option and the XML configuration's `strict` attribute - -### Fixed - -* Fixed [#1474](https://github.com/sebastianbergmann/phpunit/issues/1474): Allow the registration of custom comparators for `assertEquals()` et al. (again) - -[4.5.1]: https://github.com/sebastianbergmann/phpunit/compare/4.5.0...4.5.1 -[4.5.0]: https://github.com/sebastianbergmann/phpunit/compare/4.4...4.5.0 - diff --git a/tests/vendor/phpunit/phpunit/ChangeLog-4.6.md b/tests/vendor/phpunit/phpunit/ChangeLog-4.6.md deleted file mode 100644 index 3571634a..00000000 --- a/tests/vendor/phpunit/phpunit/ChangeLog-4.6.md +++ /dev/null @@ -1,95 +0,0 @@ -# Changes in PHPUnit 4.6 - -All notable changes of the PHPUnit 4.6 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.6.10] - 2015-06-03 - -### Changed - -* Merged [#1693](https://github.com/sebastianbergmann/phpunit/pull/1693): Improved API documentation -* Merged [#1706](https://github.com/sebastianbergmann/phpunit/pull/1706): Avoid hard-coded URI to `phpunit.xsd` -* Merged [#1725](https://github.com/sebastianbergmann/phpunit/pull/1725): Update phpDox XSD URI -* Merged [#1735](https://github.com/sebastianbergmann/phpunit/pull/1735): Mute `chdir()` failures in XInclude handling of XML configuration file -* Merged [#1736](https://github.com/sebastianbergmann/phpunit/pull/1736): Verify that phar file can be overwritten before attempting self update - -### Fixed - -* Fixed [#1737](https://github.com/sebastianbergmann/phpunit/issues/1737): Confusing output from `--testdox` for empty test class - -## [4.6.9] - 2015-05-29 - -### Fixed - -* Fixed [#1731](https://github.com/sebastianbergmann/phpunit/issues/1731): `.` after failure count has no background color when `--colors` is used - -## [4.6.8] - 2015-05-28 - -New PHAR release due to updated dependencies - -## [4.6.7] - 2015-05-25 - -New PHAR release due to updated dependencies - -## [4.6.6] - 2015-04-29 - -### Fixed - -* Fixed [#1684](https://github.com/sebastianbergmann/phpunit/issues/1684): PHAR does not work on HHVM - -## [4.6.5] - 2015-04-29 - -* Fixed [#1677](https://github.com/sebastianbergmann/phpunit/issues/1677): Number of risky tests not printed when there are failing tests -* Fixed [#1688](https://github.com/sebastianbergmann/phpunit/issues/1688): Self-Update operation does not work due to outdated SSL certificate - -## [4.6.4] - 2015-04-11 - -### Changed - -* The default list of blacklisted classes is now always passed to PHP_CodeCoverage - -## [4.6.3] - 2015-04-11 - -### Changed - -* Updated the default list of blacklisted classes - -## [4.6.2] - 2015-04-07 - -### Fixed - -* Fixed [#1667](https://github.com/sebastianbergmann/phpunit/issues/1667): Loading `src/Framework/Assert/Functions.php` by default causes collisions - -## [4.6.1] - 2015-04-03 - -### Fixed - -* Fixed [#1665](https://github.com/sebastianbergmann/phpunit/issues/1665): PHPUnit 4.6.0 PHAR does not work when renamed to `phpunit` - -## [4.6.0] - 2015-04-03 - -### Added - -* Added the `--strict-global-state` command-line option and the `beStrictAboutChangesToGlobalState` configuration setting for enabling a check that global variabes, super-global variables, and static attributes in user-defined classes are not modified during a test -* Merged [#1527](https://github.com/sebastianbergmann/phpunit/issues/1527) and [#1529](https://github.com/sebastianbergmann/phpunit/issues/1529): Allow to define options for displaying colors - -### Changed - -* Merged [#1528](https://github.com/sebastianbergmann/phpunit/issues/1528): Improve message when `PHPUnit_Framework_Constraint_Count` is used with logical operators - -### Fixed - -* Merged [#1537](https://github.com/sebastianbergmann/phpunit/issues/1537): Fix problem of `--stderr` with `--tap` and `--testdox` -* Fixed [#1599](https://github.com/sebastianbergmann/phpunit/issues/1599): The PHAR build of PHPUnit no longer uses an autoloader to load PHPUnit's own classes and instead statically loads all classes on startup - -[4.6.10]: https://github.com/sebastianbergmann/phpunit/compare/4.6.9...4.6.10 -[4.6.9]: https://github.com/sebastianbergmann/phpunit/compare/4.6.8...4.6.9 -[4.6.8]: https://github.com/sebastianbergmann/phpunit/compare/4.6.7...4.6.8 -[4.6.7]: https://github.com/sebastianbergmann/phpunit/compare/4.6.6...4.6.7 -[4.6.6]: https://github.com/sebastianbergmann/phpunit/compare/4.6.5...4.6.6 -[4.6.5]: https://github.com/sebastianbergmann/phpunit/compare/4.6.4...4.6.5 -[4.6.4]: https://github.com/sebastianbergmann/phpunit/compare/4.6.3...4.6.4 -[4.6.3]: https://github.com/sebastianbergmann/phpunit/compare/4.6.2...4.6.3 -[4.6.2]: https://github.com/sebastianbergmann/phpunit/compare/4.6.1...4.6.2 -[4.6.1]: https://github.com/sebastianbergmann/phpunit/compare/4.6.0...4.6.1 -[4.6.0]: https://github.com/sebastianbergmann/phpunit/compare/4.5...4.6.0 - diff --git a/tests/vendor/phpunit/phpunit/ChangeLog-4.7.md b/tests/vendor/phpunit/phpunit/ChangeLog-4.7.md deleted file mode 100644 index 948c1274..00000000 --- a/tests/vendor/phpunit/phpunit/ChangeLog-4.7.md +++ /dev/null @@ -1,71 +0,0 @@ -# Changes in PHPUnit 4.7 - -All notable changes of the PHPUnit 4.7 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.7.7] - 2015-07-13 - -New PHAR release due to updated dependencies - -## [4.7.6] - 2015-06-30 - -### Fixed - -* Fixed [#1681](https://github.com/sebastianbergmann/phpunit/issues/1681): Code Coverage filter configuration is not passed to child processes -* Fixed [#1692](https://github.com/sebastianbergmann/phpunit/issues/1692): Clean up `PHPUnit_Extensions_RepeatedTest` after refactoring -* Fixed [#1763](https://github.com/sebastianbergmann/phpunit/issues/1763): `@before` and `@after` annotations do not work when inherited - -## [4.7.5] - 2015-06-21 - -### Fixed - -* Fixed [#490](https://github.com/sebastianbergmann/phpunit/issues/490): Ensure that a test can only be one of `@small`, `@medium`, or `@large`. -* Fixed [#1704](https://github.com/sebastianbergmann/phpunit/issues/1704): Output printed during test missing when using TAP - -## [4.7.4] - 2015-06-18 - -### Changed - -* The `PHPUnit_Framework_Constraint_IsType` constraint now knows about the `real` type (which is an alias for `float`) -* Various work on compatibility with PHP 7 - -### Fixed - -* Fixed [#1749](https://github.com/sebastianbergmann/phpunit/issues/1749): `stopOnError` configuration setting does not work - -## [4.7.3] - 2015-06-11 - -### Fixed - -* Fixed [#1317](https://github.com/sebastianbergmann/phpunit/issues/1317): JUnit XML logfiles does not contain warnings -* Fixed an [issue](https://github.com/sebastianbergmann/php-code-coverage/issues/347) where the warning that no whitelist is used is displayed when it should not - -## [4.7.2] - 2015-06-06 - -New PHAR release due to updated dependencies - -## [4.7.1] - 2015-06-05 - -New PHAR release due to updated dependencies - -## [4.7.0] - 2015-06-05 - -### Added - -* Merged [#1718](https://github.com/sebastianbergmann/phpunit/issues/1718): Support for `--INI--` section in PHPT tests - -### Changed - -* Tests not annotated with `@small`, `@medium`, or `@large` are no longer treated as being annotated with `@small` -* In verbose mode, the test runner now prints information about the PHP runtime -* To be consistent with the printing of PHP runtime information, the configuration file used is only printed in verbose mode -* A warning is now printed when code coverage data is collected but no whitelist is configured - -[4.7.7]: https://github.com/sebastianbergmann/phpunit/compare/4.7.6...4.7.7 -[4.7.6]: https://github.com/sebastianbergmann/phpunit/compare/4.7.5...4.7.6 -[4.7.5]: https://github.com/sebastianbergmann/phpunit/compare/4.7.4...4.7.5 -[4.7.4]: https://github.com/sebastianbergmann/phpunit/compare/4.7.3...4.7.4 -[4.7.3]: https://github.com/sebastianbergmann/phpunit/compare/4.7.2...4.7.3 -[4.7.2]: https://github.com/sebastianbergmann/phpunit/compare/4.7.1...4.7.2 -[4.7.1]: https://github.com/sebastianbergmann/phpunit/compare/4.7.0...4.7.1 -[4.7.0]: https://github.com/sebastianbergmann/phpunit/compare/4.6...4.7.0 - diff --git a/tests/vendor/phpunit/phpunit/ChangeLog-4.8.md b/tests/vendor/phpunit/phpunit/ChangeLog-4.8.md deleted file mode 100644 index 560232a2..00000000 --- a/tests/vendor/phpunit/phpunit/ChangeLog-4.8.md +++ /dev/null @@ -1,140 +0,0 @@ -# Changes in PHPUnit 4.8 - -All notable changes of the PHPUnit 4.8 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.8.16] - 2015-10-23 - -### Added - -* Implemented [#1925](https://github.com/sebastianbergmann/phpunit/issues/1925): Provide a library-only PHAR - -## [4.8.15] - 2015-10-22 - -### Fixed - -* The backup of global state is now properly restored when changes to global state are disallowed -* The `__PHPUNIT_PHAR__` constant is now properly set when the PHPUnit PHAR is used as a library - -## [4.8.14] - 2015-10-17 - -### Fixed - -* Fixed [#1892](https://github.com/sebastianbergmann/phpunit/issues/1892): `--coverage-text` does not honor color settings - -## [4.8.13] - 2015-10-14 - -### Added - -* Added the `--self-upgrade` commandline switch for upgrading a PHPUnit PHAR to the latest version - -### Changed - -* The `--self-update` commandline switch now updates a PHPUnit PHAR to the latest version within the same release series - -## [4.8.12] - 2015-10-12 - -### Changed - -* Merged [#1893](https://github.com/sebastianbergmann/phpunit/issues/1893): Removed workaround for phpab bug - -## [4.8.11] - 2015-10-07 - -### Fixed - -* Merged [#1885](https://github.com/sebastianbergmann/phpunit/issues/1885): Fixed handling of PHP configuration settings for process isolation -* Fixed [#1857](https://github.com/sebastianbergmann/phpunit/issues/1857): `@covers` and `@uses` should only take a single word -* Fixed [#1879](https://github.com/sebastianbergmann/phpunit/issues/1879): `assertEqualXMLStructure()` cannot compare nodes with an ID -* Fixed [#1898](https://github.com/sebastianbergmann/phpunit/issues/1898): `@covers` and `@uses` cannot be used for namespaced functions -* Fixed [#1901](https://github.com/sebastianbergmann/phpunit/issues/1901): `--self-update` updates to PHPUnit 5, even on PHP < 5.6 - -## [4.8.10] - 2015-10-01 - -### Fixed - -* Merged [#1884](https://github.com/sebastianbergmann/phpunit/issues/1884): Avoid passing `Error` to `onNotSuccessfulTest()` on PHP 7 - -## [4.8.9] - 2015-09-20 - -### Fixed - -* Fixed regression introduced in PHPUnit 4.8.8 - -## [4.8.8] - 2015-09-19 - -### Fixed - -* Fixed [#1860](https://github.com/sebastianbergmann/phpunit/issues/1860): Not well-formed XML strings are always considered equal by `PHPUnit_Framework_Assert::assertXmlStringEqualsXmlString()` - -## [4.8.7] - 2015-09-14 - -New PHAR release due to updated dependencies - -## [4.8.6] - 2015-08-24 - -### Fixed - -* Fixed [#1835](https://github.com/sebastianbergmann/phpunit/issues/1835): Skipped test reported as errored since PHPUnit 4.7.4 - -## [4.8.5] - 2015-08-19 - -### Fixed - -* Fixed [#1831](https://github.com/sebastianbergmann/phpunit/issues/1831): PHAR manifest is missing - -## [4.8.4] - 2015-08-15 - -### Fixed - -* Fixed [#1823](https://github.com/sebastianbergmann/phpunit/issues/1823): Columns attribute in XML configuration file is ignored - -## [4.8.3] - 2015-08-10 - -### Changed - -* PHPUnit now exits early during bootstrap when an unsupported version of PHP is used - -## [4.8.2] - 2015-08-07 - -### Fixed - -* Fixed [#1816](https://github.com/sebastianbergmann/phpunit/issues/1816): PHPUnit 4.8.1 shows "4.8.0" as version number - -## [4.8.1] - 2015-08-07 - -### Fixed - -* Fixed [#1815](https://github.com/sebastianbergmann/phpunit/issues/1815): `phpunit --self-update` does not work in PHPUnit 4.8.0 - -## [4.8.0] - 2015-08-07 - -### Added - -* Added `--check-version` commandline switch to check whether the current version of PHPUnit is used (PHAR only) -* Added `--no-coverage` commandline switch to ignore code coverage configuration from the configuration file -* Implemented [#1663](https://github.com/sebastianbergmann/phpunit/issues/1663): The Crap4J report's threshold is now configurable -* Merged [#1728](https://github.com/sebastianbergmann/phpunit/issues/1728): Implemented the `@testWith` annotation as "syntactic sugar" for data providers -* Merged [#1739](https://github.com/sebastianbergmann/phpunit/issues/1739): Added support to the commandline test runner for using options after arguments - -### Changed - -* Made the argument check of `assertContains()` and `assertNotContains()` more strict to prevent undefined behavior such as [#1808](https://github.com/sebastianbergmann/phpunit/issues/1808) -* Changed the name of the default group from `__nogroup__` to `default` - -[4.8.16]: https://github.com/sebastianbergmann/phpunit/compare/4.8.15...4.8.16 -[4.8.15]: https://github.com/sebastianbergmann/phpunit/compare/4.8.14...4.8.15 -[4.8.14]: https://github.com/sebastianbergmann/phpunit/compare/4.8.13...4.8.14 -[4.8.13]: https://github.com/sebastianbergmann/phpunit/compare/4.8.12...4.8.13 -[4.8.12]: https://github.com/sebastianbergmann/phpunit/compare/4.8.11...4.8.12 -[4.8.11]: https://github.com/sebastianbergmann/phpunit/compare/4.8.10...4.8.11 -[4.8.10]: https://github.com/sebastianbergmann/phpunit/compare/4.8.9...4.8.10 -[4.8.9]: https://github.com/sebastianbergmann/phpunit/compare/4.8.8...4.8.9 -[4.8.8]: https://github.com/sebastianbergmann/phpunit/compare/4.8.7...4.8.8 -[4.8.7]: https://github.com/sebastianbergmann/phpunit/compare/4.8.6...4.8.7 -[4.8.6]: https://github.com/sebastianbergmann/phpunit/compare/4.8.5...4.8.6 -[4.8.5]: https://github.com/sebastianbergmann/phpunit/compare/4.8.4...4.8.5 -[4.8.4]: https://github.com/sebastianbergmann/phpunit/compare/4.8.3...4.8.4 -[4.8.3]: https://github.com/sebastianbergmann/phpunit/compare/4.8.2...4.8.3 -[4.8.2]: https://github.com/sebastianbergmann/phpunit/compare/4.8.1...4.8.2 -[4.8.1]: https://github.com/sebastianbergmann/phpunit/compare/4.8.0...4.8.1 -[4.8.0]: https://github.com/sebastianbergmann/phpunit/compare/4.7...4.8.0 - diff --git a/tests/vendor/phpunit/phpunit/ChangeLog-5.0.md b/tests/vendor/phpunit/phpunit/ChangeLog-5.0.md deleted file mode 100644 index 9d9d450c..00000000 --- a/tests/vendor/phpunit/phpunit/ChangeLog-5.0.md +++ /dev/null @@ -1,103 +0,0 @@ -# Changes in PHPUnit 5.0 - -All notable changes of the PHPUnit 5.0 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [5.0.8] - 2015-10-23 - -### Added - -* Implemented [#1925](https://github.com/sebastianbergmann/phpunit/issues/1925): Provide a library-only PHAR - -## [5.0.7] - 2015-10-22 - -### Fixed - -* The backup of global state is now properly restored when changes to global state are disallowed -* The `__PHPUNIT_PHAR__` constant is now properly set when the PHPUnit PHAR is used as a library - -## [5.0.6] - 2015-10-14 - -### Added - -* Added the `--self-upgrade` commandline switch for upgrading a PHPUnit PHAR to the latest version - -### Changed - -* The `--self-update` commandline switch now updates a PHPUnit PHAR to the latest version within the same release series - -### Fixed - -* Fixed [#1892](https://github.com/sebastianbergmann/phpunit/issues/1892): `--coverage-text` does not honor color settings - -## [5.0.5] - 2015-10-12 - -### Changed - -* Merged [#1893](https://github.com/sebastianbergmann/phpunit/issues/1893): Removed workaround for phpab bug - -## [5.0.4] - 2015-10-07 - -### Fixed - -* Fixed [#1857](https://github.com/sebastianbergmann/phpunit/issues/1857): `@covers` and `@uses` should only take a single word -* Fixed [#1898](https://github.com/sebastianbergmann/phpunit/issues/1898): `@covers` and `@uses` cannot be used for namespaced functions - -## [5.0.3] - 2015-10-02 - -* Fixed check for PHP version in PHAR distribution of PHPUnit - -## [5.0.2] - 2015-10-02 - -### Fixed - -* Fixed [#1879](https://github.com/sebastianbergmann/phpunit/issues/1879): `assertEqualXMLStructure()` cannot compare nodes with an ID -* Fixed [#1887](https://github.com/sebastianbergmann/phpunit/issues/1887): PHAR distribution of PHPUnit 5.0.1 does not work - -## [5.0.1] - 2015-10-02 - -### Fixed - -* Merged [#1885](https://github.com/sebastianbergmann/phpunit/issues/1885): Fixed handling of PHP configuration settings for process isolation -* An outdated version of DbUnit was bundled in the PHAR distribution of PHPUnit - -## [5.0.0] - 2015-10-02 - -### Added - -* Implemented [#1604](https://github.com/sebastianbergmann/phpunit/issues/1604): A `@small` test should be marked as risky when it executes code that performs I/O operations -* Implemented [#1656](https://github.com/sebastianbergmann/phpunit/issues/1656): Allow sorting test failures in reverse -* Merged [#1753](https://github.com/sebastianbergmann/phpunit/issues/1753): Added the `assertFinite()`, `assertInfinite()` and `assertNan()` assertions -* Merged [#1876](https://github.com/sebastianbergmann/phpunit/issues/1876): Added the `--atleast-version` commandline option -* Implemented [#1780](https://github.com/sebastianbergmann/phpunit/issues/1780): Support for deep-cloning of results passed between tests using `@depends` -* Implemented [#1821](https://github.com/sebastianbergmann/phpunit/issues/1821): Expectations on mock objects passed via `@depends` are now also evaluated for the depending test -* Added `--whitelist` commandline option to configure a whitelist for code coverage analysis -* Added convenience wrapper `getMockWithoutInvokingTheOriginalConstructor()` to create a test double without invoking the original class' constructor -* Added TeamCity test result logger for more seamless integration of PHPUnit with PhpStorm - -### Changed - -* Merged [#1781](https://github.com/sebastianbergmann/phpunit/issues/1781): Empty string is not treated as a valid JSON string anymore -* Merged [#1822](https://github.com/sebastianbergmann/phpunit/issues/1822): Always output progress totals on last line -* It is now mandatory to configure a whitelist for code coverage analysis -* Renamed the `beStrictAboutTestSize` configuration option to `enforceTimeLimit` -* Printer-related CLI options now override printer-related configuration settings - -### Removed - -* The `assertSelectCount()`, `assertSelectRegExp()`, `assertSelectEquals()`, `assertTag()`, `assertNotTag()` assertions have been removed -* The `--strict` commandline option and the XML configuration's `strict` attribute have been removed -* The code coverage blacklist functionality has been removed -* The PHPUnit_Selenium component is no longer bundled in the PHAR distribution -* The PHPUnit_Selenium component can no longer be configured using the `` element of PHPUnit's configuration file -* PHPUnit is no longer supported on PHP 5.3, PHP 5.4, and PHP 5.5 - -[5.0.8]: https://github.com/sebastianbergmann/phpunit/compare/5.0.7...5.0.8 -[5.0.7]: https://github.com/sebastianbergmann/phpunit/compare/5.0.6...5.0.7 -[5.0.6]: https://github.com/sebastianbergmann/phpunit/compare/5.0.5...5.0.6 -[5.0.5]: https://github.com/sebastianbergmann/phpunit/compare/5.0.4...5.0.5 -[5.0.4]: https://github.com/sebastianbergmann/phpunit/compare/5.0.3...5.0.4 -[5.0.3]: https://github.com/sebastianbergmann/phpunit/compare/5.0.2...5.0.3 -[5.0.2]: https://github.com/sebastianbergmann/phpunit/compare/5.0.1...5.0.2 -[5.0.1]: https://github.com/sebastianbergmann/phpunit/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/sebastianbergmann/phpunit/compare/4.8...5.0.0 - diff --git a/tests/vendor/phpunit/phpunit/LICENSE b/tests/vendor/phpunit/phpunit/LICENSE index 32ddc8e0..fe178b08 100644 --- a/tests/vendor/phpunit/phpunit/LICENSE +++ b/tests/vendor/phpunit/phpunit/LICENSE @@ -1,6 +1,6 @@ PHPUnit -Copyright (c) 2001-2015, Sebastian Bergmann . +Copyright (c) 2001-2014, Sebastian Bergmann . All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/tests/vendor/phpunit/phpunit/README.md b/tests/vendor/phpunit/phpunit/README.md index 813fd6e0..5a88df64 100644 --- a/tests/vendor/phpunit/phpunit/README.md +++ b/tests/vendor/phpunit/phpunit/README.md @@ -2,36 +2,31 @@ PHPUnit is a programmer-oriented testing framework for PHP. It is an instance of the xUnit architecture for unit testing frameworks. -[![Latest Stable Version](https://img.shields.io/packagist/v/phpunit/phpunit.svg?style=flat-square)](https://packagist.org/packages/phpunit/phpunit) -[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg?style=flat-square)](https://php.net/) -[![Build Status](https://img.shields.io/travis/sebastianbergmann/phpunit/5.0.svg?style=flat-square)](https://travis-ci.org/sebastianbergmann/phpunit) +[![Latest Stable Version](https://poser.pugx.org/phpunit/phpunit/v/stable.png)](https://packagist.org/packages/phpunit/phpunit) +[![Build Status](https://travis-ci.org/sebastianbergmann/phpunit.png?branch=4.0)](https://travis-ci.org/sebastianbergmann/phpunit) +[![Dependency Status](https://www.versioneye.com/php/phpunit:phpunit/4.0.x-dev/badge.png)](https://www.versioneye.com/php/phpunit:phpunit/4.0.x-dev) ## Installation -We distribute a [PHP Archive (PHAR)](https://php.net/phar) that has all required (as well as some optional) dependencies of PHPUnit bundled in a single file: +We distribute a [PHP Archive (PHAR)](http://php.net/phar) that has all required (as well as some optional) dependencies of PHPUnit bundled in a single file: -```bash -$ wget https://phar.phpunit.de/phpunit.phar - -$ chmod +x phpunit.phar - -$ mv phpunit.phar /usr/local/bin/phpunit -``` + wget https://phar.phpunit.de/phpunit.phar + chmod +x phpunit.phar + mv phpunit.phar /usr/local/bin/phpunit You can also immediately use the PHAR after you have downloaded it, of course: -```bash -$ wget https://phar.phpunit.de/phpunit.phar + wget https://phar.phpunit.de/phpunit.phar + php phpunit.phar -$ php phpunit.phar -``` - -Alternatively, you may use [Composer](https://getcomposer.org/) to download and install PHPUnit as well as its dependencies. Please refer to the [documentation](https://phpunit.de/documentation.html) for details on how to do this. +Alternatively, you may use [Composer](http://getcomposer.org/) or the [PEAR Installer](http://pear.php.net/manual/en/guide.users.commandline.cli.php) to download and install PHPUnit as well as its dependencies. Please refer to the [documentation](http://phpunit.de/documentation.html) for details on how to do this. ## Contribute Please refer to [CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md) for information on how to contribute to PHPUnit and its related projects. +The development of PHPUnit is discussed on the [dev@phpunit.de](mailto:dev-subscribe@phpunit.de) mailing list as well as on the [#phpunit channel on the Freenode IRC network](irc://irc.freenode.net/phpunit). + ## List of Contributors Thanks to everyone who has contributed to PHPUnit! You can find a detailed list of contributors on every PHPUnit related package on GitHub. This list shows only the major components: @@ -40,7 +35,7 @@ Thanks to everyone who has contributed to PHPUnit! You can find a detailed list * [PHP_CodeCoverage](https://github.com/sebastianbergmann/php-code-coverage/graphs/contributors) * [PHPUnit_MockObject](https://github.com/sebastianbergmann/phpunit-mock-objects/graphs/contributors) -A very special thanks to everyone who has contributed to the documentation and helps maintain the translations: +A very special thanks to everyone who has contributed to the documentation and helps maintaining the translations: * [PHPUnit Documentation](https://github.com/sebastianbergmann/phpunit-documentation/graphs/contributors) diff --git a/tests/vendor/phpunit/phpunit/Tests/Framework/Constraint/CountTest.php b/tests/vendor/phpunit/phpunit/Tests/Framework/Constraint/CountTest.php new file mode 100644 index 00000000..f7288885 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/Tests/Framework/Constraint/CountTest.php @@ -0,0 +1,105 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @author Sebastian Bergmann + * @author Jeroen Versteeg + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.7.30 + */ + +/** + * + * + * @package PHPUnit + * @author Sebastian Bergmann + * @author Jeroen Versteeg + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.7.30 + */ +class CountTest extends PHPUnit_Framework_TestCase +{ + public function testCount() + { + $countConstraint = new PHPUnit_Framework_Constraint_Count(3); + $this->assertTrue($countConstraint->evaluate(array(1,2,3), '', true)); + + $countConstraint = new PHPUnit_Framework_Constraint_Count(0); + $this->assertTrue($countConstraint->evaluate(array(), '', true)); + + $countConstraint = new PHPUnit_Framework_Constraint_Count(2); + $it = new TestIterator(array(1, 2)); + $this->assertTrue($countConstraint->evaluate($it, '', true)); + } + + public function testCountDoesNotChangeIteratorKey() + { + $countConstraint = new PHPUnit_Framework_Constraint_Count(2); + + // test with 1st implementation of Iterator + $it = new TestIterator(array(1, 2)); + + $countConstraint->evaluate($it, '', true); + $this->assertEquals(1, $it->current()); + + $it->next(); + $countConstraint->evaluate($it, '', true); + $this->assertEquals(2, $it->current()); + + $it->next(); + $countConstraint->evaluate($it, '', true); + $this->assertFalse($it->valid()); + + // test with 2nd implementation of Iterator + $it = new TestIterator2(array(1, 2)); + + $countConstraint = new PHPUnit_Framework_Constraint_Count(2); + $countConstraint->evaluate($it, '', true); + $this->assertEquals(1, $it->current()); + + $it->next(); + $countConstraint->evaluate($it, '', true); + $this->assertEquals(2, $it->current()); + + $it->next(); + $countConstraint->evaluate($it, '', true); + $this->assertFalse($it->valid()); + } +} diff --git a/tests/vendor/phpunit/phpunit/tests/_files/TestIterator2.php b/tests/vendor/phpunit/phpunit/Tests/_files/TestIterator2.php similarity index 91% rename from tests/vendor/phpunit/phpunit/tests/_files/TestIterator2.php rename to tests/vendor/phpunit/phpunit/Tests/_files/TestIterator2.php index 3b47fa36..bae3655f 100644 --- a/tests/vendor/phpunit/phpunit/tests/_files/TestIterator2.php +++ b/tests/vendor/phpunit/phpunit/Tests/_files/TestIterator2.php @@ -1,6 +1,6 @@ data); } -} +} \ No newline at end of file diff --git a/tests/vendor/phpunit/phpunit/build.xml b/tests/vendor/phpunit/phpunit/build.xml index 50c13aa0..2add598f 100644 --- a/tests/vendor/phpunit/phpunit/build.xml +++ b/tests/vendor/phpunit/phpunit/build.xml @@ -1,289 +1,350 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/vendor/phpunit/phpunit/build/bin/phpab b/tests/vendor/phpunit/phpunit/build/bin/phpab deleted file mode 100755 index 9dcc3bc8..00000000 --- a/tests/vendor/phpunit/phpunit/build/bin/phpab +++ /dev/null @@ -1,897 +0,0 @@ -#!/usr/bin/env php - '/vendor/zetacomponents/base/src/base.php', - 'ezcbaseconfigurationinitializer' => '/vendor/zetacomponents/base/src/interfaces/configuration_initializer.php', - 'ezcbasedoubleclassrepositoryprefixexception' => '/vendor/zetacomponents/base/src/exceptions/double_class_repository_prefix.php', - 'ezcbaseexception' => '/vendor/zetacomponents/base/src/exceptions/exception.php', - 'ezcbaseexportable' => '/vendor/zetacomponents/base/src/interfaces/exportable.php', - 'ezcbaseextensionnotfoundexception' => '/vendor/zetacomponents/base/src/exceptions/extension_not_found.php', - 'ezcbasefeatures' => '/vendor/zetacomponents/base/src/features.php', - 'ezcbasefile' => '/vendor/zetacomponents/base/src/file.php', - 'ezcbasefileexception' => '/vendor/zetacomponents/base/src/exceptions/file_exception.php', - 'ezcbasefilefindcontext' => '/vendor/zetacomponents/base/src/structs/file_find_context.php', - 'ezcbasefileioexception' => '/vendor/zetacomponents/base/src/exceptions/file_io.php', - 'ezcbasefilenotfoundexception' => '/vendor/zetacomponents/base/src/exceptions/file_not_found.php', - 'ezcbasefilepermissionexception' => '/vendor/zetacomponents/base/src/exceptions/file_permission.php', - 'ezcbasefunctionalitynotsupportedexception' => '/vendor/zetacomponents/base/src/exceptions/functionality_not_supported.php', - 'ezcbaseinit' => '/vendor/zetacomponents/base/src/init.php', - 'ezcbaseinitcallbackconfiguredexception' => '/vendor/zetacomponents/base/src/exceptions/init_callback_configured.php', - 'ezcbaseinitinvalidcallbackclassexception' => '/vendor/zetacomponents/base/src/exceptions/invalid_callback_class.php', - 'ezcbaseinvalidparentclassexception' => '/vendor/zetacomponents/base/src/exceptions/invalid_parent_class.php', - 'ezcbasemetadata' => '/vendor/zetacomponents/base/src/metadata.php', - 'ezcbasemetadatapearreader' => '/vendor/zetacomponents/base/src/metadata/pear.php', - 'ezcbasemetadatatarballreader' => '/vendor/zetacomponents/base/src/metadata/tarball.php', - 'ezcbaseoptions' => '/vendor/zetacomponents/base/src/options.php', - 'ezcbasepersistable' => '/vendor/zetacomponents/base/src/interfaces/persistable.php', - 'ezcbasepropertynotfoundexception' => '/vendor/zetacomponents/base/src/exceptions/property_not_found.php', - 'ezcbasepropertypermissionexception' => '/vendor/zetacomponents/base/src/exceptions/property_permission.php', - 'ezcbaserepositorydirectory' => '/vendor/zetacomponents/base/src/structs/repository_directory.php', - 'ezcbasesettingnotfoundexception' => '/vendor/zetacomponents/base/src/exceptions/setting_not_found.php', - 'ezcbasesettingvalueexception' => '/vendor/zetacomponents/base/src/exceptions/setting_value.php', - 'ezcbasestruct' => '/vendor/zetacomponents/base/src/struct.php', - 'ezcbasevalueexception' => '/vendor/zetacomponents/base/src/exceptions/value.php', - 'ezcbasewhateverexception' => '/vendor/zetacomponents/base/src/exceptions/whatever.php', - 'ezcconsoleargument' => '/vendor/zetacomponents/console-tools/src/input/argument.php', - 'ezcconsoleargumentalreadyregisteredexception' => '/vendor/zetacomponents/console-tools/src/exceptions/argument_already_registered.php', - 'ezcconsoleargumentexception' => '/vendor/zetacomponents/console-tools/src/exceptions/argument.php', - 'ezcconsoleargumentmandatoryviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/argument_mandatory_violation.php', - 'ezcconsolearguments' => '/vendor/zetacomponents/console-tools/src/input/arguments.php', - 'ezcconsoleargumenttypeviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/argument_type_violation.php', - 'ezcconsoledialog' => '/vendor/zetacomponents/console-tools/src/interfaces/dialog.php', - 'ezcconsoledialogabortexception' => '/vendor/zetacomponents/console-tools/src/exceptions/dialog_abort.php', - 'ezcconsoledialogoptions' => '/vendor/zetacomponents/console-tools/src/options/dialog.php', - 'ezcconsoledialogvalidator' => '/vendor/zetacomponents/console-tools/src/interfaces/dialog_validator.php', - 'ezcconsoledialogviewer' => '/vendor/zetacomponents/console-tools/src/dialog_viewer.php', - 'ezcconsoleexception' => '/vendor/zetacomponents/console-tools/src/exceptions/exception.php', - 'ezcconsoleinput' => '/vendor/zetacomponents/console-tools/src/input.php', - 'ezcconsoleinputhelpgenerator' => '/vendor/zetacomponents/console-tools/src/interfaces/input_help_generator.php', - 'ezcconsoleinputstandardhelpgenerator' => '/vendor/zetacomponents/console-tools/src/input/help_generators/standard.php', - 'ezcconsoleinputvalidator' => '/vendor/zetacomponents/console-tools/src/interfaces/input_validator.php', - 'ezcconsoleinvalidoptionnameexception' => '/vendor/zetacomponents/console-tools/src/exceptions/invalid_option_name.php', - 'ezcconsoleinvalidoutputtargetexception' => '/vendor/zetacomponents/console-tools/src/exceptions/invalid_output_target.php', - 'ezcconsolemenudialog' => '/vendor/zetacomponents/console-tools/src/dialog/menu_dialog.php', - 'ezcconsolemenudialogdefaultvalidator' => '/vendor/zetacomponents/console-tools/src/dialog/validators/menu_dialog_default.php', - 'ezcconsolemenudialogoptions' => '/vendor/zetacomponents/console-tools/src/options/menu_dialog.php', - 'ezcconsolemenudialogvalidator' => '/vendor/zetacomponents/console-tools/src/interfaces/menu_dialog_validator.php', - 'ezcconsolenopositionstoredexception' => '/vendor/zetacomponents/console-tools/src/exceptions/no_position_stored.php', - 'ezcconsolenovaliddialogresultexception' => '/vendor/zetacomponents/console-tools/src/exceptions/no_valid_dialog_result.php', - 'ezcconsoleoption' => '/vendor/zetacomponents/console-tools/src/input/option.php', - 'ezcconsoleoptionalreadyregisteredexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_already_registered.php', - 'ezcconsoleoptionargumentsviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_arguments_violation.php', - 'ezcconsoleoptiondependencyviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_dependency_violation.php', - 'ezcconsoleoptionexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option.php', - 'ezcconsoleoptionexclusionviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_exclusion_violation.php', - 'ezcconsoleoptionmandatoryviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_mandatory_violation.php', - 'ezcconsoleoptionmissingvalueexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_missing_value.php', - 'ezcconsoleoptionnoaliasexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_no_alias.php', - 'ezcconsoleoptionnotexistsexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_not_exists.php', - 'ezcconsoleoptionrule' => '/vendor/zetacomponents/console-tools/src/structs/option_rule.php', - 'ezcconsoleoptionstringnotwellformedexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_string_not_wellformed.php', - 'ezcconsoleoptiontoomanyvaluesexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_too_many_values.php', - 'ezcconsoleoptiontypeviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_type_violation.php', - 'ezcconsoleoutput' => '/vendor/zetacomponents/console-tools/src/output.php', - 'ezcconsoleoutputformat' => '/vendor/zetacomponents/console-tools/src/structs/output_format.php', - 'ezcconsoleoutputformats' => '/vendor/zetacomponents/console-tools/src/structs/output_formats.php', - 'ezcconsoleoutputoptions' => '/vendor/zetacomponents/console-tools/src/options/output.php', - 'ezcconsoleprogressbar' => '/vendor/zetacomponents/console-tools/src/progressbar.php', - 'ezcconsoleprogressbaroptions' => '/vendor/zetacomponents/console-tools/src/options/progressbar.php', - 'ezcconsoleprogressmonitor' => '/vendor/zetacomponents/console-tools/src/progressmonitor.php', - 'ezcconsoleprogressmonitoroptions' => '/vendor/zetacomponents/console-tools/src/options/progressmonitor.php', - 'ezcconsolequestiondialog' => '/vendor/zetacomponents/console-tools/src/dialog/question_dialog.php', - 'ezcconsolequestiondialogcollectionvalidator' => '/vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_collection.php', - 'ezcconsolequestiondialogmappingvalidator' => '/vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_mapping.php', - 'ezcconsolequestiondialogoptions' => '/vendor/zetacomponents/console-tools/src/options/question_dialog.php', - 'ezcconsolequestiondialogregexvalidator' => '/vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_regex.php', - 'ezcconsolequestiondialogtypevalidator' => '/vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_type.php', - 'ezcconsolequestiondialogvalidator' => '/vendor/zetacomponents/console-tools/src/interfaces/question_dialog_validator.php', - 'ezcconsolestandardinputvalidator' => '/vendor/zetacomponents/console-tools/src/input/validators/standard.php', - 'ezcconsolestatusbar' => '/vendor/zetacomponents/console-tools/src/statusbar.php', - 'ezcconsolestatusbaroptions' => '/vendor/zetacomponents/console-tools/src/options/statusbar.php', - 'ezcconsolestringtool' => '/vendor/zetacomponents/console-tools/src/tools/string.php', - 'ezcconsoletable' => '/vendor/zetacomponents/console-tools/src/table.php', - 'ezcconsoletablecell' => '/vendor/zetacomponents/console-tools/src/table/cell.php', - 'ezcconsoletableoptions' => '/vendor/zetacomponents/console-tools/src/options/table.php', - 'ezcconsoletablerow' => '/vendor/zetacomponents/console-tools/src/table/row.php', - 'ezcconsoletoomanyargumentsexception' => '/vendor/zetacomponents/console-tools/src/exceptions/argument_too_many.php', - 'theseer\\autoload\\application' => '/phpab/Application.php', - 'theseer\\autoload\\applicationexception' => '/phpab/Application.php', - 'theseer\\autoload\\autoloadbuilderexception' => '/phpab/AutoloadRenderer.php', - 'theseer\\autoload\\autoloadrenderer' => '/phpab/AutoloadRenderer.php', - 'theseer\\autoload\\cache' => '/phpab/Cache.php', - 'theseer\\autoload\\cacheentry' => '/phpab/CacheEntry.php', - 'theseer\\autoload\\cacheexception' => '/phpab/Cache.php', - 'theseer\\autoload\\cachingparser' => '/phpab/CachingParser.php', - 'theseer\\autoload\\classdependencysorter' => '/phpab/DependencySorter.php', - 'theseer\\autoload\\classdependencysorterexception' => '/phpab/DependencySorter.php', - 'theseer\\autoload\\cli' => '/phpab/CLI.php', - 'theseer\\autoload\\clienvironmentexception' => '/phpab/CLI.php', - 'theseer\\autoload\\collector' => '/phpab/Collector.php', - 'theseer\\autoload\\collectorexception' => '/phpab/Collector.php', - 'theseer\\autoload\\collectorresult' => '/phpab/CollectorResult.php', - 'theseer\\autoload\\collectorresultexception' => '/phpab/CollectorResult.php', - 'theseer\\autoload\\composeriterator' => '/phpab/ComposerIterator.php', - 'theseer\\autoload\\composeriteratorexception' => '/phpab/ComposerIterator.php', - 'theseer\\autoload\\config' => '/phpab/Config.php', - 'theseer\\autoload\\factory' => '/phpab/Factory.php', - 'theseer\\autoload\\logger' => '/phpab/Logger.php', - 'theseer\\autoload\\parser' => '/phpab/Parser.php', - 'theseer\\autoload\\parseresult' => '/phpab/ParseResult.php', - 'theseer\\autoload\\parserexception' => '/phpab/Parser.php', - 'theseer\\autoload\\parserinterface' => '/phpab/ParserInterface.php', - 'theseer\\autoload\\pathcomparator' => '/phpab/PathComparator.php', - 'theseer\\autoload\\pharbuilder' => '/phpab/PharBuilder.php', - 'theseer\\autoload\\sourcefile' => '/phpab/SourceFile.php', - 'theseer\\autoload\\staticrenderer' => '/phpab/StaticRenderer.php', - 'theseer\\autoload\\version' => '/phpab/Version.php', - 'theseer\\directoryscanner\\directoryscanner' => '/vendor/theseer/directoryscanner/src/directoryscanner.php', - 'theseer\\directoryscanner\\exception' => '/vendor/theseer/directoryscanner/src/directoryscanner.php', - 'theseer\\directoryscanner\\filesonlyfilteriterator' => '/vendor/theseer/directoryscanner/src/filesonlyfilter.php', - 'theseer\\directoryscanner\\includeexcludefilteriterator' => '/vendor/theseer/directoryscanner/src/includeexcludefilter.php', - 'theseer\\directoryscanner\\phpfilteriterator' => '/vendor/theseer/directoryscanner/src/phpfilter.php' - ); - } - - $class = strtolower($class); - - if (isset($classes[$class])) { - require 'phar://phpab.phar' . $classes[$class]; - } - } -); - -Phar::mapPhar('phpab.phar'); -define('PHPAB_VERSION', '1.20.3'); -$factory = new \TheSeer\Autoload\Factory(); -$factory->getCLI()->run(); -exit(0); - -__HALT_COMPILER(); ?> -Ó) -phpab.phar8vendor/theseer/directoryscanner/src/directoryscanner.php«"†VA éP…¶7vendor/theseer/directoryscanner/src/filesonlyfilter.php´ -†VªAúf¥¶<vendor/theseer/directoryscanner/src/includeexcludefilter.php^†VT†BØl¶1vendor/theseer/directoryscanner/src/phpfilter.php× †V¥šFA¶'vendor/zetacomponents/base/src/base.phpÛY†VŽû\”¶0vendor/zetacomponents/base/src/base_autoload.phpN†VHª´Â¬¶Lvendor/zetacomponents/base/src/exceptions/double_class_repository_prefix.phpV†V6åŽw¶7vendor/zetacomponents/base/src/exceptions/exception.phpª†V CTsï¶Avendor/zetacomponents/base/src/exceptions/extension_not_found.php6†V~²9 ¶<vendor/zetacomponents/base/src/exceptions/file_exception.php-†VŽ®¹¶5vendor/zetacomponents/base/src/exceptions/file_io.phpÕ†V™O¶Í;¶<vendor/zetacomponents/base/src/exceptions/file_not_found.phpJ†V,T]DX¶=vendor/zetacomponents/base/src/exceptions/file_permission.phpª †VîDíg7¶Ivendor/zetacomponents/base/src/exceptions/functionality_not_supported.php>†V× V&J¶Fvendor/zetacomponents/base/src/exceptions/init_callback_configured.php¯†Vó: äë¶Dvendor/zetacomponents/base/src/exceptions/invalid_callback_class.php_†V -Z»¶Bvendor/zetacomponents/base/src/exceptions/invalid_parent_class.phpE†Vßîå‡å¶@vendor/zetacomponents/base/src/exceptions/property_not_found.phpù†VÑ"íyA¶Avendor/zetacomponents/base/src/exceptions/property_permission.phpf†VW>ÂD¢¶?vendor/zetacomponents/base/src/exceptions/setting_not_found.phpT†VñH[Yé¶;vendor/zetacomponents/base/src/exceptions/setting_value.php[†VºÍá¶3vendor/zetacomponents/base/src/exceptions/value.phpƆVÓú«.Ѷ6vendor/zetacomponents/base/src/exceptions/whatever.php †VÎ8±K¶0vendor/zetacomponents/base/src/ezc_bootstrap.php|†V¬M‡€É¶+vendor/zetacomponents/base/src/features.php¥.†VÇ -'傿¶'vendor/zetacomponents/base/src/file.php_H†VÞùà ^¶'vendor/zetacomponents/base/src/init.phpV†Vukoä¶Gvendor/zetacomponents/base/src/interfaces/configuration_initializer.php‹†VªE”¶8vendor/zetacomponents/base/src/interfaces/exportable.php§†VBú©ô5¶9vendor/zetacomponents/base/src/interfaces/persistable.phpû†V9­J ¶+vendor/zetacomponents/base/src/metadata.php¿†V¼Ÿìb•¶0vendor/zetacomponents/base/src/metadata/pear.php†V·ø<£·¶3vendor/zetacomponents/base/src/metadata/tarball.php†Vý” g^¶*vendor/zetacomponents/base/src/options.phpð†V±y*Ll¶)vendor/zetacomponents/base/src/struct.php?†V´t¢¿ª¶<vendor/zetacomponents/base/src/structs/file_find_context.phpµ †Vý-ÝÑš¶?vendor/zetacomponents/base/src/structs/repository_directory.php †VL¡8'U¶<vendor/zetacomponents/console-tools/src/console_autoload.phpr†V¯ã§i¶>vendor/zetacomponents/console-tools/src/dialog/menu_dialog.phpæ†V1„wÇÔ¶Bvendor/zetacomponents/console-tools/src/dialog/question_dialog.phpû"†VŸ †Ãt˜¶Qvendor/zetacomponents/console-tools/src/dialog/validators/menu_dialog_default.php…†V+¸¶Xvendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_collection.phpà†V€O›žN¶Uvendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_mapping.php†VÅ­ÃF¶Svendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_regex.phpʆVÓ»ø{¶Rvendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_type.phpC†V(—¶9vendor/zetacomponents/console-tools/src/dialog_viewer.php" -†V?R28¾¶?vendor/zetacomponents/console-tools/src/exceptions/argument.phpІVºX’ ζRvendor/zetacomponents/console-tools/src/exceptions/argument_already_registered.phpE †V¼/wm'¶Svendor/zetacomponents/console-tools/src/exceptions/argument_mandatory_violation.php…†V ´ð±¶Hvendor/zetacomponents/console-tools/src/exceptions/argument_too_many.php¶†V*YÇÛ¶Nvendor/zetacomponents/console-tools/src/exceptions/argument_type_violation.phps†Vu[Ó:M¶Cvendor/zetacomponents/console-tools/src/exceptions/dialog_abort.php·†VÞ"¶¶@vendor/zetacomponents/console-tools/src/exceptions/exception.php¬†VP[¥ ¶Jvendor/zetacomponents/console-tools/src/exceptions/invalid_option_name.php†V÷dõ¶Lvendor/zetacomponents/console-tools/src/exceptions/invalid_output_target.phpï†Vå]vmw¶Ivendor/zetacomponents/console-tools/src/exceptions/no_position_stored.php¬†V°½RGy¶Mvendor/zetacomponents/console-tools/src/exceptions/no_valid_dialog_result.phpĆVÙXÐý¶=vendor/zetacomponents/console-tools/src/exceptions/option.php†Vµ}ŽžY¶Pvendor/zetacomponents/console-tools/src/exceptions/option_already_registered.phpé†VÙ-/ß¶Qvendor/zetacomponents/console-tools/src/exceptions/option_arguments_violation.phpŸ†V~xí¶Rvendor/zetacomponents/console-tools/src/exceptions/option_dependency_violation.php†Vr„º¶¶Qvendor/zetacomponents/console-tools/src/exceptions/option_exclusion_violation.php†VhV‡m¶Qvendor/zetacomponents/console-tools/src/exceptions/option_mandatory_violation.phph†VþYXpA¶Kvendor/zetacomponents/console-tools/src/exceptions/option_missing_value.php††VF¸^¶Fvendor/zetacomponents/console-tools/src/exceptions/option_no_alias.php †VñŠ££¶Hvendor/zetacomponents/console-tools/src/exceptions/option_not_exists.php$†Vø6E´¶Svendor/zetacomponents/console-tools/src/exceptions/option_string_not_wellformed.php †VäÙ0‘õ¶Mvendor/zetacomponents/console-tools/src/exceptions/option_too_many_values.phpw†Vþˆ•¶Lvendor/zetacomponents/console-tools/src/exceptions/option_type_violation.php†V†àD/¶1vendor/zetacomponents/console-tools/src/input.phpK³†Vè&}hê¶:vendor/zetacomponents/console-tools/src/input/argument.phpì†V©h"Á¶;vendor/zetacomponents/console-tools/src/input/arguments.phpb!†VåJES¶Jvendor/zetacomponents/console-tools/src/input/help_generators/standard.php9†VèBƒj¶8vendor/zetacomponents/console-tools/src/input/option.php¿O†VS•Ç~°¶Evendor/zetacomponents/console-tools/src/input/validators/standard.php߆V xç¶=vendor/zetacomponents/console-tools/src/interfaces/dialog.phpT †V*/Z;¶Gvendor/zetacomponents/console-tools/src/interfaces/dialog_validator.php­†VÐ ˜‘5¶Kvendor/zetacomponents/console-tools/src/interfaces/input_help_generator.php†VtžÚÓ¶Fvendor/zetacomponents/console-tools/src/interfaces/input_validator.phpy†Veutov¶Lvendor/zetacomponents/console-tools/src/interfaces/menu_dialog_validator.phpІV±÷åT¶Pvendor/zetacomponents/console-tools/src/interfaces/question_dialog_validator.php†Víª&cÖ¶:vendor/zetacomponents/console-tools/src/options/dialog.php2 †V3óY¶?vendor/zetacomponents/console-tools/src/options/menu_dialog.php‰†V1vžf¶:vendor/zetacomponents/console-tools/src/options/output.phpƒ†V¦0ÙI¶?vendor/zetacomponents/console-tools/src/options/progressbar.phpç†Vt‚eÖ%¶Cvendor/zetacomponents/console-tools/src/options/progressmonitor.phpF †VÏ ¶Cvendor/zetacomponents/console-tools/src/options/question_dialog.phpñ†VW¬ia¶=vendor/zetacomponents/console-tools/src/options/statusbar.php¥ †VpØ~[¶9vendor/zetacomponents/console-tools/src/options/table.phpL"†VseKÕ¶2vendor/zetacomponents/console-tools/src/output.php½M†VêW±?¶7vendor/zetacomponents/console-tools/src/progressbar.php®:†Vdm|Ãë¶;vendor/zetacomponents/console-tools/src/progressmonitor.phpZ†V殦q¶5vendor/zetacomponents/console-tools/src/statusbar.php †Vj ñrM¶?vendor/zetacomponents/console-tools/src/structs/option_rule.phpÁ†V ¸ë¶Avendor/zetacomponents/console-tools/src/structs/output_format.phpk†Vhñ+-î¶Bvendor/zetacomponents/console-tools/src/structs/output_formats.php+†VùD§Œý¶1vendor/zetacomponents/console-tools/src/table.php)s†VºsB…1¶6vendor/zetacomponents/console-tools/src/table/cell.php†V+(Ô¿ò¶5vendor/zetacomponents/console-tools/src/table/row.phpw/†V½ -h%Ú¶8vendor/zetacomponents/console-tools/src/tools/string.phpì†VÿŸ€F)¶phpab/Application.php@ †VD -p4^š¶phpab/AutoloadRenderer.phpb#†V³ -Bµé"¶ phpab/CLI.phpÊV†V¼½ÃPʶphpab/Cache.php@†Vä "9û¶phpab/CacheEntry.php‘†Vß»Áжphpab/CachingParser.php¯†VPI!÷¶phpab/Collector.phpe †V*gL®q¶phpab/CollectorResult.php -†Vé8[ ¶phpab/ComposerIterator.phpy†VéRÂÒã¶phpab/Config.php8-†VË -;s9£¶phpab/DependencySorter.phpm†Vo0&_¶phpab/Factory.php;†V+´Ô¶phpab/Logger.php·†V!ò¶phpab/ParseResult.phpg†VW–ߪ¶phpab/Parser.php C†V -ýlPÁ¶phpab/ParserInterface.php†Véð¶phpab/PathComparator.phpf†Vùha¶phpab/PharBuilder.php,†V¶Àbζphpab/SourceFile.phpÖ†Vžâ»%—¶phpab/StaticRenderer.phpÚ†V÷Àèð,¶phpab/Version.phpî -†V¯?¶"phpab/templates/ci/default.php.tpl†V/]i¶phpab/templates/ci/phar.php.tpl¶†Vë~𦶠phpab/templates/ci/php52.php.tpl׆V ^@ÞN¶"phpab/templates/cs/default.php.tplä†VÿBw#«¶phpab/templates/cs/phar.php.tplš†VÜÏ2q$¶ phpab/templates/cs/php52.php.tpl¿†Vÿ&äN˶phpab/templates/static.php.tpl˜†Vp휺›¶"phpab/templates/staticphar.php.tplW†VTÒ.úÖ¶ÝYásÚÊÿî¿bëÉk CL^¦_j?¿[!QIØñ4F «£¶™6ýÛ»{:‹&¯)ì“nwo»{»{§_~[<,NÚïÞÀ;èÄ‹UÌRhLšðñÇ?¿ÿøáç?–D®B/zäI*àŸ?óç3ŸÿJÜZ‚äpÁ“'îŸá{š²¹ˆ4 ÆË4ˆ#ð"–‚Cˆ—É„Ë7ã ò’Lãd.Zð¤'ò¼LaûÁ4˜x$ E2½„Â'ó M¹‹$~ -|¤^Š8Ê Ãø9ˆf0‰#? >!™æ<=WzÁŽnâi®Ô$ö‘z)RÄ“z¨,‰õÆñMå–Šâ4˜ðV& $¢@’S\8òKZ᪓Рæ<9;  ®Z°K® ¢õ—¨áï¤(¬~³;7ø¨]é†îÞËU{ºkÒŠ=\Rƒf»zghh6I íå0 ˆ]ÝéšÞgÝ3T×vËLœÍ0*#ˆ"\xÅPYíÊ`Ùr¸«Û¬ã²Í¨ƒvD%8ÖÑiÀ¾0D¤Ù÷!ò¢d‡ýeˆt8]­¯]#ÆFÉ@%ë“:C›õIq«G¢œá•ãêîÐepmY]iy‡Ù·z‡9`XŽ4ÜÐa-\ÄÕZ4RÐj8ã«¡£“ýH–nºÌ¶‡W·Ì&á-„šjÈÝ•¶¶L‰eÙ÷$—Œ!]Ñ‚»†ïÑí¦LÅd8Ìá ;n‘WE{º°`²kC¿ff‡Ñ¬E‚ît‡5ehÙºC4z¶ø†+ ¾tê– áÜ’®½Z÷V'å3bh]…¾u†eý|g|Zx“GoÆi[uƒ„OpÓ®œ‰E<‘óÞ÷Z"·]½Êòi“Ýjp´öU"øbfŒ„ÔìÊé‚‘=ª©è²ßCš.ÎÛí¦„åølÏÛ˜‹çI»NûäDf)ÍÁ}àÒ}-ÓÁ?NNH²¬³ ýd™ÌJ  &x˜!%¼f8e+‘ò9,>ì—Hô~5†åÓ L—Ñ$kr}_ÏôiÐ*M M(üÞPòþW¥ò_ÿ†‰ìbMôm/~ÁÓ-¸¹jÀ–¡’¡Î†{e1™iöFܱv@m•DÃÛ,¿ŽÃÆ9Â,34‹—ƒÂhM°s-ƒ{ Õ­T‚5+À*CP¶‘TB¨0í¾†Üe±ÁÈ…Š[/ üq™š~éC?ËÂ^&|AK4Nõè‰X¸ò~—û§­ Íù¹¢!ñÍ‹-±ßªœ•oÚ­Çf›y ÷^àËèÿ úá_»Øóa)lÕÎÇ1Ö; šì@æ¬æÔ‘ìWÏ€OØ2‡ØÐ(ãA{cȬYøÚ[·yÂ>?ïY†aÝœû¾¡›ŸïÝÞ½-%U®,‘Àå%`ùàU~TvÍ££ž’Ûè—¡ªáÎM¹Ò~¶-Ö³')`ÃBÇ×” ugÌpoúVn¡(©å–@”¼²'G5Jq[ 5ù«aëì-æyÃrD1G–߯˜³UÌq•=5K©œs|8¦˜—zó#Š9¡^ó²˜_Ì•ÖÅœ–­˜ošÏºf©,æÕç—½¨Ž*ækX‡‹¹R¡6„hƒB,BÚ3Öøïœî¤ä]TvÌ“g»¹—N(Œ1ŠbTûЮ ~kKÀ)[þ4Âmñ'°Õ§ïÔ d}8¥säáŠn×¢8­cød=šÆ p×õ‡L/ ©~«¨Pu¥@Q<ÚçðPŽÉCžé¨qS kW|<1¥Éª²á2jwÉ¡z’‡ rÔ –¾7CÑSüHתâòV“®Éci9º”UPÞcƒòÈ7§.AZ -T«(ÖÇCôÌK)¤ÛQbS­´ÏŸ‚ó"}½,,#î¿l_+´ÛY£QfãÚ‘µ½ýOGKŒÙ¶÷ó£ôæê§¥Ö#C–òE1?|_RøQ⯺H6ábÓ]¿ÿ:` åáÌ;â/HUV©j–z+™Þ‚sú>AÅemŸÌ›áeä<8ȸq*Ò ùÓÀ¥Ôäëúî%G¾¶À'ý¶yvîkª™ä²Êž…ް’¶¹ó¶ŒxˆyëU`»ºež9ا««²L„:‚«âÝ“Ska’BÖ+ -W¥I¥J³¬»’/Oùý fÚe”6¶ÏóMø­|Wq® -ÐÛwo›Ä®;É­–¢Ä猯úò`}kVhûËgãêtD£LUIÔRzïø«²Éï m›™îHsFͽ1µ>kÍÙÓ ¦›=ëxN‡½#¹úV—úšó¹&ßgvÿ S\„ì®Ò‘鈵ŽEe²»ÑÚŽfw„2jr:ŸõÁ¨k¹uµšúi=g‹¾¹[ ¿í|Ù¹Ñ_§×ìÊ_ÑåäÿóoůUùKÊ#_À×Í«ý_&X’ ÙÍyxÊ¡fà4R•ätóÍ~_‘Uë|Æ«K¨ yiÂÄùóþ«õ.Ùšê3IáÖŒ¾ dÜÕEI{sãt¸™¬§gáú Uýx‘‡É·“µVaoÛ6ýî_q(VÔ.ܤ+öeiÑE–蘀,y¢”4@‘蘈,¤”,òßwGÉ‹æ¦KlK¼»wïGúe·ÙŽß¾Á[ðëݽÑ×›Æù>¼ÿó»ïü Ï2ÁI?ÂâQÊ’$[¥<Ž&(Â*„L=ŒœÖqäjF±âä’pI ·S¸X0\ÇmÜ(&á<’C €~:ôĬ¨g:("vò3ùŒ¬1]pÁ&®µ.ȇwÉ/<ÌœQùnÓ[÷8hç©ÛZàsð‚sNä;gרïÛWEæ/zõ÷'ãt'óy­èXÚ¨í½ÈeU)ãì²Å³fܱ{ÙÍrú8Ý^1ýÞM§%NÆÊ:f3@ؽ¢éx4r³©+H7J(e¾’‡?F# -u·%¸Y6×%@޲¡™UƒÌsµÃa[ÁZ—8¼ÜÈ‘8 {,нs±Gú·ªôQÿ‰2=Ö­24áè-Q¥’VÀë~ñuïuì¾ñž°–ŠW6®ÊûÔï82 _Ö{ùþ&á“2.Já†zÓ/á»rWÚðz#ƒ®ò²-Ô„.Œ¼5/,y‹>èH«tý <‡A§xµ·/ٺƊ«éø¯ç]{…ë¶Ê»Ÿ/n‹Ç,‹wH¾ÿ@÷Ë»Ï=“ñäÝçkÕ¤÷;5žF8)QfxC½òæä 3}zŠiÕÇo¾ƒXêêæ9Dm£Äc£d¹“Íw¸¯ÐB‡ùO^’¿PkÙ–Í3¹×ø£áÙrߺÞÁ¯‡ÑŸµV]o›H}÷¯¸ªZÉ®hÒ­öe›¦ ãx$ ^ÀI#õe ãÕk€¤Ñªÿ}Ï PS'm“Uk)æ~{î™ûîïÝz78~ùr@/É)vw*»^W4LFôæõë¿^½yýÇŸd«\Òx#òORU%½ø>[vßG©|¯­í͆ŒuIJ–RÝÈôëZÊ4++•-ë*+ryJu))Ë©,j•H³²Ìr¡îhU¨miÑmV­©PæYÔm‹4[e‰Ð,íS(I;©¶YUÉ”vª¸ÉR¼TkQោŸÍ¦¸ÍòkJŠ<Í´]iŒ¶²zÛâ¢{ØJ*V¨¤H¡]—ò©Àj·bYÜhQÇT^TY"­ÆA%+i‡ÚO?pž BÔd#²­TG?@ƒ¨=^:4È6­ð7¢6×´Hê­Ì+Czç†Ç¨KE[QI•‰M¹/€)œ±î%ÒOÑ—™±Õ:¹ØJ ì Ãòb/.[à¯B•­¸£¥Ô„L -’y -¡Ô=,Û¢’ÔÐ)@¢iAÃHY¬ª[tCç¬k³r'Ýg°Ít÷)Ý^yÓheÙË$žòˆ¢`_Ú!#¼ÏÃà‚»Ì¥ñ„Œœ`~òóiLÓÀsY‘í»Xõãq€…gvËgfó@fûWÄ>ÌCE„ÄgsĶsYÄ}Ç[¸Ü?·> ›ALŸñšq`5ÐØÆLhÆBgŠO{Ì=_™¨û:â!mšÛaÌ…g‡ÚÓ|΃ˆ‘NÑå‘ãÙ|ÆÜ#À@\bÌ)šÚž÷`ÆH¢Ÿ®v8fk=Ö„CÂ.™ëÌöoxHÏ¢hή_؆ŒìðÊd[xŽØ? èAN®=³Ï‘ãð€ vt‘œEÈfx0Ñ®¢Å8Šy¼ˆk˜XxÁD†¸EÄ,‰mKËá¬AŒ÷ñ"âš?í‹û1 ÃÅ<æ? —`HmX»†ëÀ79ƒ¬ ¼Ò~5¦]NÖQvßÅš8[Ó@'îk"*øŒ{É’ÏÎ=~Î|‡ii ]òˆLk…<Ò:¼ ~i#òB§oŠlÍk¯-SZâ²Ý ®Á7ʦ%ÀoÛ«Ñ™¶ìw;ãl'’OâZêmåfJ&Ø´wQ"ò\*#5öš2Ûîq7ËÙþt{„…õ½›ˆÎ68óÒ G.yÍ'Dǃ9k]R¼–‘”êã!xúw0Цæ¶$s–M² @Ž?Qé3« ‘$rW–¶%-…>œpãey²©Sy,?›gï n=uŸJNkõKj}ÝH¥:ýÊD -oéE»ø¢Õ:6O\eI¼É5©0"?ãøLKúx°ÞRù M|¯½«VÆ@_{{T®%€ïŽdÕ1×c¯Ã/HPâ®·züõwB…ª¢,Ï[·'OÒðCiÝ~J$«fHºk&ÜùJ_NÍ ÐÔ!¿Á´JlT†‚öiv^Ú¬H_ßùõw“ÃPTCë¦ÈÒ‡Ó«—Øo´ªóÄL}¥¬ÚVŠ}ôÓíp4BOPï÷\ßÓ¯Þw NúÉW•/ÿ“ª®€O¦ -†{ª:/¿ªv;uTéè?£ªujÔCÕÁ¦œIœ=f˜J1ÁÓíZšQ 2Œ•ZЖ£ïD³šÔJaP$°¼…õª;Bɲ(pÄäb¥9Z‡÷²GÖf<í˜há G¯Þ_ËjÞʇ£ÞþÒ?lh)’õð€?QÒsÌ‚‡qô/[Ñp•cêÕVбöÑïU¥ûµ™®0%Ë“{_ß~ý`·4À,ÿ)¾,¼JÕOE÷pb­_ÿµVmoÛ6þî_q(ZÔ”—ý²¶É"K´M@–~wöÓ{²«RÒ´HÊ/²jjú”`¹>ìO2y¡­í¢ c]S%kYÝËìçZÊ,¯›*_·M®JJÊŒÚZR^R­Ú*•æd—IõHUíj‹òfKª2_Õ6´SY¾ÉÓDX3©$íeµË›Ff´¯Ô}žaÑl“$pŠB=ä奪ÌrmW£l>ôqÑ_b«ImA¥*ƒv[7ȧI¬†MÖê^‹L•ªÉSiuh•¼¦€gè¸ÌžE¯i‘ä;YüC4ð:àå ²ÍZDø?D}®™JÛ,Cú†§¸…ŠvI#«<)ê§ 0g¬‰ SôenlµN™ì¤ìY…•êI\÷wXªªì’GZK]HÈD‘,3¥®IJS¤Ž&àeåH:FjµiP °C™Õ{™ê:ƒm®«¯ÒåUv…V׃L¢$‚Ytm‡Œ°^…Áw™KÓ9Áê&äóED‹ÀsY(Èö]œúQȧqàà•-`ùÊ<Èlÿ†ØçUÈ„  $¾\yxpÚ~Ä™°ˆûŽ»ÜŸ[ Ãf‘Ç—<‚fX]hìc -f´d¡³ÀÖžrG7ÆëŒG¾ö8ƒK›Vvq'öìP#­âpF:E— dzù’¹'~‰]1?"±°=ïÅŒ‘Ä0] 8eÖžz¬s‡„]2'Ò™=­ðˆ =‹ÄŠ9\/Øg†ŒìðÆd[ ök =Èɵ—ö9ŽŸôŒ}IN²¥<˜i(OEÄ£8b4×0/XxÅ&>’C\,˜'‘mi9PÀÄXOcÁ5‹û ÃxñÀŸ€„k0„HmX»†ëÀ79ƒ¬ ¼Ñ¸š s]/Îqí¾iÅš8[Ó!@  5á|FƒdÉgsÏ™ï0- 4Ð5lbJ+äBëðÎùµ ϱNß\bë–ƒr¶ÌÕŸ‘í^q|§lJŒð¾|p*bgѳx—û$ý’ÜIý¬l¼ØB%™9OZ¼±Ê<·›(—O]í,¬¿›@tY #–µ‰h*\òº-D§£‘é1YR´•BÊêÖÍ+™¢Ó<Š4)KtªßG#mj¦$™6Ë 4>Žß¤Ñ½JQ’¦r&[„‘z˜!›¼@['ºIaòé>††ÚÃÐþ-3½ÕÂNu/+ÝÝô.”…D¼èMø¦×:5_̈º¦ÕbõŒù™e5Ý>;ïÉûŽÀI\J`Zy†ŒÑû°•fP@†¡¦y™m&‡ zL¤mUUʹƒõ©zÍ¡Ñ%z[a´*…\ËèôÏõ¾]£lhÓ–i÷O‹¹àñ Ñàçõ&/7ŠÎ©”tk6ã÷÷gÁoK´ËÉÇïô{Ï{U;ëã ]&ã×z2_ôÙŒ'Çw²Y%ÍV—èx2±èm–O¿£ÀÞNèüüœÎžÐ¿uDãómôíþ5Èàç(Ȳ.ŒÂo±Œ39yBƒNÁþ¹N¦ù*H¥x,ãI‡I,Z'ׯÛ¾ÊT$±ÄÙI*æIÊ+¥áh™ÃCÁ,•r.ã<ë -q-%¿¸¼9?í‹) ‡ó'aÆóU˜ß˜0«$ý"¦*˜LB\:ˆDÃsB'¦r¤¤lœ,Öi8»ÍE²ŠešÝ† XïI¹~­‘ɰ^h]'KEŠEµbFG¼@HòóîO¢pRC=m´_Ðìy°q’‹e& èB~ËEèbóEñ˜f+êÌ€ãG$¡”D@¤ˆdjA޳ñÿBÜæùâ°×[­VÝ€î&鬧Iì½Î^\÷i=ç]É,nýÏ2LÇ£µ€Õ8®Q°B ’ H‹U -gœi%°ÅT0M£¤Û€mɨqr-ίâדëóëŽøp~ó×Ëw7âÃÉ`prqsÞ¿—qzyqv~s~yß^‹“‹8óoçg!e°”üºH‘À4DŽÊ‰¥OÔ%§l!Çá4yñl̤˜%w2¥m°é<ÌP´ 9õ˜‡9)U†S+´é]ò °û ‚ D?Ü) éõÐú¨y0ëõè‘Þ»‹k“þÈžÞÕÅö%Vðî"|ç2¿M&™ˆA’,KVKPÈßHaÃâN| =sÐNZ”Páå•-yòÇÐKAèá4m Jc"Ø×HA¥B¼è ïnqõ×+o4ÃÒ]¢Gÿ‚EÉrqÖ¿ aÿ¿n€W %âH4̌Ƌ'ß¼¼¢{Óâïû½´íYøL‚-,ŒEšL–c²™ód"= ß^žõ‡WƒË³w§7 ú§Í 'òNFɾæYÿ}ÿÍåÕÛþÅ }VzOÀŒóh-ÂÀæ¸#bxFj›ŽU5!JP+4wØ{ -†÷Ë] -ÜüñÌÁi‘†wA޳`{Å^ŽÒ ]¿Ü‘‘D‡§ì²ñ2M‘`ô¸{ó$]wÉp|‹–g‰”cÞþ ÅY e2GÙ7ÆK bÞx, -ŸŒÎ™Æ艗QT%О0_•ƒÕL-¨ÙP‡1šXÚÅ€I-†¡Ì±²ivÅyÞÌ”\øy½ÅDNƒe”w4¸‘hYÀK`qð h_¡Q…ùœMBv7²2]ÆJ2MËÊ[%äÕ/£8€© 3¥¸†¿èŽÙʓɂ¿a×khzGË\#:p]ÑPµr9G*÷R¹H²ålÎD”$_à¿á£lAšë–ˆ‘Œì2’L»KŠ@ÃĹF–³•Óð+¬%ñ¬5)…0Ò¢f¹(ð"œ¢6Ü…­üã Š,À›S„10“Zíùú˜ƒž’÷~ær†úÚUH.¯ªL#ëäÑ1}koÑÍߎŒ¶o›G`•‚’Œå ô°ûÒ^nš&sw@.?  -–+WßøEN:8$¢4•e2Ñ¡o˜1Àèç·1@#qB‚ÿaôÛZž1Å a˜Jà9S(öeÆödWF].(RÓÁ^%¡©¢¥F¨‰> - m˜öS]õ$Ë’qädLƒ˜ý@Œ•³(p~TAÌ52š\M^Ù‹Ýrñ"8‘˜Ã pdjZk8Áìç@’¡5,’ññ}U/Q{PöFié³ðí ÒyÌ!9ç„ÅüR²§Æ¬!—8LõÌ—):ùt Á®1=bDUDÛƒ£Î1FÉl=1¥‘ª?ŠaåL´0R]NtÆ›``³ºM4¨iúMêŒä´käÄÚ îÞPDWÐÙ¯Iv9»ÕäòVªebÅ(I"wC°l•¤ˆ5³[6eY*Ù‚B\™ ÀìdOœR¬ þò(ƒ7‚»9W=Y ò0’™;ŽÙêpàqZ¼3‡àÆò+d|™c§@ªdúÚ -}—…ãy†q(¤óObŠd¢¹Œq6šÃæ+gaQ³Î§—Ïâ舕ÉZºº<~”thð çé½óÍ,ª}ünxر–CÅ/V»ÿÎR³¡¡­ô»…ljÖo´œˆ½ëý/Šº¯Ö/‹|;^ýE’+vDÆFÊuù&P‘מý6ÈyœBÌ•SðËF‰5=È$d‹Ñ„œjÒ,à+ îa0pAfÕòÉŽ˜ „ ç¸lK4zÿÝúüþÓÁ|Þo·>üö¹øþªòC¯ÑqTlo®Ðo‹§‘ºâܳ£mÌ'/ÊZw2z‚Ê~zކýDÑîÀ v©Œ…-‘…¿ËdÚ²Û¦acŒFþrXù]¡TÔ¾×CMB˶¾e"Á/á÷•LÛh´>=ÿ|?,¾ý ßlÈ Ñ~á‡nÄûé3öbþîÎT5EÞÎl¿\?=û\á`='õÇ»iìÏ}³G`&¿Pz› @µ¿xÖ}â—ÜÏ;Iî{Êíÿ%õ8I=ßAR–SÓžÑü7” ¢ìËvõm°Qy0åp$¦ðÝÊJýffTÀ©@Ô@8`þê³S”Wvæº{Tt;²àXÕ²n!ìž%é=`@tÅóðOÑRlwN2µƒî47E@§8âQ2Ž’–Ž)¤…SfÇm°XÈ8£D3Òq ïéT’h y«þÉ@¯¹÷¼©R³Elç÷%–öeà0„ÆÚ=ú]—ˆü§Ì-fóÁ…sЍ>{ºÈ}„úŽÖ¼%†Ã×çoúác1MT]`k«a–äìõ±MÕç{I?Ú¦À`ü{÷îñ~¼<ŸUzžäA:±îŽ™æWÒ¥nÿ×x" ¤žñ»­µ}¡ûšÍlê€Õ|”5 ͤŒŠ `…‚©§vî¦Ú¨¶Ú2ãà «àæÔ­»5“­‚3Ù[­Ó‹Š]œ: ¡ÏMq`ã-N96Õý`>„b.ñÖ‘¥)Ä®•êˆe¡ÁçÒ-˜Úpwµ+nª¹^ŠAÁe«c2Ö³š«a¬†[•ü ©K‰/ŸŽjLØØ*{Œ?ê²T[L™AÜbƒÄ¥°7hL¹§­|7ŒÃ¶PƆO - 8Ð>åÐc¯#@WÏÐ`XYšÆ€\}©Œ¦yv„1!@hb@ãµÙ瀭/v¨ƒ%´ 0J%'B)̆ꈒµ¥Íå>µâö‚0íd¢lMѾ‹Xª?)P*Ú[ÛØúÔUUýi8—鬾ðZà]5u5Ѧq“þ°„IFž>µk]Íž‰,÷zÍŽS©÷$kþD Õ/ Ÿ¨Ð†0b—;5ÀŽŽyo>8d]t=U*‰D’Z>%¬ p†wtŽFbržNƒ±ÜiôFV¹HµÁÑü Tö{5lÛÌ:ü<¤Øï,þ¹®†ƒÒ]ýµú‹Œ2¹£V=þœb;µe…b¨FBär‚ªú!U´oÌ*FN ;ç|)ƒH›0b»Ë3µbp±} -úJ=¸¡ŠŸ®”e>¦“ç4 ÞŒ“Kû²Ø|½-6xŽh3UÇà~s]h½ä°6Œ«l­"åøCȧ¦å°&ÑüÌa.ü·ˆ©¶Ûsãj*õ~3ùYˆe§ôPd^Tk{ ¿.ÈÎoÙSû† d¶Œr=ÆôË`¯øz -o¦ªý9C>AÄV ÐŽžMx[ù:w9öÍÇøšê?¦ËŽºP†ê±™î¸£]à ­åJ\ñà`بöôa¼«b}P–‚ -ž…5ù¶tÍ ->sâwÊåðD<>>©§ã;Ç)øÙv$Z³x‡oŠ]œÕ¾ùLÒ}c½ø~'S‘`«ÚŒ{>ÄáA«àÚ.e´7ØfÚ1ƤݱzMh/ĺ×d%©1 6E¹—Ñ4)6zY:î5Ð÷„q&Óœ6‘9n¹’ÐjÏýº±åc[ÒU¸d;ª³êsßR$yL•"‚­EȤY¨Î†Û˜Ô}]D°&ÆoMU0íˆç>ýaRŽLü÷»`máá!¥žïªeŒc0ÍU…nˆwÏÀõ‡ãi¦?ÇÐÿü§ýÛ;0Ý7`5š;[¥ïAÓcEðMA¦qøL@º€Ÿw&@¹Å‡ Zczꕌêhž`2{ŒVoé²@ˆ ѺÛFUgô÷¬S âVœ€­¦V¢ÌÁ†b­Š±6Ï/—òðãHõÛ¦ €Wö° Ê -ï¹ >J“/rcèR9·A㎄îœYg7>ª»54?Òµp' pÃôJ¹6ÿ®Âuó~—áÉ vÕ¥Ç)Í®2ÛY<Ôî–¹wv°Þ L°îçÐõ/sñ'+ …/ZèÊŒºáù¶JcϨ¦°þ*–¥1˜éipÅÝ!.CZw‰h—kç  ØÌ6Ãë|\²wDK®]jXZ£$UG…Ù8 ñŽàT]í1ÐU²ÌgÿÕNÒRµ[ÓRz‘ŽKŽú}~tEW ý§‹Ä¡3ƒ\ËZ±Ã t´ú@†Ùµ1páÚÊE¯ªyæžV!ï§–Aag¯[>ùrÔþ<À#úl)jbˆUb´$~>­f ð'“+¼Qóþ(x~o)oé S]Òq¯Ó‰æÌšû¦u] -T–èï±·ãèŽÔº&WÜÞâv¡/4 ø¢ö´¯¼@BVχjµlZç:¢y|Ôü·»eaÔ¡»®Dè1 ~V°ò¾ù`pTù@%’°:ƈè'Eû»Du+½|€V´$;fÝ>r®²Z¥êŠ^á]•ÄOtwtJ¥" ¯¯ðý.u¯¦¨Îå8 dž9Ý9/ -Hû¢ˆ@t;ıö„Õ–—u‰ }&èÞ–©Ÿ^ºAã·ÓõÍ6%«ly{zëoN…uûQû«ma»VžJø¨œvû ?9Ÿè° +TVhâáhkóÃÛWýáùÅMpqò¦S¢¶üÒƒ{ö¶cmZ×Òþ&×NYZõÔ×xMRqõ[éF×Ët[­oJNͯ½i\µÜ.ÛW|6/¨Îè!rS–­®ÈÉ?Ýá²Î¶â›ûä8ƇÜä”…Ïm{´[#†©î”š´([ƒÓ˜{/=™-ž_Ðz®س³%Ý<äþªæª ¥E“•y[Ý&Qµaªž{%I•¯»Mˆûêê$Ã]h©¹@«ív¦­kùNnjPK%¶^ÝIaªs\†)Œ;lõF+¢×¤–ÙÒç]ˆ¿ýåôUEè¦ùp m=ÆBcõNT0õÏnó“"âfjôÕžÍ}§[Åàê¹›kå‰*wÉ’¹dÐѨ׈ŠU].X ù&wi¹þ×_aØ è’òmQ”¬¨fŒA¡ô€—ËèØü…ÇE«oU…\ê ¡5º=ÕxÙ6´’*°&¹×›‹— ` ʘZPFçáÛm…e==·²Aºßø˜,½°xHwéh@_ËnÈôíšdøLA2?<¯ˆKm†#ÒLóSj¯‘þí\QJ9¾ž†ãÏX½Ùe ¶:¯ÈDå÷°º+®"‰ ñU,)Þ¦i®Ò¹Ä`AÓ…}q­¸–D³U©äåèØt‚¿ìŽ;LÓÑÝDZ¯@àí˜.R™‘̱|Ëg¬e½oÌÝ+6BÁq;Ì|eîìÛ…Á–ýDˆf!ù&ºìæ[Ù›¯‰€gtk S7þyyüóêxí!÷Å+KÖ6¶†8púCÈ+Ô†ï=\l#…¢z&}¡7ŽYˆy9ôeq¼rµQ¿_!®aHEÇ{sß],ß@ iãÈ’2Ô?~î{\åôÆŒæ%ÅË©,þ˜WQ[<—ãÛ ³9YŽÛ€ý±zƒñeÆnàZ»¨› ~=.O4U°6+¬nZ*²7_¿RášýÔÚ]‰~¡¢e¶±b‰•‡J0JV|6 ¨ÎZ×2ZŽKJKðkF±=Û%õóñÕàЩÒÃÍnEg§Ó#^dæU8µ‚J.0›AT©yfCØžÖª*Ï;—Ž -(á( @³æ¢"Dãe„>Îh5a hb1& †M*ú»ȃV•Y›2+|-èÇ|U?o:Øzùk_¼ÙÂâÝÜ™Ó%âZÔNLýãòà7Áu‰°Ûb7^K(5 ‰"㤠ÙÒŒrŠIÏ+,*•-K8Ûu*Ó¯“93êxuý±|à JÝu{fQ§¾d°½}«"÷³ ‡,ÙîO³Õ@/½Év”Ò÷êÅÀíŒåFýb:¥øÚÁ Þüœrn‡ØWòñmÂP|þžŠã -µ®ÖYN½w¸ßäKõË/F±aêkèÌ #ç‚™”Iô#ðKÝUß;ÅjkŠçÆÈ’J9‘+{õ/ Ñ0‹*‘ªZG×åû€ÙrHª+—qðL½ àì|Ð?½¹|^÷¯N'7x±Î„к]ï$ßVÕ¤…i[Ûp˯òþ4¥ìx.nÊ5wt0§^|¶‹€µÝ*^˜æ=~Ʀ‰N ìè`öLéƒÒûÍí‡ø–÷xî`Y“¦Âû> 2Í:4è\·‘:×£©x‰œþ³N~ö^ÕÇ"eQÖíšÐœ°n-Ã+i•e¤·ŸƒõVTñÆÝªïxûÖw …ñ™¼Ûelsª•Õ.¬÷\¶,Qp•dYˆ¯ASС¿«M_Te">વ­IŽ¥‰}=Í®¸Œ#c}#š9ðÁL\RzP¹£Y½«ö vô-Q»…ÏV·ŸfçýÈnþ•—ÛnÛ8†ïýDnr€×Zìå¶ÛÖõ+l×6,·A¯ ZÉDeRKRQܧß!%ÙJCQm€$>ÌÿÍÃ!õö}q,FÁÃÈ i°\Kv@ÿ’ä5‘ÐLœÐ•šXüj½ g ’²Üê¦jP1}D¦H%ä76M›Í ãøÁÉb„2*Æ3t]œ%ËŽšˆŠƒTGV ¿I%Z¶Á¨ܺÅ\Ï¢lRédÝcL¾ ȤüÇäwr‡FtÓ|{sÿƪOôL¸Ð¤Tp¥xŽ¡Ð®-uÎ(­ºÉîâcüÚ@ÄAS´§6"Ò®¡Ú¨Í/!G­‹?ƒ ªª µO„Ì‚6ÅàVv-~à[ÍgžƒRX­ÿJ&±Æ‡3¡FÓÆšÓʬ ](ÛE%±â<µj› »L×¢µ!bê],µkt3HÝÓ(ŒÆä1Üý½þ¼#ÓívºÚ…‹ˆ¬·d¶^ÍÃ]¸^á»%™®¾å?áj>&€%CWð\H“FÊLE!éôSCÓä6êb–²ÓãYI3 ™xÉM³ OL™¥Ud‚íqbÚ6•2ÒW¹µ»äCÛÔ?¿¾ž²È§æ}PÜ7nšýÊt’¥¬[炾™<ÌÆ‚ÑH‚.%ÖYJz¾ak[ø›ï¶ÿ{K©<~}WÒ]×&Þƒ¨µ¹«’Z–±à\AÊš;8C„8üã9°üéý˜–ï´jgŒ½ˆ˜¹Àpó}ÙÓ‡Œk)ñ¾w•{v•:*3ðÌÅÏW—¸(]C(ÞE``™/Ø´1ï9:†—èJbîxðã%ã Uã ;´3%fjaÏÈþ…Ír8(ÿ‚¦sªéOì„æøF=¤ P¹óÜçb¾"Ú{p;*x´ô_ãtmïàæŠ«†zÎÕrÅUéà^ïts|¬‰Í ÿÕw®sI«kè÷oFïßþ•TïoÚ0ýÎ_qB•Z*F¦}l§uôZSCWõSeœ#X vf;KÙÄÿ¾;'¦¬¨Ó ‘ؾw÷Þ½ódzrYv’ããÃHÒh/”V:¿DÀ_ò\8¼4Õ¼À‹B8wƒ¥qÊ»þfq¡ž®ž$–^ ’· ˆ±®•Dí0oΰ’þR³ðµ°#SéL„°£a:ê}¢£‘£…•±M1VÍ+ÊEƒ"·ˆ+ÔÞ RÄ?™ÎÆW° Ÿ)×ÄQµòK:£ÔÆ>‚ D–)N- -PšV¡´˜ ›1yiʵUùÒƒ©5Z·T%å›1•t‹q pLK\צj©ì°nÅèÃwbÊïáˆpP·ÝíöNCôJ¬A•ÃgtÀ 2•K…­ÊB -CtËn›ƒj¼oAÌœ "P³Ø=Âs4ÿ–Þ—'IR×õ@„‚ÆæI¤˜\“²“ôêcnuΑZ?*eIãùDIUIA.BÔÜÁШ`ª¢¶¤¸Îûí¢ vÛô,Z,‘¨ï ÙDèQw˜Â8íÂù0§}¸ϾLogp7¼¹Nf㫦7p1\Žgã鄾F0œÜsä×ñä²H’Q*|*-“ J+ŠÙŽŸb ì–¶O®D©J=W"GÈÍO´aRJ´+å¸µŽŠÌÈ+僩xö¹ Ú)ùLr?2ÏXXøÙ:$I¹>G$a=ºÿÿ{õ/ód§þ-®Øð–ê%j¤bƒe½]S›Ûù¡–ѲhnZˆXU”“p„‡¥ ½ -‹"[ÃQódbÆ@s$é߬SÒi²¾…>yÔÙ6f»Ñùݡـ ?ÇpAíô¶’žŠõ›ÒlÔ`ìÊPE×OÊÁœð¾ ªQ‹¸Fd4%ÃnããÖ¥²|~ÐnÄ}RÌŠðø?Ûl¯lÆœ¯l¿ÈÔžJÂÿ¢Ò2Ð{xQ£˜®ÿ Ý߃^hD懒ҥ~ròR—/Ü='Ñ}rø{‹½9„£=µøÀ‹Œ›ÃH¡Ãå:ÇÆjô"ß´‚VùVØËíY5·=Fÿ~ó¶9t¡wxl:›Î٧ΕTaOÛ0ýž_qª(Ui¦}„+ÐjÕ¶V"eˆO•ã\‹ÄÎl‡ÐMü÷ݤªM#RÕÆ½w÷Þ»;º¨ò*ƒ0WÒ2!…ÌÀæø‹_2ƒ“'Ž•J/˜1# -wˆo‚£4˜€U>z\1N_‘JmÃ4ÂTÕ2a×GÓ# WÔ $:´ÒP*½)©E\[:(6e±DiÍ Bôéç‹åìj)ñtøD˜ Ž4Âæ# 4J?@J©X’Wš $”žˆj̘NœD®ªµYnA5µÉEEõ–NJ4íȘMâ®,i]«º•²£º5c?(‘“üqôúà@½ößÞÑ©G—l RY¨ ¾dô6]"VV…`’{t«n[ƒ8Þ·ITìÚÌK•í>¹µÕI6M3bžðHé,ì$†ßÈÙy49&ÒæVh ¹õ³š<Ž×À*bÅYL\ Ö¸úFù &Çe6thÓ Án›^Lë(’ôݲùõÆÌ¢\Ž£Y4„»ÙòËâv wã››ñ|9›D°¸«Åüz¶œ-æô6…ñüÞ!¿Îæ×C@²ŒJáS¥b*œ£˜ìÌSÇÁMKÛ'S!©à$Of5Ë2õˆÚïC…ºƵÖɄƣÖ•qÐ=mÝ–|&»\*·Iþà±0d4õÊ0ôçÝôÿ¯þ5|”2ìv{oÉwÖ-;ÑNµ*¡ÉϨּ6ڸ涹ɤ¦Í$bÍô4TݾWo°˜:ϸÝÜ*û$ñÉ¢L lO‚ß2xQîÀ‚ÖW¸/©ÍTt1¦îV!N¬¢¶µ¡ÿ®ê˜\„Õ¢¾o@§ÁÛ´W$Úêš[g“ÄfŸ›ßɃ¶j ëÐä€f%¸±¦¹yôŠIZKîÓ­V¼+Ùß"àÈÇnD»çÀÝÇçoèÃÙÑ*qH¡t½¯ ù°’¬ÄþœÁ!/Äa›ùuvÏ‹VVÚ““¿ð9Ý?oaað=Ùr[~ÏXÁs¦Ínþý -ÏÁspqü­TaoÚ0ýž_qB“ -ˆ‘iÛumAE« jèª~ªLr«‰ÙNSVñßwg š¶vÓ"!çÞÝ{wÏþtR,‹ ìvèÂHf±VNH%U -n‰€?âSaqøäPY©ÕD»‘.U2|бp´q&¬%8g¸”1…aN{ô 1ýEzá*a@„èÓO¦³ñÙÄ›ñ‰´¨¤[RŒ´Pió J%’Dri‘T´‘{" 4˜ -“°äX+#Ó¥])4v) ª7c)Ѩ!c7‰›²¤u¥ËZÊžêº=øF‰XòÇþhSƒZõ×VçÈ£s±¥”wÙ}—‰.Ë‹L -{t­n[ƒ8ÞÕIôœÇÂK½ØáÍ?€¥sÅaVUÕžp_›4l$†—ÔÙI4|O¤ÌÊÐZêÖ÷Rêñ|¢ V±˜×LT -4¹´«?™R†AsØ_?Ø’}nè@µDv-OåêâŠ:Y#¡Ö{wÁø¿þy_0Ù‹¬?ÏÙ¼.~ºpFp¦ŒÍV¯'ï×Ð&±7"ö! ú9ú[À/êCµmÀo@^Æ5ë7Bs²(÷n°»²aêèÐÿ/Jû¾ÜßÇÞö†joWüT™e½]ÊÍt|ŽMçø‘ h_„½ å‡èÒ]|xø¢vk¶/ ž=™õ]Ee–x‹Ì±v <7ŒÖ-èm“¯·+ÌØ7ÿ¡º¿,e´]/ÿ…×:X'ŸƒŸ•TQoÓ0~ϯ8õi›JÃ&„eŒ¬KY´‘JM¶±G7¹&Ö;Øî²‚øïœÝ¤ bBðPU>û»û¾ïîòá¬)Ï?:òàæ¼BȤ0Œ . -0%~ÏΙF{>eØ.dÓštÍ3s0Ò‚†eô—ȵi™B˜ËÈ™ƒÉüèˆ -¤@‹– -j©vU_m ª]F`…B¬Q=H]úx‘F³ÖÄÇâs®w8"ÐrSÒ®¡•êÖ”Šå9·¥Y\P vD,PaÁTnUf²Ù*^”d+Pé’7T/µR’yOFï÷eIëVn:)Õc¸¥DVòÉä5Ð u·£Ã©C×l BØh|Îè\&ºD¬n*ÎDæÐº} âxß%‘+Û1`N -Èõð0cÑöPÓ¼÷ý¶m'ÌžHUø½Dÿšœ“ð‘î17¢B­É­o®ÈãÕXC¬2¶"®km]£Ü‹V‘ã¢[´î‡`ئgÓzŠ$}ø€lc®G£ (ÁyDÉî¢ôrq“Â]°\q… ,–0[ÄQ-b:Í!ˆï-ò*Š/Æ€d•§FYÄ”[G1ÌSÏÁNK×'Ý`Æ×<#y¢Ø°¡¨ÜJ4¨j®mk5‘Ìiz¿UaÚ8ýž_1Š*-¬8RÝGöz½”†ktT„½½~ªLbk;ç8ÍÒjÿûÍ8ñ-œº„ ö¼ñ{3oÌo¯ë¢ö‚ëk®a!J©’† )d¦àÀ¿¤oXÃi+VÑCÊk#”„´dMƒ‚½)— ÏÀ( k–âW¢v¦cšÃBµ2c6 -“Åð•kP’Zi¨”îÏÕbÛ\(ûŒÀrÍyÅ¥i¦ ç6ýrµ‰çìá3Ñô8$Ð S`Œh Súv˜Še™ £Y BâBe‰PóœéŒt¦ªÞk‘T'¹n -Qãy’’,™¦OìŽE­{ÕRŽTŘÀߘˆ$ÿ:} # ?ìú㋮ؤ2Ð6ü¸­2ÒEbU] -&S‹Ô=?IÔ–zÌJµ;fM€Â˜z]×M™%¼ “8™À]¼y·ºÝÀ]¸^‡ËM%°ZÃ|µ|oâÕß.?ò¯xùvK†Gñ‡Z“d*¨¢<;ò“ã@núÔÔ<;‘¢<™·,ç«Ï\Û¡¨¹®DC­md†ö¨„±¦¢yø^Ût˜’?°Ü÷”ŠÆÉ.| ]ŸsvݹÿÇ{õæÃ”ð Ã,ÈÛ½]ÁÉEµVØÜ -T𶇩 [m¥<¤[sf‡Ç¨`§U…k jD“…Ÿ«9ðì}r‰0\f'ÛO›ÞWm V =×0ÇNݦû’w—²ýîgîEÍL1R¸LH_³ -È—(Ô†Ø[A²Š»!äž„4ôþ¢R·ûc`mÑBf/ÌPéYYªŽg.Çé3:§y6[G!¹ûìÞÝ:ÞD“óéÎ#¢¢ùí&Âñxjþ.\þ¿ïªUáÀQëC·b¯/l¥fÇ7±ƒö{×ÊÔ6çÓ§ÔµqÔW~Ò×srÈü -d[–0¶ÈÞô4xPZÀh¨ÿøiãBOŠŠ.(£êÎN‚m;©oýߨ+¼˜Ð–Z£…ìŒÐÅØO‰ ;W_-õÇ+ÿæ»t[Œ¼¿ùQJ¶©?Ëi˜\ºžŸÁèÑ{úéJþiƒ]]¢ÄÎVzhÉ¥b“À‡‘[ûgOD/áßþlvâÿ wzœÑ‡qŸäÑ{ô^ÿîý•UÛnÚ@}÷WŒ¬J\DqÕǤmJ.¨¨T1i”§h±³Š½ë®×14âß;³¶´ J‘°ž3sæÌ™åÃY¾Ê½ ß÷ c™"DZY!•T ØþŠÎEühªíX—*¾ZG˜[©D©( -B2ø›ŒPƒÕ8ÊED¡^ÚJÖ…ãÐO4 2ZÈ´©«¹(-¤uF‰AÌPÙb"ºôÓÙ|rqKâÅøX5ŽTÒ®(FPióKJ%âXri‘‚Tt9" 4˜s·‘Î7F&+ ºRhŠ•Ì©Þœ[ Ç-™¢NÜ–¥^7ºlZ9èºc?(·ü~øºÀ ¿yê÷N:PÚBYà>; S™è±,O¥P‘C7ÝíjÇ»&‰^ðä@¸V@/Ã@XFó`em~UU …#<Ô& Úƒo¤ì4¼zK¤[ÌJ±(H­Ÿ¥4¤ñb"'V‘X×TT—¥Šœ2÷÷QÛm·f;h8|U¦é`_ >€žKP‹Æ/ý]KÎéî\.¡Û¤êí÷°?¡~êïl½}†Ã‹eZŽ/VzžÀ‡n{ÒûwEÒ˜þ?NNžéãó\žv¬·Îé''Û¶C—h™ÖN^ðµ@.Öõ¡W—Úz[ïì“÷­VaoÛ6ýî_qÄ–eƒCµ´)®‘%ÔÚ\ÃC±8–´5Ë@*È‘0“^®‹‘IjA×J˜2•î·$)ÑyG¦lwÛ¢Ö®Z){ªÛd á#"ÉŒ~‡>. ×ÎzƒS‡ÎÙ”¶P•b„Ë2ÒEby‘I¦¸C·ê¶{ ÇÏm½¢ÚsR@¯÷—³„¦?€ÔÚbìûu]˜#<Ò&ñ;‰þ{Ìì, -CÒæRe¢,1[ÿVÒ`ŽW`²âl…\3VS]¡œEm0ã*ºìL°_¦]Ò:Š(}¦¹yAÓȃ·A4†p5]¾›_.á*X,‚ÙrF0_Àd>;›.§ó~C0ûLȦ³³!Ln%n -C"©¤ŒŠxÏOrK[§²\®%Gy*©X" Ñ_…qÍQl»¡D’1Ú#—Ö™ŠúáGm£¶KÞ`º¯)µ•øÚ:Ä÷º>Ê÷ÝxçþÇ×ê!óaH¿kô_4µ$ì¨S¡òCGíôBa4Ö},)ç„cÕžúÏfÕºíy¼Äàt“<›MããÇÙ¿(yñ/” ÕtÊórdDŽ—ÚS¸ôp7|ÿþÍ`ðÒöw—ï£MwÛÛ¾vÝ~ÁŒÅw«äÚ5y{ü¬Ïïð ß ¼ƒ;â1†ÿÃŽÇwŽ o'´уAä¶wÛ{ýWï•T]oÚ@|÷¯X¡>Díª¤jJP¬F&¤Qž¢Ã^Ì)øÎ½;Ç¡ÿ½»‡M¨ªV‰%„?næfvgïËYµ®‚h0`S¹AÈ´rB*© -pkü• ‹ÓZeNj%6ÒmíÒºª´q˜Ož3¬ø damHÐ#Ð -­ ”Úìµ¹¬½ØìA±Dål"zúd¶ˆ/&°"ŒÏ¥ÝãH@#ÝšÖH 6°"*‘çro¤¢¥Â@ƒ…09{Ïtµ5²X;ÐBcײ¢ýl%vb잸ۖ¼nuÝZ9rÝc?ˆˆ-?Á -`P¯ýÚëŸzt)¶ ´ƒÚâ+; /3É%aeµ‘Beݺ;ìAï[½ä>‚ðV@¯Ž—pŒæÀÚ¹jEMÓ„Â µ)¢ÎbtM•MÒÉGÝanÕ­¥jý¬¥¡/· *R•‰%i݈†;èå@*CWÅѶ Áq›^‹ÖI$ëÇ ¨lÂ÷¨7N!N{p>Nãtwñâjv»€»ñ|>Nñ$…Ù.fÉe¼ˆg =MaœÜ3ò{œ\©d´>W†MRÉÅü(ONKÛ'[a&W2#{ª¨EPè'4~P*4¥´ÜZK"sŠG)•eè_Þº)ùFå~d*1ÿâ©MH J}*Šüû.ýoïÕÿÂG”QÐMýâ]S.9ó†fš5rº8hi sÝ\ÝÀª%FXŸäÏú{-G?OÞ¡ Ÿªü€8|^ -9x·| à‚úâL9ê(lÞ¾IØRtLäÆˆ8¥ƒ%нqI»{RÁþ1(,‰gD{Ûf®y0ydäÿÕ}xÈ:'‡‡¾_½·ÎíJgæhô¬÷ÒwÜXn–í<‡0÷L#xi9waú§žq삳¯Áo•TÑnÚ@|ç+V¨R¢¸êcR5%T«•‘bÒ(OÑq^Ì)ö{>Ç¡ÿÞÝÃ&ŽªD !›¹™ÝÙûrQlŠ^0ö`s•!H£PZéÜÿÈKQb¨•›Š,[ ù05z­ÒÊb2{’X8e4ÈL”%q0ÍO%Q—˜€3žbRI?±Y»ZX„¹©t"<ìtÏ@hÁhd´±»×aÕªrô"Û3‚H-bŽÚ•c€ÑÓG‹e8ÁšÄ3>QåGjå6T£J¨}€5Q‰$Q|´È@iz‘{! ´˜ -›°oiŠ­U鯩5Úr£ -:oÉVây+¦Ü·Ç’×­©+×M3Fð‹ˆØòçñ'8¥õ›ûƒsÎÅ´qP•øÂè»LrIX^dJhéѻäñ®!1+ž!o̺[Â1š¿犳 ¨ëz,¼à±±iÐZ ~Rg£xö‘D·˜aYR·~WŠ"«-ˆ‚TI±"­™¨y‚~P>¤¢¶ÔqŽ]¶!èŽé¥i­D²Þ- ¶ ?£þ$†0îÃå$ã܆Ëï‹›%ÜN®¯'Ñ2œÅ°¸†é"º -—á"¢§9L¢;Fþ£« µŒŽÂ§Â² Rª¸£˜tòÔjà´4s* ”j­$ÙÓi%R„Ô<¢õKR ÍUÉ£-IdBñÈ•ó¡â}ø×Û¸Ù’oÔî¦âõò/›„ Ô§¨ƒÀ¿oÓü¬Þ Qí¹Üгni Þ öIuvËÓ¥¥W) ‡ÉdÃàï-rô„Nha©{hG„ç@ó üŒEfQ$[Îiì'BšIPý Õÿv1èyâcã“CÊôž{´4àÛÇŸ!šrZIGn@c}ä ãßÒ+ràÈS¦>¼}£ÀÐý¤è;Áî"jzSøßu¥¥÷s/[§]öÑ;L0ð{Çü!„;;{EÖçkñä¹Ã¹;鎶3F_½4#ß°;÷apîÏßõv½‹¯½¿•TakÛ0ýî_q„A›’ÅcÛ±.Mf6¨Ó•~*Š|v´:’'ÉuÒÒÿ¾;ÅNÓ Fg0Æ’îÝ{ïîôé¼ZUQ|rÁ LU‰ öBi¥ ð+|”Âa¢•Oôƒ(U6e¹ò~\ -ç&‰•WFƒä_Ba ïJ¢v˜7dT IŸÔä¾ajj‰v»LÉ|FSÍn9ò[2»’e” -7•eÄT±£˜ôSÇ»¥­“«Pª\I’§‹Z…y@ƤB»VŽKëˆdFí±V>4ÏÃßÚ†í”|!»ïŠ,,<´Ç‚º¾@Ça½ëþ·×ê_ÍGqÔÍüËû•ðl»_YjzP9‰¡â…™ßM7ïVô¥z²½Ú=2+ –bË[þDéy†sUÔ6Øñ¿Âãhýæ;7u¶ØoDOu:ÉüœÀ˜Šãm-=• 46oÏÑ6¼“‡ûøÃ'‰V¬˜:äõÙý‹¾¶ŒÊÚµ8|óZËëîNv<ÿ~8ºÆ%¤kñôôULowöèéuðód†î/¾ipCc6àAØ/ñD„K6=j­–’}RäÒ#Ú#j6‡=èŸFÏÑstþ9ú •TaOÛ0ýÞ_qª€ªk¦}„i¬”V‹†Ú‰”!>!×q‹ÄÎl‡´Cü÷Ý9I ‚M¬RÅñ{~ïî?Ÿ•Y9F£Œ`!s\+Ǥ’*— ¿ù9³"T,—ñf„r³œY;ßrQ:©pzE¤ ºaž_—1GUw™Á̃LÐ öÎ|3ÜôµÄ'¶ƒYà•uºh¾ü¯£`оãZ['T¼ßºÿ0x`xÁÛ ßfXog*î¨ ï¡¦öö]ÀAó6kn2ÏÚ‘£3à - @bÇ0>‚c.{¼Ùùš2ðϤRÜ«¸»ãð£7‰Ç/HàØÃ÷ô+ýΓ“<Ãfïácút±Æ[‹î±ÅáSü÷KRá`H‰Á‚P\ý†diz>„ãS¯âið48û2ø•Tao›0ýί8E“ÚDY˜ö±ÖÑ6ÑÐ*2•tU?U޹€U°™mJ²ªÿ}gi¶Ië†ÌÝ»÷îÞñá¬.ê œL˜ÀB”\IË„2[ à~Î ~ÕªFmw‰² ÕÈl¾åX[¡$ð’CÙàJp”3°Ê'G5ãtKÕÆ¶L#øTæÓŽ£t1zD J¢ËV*¥;Z¬Ke‡,׈Jkf)¢‡O–«øb¢íò3aº<"Ð -[PŒ0Ð*ý‚bY&\iV‚tPy".QcÎtæsUï´È ª•¨M!jª·rRÒÅ@ÆtÀCYÒºSM/å@uߌ)|# 'ùýìS€KõoGãSŸ]±He¡1ø‚è»Lt‰XU—‚Iî³{uûÄñ®Qk7=`^ -¨Ía0ë²Ý °¶> ömgÌž)‡ƒÄðŠ:›¤ó·Dzȹ‘%CÝúÞM=^ï€ÕÄŠ³5q-Yë&èå @,ZM—ùÔe›Á‡cziÚ@‘¤PÛ˜ŸÑ(J!NGp¥q:…Ûxõyy³‚Ûèú:JVñ<…å5\,“Ëx/zZ@”ܹÌ/qr9¤–Q)ÜÖÚ‰ ¦Âu³? œ[ú9™¹ØNòdÞ°!W¨ýzÐBT¸Ñ"™‘=*a½©Ü>ü©mÖoÉ'j÷ƒƒr‹å{‡„!#×ç(ÃПîÿ÷YýÍ|«þêZ çrM[m‰!yJÒ ÜÒxh¡îsE3Ω±42š»}AޥŦ¥Æ¬5Ó»ÿÕþÛò:WÜ¡l¸<dtð’Ý5!R’¼Õp"Ej°}»÷ÂÚéd•›¨I™f8û’?|ˆÿxø?ý.þúû¦‘Ü—»¿çÅã`ì#:)î¢ÔÕ““_BG‰ÓðbßÕGEþy7ýÏïÕ¿†RFÝšÓJsõn­?ï¥[òœÚ¨7¨8ÒTÚÿSMT-”³q¨‘MÛW´À2 ³»ÌXÂñ$àC Ô‚|KSj!ÙsNNÆþ¯OQàÏ çhÂ;‡*Û‡î_¿Z ðæðEÃΤ žŸñ`ÎS)oñrB)ßüòŠÌ6ud$(¬Oê§ä·ƒ}(þB‰»¢]Vò݈x iÊ}ˆ?ýöDé2 ¤r|ÿ¢ÔYò?èF8.ŠB×äJo4òƽÑÈëí?tb½U©Wp{›vš{ µA[¬ï›>òE|èïb4z€—Ç4^þöî_2—†{,_½6ïù9X,Ö-à ¹ÿ!Œ ôm ¡ÿ6¤gþù}p\¼ þ•T]kÛ@|ׯXL!¶q­ÒǤ4u›Š"§!Oá,­å#ÒzwŠâ†ü÷î­¤D¡Ð´cû´3;³÷é´ÚWA80…•,R­œJªÜ¥gÂb‚ÎÑQ¬ÝJ×*[>¤X9©¤…°vNhOð]¦¨,fà4ƒ•Hé+Ñ;׃ÀXÁ¸ñ"YM€þ¢­Ð£µR›V‘ÛÚÑAÑ2‚È b‰ÊÙ9@‚Èôñz/aG²=>“¶Å‘€Fº=ÅH 6w°#*‘eÒ§HE% ñ@ƒ¹0™wœêê`d¾w …ÆîeEù6ÞJ²êÅØ–¸OK^ºî¬ \wŘÁ"ò–?Î?À˜‚É 'y -ž‚ÓÏÁo•UaoÛ6ýî_q0 -Ø °‹³Q±+µ—Òzˆ\£=JbSy~—[?%ÂîOB%SºI…®ÏÙ$I\ï»ÿ¿×êgÍʤŸóggšû¡ÖÒâ#@Í– CêA6IaU;ô#áÁ¬nt^»v¨íÞÙÝõ_㬜%» -‚àíVÁ°n1²þ_g’ATð󓉛õ~ÓþÃàËíOѹÎé - ®Î‚È2Üô«˜ÜØnïQëTIҫȃ^øVÅB•O #Ý7±àmÉryW¾§;¹ZwdЧ'KýˆÁ@À¶ ª+ÍV…­+È âÚi\Ex²§|û0œaè¢4ë?`¹8ú5PEaáD5cÛ·Áæƒ{ê$Þ7µÉ¢ûû¬wxüO“.‰ÉiðK2uQÐYäië%׋ô’rPàiÜ{pör¿EohŒ£ç^9§vã1¡îmï£ ìê„“'¶vèLþöD‡¨t0û&:­ -ýùÙàO¥¥Ï±{x¨ÎèK»ÿiÔJNýFº!¸]ôƒ…Ã$7òÔ÷ @GvŠÑÒ—¶‹#­t[Ú#-´Ú| ¥y.¹´(A*š¨<4X“3ÏL×{#‹­Ý*4v+kª·b*é,€±]âP–¸îuÓS9aÝ‹1…O”ˆ)ÿý -cÚÀAÃ~u8yã£+±¥4ٽ̗€Uu)…Ê|tÏîPƒ0~î“è5÷ „§zsº „ãhþØ:W_ÅqÛ¶‘ð€#mŠ8PŒ?²‹ôöb>ª­%µþm¤!×{5¡ÊÄš°–¢åúFyŠÖ⪘r´ &8mÓQ´‘¨Ÿn Ù„ïÑ0Iažá]’ÎÓ)ÜÏW-?®à>¹»K«ùm -Ë;¸Y.ÞÏWó傾f,>säßóÅû) IF¥ð±6L‚JVó? ì–¾O¶ÆLndFôTш¡Ð;4þPÔh*i¹µ–@ædJ:o*Ë¡?p §äO’û §âãä'v½CâXë Tqìçƒûÿ{¯~f>J‡þòa–lmCÖ‡v‹ -w=~·¯‘Ûñîà©BîÐwf'Œô h¶°°¬2fÔ¾ÿË8øëätøèPå‡ÕÃÂàÛ€ü ž?—pC-p¦É5¶¯$¤_fr¡D…QŸ$ä"ìFTÀ–¤žÃ…EÇž^p _ >¸×¤_cõÈèVWHg™¿… éΞÖh^'sFg+ùHþ§‚ê\ª¹­p¾šîXPr pÝ¡[{4ÒçùBs¼„š.On{Q–ºåœÜ{vwWÜÐ1ÀWS W÷¨÷Îæè’—àŽ{ᦠLÑð5? 5bÿÞ4*ód²ÐÛñ³^L{¡¦ç¯A5e9=w £>x_¢3?®ÛQÐC &o[äÆtÁ=cÄ~ÜE0xÿ5òïÑFzý!á]:º1R5þ9$:V…c¯¯IÂZʯ/:"­lA»‡GsŒ¾uûŸFOøKËftfï[«é|ZY(=—„BOô¤tž¥¢l2†gÔÏ4~•ã‹ $½<8:•¯h6:OÁ(½Ä”ŒF®¸ºzÞNß ó4x¼ýcð•TÑnÛF|×Wl„>؆*}Œ‹ºŠm5B°”éKp>®È«É;öîhš)òï=’Žƒ@E+À&ÈÛÙ›ÙÝŸ.š²™egg3:£µ©˜´³QklA±dâOú -|WªÈ쯟47Ñ8KºR!%ÀwF³ œSt ´j”Æcç±SžiíZ›«;YíÖ§„Wöä, Úyªnöæ¾øP Iž¹fÃ’hÇœÒooö›Ëk:€®àst&–ˆ1:çè€T*Ï\­*2êDD€ž åsQª]Ó{S”‘\gÙ‡Ò4¸o/Rvë‰LO×BkïÚQÊ Õc1ô;‰ä—?Ð 4Oç§ç ]«ž¬‹Ôþ’8UtA¬n*£¬NèQÝóàøaLâî¥k¤’r‡—a¤¢ å¨Œ±ye]×-U"¼t¾È&‰Ù;Tv»»þ¤'Ì{[q¨Ö_­ñ¨ñ}Oª+­îÁµRt05*,:ŠÛb!è0™àe›¾m¢é/P6•z4_íh³›Ó›Õn³[ÐÝfÿöæýžîV··«í~s½£›[º¼Ù^mö››-ÞÖ´Ú~äo›íÕ‚%ÃUüÔx¦F*Êù ?MÄ-cŸBÃÚŒ†<[´ª`*ìŸÆ¢a_› ­ ™Ãµ‰ÉT2ßj[ŽSò Êý ©d Ò‡ÇÑ!Y¦àú‚m–¥ï“ûÿ{¯þÍ|H™M#~tœ¸ÛÃýÔ•lå «ž„bG½qm¨zô×Ùb’µ9 Î-a -ÜM&J¼˜ºq¨’x®ðÜ(›Ø~HYx¥ùÐVU¿¤Uê4?)tfêRh×VpÄDЕqAÿH#Í•«…¨ªjØ,¥š$H¶ƒòrm Çq’þ,énR'ÓçY³yÄ|Ø£…YPî$ŸèÁ¥è{I¬UÔ%´.†Îïþd‡ÑåȨ—¸ÄÔ5çFÉ{2Xt Bdû¼¢óÓÉ"Jk±iãÍ#Bÿk²YÚÈÇ;ÌO‘mþð|0û{†µ@É ò;£KT*úV£ÂŠ,wGs.GÄW¯j’1F‹¿ë¤m$¨Ñœ_ e¬ˆ»ô?7¹˜h€8’ÜN̆ц%’׎Ç÷)¾Ò‡oÒ?WÞEtóçϱõ–™¾eéyh­N…ýøQO;D/FAééÃí§ 5[~à¿~ý|¾/•}iÚ Ì¿rü’Þº†“w+ó€­_ѯX¼²mò®¦Uí‚®0«úaA×­±³å Ï>Ï.~žý½U]oÛF|®~ÅB0àÈbêG»n¢Ø2BÔ Qià…p:ž¨kÈ;æîhE)òß;{$mý@žú`È<îÎÎìÎ-x]oëArv6 3J,›\ÑF—ŠÂV’ÂÐZQãUNëHЧFËäUhj²D)R¿Ð­jk” ~ ƺ×RN 6Mj!ñ“ÙMØ §èÎ6&A[C'“ìî”𨄳Qª²ˆ’Ö§×MÀAÙ"’(œRU¬E”)ágóez3Ì9?×¾Í[ÄhO;ë>¶2ò\siQ’68¨"Ntª.צ@ézït± dwF9¿Õ5ê-YJvדñ-p_Z÷¶é¤¨îš1¢ŸÄ’/Ưèœ4ìÞO¯bv%ödlি “ú,U@ĪºÔÂȘݩ{®Žˆ]x¥ôúï»8›ÿˆ¶!Ô—I²ÛíÆ"[W$½ÄäeÓsîsÞ›RynÁ=^ïIÔ`%Å\K±ã ÆAE€ÅΡã¦q¶ïMp8¦—¦õ!ý0mqFÃIFi6¤·“,ÍFô!]¾›¿_Ò‡Éb1™-ÓiFóÝÌg·é2ÏðtG“Ù#gþ”ÎnG¤Ð2”RŸkÇ"ÀTsGU~à§ž»¥›“¯•Ô-!Ï(öI9Ãf©•«´çÑzÌaJ‡h*Ï©ÓÖß’7½©¿}ÿå©ùÔ='‰À½)pQD‘$ñ;ÉÛÆµÖy ¬ã­ðí’;R;ý$%ƒ£\;ºÆ œ•:¡Õê.½Ÿ®Vtzß=<ÐÍÒæ¸MÓ›å|ñ¸Ê¦“ÅÿŽ(¢ c 7tBÏy¿Jlpp@§tNßÿF×××tì<¦ÓÁX”ŽÖ y¹ünµù—:Â9±_yîÛêˆ^èüà À`o_@ÇtœpÔLøpŒµx|…’2#Zc‚¸â_ªdc~ƒˆ‹N„úò¿Š@¹VÈ_EÔJ¸Ž}G%×bUà"˜'í¬á•Š;gŽ `áèrÏ{þ¼ÁÞ{(ðPrÃ>¶ýÚ—ÏkŸr+FhW:>£_BÆêËØØ4²ˆ¯ƒçî_»Ò#òjÅÎ-­È©Rr+ŒöU¼‰ïÐÚÝVËmü4YŽø>娀‡ÖÖ`{£|x¾fµp¢"Þ%¸¬G²ÞÏ`çvŸ³±ûõ_µß>¿µM™3<3Ávˆ÷aÓ%¾<9DäQ‡)ð./ÿ9„¥¿þqð'íZmoÛ8þî_1kk§ðÚÝM›l“\ë&En±¸ Z¢m"2¥%¿´È¿¾H²%ù¥I?nu(òáÌð™á ©_ßDÓ¨Ñ{ñ¢/àZ¼P&LH!'L9ð/ÞoLñkÎ’4æ -¼€)ÕÅÞ4à½ð¸T܇$Ô/"æáƒpœ,XÌá:L¥ÏJh_ ®ÿä1„’Óè0†Y›c1Jl "°IÌùŒËDuœkø›Û»þÛ+£˜4ÞÊŒC"™b¡`Æ0F(æû‚¦f‰ 3- Œù„Å>iè…Ñ*“iáBòXME„óÝ‘*ƒk'Œ2ÀnZÔu¦V•‚ÖÖøHåWÝ—ÐÆ4¨iß6Oõè[ HÏÑ/=%(. -6‹Á¤§G[í²9PÆ?-H8¢Õ¦Up\ì,¡Ñô`š$ÑI¯·X,ºL Ü ãIÏ©Ø{–½\ý„B»1ŸdÀ•Bký•ŠmÆ>Í{Ù<­Q«Y äàÁjö{mEš¢›ïU‡3e -Yƒ+‡ÿÚ'1^ÕÀa÷>õîÛnUD,™ÖMx²tµä^š×í#%†SäW²CÈ·¦W¥Œa-Ìn '_D„Þ˜ E‘›õÂ]¹.³8mh} Ĩ5¸‘g+õW?w_v_œmu ¥‡çÓÐ,o ×{Žö:s¯¡7ËMi_ŽA;¥~0ÒÚ=T%´R!Ó»h® ýûÚâBšˆ@$«®ƒÈ ú …TÜ¿Áñq1.Ê×sòزp0N¥Gñ¬ {>g1P˜–×ÖÓ?¢XÌYÂñFBŽDÎ@¦ApÚx‚™¿•ú!:‡¸£0Ú01ä©„Ï×-TϤC¨j—<¡OâÆ!ÆYHÅ-µ°wÕFqfœ8æHv £0 k§#ÜÄܼNrXźçW+1€År‡|‰ƒB&AÐeOuÏÇ’Ûmå; žmGûÊnÅÙ[ü(TbIìwRÀmÌûʯå¢sE jo5v4Cw”1ž®Zi¯«Öí¡†Dý6(Œ·ïmµZ~ÔX*e¶$Ú¼3ˆ[‰9œL—̼ŲÓívA$˜û“T…”ºQÀÄ?^ªâÞHÈžE. }ÒjÂÛ“{Ûó~ cÐ/¯î-X—/yÍ#Êö%ØbËÅ@n´KK±¾ ù³îùÀÂJV :Íú=n®{õ$g¶uŒfÉÅí˸¨H{kJ¾‘ñ›;Úw¡|žƒÆùÊ”óI¤¯ÙÀŸƒõúyhïО•÷UöÜŸøYRqóݨ½©_È]¶rßYè@òÛš“—,ÿ'Î!óË„ïáÈeÔØ)Û©…Òë<ÂŒŠ+:A` -›0ò,=ÔÚÓÌžÃlÊaë^uâ\ñkþª.(¨ÈÉvÂbé`þ,22‰SNZ¯‹êí²Ïô•õÌ!ÂäÅT…DúÌC`U]X–@ÀZXÏV -^‹ÙÌz e˜5ï-îB_Ù&ù¤œW&Ó…JGÌü0ë½Ó÷²)†ÆPÅY3ûWyáöðãÎÔC:Ĭ¯ Ñ4²mësí:Ð|}ÖÄáßâ ™1imçLäÿºFUñ}mq)ˆPĉÐU—Éì´™ª>¦º[E~ÆŸ YÖœ•®Â4†^f"Õyùú7lÆŸ@Ã\Û5ÄáêrëQ»v_4 ƒ‰˜s öÀAã8]á-î)s&¾ÖOn×ò˜¤ -cL×ÙîÖ„›–Ò ¥*&…ƒÌ,.îÞ—s‡t£. ªŒ˜2Wž6Èà~E•—¹‹4@Gt/L!½ ׸[fwré鯛2žû޾OîuA—Pn½Çv§5èc ¹t)f$¡êø"èJ3U^±¢EЋIª©²â¸Á ýކW7üÛ¼ùC1O{”Rý……Â"”­Ä\Ï›«Ò~p¼#³Z|{0«®dsóTF:Çl5|à«ü´S«Ö1Šn {h"šBïçbÖ^·Lu1@þ`æmÇ—ì} ? cê-ò€ù]CåÔ.®{{Sñ­Ç$vÉDˆ—ûQÚгŸ -Y«Óã°´éÔÒÆ-:jT¼pA§êäšöÛAå›K†é¬|eâlÕ›A*Kp™s˕ޗC=G¾ˆ)ôñe`Q„8!îU,eñÁŒ…3mR33múQ1kýÌôôz:å>ÿɤVôå„¢<ÚLR8̘ÁŠb›‡Â߃r¨ƒб`ú+ -L¡1>­½iSa"W& Ú†ç‰ØKg”ôxü¢˜Ïé! }®ô7*ú3š1ZŒ×ù¥W%ó<®7áP#ͧ „á<ÿ˜5Qg–­q0PzÜ¡Åôç3„h¾òáX›£ž –]b–M˜¢ÐüJ«øØûš­Çf)©/>õ+K U¨Õ´¢ç±òM¹µÜr™ÖxQ…µ'‰Ö™R´y*R¶…4;˜Q…¶›,Y6w¾Î”în’T“ÃÊš .3¡¼²#Œ6§±Ðeßß/žþ ÿ¢áyU8¼¿/Pnlž/&–¡ÿŒÿãq/®l %ˆo‘¥ZÕ|oc^•ËTÅÍÅ•G_wúÅo˜»àzmFy Â6³JîSŸ¬YL$ÆÆ}Ч˜d(ÕÜæÊlvr7ëu°Ì/~?`ðSd,M®N3¶HaV&yMŠÄ -"ã³Lˆ…Hr9dl,¿¾¹»º¸dÓ(¦õa$Õ:@`ås˜I¶J³G6P< #ÜšÇ,JàÁ‚Á…™˜ñ,Œ’l½\gÑlž³t•ˆLΣ%ìw‡¤Œßd¤l¶Z×i¡Iq¨ÖÌðØ_’üoÃ#Ö‡ ¸h_îŽiõ‚¯Y’欢„ÎÄS –9  ˆ-–qÄ“€Vkêì€ãOH:É9ÌçD -K§î4Æs\ÿ36ÏóåÈ÷W«ÕÂÃ4›ù†Dÿàìõøò6kþ’ÄBJàÖQ<ž¬_VŸ®1_¡IP¤€Å*Ž'3WK£®˜J¦tw°“ŒöÏÇìj¼ÏÞž¯Æûxu÷ýÍ_îØÇóÛÛó뻫Ë1»¹e7×ï®î®n®á×{v~ý®üóÕõ; `l%ž–˜FÈQ:údp@mÑr’KDÓ(ò’YÁg‚ÍÒ/"KPY–"[DE+ÉÔcå¤T—6hj+93J½»6éü¢û>»™¡ð™ïÓj’L‹L©ÎzD:Þr‰ü=m¿ìC–~‰BÐnΤˆE@f - -$‘¦ÄŠ¥€?’œ-D>OC‰R^ªUlZ$²®(_#8d")1²†¾ÈµÌÅ‚ÍáA ü3ì¸CuOÄsæéJ2øa+cذ÷­ - ñ‹Ð›pé› Å)}#O_|ä s "Žõb _ ÃyÀúQÄ™»,&!¨rž&róy΀F VÂ3šâ÷üòž`0ñK€ìߣQ»>ÛÇMö=ƳŒ¯û¬wvO0ÎzlÀÇšè -š(²8塯 G“Ï.)ñ±L‹Ø ~( G$44˜iWZx}ë!£ %Èv;ÌD^d‰ͪ´Ôà¾ð,"³^Í£`ŽV¹äR*£ÏÄTd\Ñ3ÝÎåq𼿊/>L¶äí{fÜòLf?üæÁ2á›3}3ǯŒ—Ä´³|%eŽÄûðøZd±Ögè»”¯ål¶OÔ|«@«G~ÆVªûNi¯o¹ÍD7Z÷‚£:ƒlȖ雋ÜÞ¯{È2qühs‹¤R1`Å6CK#ÑV- L0Hct ÉjH„2K -·èf‚ü-qoÅãÇ’?Ra½T„ú „®É -|œOõÅ(ŒV˜‹§—óro㥠,œ|ý1‘“Üž° 8ôârÎ)”‰|%„²ƒ0š’~çl#MJc÷4O!V'ÑŒ‚²ÉTÙŽ4ð´½M 4ý‰Lcˆt%¡8|  þ]”yÖ‡%|!h \ÃÎúW'«a}YÑô8úÂÅÔK¬õÝÇx¥´¾8Ö€|øþCl ZŒÀM®` 'ƒýs‘Õ5âŒF\ý{ -u¡ef„W›Á쬤¹c¼N·VÆ…¨JõŸþÖ "U,­p*ê~¡%Û߆¿W‘ÅËs84 •í‘ýù,š%˜ÜFS¶‚ÈÏÁ¼x)t;†û%œO=\ï3{ÍŽžþptt¤WãG ïØ>{Þs÷.– þ*–JìC×á)„}ʱ?}WɆìÝÕíåÅÝÍíOãËç·çðžZÚ[€ìçß~Û6„Jɾ=q ÅG½Ïj²FÞqZÁ¼¤¨ïNÔÒµã5¥‹n²Ñ汌£"˜Ì¹‚ èÊàÿ2ÍÒ…ãœ\Ësì6'}‚sqt5˜¿¨l• FªÄ˜ž²ñÚ€²y&Ñèèæ¥ú DFi¾â¡7`%u[VÎÉêû*B—¯øZB ˆÈj„T&¨…”Y(` @Þ*-âjR^hï„ø5Ãã-ËÂx;d½‰¢ÚÙØÎ1Hø£Ç­Ë!ûZÀ¥g³;@"¥r¼µ–E^™P–q1YPá_å’Õ€€ÈZÝsƒ„Õ±!»ÊÁË®jÜÀƒÑ‘âStu 7ÊvXå¥!´'KÊ(¥sLšA¾;ªIäMŸÚïqtºÅϽR¤2¿á©;g¿Ð˜Ðê­«³üKó ´_Ϥ{ð¬*üÄÖP·ð–X]ƒk,K¥Ã³"æ¶B´U'•ئ4K¿ 3´k¿&]¤ô<¡ê"T¢i?ˆ,fö‚ž‹‚,å MƒÒ/7×Q±ågGÄÕ|·ž¶+–öãì«;§-“«î¨6ÙòÚøzý»6m=©%¢5 ¯S—Ï3¬E½Nsê"]R¾Ž¬QÎÊ WŽO–è± 8óqý=昩 iÀo0ùá†Í?ØŠ·íô™õÝq'ða)Ó˜‹™à¡*ˆõÎÊ}+´¦2Å$ÆXaýz%û¬¤'*Ë«G¡“ZqÒˆ5Î+#½nxäz¢CùË«H>\D°àéH]ˆÍ,«b®RÕ³<îQ!¥?Ïe®aR™’' áéYÃã0íE8·hGkg®1Ý^ž¿«a¿Bé~¢)¡ -Â2…‡§¨/—Ø«“6… -Ct"ªòI½ø„õ†=ö÷¿WÀ“AeI~0DIády5<‰©6ùÞRå°S©07±~UO§»t÷6Å6%”ì䔺PM?ê[Õ¨Ø=ÿnÇ’íC·@UΟ+篕C·(ÀPÂåäŽö9›ÐÀS$XÕÅ*/q]&0Ú™ð ˜] qwÌ+ …6xˆ‹¨;¯<]Ö½–Œº6lÊ’¥›øA‡ññ-{@oõ ¥ãø”ú“‹Ö"‹Ô¤RaÕi>Ðþ~TAŠx:u:Ç-JéÕ½¦W÷’ߨtøÕ=ÓÃBd3DÌ x% -0ž›æÉs¨õûÛÕ¨io»Ðž÷º‰XŠíðv ©Ï”qnŠ1ì8)VÚü_‡8ìÈ5Í9}æäYÝãhøWÀ{,g©v£Ø[‹n˜ƒAµ?&Qnû'T%µ[¦N¶û±šCÄóXpàš}†²(Ó„ò» ÓCNrh #Io±þØEøQ²¿ÙíÖ7¼—8Õ–íº·,O¥]yñ3:Û‡›ºÙ|Ò*ÀZöñõ”Ýò#F -¹Ipu4¾RpÿrkÜTuA¨LíQ'NK=róÕ—j§Ð©ç« ©º.¶.ÑÉx -Ê@ã®R¨þ&7½5Îlñâ;·Êò6w^þ*¿É4Ëèàb¤¨ëjŸauoÚg/h—}´‡èº¥bÛ&ø‡µK}®güª 0ÛËÙÜÛ±f[R[ú`»5ÀÊ~ÉÆ>ØK`àßruÄ¢ÚµãgÃPÕù¡3» /@3×F>ÿŠÍ -p¨AÈ9êÕ,–ùZןÚH÷ŒrV Vë#-B‹$ ’(vã&i¡bER,&x©dj´ëH%cîQ_ºW)®²HÀ'‡”›`¯Z'-º¨P(ë5CöVÜÜÛ0 ò'§1â -µÿKÊSWDf” G•éëiPŸø }Ô³¯ ÝýÚ&‘F°Ä vñÿŸ6~j'Ï¿mãçµk'`W`qm[ $i»uc¸m™:Ï™9À^Ä+U=Šõ‰AšÚÝÛm®2çúä®~ˆ3Ëœ91 íè¸{–ÚàsuVõ|-Aêó5{F¨=I¢¼-E´>›óVÙd¶Oê]%§3_n¿¥²Ý¥t5}g+àb¯µÁŽ7+J!©¯¯t.¶pü¤vxÜ>»ä|íT±Š€6Šäë©|à9Йª¬__­©çTƒÏ¶äª1ÉfYõ4ëV,@¼»œSR¦²ëI¥»0Ó[穞Zb „/^”4°0“sÊ^Àý¼™œ5À½ñ'§\²êq³hØ—šséž}-Sa?*ePÆAÜ+KÕ£"3(2¼BÉBF T‡ -mN%M»¸?Å ×J–Ô=•ã§OÐñÆ !óêŠFØi¿¤ÜÖ¼¶ÛìÒ¼þßìO;ˆíÚŸvll OwéRf)J"úMVRBuØÀü®ºI5¨ë¤C<Á»¥˜+õ]à/ˆq'ÎhT)1Z1È‚1¢áû~ƒèŠr\e‚w¢Bß^Ť\ï¤ÜdÉT~„ZkæìY·… óîK[ÜI4ë7ÉÆUÒ\õÝ H†|¨šüž¹ží5§¹ -³}.*Á!s€W AæÓPðæAÔƒ"†,DêKð=¢Ã•^™3%¿Œâ½ìaÃŒ ”&Ø}ÀÑzO–¨#$šSv?ð¥‹uùÖΣ|ã²ì*¨“d§ë‰ÜJ)ì:LÙ^ ¦6ŽÚУ]÷‡6'©!á\Ð¥V¾ÏSªçvwP±a¥ dS¦<ņ¿ƒ¹mê"mi®àvC^žÕ™ŒBé§›“ -#×[-Ѫ¾Wô)ú[r„1O¢ÏW$ ÷µ¿ Í2z÷Èꂈ4¾¬_ÑdKØßzq; ”·îyf1èÝßû=¯£¬j{êÞ$ìKˆøóë 6@Чe VÔo[`ÙvÜ mË2šUkÒjT<Ö§„JWæ.NÕÿkÁixc;jk«Ï>Ȅċ@à {.æì‹›KPrMó~‰|…U­3ëÜ1žÞ}â,ï<Ø•—¡S¨å>¯*g)MŒÜ"qñðœõ­‰D)´¯ÚC)µÃ­-Òc€p)ðš'ŹV¥÷µë-w\° ”Ë OÙ±6Ì3á;Á­–ƒ¯¿s©¶±,£bš³a­€0{)¹1•·tI½¤¤˜H²kõÄÃû¢‡ð$I«U©xnðfxÂþ–FíkÛŒÓ3¨å]78nËÛMô^¥2f:WV #õNŸØ< —ª+_öÒÆ‹:Í¿&cλ2æ²G.èj!'-Å‚'Î ®z£|‰Ò4`ðmkuOï<à ìPz8ÓT؈«)Ñï}¦å}s¹Ð¾’y3.ÏdEK:uÏŠ$qÞˆjÞ§Ø=6¦å9¶–Ö$MãJ\ÔQ‡G˨Hžk:ª1íâíø]mL;­.õýv-–OGŸéXɯŸ*áçÄùò›^à\_}Þ{Þûîtï¿ÍXÛnÛF}÷WL – E,ú(ÇNÕF…&va9 ‚¢0VäŠÚ†Úew—’•ÂÿÞ™½P¤.vô¡SäÌì\Μæõ›r^%ggGp×¢à*i™Bæ`çø×ô3|,……´`ÆôQ’„ß‹”KÃ3°Ê K–⟉šÙÓ®U%3f…’ÐN®»€?¹%9i+ ¥ýiZL+‹ -oX®9_piM`¹3s{?]Á ]$ýL¯‡¬„£Œ0°Rú ÌÐË2AG³„Ä ç)jž3Qt©*×Zäs j%¹6sQây÷Êä::c¼áx,ƺVU¥uHF~GCòOý¡ƒ¤tÞwÏö‚­A* •áëÀS^Zt[”…`2uÚ!ºú ôñs0¢¦T)`.P³¦0KÚô`nm9H’ÕjÕgÎá¾ÒyCLÞcfo&W¯Ðé¨óQÜÌÖߕИãéX‰^¥lоlEt…r@/V3.ói›‚f™6I‹.bèMLs5:N`<9†wÃÉxÒƒOãû_n?ÞçáÝÝðæ~|5Û;ÝÞü<¾ßÞà¯kÞ|&Í_Ç7?÷€cÊð(þXj -=”Qž5ð} ´„:™’§b&R OæË9äjɵk…’ë…0TZƒNf…°T†Twb‹]òÓý…LQ¹Ë€$aˆúaÎò$q¯b|{¹žÃšLbgÿ¦ÕRdˆf nçÊ “âú 2^°5VÛÞ -Vˆ¯¾oQjúOmÝôŸ"½C…wvÔàÐ2Ù°œ²¢˜b - ˆÍ>y¥}¶1­·xŒÓåØìcx#§½]çj³OñFs[i¹-éäœÌŸ­$&Ž~}ŽufV]V©ñ«¹Hç5˜6¥'}älá±—©c¶¢4ÜŽ‚~•¾£ûÚtÞš²ö©’-jÒ¨ôí‚ &-פöl"É÷Ót–ï}ù ´FôRÝ*¸¯(”ŸéÃÚ¢1#Z”’n)#Ë`§ i¹ž±©Ë×8ã3!±JkZB¥®·Ž•:Ý> e,¹Zµ½0šd!ŠTUN²çZ7îvc×¼W«½Z¨ù`;šÖÇž ?áÞ‹ „¹W—DèÛžÞq–yd Œhp¼gZ³5ÊWÙÂEz -—`uåx¨Ýì»ùvF¹ÖÆOÚ:kõPñ£ÝÌø¤*ã.V¸³e|É Uº ËÜÞdBû-J„Ö¹çP½n…ìñäOãÀ:òîwŒïä¨6[ô˃—›Át‘K´²÷cV¸­„\ÕB ¡'_x½Ù¹êôÜúack:: -Dèl… .YQÑ⎧¿]2jL[—Ì/.ýßnHŽšxÕbÉ,GXÛX‰CÆë#¶cf™Ùr¬VÕX£ò‘FQŸlîw¼/™f ð7ìœÝ -òÀnqjãŒÞ¾X|Ú|‘ë9îòó€e{à¸Üš-3a,6sÚ †ÚÆè²sŒÆzDUô/—gWîÓÝñ¬?ïÿtý®§úކp'I`4çX8áYÒÞ–5êÍR[áakð¡·”]r~q\s†K7ƒS¾Š™ÚÉq¯æž–±¶_S5–Ø"5­6“µ§¤ç-ËOGß™€Æ¨pc®¿''B>Dâ}a¬ E»³6æ÷GñIØK¼Øcr”O;Lóq3b lHeŠ£Bæî¿/T³Ú %iŸø›mž¹¯?oüJöYÒ·Ž\#+×{}nÒ"ÍÑ=ó£Yä?Ù k䛚Ã÷'ó° -ÆX¿ ,Ä#Ͼ…[ßm>Tõ.;$ˆŸÊÜv^& ƒÌ·i/™k#1DJ¸1芩Wœ}Lsºµ‘ánÜsW†3¨Üç«OG¸ý •T]oÛ8|÷¯X}HŸuèc[´ç¦1Nha‘{E×ÔZb+‘*IEqïúß»K‰¶‘úaÀ$î g‡³|ñª«»Yv}=ƒkXé†@YPm*5}U¯ÑÓ5{]õƒ¶&7:hlôWr ôžÁ‚§O%±Ë? -»:‚•íMàrY¬®€_™Â´uÐZ7 -pz×þÐŒŒ€•#jÉ¿(ˆ"ýz³ÍonaϪ_j?âXÀ CÍ5ÚÃ`ÝgØ3–¥–­±møC…ÐQ…®”†•íNWu;r¾Öï·•VŠUãGâ´-÷z°ýÔÊYדsø‡‰¤å§‹?á’ t1­^\=è`l€ÞÓ‰èAQX. k»F£Q=uw܃5~œHìN0¶v^-€:„îY– ðÀ(xa]•¥³wì캸ýƒE'Ì{Ó÷ìÖ—^;öxwìX•ÂkmpŒÀ*ÇŽ›j.hŸBp~L'Ó’Dný¼€mÃxFËòâ^/‹¼˜Ã‡|û÷æý>,ïî–ëm~[Àæn6ë7ù6߬ùmËõGA¾Í×oæ@loE“&X©G©<ËSÒ i™ÎÉw¤ô^+nÏT=V•½'§£#×j/GëYdÉñhuˆ¡’yøo‹iJþb»? •ÌUüp?%$ËS_‘ɲø=¥ÿ×ÏêGácÊ,MúV2G:gïuSÍö›@nJ Á0Vð’IgÊžÅ1”T0¶ŠPlš÷Å î)CxLmI ˜ðXzœÄ–TFûöw½Êf'å?¹±fÿÎ8þß5¤ÊɃJß“áAúD*Ì%)ŽBï̸ÈnureÅUî¤#oÑ?²(ØU8=äÓbªÉÅ0H¨3üT -ú?À×¶oÊIBäfK­ÒÈÓ‘Ø’TX“úWD¶j[>¢4}Ó<–Ç®;l'mÿM\OÆç±f·úá¨$‹O/C  ëwœPØ÷FÅ_%—7‘ç2ÂÕóٷ٫—³ïTaoÓ0ýÞ_qšøÐN¥A|Ä(°Šˆ©•–ŽiŸ&×¹$f‰lgY‡øïÜ9qW˜„¨TE±}ÏïÝ{—wgmÕN’ÓÓ œÂJÕÒh/”Vº_!à£ü(ž?´Æz±£J{´…¸ .»PµÃ¼ %ËVHzd¦ð½°+Óé\xe4L—ÙjôŠŒF®6c‡{­ÚužêDiÔÞ-2Ä¿ÞlÓOçPY®Ï•êˆ@¯|Eg”ƒÞØ;(Jä¹â«EMÄi¡ D¸Ðb)lÎ:¥i÷V••Ók´®R-Ý·e)Ù*’qp¼–´îM7J9R=6c߈%¿^¼‚)࢓q÷dö6T7bÚxè>¡>Hl=Ñ%bM[+¡e¨Õî Ž7#ˆÙ±g ‚0Åñ1ž«ùPyß¾I’¾ï"^[&QbrA]gç/‰t¬¹Ò5:GÝúÑ)K=ÞíA´ÄJ†0Ô¢gƒQ!Ä¢·Ôq]ιÚÅÛôÔ´H‘¤ ¶‰àÑÉ2ƒ4;Ë,Íæpn¿l®¶p½¼¼\®·éy›Kø´YN·éfMo+X®o¸òkºþ<¤–ÑUøÐZALwó£ËÙÉm:† +:-¹ Ø 9eŸ„§nØàº– ´Öl*½2¢(iæÃ01Øác®2]3#Ž@øªP ¢9ÿdºöTüì+8ù9¡i‚ÐWþÂ%úΆL:1GFg`?§}Q«GZ+¬ià÷œ”·,¢A_™šÎyšA¾‚¦\cÿì’ÁMåy–ŽBDã¶ FW‚ÏÅæyEŽ;ôF*Õ=ê‘kÅþof”e+ša/<ì,±ãjžm·£ôŸ§GônoéúÛ€2ýsövòk29{?ù •UaÓ8ýÞ_1ZD»ZÄG¸ -lEjO›rˆOÈM¦‰!±ƒíl¶œøï¼q“nD¥Õ]¥ª±33~ïÍ÷Ï—MÙL’ËË ]ÒRWL™5Ai£MA¡dâÙkåùov^û vˆÐ&°Û«Œ‘#itÆÆsNÁÆ”E£2ü¤v:嘖¶5¹ -Úš.Ò匰dGÖH²ŽjëŽç:½k6ªcER…c®Ù?'J™cùõf»zsM{€•ü°bt:”ˆÑž:ë¾Ñ¥Tžk9ZUÀ:‘DÇ…r¹ðÌlspº(Ù΀h©œ·*érã…‡cÁõ`۞ʈu/Æý#ŠòÓùš"@’.ú·³ç1»V26Pëù¾:ñ]ÆM\«›J+¥ØÎÆÏ}»“ž‘ŠTÈîÇa¤‚dË—¨ ¡y–$]×ÍU<·®HŠÉ(»N¯ôóÑTì=ÔúÞjwR PeÑ •꤃±QÑ@Ñ9(nŠ+Éöƒ Æmºm€êãȦb.)­Ò z½HWé}Zmßm>néÓâæf±Þ®®SÚÜЛÍúíj»Ú¬±ZÒbýY2߯Öo¯ˆ!Žâ»Æ Õ¢(ç#? Ä-}Ÿ|ÙÞë ôLѪ‚©°·ìâP4ìjí¥µ sØ£Ö!šÊKê·y?%¯ ÷7)%ã7n{‡$‰‚ë 6I÷÷ÿ÷^=d>”L†ߊDzJAŠÆÙ[GW&+Žxe†žB³8†²ØÁP»Ó `Õú£+¤PM t³ûÊYˆ -¥¬\VF3cæe˜ÿ§$Éäàù}4ùwcS¤(ŸË8¹¸Nà§6“ë¤ï,¦$bZ~DEUgÎàÉmÝ£ŒåÆUq)1k¥€‡ï:wê¿™]Œ¡MÒ¢$<¯Ï<Ïìæ··i”¶‡‡-8„+#ZY!•TK°þ¼?¢ -baLŸ¬ÙáZ¨ †`µ3¦" ·©^ØBdW:W¡°R+è §W] ˜VÈÞ:ƒDg>c&ç¹¥/bÄ2CLPYÓ˜"ºðã›ÙèüT&û‡Òx?* 6"i ÐÙ=,(”CÉ©E Rщ+„3\Š,ä®2¹Œ,èBaf"™R¾·2½ªŠ1>p•–z]é¼l¥Öu Fþ @ÜòQÿ tÈ€ÚåÓv÷Äy'bJ[È n¢>˜Z*— -KÒX -8ï²»uªñsDÏyZ \+ u3–½ù ²6= Š¢è Wp_gËAÕâàšO/_SѕϊÑBëŸ\f„ñ|"¥ª1§ZcQðÝ ¨Š"#ÄÕ²ÇÞ¦"A}LЪ©õºÁ&ÜŒÚÃ)Œ¦mx?œŽ¦=ø4š}¸¹›Á§ád2ÏF—S¸™ÀùÍøb4ÝŒéÓ ÇŸÙó÷Ñø¢HQ*|L3n‚*•Œ(†5>U50[Ê9™¹µ§–¹X",õfN)f‰4®Ð«0ë|œËmyÚüÊkœ”»¥ÊåÏíR>äÁ ç¬Â’lKdh û»ÒWµLnàøH5èÌ1|äp½Lª`ÂOH÷„!c¾v¿5Õ¹Öñwg*Íš!£ -¶Nîçøy¡žšøž5QÞ®×Ý6c” V4Gµ‘n‘ÏÙúUæ'T°î³âñö¬HO¯Ž˜Ã©;&5"ù‹]:U³y’Ì®¾b\“Ô®zP#:‰ª–ÇßöïÙY´yF†ýÓÑ’¦Ÿ{\™Æ|e5=w½'ƒç~ãUÁ*F”TØ”ð­Aº„?ÎÓ3ÿ¾VÉÓƒ½p`¡ -$š™Ðé"Í!Ó}r×ôtËxÛáyÌØ*¥Û˜ØšõáÑeÏÌJ(„Ë8|adA«?¾lÝ’8B¶Ž,b•ÅVršzfAÌâ#£»cDë~x5œ]ÀŒf{_êÌŽXIЩa«{˜‘+áû’C‹dD66T8ÊçZ½8Y+9 Ä«•dBñ&\ÊøÒ%£3Ç.,ÕºŽÓ¼”RÕ9ø‹qɇݗТ l´—¯îµ¬õB¬!Š ¤7Þ¿x˜J—[$¡‘g­óꊔã§ÜIÅ'…×cˆpU­çÈîþ¶•÷Mª¢,oÇâ7oõ’«bR‡Ü¹(ûu7:õVòÞáË—¿w»‡{<È”K#¦ÎD¶? -ÉÍ›BÞÄà’Kp@Ä(5˜^œ”–[Ð$½Å5;¥aØææY¿v£¸ í£"Bžl9ÎM3¯¿y{ÓT"I¸yû=ø…m¾r&|ÔMüBZùSÞND9ö||aÏC|”'p$¿v9ƒ?%Öw÷¸¾Ã/äX“+‡¹©Râc‚täDžDݼ…6´ _›¼wZµ¾Ù„¡ï|.Ðe!#GrFô³n;Ù­:"ìi½_ 4 ûnP:W*ŸèÝo†ãfø8W¼RxcOö|Ù¥“i‡ªDêBs—R«žïω¦êìY½*õUN«Â‰Ûø¬™¿AŠ¥¡}Ï«ÕHós&B:5ùXßth l~µ-¨û¹æ,pw­ùëQßÏG ;â”,·Ma}|lÃÁëÒWÅÚ÷GkHÅ0Y›D³ÑZ'ëJzŠê, f´[ˆ3¸H̺Ä]iê–âð;Ú®£nlÖ²i“ôGCMׄQTݱ/´a)Â4;œ3'Í\“%Nv(*k‚LWÇ'ÙµÝ}²ÂÎK#lKfǵ©þ?ë®:?ŸtXÐo4­š+s<[xôpا¸š²Í +…ø07Mf´n;döæ>o·šmÇöÚ©•õQùCßÉŽ^>~SÁÓÀ%íºmµºö¾]ÿCE>XÉv5Õ;7bØû#'w…ìoo×'ÿÝWmOÛHþž_1E¨IP°+>š mZ@ކФ×öª -mìõËÕo·»&äNü÷›Yï:Ž¡åøt“Ý™yæ™gf׿¾*¢¢ãtàÎ℃—gŠÅYœ… "üoï “ü=Wì„)6gbÁ’ä’3Ÿ ð&¥ƒ¦d}{<“Ü•kËqÁ<ü3˵d‚ÃY^f>SqžAo<;ëþ‹>òŒ“u. ÍE^Ä‹RáIåX(8Oy¦¤0ã\»Ÿ^Ì'oO!@ÌdïDz²CËXE¸'–°ÌÅwÐóý˜B³â ¿H52f —Ùú«Œr¼X+•Lj5aKª .”¢X -d< d-­šeZ“f!bêÍ HÓ5ÚÏ`2Ûƒ7ãÙd6€O“ù»‹sø4¾¼Oç“Ó\\ÂÛ‹éÉd>¹˜âg0ž~!Ëß&Ó“p¤ Cñ›BPˆ4&F¹ßГÅ@j1u’÷â ö0½,,YÈ!̯¹Ð½Qp‘Æ’J+¤òHc¥E%Ét+7Û%¯‘îï䊺Jqm⺠U¢ÌYèºzÉ6À—k—þÐ¥k[¢Wí«©¨º –l%I6W^DY6zØ"/•N)ΤÂ!À}òÄÿ€·¨Olcí!âÙz¶K51•ŠjÖ 5ô -î®Ôù§ƒâ#}šžfR㎰P •¥PŸßŸWÖy‚'œèi$ïX¯¯™€™¦ìsšœVÄ™EWÿ-D|͇ý›4v¶ðŽ‹ÒÄÑC4_üÉ=¥E”<“M ‡„Aƒt6ƒ” ¬>eæéÚ\]aØ8¥§z}½£b‚>ûdž±”ûKÐS Î&ç§WWк®ã˜Ÿf\3è×~h4ã—èHj -ðù*É™E!zHýÊìv+ÿK®Jar´…§†GêMã5Ô³)­EIÕ³Îyžìd,–5ÿ‹»×Nj«qEŽ—‚Ñ]ÄU3týd }0eŽGôŒ=¶Â¾¹ýz×: -}â·¯ e¶íR/w¿Áht7Ô»5jO5n,Þv¶ŸÌæ€%’?bn˜kN]¥6V”€v­Ï¦Fa’@9Ñý«–ÔëºÔ¶3þÿ…¾Ã¥©R÷ÛÓ -€áMK**º·žhº¥[È‘@žùxÉÚÕœwŒ“„8ÒB­z¬‡g#Ý`ï;IæÑz 7 -¼ŽGXüùÎW²%8â[ô™®YRVƒÝ:³7Ú^Cp`¢LÔlYO­VFÖv@¯^÷‰Zc5›Bî¾n4E~¢yæ™s¹¥ôQ…qKð ¼cØ›é¨Yøk‡Æ^lév42¡_UÁK¤¶t]ýjE½–í³ÊtK|±ÉóùyFZ›åhy£EºU• â°DÁØ[sÆ— 3ÓjEßË*1û–ÂUÓŸM‘§Î}m_“òDýߥËu÷Á¾oUð'Ú¾†ñÌÔîùó'HµzŒ«J;Ãí}V9»©úqó}üš–"ù ïr‚eýD— ý¢Å|_ C¿‹­5@’’–\¬ºölÒ{Ûo”e‰ÙTÝÜn.|­ÊŠ|6¸n”pØÎ_m¹Ú’Xÿ¡Ä÷7¹¾}ÕV)Ü+’ͬv)qëÈià½íÜv^wþåXmoÛ6þî_q ‚ÂR{ØÇeIã¦Ig¬uŠ8mÑ C@K”ÌE&UJ²ãùï»#©˶l÷eÃ6ml‹w¼{î¹ò§gñ$nõŽŽZpW"âà)™2!… !pàzÏY¯ãT(™€±$éâbZÿJx\&܇T™µý˜yøg¤‚tÎ4‡+•IŸ‘ ´û£«àW®AINÒJÃTi»¡ã,Å"«X¨9Ÿr™&]€çFýðúvpq ZIò¾H¬0é׈æJßC€ª˜ï ÚšE $þ05† æ!Ó>9è©x¡E8IAÍ%×ÉDĸß-¹2ºÊI¬â|[ôu¡2çJÅkÆ1¼CEäòÝï¡ HèÀ½=èœé)[€T)d /µðxœ¢¹hØ4Ž“ž‘vÞ{ œ5¦`3®€ -ªË€¥$Mÿ&iÿØëÍçó.3w•{¹‹½WˆìptùÎeÞʈ' ¢õ11/€Åh•ÇÆhkÄæA(C´b®q“t’“ ¦´ÜDt½ºac&Fý Fð¼?ŒŽáýàöçë··ð¾sÓÞ.Gp}×ÃÛÁõ¿]Aø$ _GÈp+þkr-„(÷+|Êm ¶¸8%1÷D /0Sã?Pº›/Ëc¶†YÔh5E‚81k%Ï–Ei×Ô—BwúS*RFd1ÂhJRP̸,¬pµöî.ái»SžN”I@üNo¦¹>LHZ˜Wìe¼Ò‰Vó"No,‹¡JM;4…È”K»>X`ôÂôÌD‘@B7ù¦1F8Ñ¢»a¯w,ÊxãhôŒYz -©V¨,¥"§1;y¹AÌ4›® ?æ°èØÕRý %‚Ö]æH6Æ,ƒ “ž ßÝ]ª¶‹e¡óÔíÙË3ËbzÐrŽY ír1KòÏpz‡ÖÃN!QÊÒsHMáé™ r.w\H‹[öÿ:‡_s™Ërú éhƒ)šU¨Qú–Z‘cÔ”4$¥ -„½š »iüÿñ 1º®P®Y3Ï ÜÃ*Z¨UYEìºç‹ý©…Bûð*„Xml@ -\FTæ80¤™&“– -×Wd«…¬Ò%?3`!}¦/MRÈZmìŠf°²)·Q£n˜r9‹ü ËZçÖK0a72n1«\&B‰ñúJ¾‹ Ò -}Å­¯&%6¥A¾É›bŠÙ¶M±º>榽Š*Myü©’Ô¤j¹·©„††jK0×i›¶Kn¢…kDàôôëA¹]Tœž²Éÿ¶¤é÷:Ïé1p™|Ý–»N6$ˈ§I9 ¬­²ø‰ú=a&\VÆ|QéM»·¹I•¹V…%n¡ÁTɛ˹¨–sË[œ~Ðx{FY.îBâ:áûŒÁ‚í7%L1<¯fÎj׃ÖY`o\ T,]@ ª«ƒ`¡lo±”BðᙣõJ+Áû 7G® -ó–·¬‘hS­XŸúµjá66Ýò[ØÝjªz!Øœ¬UÌäúQD±&vðôN UN4û »_ŸÙ âõ˜ª @{/×!´ Ø-…x†%€Ëeä%OëïèdÔ„àç Ë6çóДäŽF•S ¥R½H~ó¡)`/wNƒ"ZëúlCsZÓ›–[Ö ÿ‡âó7Íø{`Ÿ>»<¿.‡¡‰£:B&µ‘[7YÏ—·2YËóû‘3õcÆ7cM&·ÞBØÐ¨·Õ„Æ`Ë,ж•o{k”iM§knïíVBè*ÏL ¿Ñp§§½¡rå¯÷oÔÆJŠ»ƒókŒ*7K¯ö1ôµšæÌ™6Ó§ä_n)Ùd y·”s!íÕj~›ß/B'_n­6¬±×’swK/ÌðiçlÍíX] 9°}0Ç)sµ÷é<ò¾0áÊ«V÷ÊbùøÙÞ™ãÊsö¦-ÅJØ øϵ&5Ÿ<)X”ð-]: W³uF9¦­gg½TÁjÛ@½ë+“Cl\«ôØ”¦JbSÑ —ÈiÈ)¬¥±¼DÚUwWQœ’ïÌJJÜJ[JÆh5óæ½73ûî¸ÞÖA8™0…,2­œJªÜ²a1u¦ÉÜŒ¢8ð\f¨,æà´Šj‘Ñ_ª7®a¡• 'µ‚Ã(]Œ^Ñ€VÈÙÚ@¥MWÉÈuãè ìA±Båì EôðÉrŸÎaCô8?—¶Ë#­t[Š‘ZmnaCP"Ï%—%HE•'‰ arV–ézgd±u […ÆneMõV,%] dl<”%­;ÝôRöT÷fLá ±ä7³×pHœ4꿎ÆG>»;PÚAcñð>ÃÚ]"VÕ¥*óÙ½º§ÄñºÑkî/ôf? „ãlþl«ß†aÛ¶3á Ï´)ÂAbxNÎ&éü‘r.U‰Ö’[_iÈãõDM¬2±&®¥h¹ƒ¾Q~ˆEkÈqUL9ÛC°ß¦gÓŠ$}?€l¾G£(…8ÁI”Æé®âÕÇåå -®¢‹‹(YÅó–pºLÎâU¼LèmQrÍ™Ÿâäl -H–Q)¼¯ ‹ ¦’Å|ož<-}Ÿl™ÜȌ䩢B¡ïÐø5¨ÑTÒrk-‘Ìi<*éüPYNýIÛ°%Èî[†âòwý„„¡ ©/hÌE†þÓ°¿ß®_ÍA†Á°Ö\²R~?ʬ_çîí_ƒð‡ë!øÐÀ/ËÏ„6Êè–\óˆŸ&+Ý.ÑÎ_ýØþ¬Òˆˆ³dÿ”¨ðŧJÞÓÔ܉²yþ$ E÷Jÿúÿä{ nÖä l•ùK鿯¢;쀧= -Œ}B'ÇÜAa;ˆ|É>Ðï‘`|䓃ÿ`Ãh-ž´þKÁñûà;VaoÚHýίE‘€ˆâê>¶—´4 *º -ª˜^U*´Øƒ½Š½ëÛ]ÇÐSÿûͬ½„Rõ ;;3oÞ¼óû›*¯zÑÅE.`* „D+'¤’*—#à÷ä°È¦©Té5Yqë )„µcrb¿2Ae1§½Ï¤ }Äzãa¦ºV©pR+Lâéè'Ð -Ù[(µi¹®mD™A,Q9;ˆ}øùb9»¾ AbÿTÚÖ4ÒåtGZh´¹ƒ …i*9µ(@*:(=v4˜ “r¡‰®vFf¹Ý(46—å[r)ñ4€±mà–jÝéº+å êŽŒüI¸ä߯/a@Øé¬³ž _{ïRì@iµÅ‡è€Û+Gp XYR¨Ä{wÕísƯ]½æ¦ð¥€Þ^áØ›ß¹sÕ«(jšf,<à±6YJŒ>³óøæ>ŸUÖ[×ÒÇ눊P%bMX Ñp}£¼Ecˆq•ØÛ¶é´‘J?¼@´ ߣ³I ³ø ÞMâY<‚/³å‡Åç%|™ÜÞNæËÙM ‹[¸^ÌßÏ–³Åœ~Ma2ÿÊžÌæïG€D¥Âme¸B*™QLô0°Zº>Ù -¹‘ •§²Zd™¾Gã§¢BSJË­µ2%y”ÒyQYv}R[˜’·D÷‡âyò÷B¢Hê3’¹È¢È›Âüz»~¦? -õ”ÇÎÔ‰ƒ&—I)n¤òÒÆÃñ &®m7½0QÜQqLT¡ÁMöû?jŒz~‡<·`è*Ý›[нz$að…ðëÂÏhAÂaÉ{$!ØßÞ §1b7`u©lØY"ÿYÕkâαh·ÌëÞ©ª.×¼¯~’B*w2pB«ÏŽê´£äyµò;rxQ´´xeþ—DâibÓzæHª °yŽm¿Yhé;IîEQû–>Î^ #ÊÇ\>wt‹PvµŸ20ÖSElj•xõ­VI>xÈ—]öᨠN'/Gm<þ -ms[‘ðëœwê‹«ƒ>º†–™»Ïløñ„í[tµQjIðæn·1-¸Vïû%NODM;gç¾¼câÛÓð\¶^${ÿYšö(í`?³4ίB˜–º~ë°R¢Äþå•oõð8ãjeÑ­½Cz¸Ü…'_7¯ÛJçw¿/…D¹jÏB˜ƒ£ÁhäÑP$ò×)­%— úû@EtQKt¹¦'wŽ -ä^.d ÁØðHÿôáÓ/èñòª”[L‡eû›Æ÷åí?"×LB|ªÇ=!ƒ6cèʱâºTÏÚ óü«”Øÿ6ÚŸyí°Üúß`$÷£÷æª÷/•VaoÚHýίE‘€ˆâÞ}l´4!*º"L¯MOZìŬbïúÖë8ôÔÿ~3»^0䤈`ïÌ{oæÍØ|È×y+8;kÁ\‰”C¤¤aB -™€Ysà?£O¬à3ž«B¥7—BóˆþécE]‹ˆË‚Ç`”æ,¯P­LÅ4‡+Uʘ¡$t†áUð'× $§h¥!SÚÁj±,13¤.#°DsžqiŠ>@ȹM?™ÎÇ#X!WŠEáâ@%Ìψ*¥ï`…©X ‚f)‰2K„5O˜ŽIf¤òÉÚ€ª$×ÅZäˆ7')á•'S¸ÄµnTYKi¨®‹Ñƒ¿0Iþ½ÿ:x€‚Nê»'Ý÷6:cÊ@Yð]vàÏ ÒEbYž -&#]«Ûb ÇÛ:‰ZRË€Y) VÍcÀ EÓÀÚ˜ü]TUÕg–p_é$ðƒk¬ì$½AÒ>æ‹LyQ`µþ)±ñ1,7Àrd±%rMYE´²@•ƊˤGÑ…7A³M»¢yŠ(½yËÆlN†!ŒÃø4 Ça¾ŽçŸ§_æðu8› 'óñ(„é .¦“Ëñ|<à¯+Nn)òÏñä²K†Pü!×$™ -ª(~òÈ-uŸŠœGb%"”'“’%uϵ‰œëLÔÚIÆhLkª‚B´ù)ùˆå¾£T4MöÂ}í `èúmÎ’ °·ü¼¼]ÏùS-?ã¡Ñed Z‹h 1_ ‰ÖfØ_?ߨ‰ƒõ ¥ +ýôÖÀf.ãíǧõo Ý –#}§ë;fÜ* ±!¯Ô­þ.pDp“àŠhHè×Iû›¥00¿½-Æ“ùh6^ÃÞ¾o½’IK^Ó2éàÌêº~q÷%Ø£o[ìߎ±iÛœšMngù!6•rág.#¥5, ›]¶æØgüxÏ4ÐLÉdR^.Ñ@ìq9£Eã–9‚®DRÒäk|)Ôû|ƒIÿŽì”*ÛMøjI>úq¬ ª™ü.yõœI©úÔ ×»yI„åêómeÙ=°enåìQ9’‘3ͲZˆƒxâ–Gxâv䱂¬JÙçîbyñØÛ%ïí'‚®Má’>§ä±7ç¶›ÛR šÝ>8´‡28lüuÔ´7¥–¾cÂN@TO‡wþîɈ¯Ìoo÷¬:eZ³#ú«þU³§é.>ãÙ÷Û†5û”ÈÞù46K§í’e¼=8¿giÉ»‡ˆ‹EÁÍÙŽOì;ÿ:Qoˇ\ic¨V -Ú|á®ù4K.àÂå3a¼Š±•v]E(¢Îšq³Vø:´æ„ñ)ðÚ§ðïI7Ÿož0¦“åL68ÏÄm8W²íImûòÌíù‘t£m¹-JÇ¡úÎz°†{~j;uôßmòhûGoûÛ[²y­é¾öèzþj}8oýYÛrÛ6}×W`üb;ãš>6mÕ—FÓXJEÅžÙB͉lª#ƒ"•+•0¡ö öWLûF÷—ãsŠ•ýzáë†ôn ¯IM`k°¼·Ÿc‹-B#ÀWÞo‘tq„Á‰E=±¡^Ѭ±6}Ch´ZO‡»!ÂÇpG“¾A=5D˜ Ôëá‰bQP6 âIáÆJ`{ U¥ïËñûÌñHƒ`èÚ-Fˆ€@S«žð"(çZ [¬`|ÁEG±È\HÛQrô<~Y›.´ÐÂ4#Y7Gä‡2‚Kœ“íÂ|êúiþ…¤šI¢ ÑütYŸå Ý9£Â -[5HÇ8ß»aø6>ìéϤªÿ&ðŒô$ä6ÕÙ -²²ƒP Ô=‚j w„5ƒ ±€„›ÈšïkìŠWÉõç=æ.‹l±¥–o‘Â7Ü Úzb„ô ¼>¶ÝÔãiÙ3Ë\Q(i‰¯øÞdÁìÒf] 4žÇç`ªôö…¯7íuýš,1\Yû:"Bž»QX¤!ÂÀ¨òŽ©ÁxfƒÏz]B¯b‹;o*rLàÎÐäj»b˜{àÍ[èX·í *„xk¾Œo¥­Ãömf¿X&ˆß7½¾›9óÖJÎWÁKýÍÙg4þ~Q;«µµŠ‚î÷ÞëôQØ?$ýÞƒÕ ¬?烞{á÷aìjw“æÕö‹a¸ÃumŸJ{óì «vm‘bH=‰ófí qÍIIž§ôâ)†Ò<.÷Â(õ#£Ÿ±Û¥Á gpï†w)¨&Ü7½3ËY €†&•WƒàúÕ©MŽÙ;ª›µ^Ù.ôs}!RÚ*xã£Rk“̨ÀŸÛ!wç¼=îzlݼu çïG?ŒþíXÛn#7}÷Wp?´²´È£'öŒâ "ì¬Xš ‚Í Z”Äu‹ìlÉÚÿ}«xé{KÎf§˜‘Üd«Nº°¿ÿnҳѻwgä¹ç #±†rÁÅš˜ #ì¿ñZ&ìŸLd·œ&rMâ„j=”úÄc&4[#­Ä8¥1|ÍäÊì©bä^fbI —‚DãÙ}ŸÀŸL)JKE¶R¹c_d$N#¡kÅØ– £‡„̳ê§óÉÍY­(¿äÚÉ{n6°‡k²—Ꙭ@].9MÂ<ØZCPP±5UKt3–éAñõƹLé Oá¼9º2»Æh§8 ¾dæ])yíÁ/ ]þnøwÁêùÕ^ÿ½•ÞÒÒL³B;a/1K ˜ †mÓ„S[iï]~Øø‹W"2B­+D®ÊÛ5(ÿÙ“^ŽFûý~H­ÁC©Ö£àâè ;Ý]€ÑAæ³H˜Ö€ÖoW€ñâ@h -VÅt¶&t´²+ö -ëJë@‚r˜ -Ђ‰àzyÀFmŒzã™Ìzä‡ñl2Ÿ'ó>ÏÉÏãÇÇñt>¹›‘‡Gró0½Ì'SøëžŒ§¿ ä?&ÓÛaÅ^R…N€¥eËŸ‚ È'²˜¯x î‰uF׌¬åŽ)›)S[®1´Œ\=¶ÜXRimø²ä#ÀýŒª|6Í¥L¬ÄÇgÊhDýk ;]Fv)$ÂÛÃvŒ‡V%RLËLYNÎBê—㸥Ïà¦"ñFJ„HÉ- 22C· Elà¬$ksÕe:„3MèAûí‚›Å&&ø*aõ€.cÆw 7ïh—^„%,FeBÌÈÛÐûËKçÃ/¶âÂSTµÁÔ(üÀÏ­åì!µá{ÎÿŽXÙ@În­µ2¦¼îÖξžARüäqºf‰!áiøþ¸£P.ù [ú'#û*i*pýÜ ¾oèýII`®ár«Rª=t)M á+·3r[áÓ“½ü¾º&"K’Ai13ifp­ºØoZx£5–‚í\h‡í;~˘öT³¯,ð®èFȳ!'I‰:\•2f£d¶våõÜ{DRªè–”ŸÛçÖ™â1r.s/×玷z1…ýËóÏoˆú¯à¢ÙÈå°«¿Ä•wl8¾üñKrñˆÔ°SCƒê…è˜ÿ]È+™*ÈNòϲԲʄÍKòô]ÛevÔiðàm†\Yv¾=èkΠsÌñ‹ëàûUÐú¾±#×S¨¼òJ?XÂ1#ê“Ë\Ω~môÑ¢¢ _•à X)ÎvÀ‚P¼\ -æhNVµ²¡Àáȼ<)™õo9p̓(àËA›Ä†¶çXŒib»K=>v (Y-Gï©., .XùE­dTŒ?' -øûþ01ôB ‹Ðr!ÛM÷H˜©Â…)¼×vpp:ŠxO¥õÄ…Üùsg‡,l.ä³Î³³îók)µ)¦ƒ=±t[™mJå†ÖØKxkÁFg•7±f\Ø>|Uq~Å4Iüä ‰Q÷‚áÈ’Ã[W·p…Ê—S@”¨+b9šG)µf¦ƒMàXIyööó]Å~üXk™},ÒQ¿(¯uWÎî¢îmjJù3`ˆ¶`2?)åíçíòvi;iS¡÷Ðdªª 3‚6|V‹7/e÷€pôØÝýGo„pAzJQyuÎÓ«“ ^«ï}0²8ׯ5Œ¢;ʼ0t¦N©×”“£2.RÈ0¯&ol³ùídê}þþfþøéúâö8CóöÜÞ†À#f¢0¼¸ö\%½¯Õ>tq ¯¿Š^A:¸a0Î ¦ç{-^®¾×;?/BW‚šwþÌ8<Ã#uèÌgÈð -./Š ³Š*«%òCÝmxt±—µún8¶å©5¢ò¸5«rkz¿Š2n°Ÿ#>µ*ŽrÎD$^¯‚|i2ߨ4r§:&•ð…bs,$+þ’¥U<ëÔüÂäêå%6õOiQ¦>å*×vÿɢܮþ‘xWŠe1ùWƒÑÖÃ¥ -4¬,` K%ÜoÉ!ŸKB&c­‚~ ÷bȯ-]æ÷9§,Ÿƒ3UšÒÐ “øÊØ 2µí;/ƒ¾¤(vUÅìùÈc‘r…̃+ä3T€·T’ö÷IÜ™áOl=]}À_¦ -ˆÄ1ÓúH‡ÿjD¦ÒØ÷ayË퟉«cåN†ó ”âû¢jèº8h›-ù¥í0…Ë -±ÿù÷Ba¡1ï»ñå‹m`µ½øê)døZ@9;q=€Žj–´v~{§|‚ŠóÄ^¸†ÊWÊS¹tíÎŒjG/DþUÑùï¶²U)ކ­áÖI®àk1V#Ë7ˆt¡Ëå\ ±•ûqĽÛjˆŸ ëOù»®Î®;©ñ_kb›ÂqѺêfº¼")™ý§eÇÛˆªDÔѬWÃÌíšy ¿›¬ŒÁÍâeÉe£³Ú<ˆê‡†—Xþc·è¾–í°d@»!\·'oÂO¦ÎmÄãÉ]-nõáJµáɾ6kY½ÄUsHYËZ¿ûÈ^éß1¼z­J:|^OÀåç÷m‘uoºþP`ý‹“¿¢i?Ñt }Û.ÙŠBÛoï7„ª §zÎq„Nv(Ï0Í}£®’_æ£AxTÙízµ ¤ù×Ú}j6ð‡ÿ?ÓA ûp}ö?íYëoÛ8ÿž¿‚'ˆ](öá>¦MÚl’âŒë9½ØMQ,-Ó6/²¨©8¾"ÿûÍ I=-;Ý-îÓiŽEÎp¿yÑïÞ§«ôhøæÍ{Ã>ÊX°H%†ËD&KfV‚‰ÿDW*Ñ*ÿÊ…6R%×’ÇjÉ¢˜k=2¤ü$#‘h1gFÕeÊ#ø˜¨…ÙðL°*Oæ©Yïrò±Ïà«È˜JR«Œ­UfÎä,7ð"¶_fB¬Ebô€±‰Ä~|;]ݰÈ‹ôs©-°‘f{¤f•=²°âó¹Ä£yÌd/Ö$fbɳ9ª©t›ÉåÊ0µID¦W2…ó¦¨Êä£F[ÆþXÐu«r§JEkgŒÝ#Tùoƒ¿²l@¢À­ý·D½æ[–(Ãr-JîL<9¤ ‡п¸óåpHK>^ï¶}8$–1­òŒ05<òá_ lô#×'æìwý¨ Äy‹¶«Ü¤¹Ñ<‘щ˜=l*`gd%„ðÀ±L@Yɨ–#ü p_«$Þ"ÙÜ áÏÖ@ø(XpmoÃ[ÒLE½÷ò³'â ` Ò‘9Âm@.Þ -ÂAد‰òÂxŸ‰’`C¥¢ø—X€ä6] L§ÉwpUòØ™0oSRáeà£êÐ@P°4™ô™í¡cرJ @–_u@wª ºXß’o}6XÙ55û·ˆ 1„ðMc¾õ•£ä=<²˜ê¬%1Jò•=víèûÑGŧÀ)„sæßúÏOʉ|s÷fHŸ AÁyÇ–ðm‹ïgk èØÉ”gßv1MKâs»³wäM8_ð÷ùKò8+‹dH\«/öÛ^e‚”ˆM¥¥wí³æÂ,3áýTVk Ñ»Œã -ø¥öì<èÍ*SùÒ–.–òŒ¯…Aú)½·¨(^cÔ¸P.øÙã+ÁŠß\¹ ½þ oVj>h¹ƒøw•5ŸV\öG’ž’òLž%ìIÉÖòäe¶È“ˆüóð dÅ<2½N¡Ã× rN(a}:ì{¤cÌV§ÞçžóÛÖŽ‚OÉòÜ1}O 9 J¯ÏÎ -ZËþ¥Ö;²dõEÕÕ>7ÏžO<–sÇ…UG‹Æ -[qÀr  žo "÷‘À"´ùÙ‚„eî<°³=7…Å#±¶ó˜*qI·3H¾;ŽÞp]J<ØëdòI×tŽ;ÇyÀ±ÿ‹³ú!¢ýIK”:Q»ÅvVÚ -S7•^©<¶½¡6Ër*½>V¤‹uºÕè†ZRÛÔmø “õ;è"M4 þRÉ1c’Nìô8•JZ…  (NZÑJåDlç·ûG.j*csÃãØ(™M¬ÍVοMv3›1];dˆŠšŒDÓ‘»ñ¼¦Ê X¯ä"}ô‹]å~|,Ôê©eŸ§{ý2k½ì ¢®Ø¹¶UDW“oÑÛÚÚ?‡Ì©uY_OO BÓHäÚÌ:+ˆ Ï ß5ü-+©%dÒ<,ÏvÃI# ¬“=ŸŠW^lÉuðêÄ‚ãêûi ¢‚›l%<Š?qãd×:•‚W ŽZßv9SÙØp³A+­'ÓëÑØéüîjz÷éâôz?B‹>aw„éù.ª²`«¢ÿœŠgÓ«aµ^%O/ ì`ƒóŤÑ5´- Xy €ðÏ µ™ÌÌÊN/ -'NhR¢j¬T@îÆÞ_[*arìcqßÑ ùœ§½–·î¥øža‘ýà‘*œ«¿‹©ûSô -ú‰ ‘7Ên¼í»j!¸³>XT0šS3ù fGßxPcØBêìÃ,P[ó¹ð½¯eVô¦yVÆ\¥…îxah¨çTÉŠŒà¢+§`ÔD­YÊæ/ì‚á5AµîÏ`·ö|M;Á™m¦Àxíãð -x×8QR5v„l³’Ѫì)ÉQ"ÔŬ÷¦mÏÍÝA¢‚fºœôö* AØØ´+x{ñ²…ó ßEj..ü·á}¥Þ/hè¯\°Þv˜ô Ë;ž·Â¡G­sÈ‚n^A o~äì_“ß~Òù!™²‚½Ö ñšQéÀ`äîq޽Ûm¶b~"pë]T06r„¤{öÎ%Ä|âWm¦«*¤­áªóÎÁѤ;o ¶>/æ*QôMè±ò¬:¦±°©sXªÓ5{A´Ó`öšáémÌU˜óæ©­mµzCÕ¦µ¥ÈÊdù'OS8âÞo¯W@{>s(kÔ$gŒúÛ®£®t½düâ´³³«ÛñýÍÝôáÓí×›»pÇáµWøœ@"9Á’“íIØ^MÔ ÝŸœ$Õ²U[‡®}&òAh]ÛïJªŸýµæTÆ£Hh½g‚øR˜'+C?ŒmRµþÙ>©Úi×t4øÃÁ9tÝø`ôDc¾Œþç~ ð ­¸³ãÑ=…gc/Æ1AI#—‰ÊÄ;èzz IvNäÿ‡G±}ÏÊJƒ(ô%¯rãÖÝnÔ'†’ä×Ïßv µ‘e¯ÛZjÄ -þ>"`ù ¾³„Öuõ!¦K7ß&ù°~.~ôèìêG œ`Ý2õVU;óðù)^ñþ÷Ññ: êPæ5›ÀÕ0ÓC'´ßmTbSÞ -Ÿµ²ÅA¯y¨ÿ½Ü誰Oó]yU„Ø-L'ÞéÔä;‰ð©›ªs[|ò`;–j}› ?<Ðï;VÏpÕlS±c­ß}dPù‰æÍ‚\*µÚ?/­73ÀôãÛ]¶WûÊÁ®/ù¿Gééð¨5ÒÏu¡krÚÎûÓ…¡.¡ڄaÍB« ¤i•Ru).Z-‚¿3¯í¶5›Ze~0ñ’܇zwøé¼áÀtï/Žþ ½Y[o·~÷¯àŒÂ2T©8v•ÄudT8©XJ‚" j—Z^-÷p¹–Õ ÿ½3Crï’ì6­€DYíÜ/ß ™Ÿ_§ëôdt~~ÂÎÙŒ Tb¸Ld1³Lü\«$S±øM$ù[Éc½+žÇæ#eÈÒ,ˆy– AJy'‘d"dF‘„«”ð5W+³åZ°•'À&UÂήæ7}B3•äi¥­Z.s[‰ŒGZˆHL6dl.‰ŸÝ.¦×¶Û‘?”™å¶Ò¬Ffl«ô[(†Uó˜É~Ø!ȨEÄuˆn*Ýi­ SÛDèl-Sз@Wæ7Þ˜Ì -öjÁ×Ê+¯]0ì#B—ÿ;ü‰2õÜÛ^ÿ’¸7|ÇeXž‰R:OH ˜ †mÒXò$ nç]¡lüÝ QKL!ãä -S«*ã¹ñckcÒ‹Ñh»Ý9اéâ×Û öéêîîj¶˜NæìöŽ]ßÎÞNÓÛ<ݰ«ÙïÈù¿éìí€ ¨O©F'ÀR‰a¥ž¼ X-.OY*¹’¸—D9‹Ô£ÐÔ#©Ð™aj302„òØHCE•!kË7ß%o Ü(Êu×B©˜8Þ<ºJ8TåΣш^ùFx~ÚÕ!‰ÄËT®©¦F' -\‹³Ç¢Ç1]`€AsPÊðÙ„ƒeÂ`õAËæL`?‹lÀB±’ dJãr*bÛÓ('Õ -jvCj7HØ0À_eh‹ Y ?ô‹< àw¡BC/Ä2»¢¦D«¸Öä]¡]>´OØRø¼ÚJÕ"æO$Açò×yïâ,–L Åxx´&"¬¶é€céH™þN³TAq,ã]E=yš¹rƒjý8¹[ÜŸ#Af8ÂFÝCXeÓUá4 X†áBâú‚'ÙCÂKuú°LbNM2¡ïäT •Ÿåq ²a-“Gù*â`Þ‡u6ljÝ©7 Ùjf6èebØi:‹ZþS–£-Åb ]\ø°Îngvæ4ô¡ã_,áÝí§ÉÝ_aüðþýänH]eù¬QЀ䢨E_ž|=A;¨]ñsÎÞÛ˜A1ÿ“ÿ~óȵ͘ûeDße#DØÓ´d[ʳïkÏçµgŸÇ¯EPÒ¸;¤Iò8®”Iì9‚LÄ«z¦,yÿò¤é۵܄”Dl-ž„M„²6u _e¯;‰ä£HXÊ5߆YÈ© ‘•eëÜsgÄêšÌ8“Fl2Dð¢ÉVZm¬0|ãå@³&EhÿS¾MHEß÷'Jrf‹ -ÄÄÂ(Ð!†ñdÜ´Lc¾C(ÌŠÖ#ýD2DI”G+YxW +Ž.E•Úå¤xÕ"Us* ZÔƒ¬÷)@âU¦µ¡X½,gâR¬p ô !ͰUÖ¤ì%PTãÛÈ',}ï_'Õ`D •Gp}Ú•lZ˜\'ìQɰÞxù†5[åI@{ðý=¿ÎsÖrg\t[iëØvWÍšqGC±>éûZ´á)–_©Ke—MÂ"8ŽÐ=·è*v]ùlI¿µZúŽbÃnUiÇ¢@mæ+-“~/±ktjªæZQî{ÊÇ•“f÷Ž@€†Ð·^3ŸK˜”~,7->˜gß×g…ºf~œØ(”B#[Ÿ×„ÈÃQå°„ [>)ªjíãèA¬ðîšRf²v„y({4rGºJ¶ëÛ\'"|÷ø[¤ÜðD¦yÌM‹¸;”<Ý}Kùr<³^ýðC³þ3¶íçØë"*I¬³¹¡fÓæÿ•Á!.X³³Ž6Ú'œ6Ìz§ÓŠrQ£ª˜¸bm§Ç/ɤíå°Ì…§3r<ýˆœN¦o„AÈ@û’*t,åQ¶,á)Ø€hñyÒ)‹ùŠÇàžXgtÍÈZÞ0eK%ejË5¦Vƒ‘K€Ç– *¬ ßB•¼‚p_£(_ds)ËñêÆ#e4¢€þ5À®G#û*Â×§í>Z‘1-3e15:¡VÛ˜Ê÷–!€K€—fÑeß$t–Û X …7UÒ[pB\wv—;ÀîßÐ^´…KP ¡%k~ÄWÒ4ºd+.-À"‡°´²ãQkÛJA==‰ó¦çê&|°)ïŠXP¡w }X¶å_À¾'`('ª’Þ¸/õ5>. š ¼ÁUÆ"’.‚y掎 .O/æWÓóé)éyµ}€ý£%¼=ÿpzñ-Œïß½;½Zh9 =f¬`qº~ßÉ–Ü M¿ø9$ï\ü¸ƒû*ü}uC•Ë­ÿfdÿBÄ IJsfBÆŽ´wŠœGø<~á)úƒ‚ÆÇ;òÏ@#²$”…„Œ!š%«jÚyÿyùÅ|a¶#ÿø @ÛĨ”1™Wá|;ï€ì6<Þ” -Ò¶F'Îפï’n&`ǃ1¦ŠJ¾–êý"H镊¬?$“•…¶p@>nø².œ¤zï"Ùc’BÌ®#h£Ðê±hKåDRªè–ƒ•2uûA A\c±Ó4ç~¸`Øüq‡p# -­ò¡X°î0>Z8&¸É1h![’yÀè»—w/`à µ¡X\¸­ l[5H[7š «³Gýº" Ú¤ðÕ¹YÖzT…¯Ö¤àUÓ‡‚G1“)˜äËjf cd• gíÕ•åUYlzMß…cW]Æ-EúVÏm^†O0¦Ï^”"4.«x^',Ý ’Š %ƒá]£–/l0 ÁnQ«Lº0G‹ê­QtÜa°œ{±.¨øL{s++f <`£‘®ÌN¬Ìª^gß½i }£—««§ÁkàâÊuÒ@8hIPÿ¡@R؜ѷY6y€‘ó}£@ñ‰Í’ÑÍ Ð8–î`à4¥ô†ªu¡ÏP¹¹ø!þã’à8rKO³„šq{ (YÚKñr<“("OŸÖqÿËØ•šg¯Š(e²ÊVÔÈ]þŸ† Ì”^KÙtÉŽ)l¿Õ¢¶ÆQ…ªd´#³RPòûùC2íºs¿ÌDîî‘é½îáÙêQ¹Ñx *†g؉𡽑Īç2jàÀY[سWšÐ}q@fÅ`dÂÅu†U•„pãÎ;ÕÇ ‚è å -×ZÑÎÈ{¡»fæÂZ0³´½Žöõ"2´{£\B³‰FQkÿš¨”½Nt¿$ùt[}{÷9"GXyÂßkçl¢Kì¬{Zûô„ms?…E„Ø_¾e5ÚGµ \Ú §F‹çZô!ðä¬f£äÎîÒ¯óÁΩ4öJæÔÞ3Øó…£ßðñgÉ´=õGm×´ -(läkûσRÚ«yÞÚ‘àtm)]*j _Ù…ŠmþSEÀç¶¾dÃdWã‡"Õ°¿k0å˜ÀËöãAQ™%áµ -·ûûÀµ‚ÛÕøZ¬PaWq¼Æ‡:”[Û£‘V0)3{+ ¨X³GÂR7`9¨‡´Óbµ ¹ M;pÊGÈæ˜ðÀÏw¡š~;W4Ñe%íÊ:A]ð.HdM‰êƒ?woÐú®[¦l~&îöXÇ4¡ê^—q'©¾mÙI~r4œ™ßŽÒ @GDZm9Ó´G¤eOú*JwÙó¿…ò7B…‡ßúÎÝì»û~Õ„‡Fž +±xpxØIøÓ6 -{¸›+wcRiàð ŠDâíùŽãå8â#k˜ã÷N|o‹m6W×lžpmtEõà³øòÅÁXmo9þÞ_á‹*šT!¹»-)”Òê¢ãR® „rv¯{Y{›Ôÿ~3c{ß’¶”• é®çý™gfóâe¶Ìö†‡‡{ì]ÈT°H+Ë¥’*av)˜øiet*þ-„±R«7’§:ù‡gœùÀSs«s¥Ü˜¨AMoe$”1³š´œf<‚©^Ø5ϻЅ1ÐÆº§Ó‹ƒ?Eδ( ÚV:w®är^ úÔid<É…X eÍ€±©¤~r9Ÿ³øò±4NXK»„3Ò°µÎ¯ÙTñ8–hš§L*¸±"GP0 Ïc =ÒÙ&—ÉÒ2½V"7K™½†2½Î§8˜…X7ºð¡Ô¢öÉè³ Cþsð;ëÂêø§Þ1I¯ø†)mYaD¥‰ÛHdÜÇVY*¹ŠHÚGWÚ?y%zŽedœBazQ?ƸEiüÇØÒÚìh8\¯×Ntž CˆÃ·ÙÉôü98dÞ«TÙúVÈr<ß0@Hð9øšò5V -E/Ö9d\%}”6õ2UI .Bèõ6N5êœNÙxÚa¯O§ãiŸ}Ïþº|?cO¯®N'³ñù”]^±³ËÉ›ñl|9¿.ØéäJþ=ž¼é3)Sâ6Ë1ðTbFE\ÃSðÑâëd2É…Œ <•<,Ñ7"§>ÉD¾’KkÀÉà±’–@ePt+¶Ð%¯ ÝרÊwØLë”$^Ýx¤ ‡ПÜy2Ò£Ð?_¶‡pH*bF9aj¸è ÕÛXÊÏX$rB¤¯H-ÝÖ˜Rj~h(ÜMS²O‰ü®«ë{ åûŸˆ¬!x Ðbœ%òFs+°mà“aÖPÆX,¤Œ€¨„ßòȦ¨Ã5ÕîËg:MÁ0ü]F|Çbš{Œ§©^@1ª -ÜñX2ÂqÆ>Ír @±›À°Ti°ÎsN ºr”ЬÂÁ,àRDר`b|ÈAk$ qÈF•kÀ/ê/à”WŸ4@ˆ½¢àÍV4-ÏAá-ÏÞn˜Â§§î–‹/ÕúÚPΉ¸ŽðÀ‹HÇâÄñ \j·ü¯ƒ0lt_úÍ'J0z¢ÚOþ€»e~OÔAù Gž KW>.‘R1ÞHçL+ÏùX Wf ІáQ¤1…X¢êIAôtiìèÙYó9‘¦ª0,>/ûªÏ$U æÊRàs5ƒê Ìãƒb‰ñ˜Sl‹[†›&8¨…èŸ@PÄNN&àÜ%)\%=¶_¥·‘jR?h*]É[psZžŠ›šÞ¸›µ *9©,º ¼ãMÁŠ#”[˜IiA•³¦ËÐ ã݇ÚâÎrx@ÔѲ^BH]Ðø—éBE.‰œúS¨v¼iäЭ Aú)[ƒ›´µ÷ ×Nå’c.ýFgÈh­äûhzãŸ/·ÓPeL «BIJT¹'àšUýí¥ÁY«è%mƒŒÛ™|E1ÜOì÷ry؆ZŠšdŽ.=ÄXÜâò†\‹ÌáÑ6(Ú21¦?è¦"»Ñ2ö÷†ô™sØ«Kð°¯_ÉH^D¶ë[·–„~Ј©"Mû _GPótÑ,ý k?ò®öpK€Ë1±Û@ Rú½³0Ê“ûˆöç'þ¾æó¨>øÊÑÆñ^y’oGG˜vFÓ £wL*îöÚ¼{EIDú\Puƒ€uH€ýeªªî™ÛG]g4·þV5ZÒü¦Zó$Ðq@Ù" óé) 톡·5Û^–mˆ8‰­ÌJfEJMÔ<¼;”"ë–ÆÚ%†´TG£ëtسg¡žW¿²¼xS^ÞͦØqyä®üfÖèmº£õ -ߣ;âF´0LÊQã¡0ÄÁXV°«æµÐ·æ@Æ×ÇY£EêQk@±O³V%Åg¯ L ³³Ì 4Îg¯î ë±—;ïµ-:µí.y9üeD ¾E5¸ÚøtdÅöŽ'0“ýç›j àM`‡ÇhèÏÜ‹DQþ¼±%^j±ËŒÀ×P†àóD[úýîœ~”¢eÚ½„Ú{Íø=ÂàøÂE6 Iœa@÷'ߟb‘WöÀŽ.èÇ‚œ«¤6Md¢`D>ÂõõÜ÷Û)mwqÕU’=ØQ€QgÕDÒ|u3aË0qÄ‚§¦®}·•pQ^i·Ý™ÚGbí³¹ÒÙÕQw?ÓÑž¶CõmWM¤ŸÉü®þÝž~ %4jB§Â4{y²÷?µXmoÚHþί˜CUE" -wýØ”4i^tè*Ò ´UUUÑb/f¯Æëz×!\šÿ~3ã]Hš^‹ÔPðÌì3Ï<3»ËËWéŠJB<$ã°«-â/IÅØÅ3Dcôº„©î>¸*ë*kÖ´yoñ"i/Á˜m;Íê¹Hí7ÜÖçn¯ =èì,æ+hçÛúÓ»ÏmxÁ îkCw)V@ A Ù%örgq>#±Àë ýqéìý{î´†-] -(‡æ®vdç™^ò9éµ0ÒãiË÷Ù3¾¤ñU²°÷/78‹7|e*—Â1J[òŒTU”àø ë×id¾½‹\]áe‹Ëw¶]u:ûT ðy[#2Q|bzˆ« 8»º¶TÝ%åÏ—EmxúÇ…R˜›*ë6)m -ÕàØÄ³]Ï›Ò 0¿êNð¢ö¬Ô½2W…:«óf41FùöÔËd‹ÕKx¾a;”’¯óÿ!]hX»€P"ÜBárN®¿î6¾™âœür°…1º‡Ÿ@à‘ñ^~h¿®?ݲ_ÿjjæÓáˆØäáÏ©:„‡F%_Ös{pØñÈþe{ ë'YqŸ« üŒ wAÓeKE¿{9¶o8Û|á¿ú"WWòFk6UÑ$·Ú+ÀW‡­ÿ½XmsÛ6þî_±ÇñudW‘œÞ§ÚU'¶ï4—‘ZKM'“æ<I¨)‚%H)ºŒÿûí.¾êÅNšÓLb‰Ü}°Ø—gøée´ˆŽº§§Gp -7*àë0*Tá’…ù_ÿä/©4‰Òᕞ7‘|'5‰ŽÁ„1Ä ˜·Ê—¡‘SH4C\FÂÇ?#=KÖ"–p£ÓÕ -Z—£›ÀŸ2JÒF´¥Ž­±š¤XDóXÊ¥ ÓIÉðƒá¸ÿæfh<éO•±zhÀZ% ”QÖ:¾‡B‰éTÑÒ"âƒ%Bбœ‹xJûöu´‰Õ|‘€^‡26 ázcÚÊèÆc,°[÷ºÑi¶•Ò®3g´áÑ–èœA HÉËÞz'¬½u©‘:ÈO¾Œ4 [F¡ÏÚÙîò5ÐÆ÷ˆžP AðV@ÏÊb Ò¦‹$‰Î»ÝõzÝlpGÇó®Ûb÷-zv0º~†F;_Ã@ƒÞú3U1úx²¡U¾˜ ­XS9PœhÅ:F‡ó6i—å0Ns&âÖËè6Á1ò.GÐyðúrÔµá·þø_Ã_ÇðÛåííå`Ü¿ÁðÞ Wýq8À_7p9xOšÿî®Ú Ñe¸”üÅ´ ´T‘Gå´”OÎÊ–,N&’¾š)·ÎS1—0×+s‘D2^*C¡5häÓc©N*Cª½¹*y…î¾'¨¬¼ÆZ¬ñj•eJ·+0ûç˜îbÞíò+WÛ¾4Šâ£Ál)Tá2ßî[Ã6Ý­«<H -JL7,érªµ)%2ò*Û©’œe ÜFÂÜ•ï3bl?–¶íÌ\YØÁ©‡oœìí¬\Ís¹Œ’Í“+ -×–XÓFEY ’\ŠPEi Èl«µ¿xÐIiô´Êùî»]Õñ´¢ú¿ÖR [˜œßáØ_´ÀëþçÃÙ³öñûã®×.¶Ï[9ÿ/¡…Q?Éßœ»o_Sƒ[è\[3Ô.;¸lŸlÉöò-ü[ xùó¹ñ$‡÷ž{MÈâ-ÛJN ©‹=(g{×°cçÁEX¬¹ÊÃ^—} I5bq˜—,©!Ìñ`B?¸‡¹1|+!eZ|„ôE˜OçSe¢@lŠ Y ™t\³H*œ*ŸÎ³•…Ü­•椊‰ŽG¹lóeR+¡QfÍ:YC÷’Î\&·lÁÈò{c Šy¨÷Z?ýݼ8ñ SBƒr^‚>Wß>|ô°L¨É_|{f1î!™Ù’jƒ‡?¼¯kÕuD&€ƒ˜{ûu’š÷AÄ/©‡úB6¼m›þßq"Ü œ˜Ò.Í–³¡m“YE¸ƒàf –ø¿¬×»;Úå;nñ5Yêê”WN'WM±^óÂkt“³s ¾â½æ{K¾]µòîÓ·ðvP0|‹XÜѾ@a£š‡:–XA­Úη¶ne KÚœ¯)<²]í€Û8»‰º‡<Õ°×&Ï º\•}RT†.÷Ú&Ç8Ÿ³Ò†ú_¢4pÖ—ÍZÆå -¿â»OÚ±8Ûþ”E%'uš³bÎåÓÒ4Ò²]wi=M ^Þ’ÍÍÔÌ& ºÞirV«ëQ£hpϰ{åè2î ½m;(ÆW`´Tæ÷"ã>éΤÑèóÐx2A:¾ßÒ,òÛ³± #œ/7Âr§ Óv8°v øÆ^³f~¹;vöů&Ī ‡8™.ˆ*{;ȪÜ"¾Y«-Ýõ˜*³áo\¸ zû]Ï#Ç5¸½­0³…/‰ïîåæÎžË›YQwnÑ”Ð/_ý•VÛnã6}÷W ‚}°Ç*ú˜M²qã58€åd±´DËD$R%©(ÞEþ½3#Rv.ÛnÖ…gæÌœ3dξÔÛzànT)!3Ú ¥•.Ào%ÈïÙ•ÑΔr¦DiŠ%[i!+…sîVeR;™ƒ7Œ™Ö"ßÔl|+¬„Óè\xe4 §éÍðc- m,TÆv‰­Z7_”]D…•²’Ú» @*%‡_Ü­æW×°A¶„Ï•ëpH U~‹k”ƒÖØGØ`(‘çŠR‹”Æ! •…°9š™zgU±õ`Z-­Ûª󭨔ô&’q]à˜kÝ™&”rPuhÆ0•üûä7â…¯G£ÏŒ®Ä´ñÐ8¹ò9“µGºH¬ªK%tÆèP]Ÿ9~ AÌšDÁ¥€Ù.á M[ïëÓ$iÛv"˜ðÄØ"‰%&·ØÙEz}‚¤#æ^—Ò9ìÖß²ØãõD¬2±F®¥hIAŠ €,Z‹×ŘÐ.šàP¦}Ó"E,ýp¶M°FGÓæéü1Mçé¾ÎWÞݯàët¹œ.Vóëî–pu·˜ÍWó»>ÝÀtñͳ1Hl¦’ϵ¥"©¢ŽÊüÀO‘¹%èäj™©Ê°<]4¢P˜'iy*ji+åHZ‡$s´G¥<›Êô]mqJ.±Ý*ÌÓʘ’—OÁ)I"ÐýÚ]IŸâ üºlÿæCIs¦±ì©d‡ÿÞ«Rù]7ÙÜ‹·£Ï­ãi쪥ÂpHPºvMUI¿5yŒæ‘ºÇþuéG‚¿ÍñòQÎcÈ u‰^x×ñ!×ÆÔØtL‰O¢T9ZÕ5¥'OY™Iõ„†ÊÍ)E9ËL./è.I`®%^ün'“ÉGüºíïô4pé^{Ôè3gIbÞUƒé¸(ji㼩BÖ1›¥ëUè òù­Òr8z‰_2¡aÍælÂVK‹¨¸Ž&^éºñ°±˜â*;‰3ü?¼ÇÆK¤—?ø1ÀØ8tìk‡ÛkC“a¥o,MÉk]˜¢ò“f E¯äï"õ*ƒÌÊïu ¡c¨×^‘àíµûÞgŽ¿Ø+ª÷†²ÒIn}ïÃ>Êe—*õŒŒhí! ÎÛ#"áߺYãü{0ƒM£3>!ß8ë§œF¤S‚®Üô·û—tÀÉEˆ<$“†ë¥¿k·tò ÷«·Â=Pk—\Ëpççç°%nFBé=ª>ºE/ƒ·^Yö®`çr“ÒÕl¾80„ eÞ-¢“±)Ëà QU¸{¿S0¡#Dý[¿µ¦}oãéÚXͧ,ÿ/Ð­Ž—Úô„;›¡“Ÿùáß³«ÕòöâdöKjîù\ŸÐ#pÎõ aƒmsÃetØ_䂟¥Ù|ý‰Î\+hÙþG¹ë…DZQ8”îËÅàTÑn›0}ç+®òÔVY˜öØMkY›lh‘]ÕGcnÀ*ØÌ6¥YÕßµ†iR5í!ŠâøÜ{ιçúÓE[µAxvÀlDÀ•´LH!K°þâWJUc¤Ë®Ai×O[+”^3cV„tàÁQ,À*ŒZÆé+U{Û3°Q,˜ÇDéæè'jPZih”ºk‘w–ê¡"°R#ºÎf"úòÉ6‹¯Ö°'Ê_3àˆ@/lEw„^éØS)Vµf5I'â€K¦ §–«ö EYYP½Dm*ÑR¿ÌII73žÚ’ÖƒêF)3Õ£KøA…œä«÷pBh1þ»8ýèÑ ;€T:ƒÇê€Þf¢KÄš¶LrÕ½ö Ž÷c•»ÉóR@íç×€Y‡v€ÊÚö< û¾_1Ox¥tNÃr6I×ïˆô„¹•5Cnýì„&ó°–Xq–ךõn‚~P>Ä¢×ä¸,—m¦ÌÇt4m¢HÒçÈ6æg´ˆRˆÓ|‰Ò8]Â]œ}ÛÞfpívQ’Åë¶;¸Ú&×qoúµ(¹wÈïqr½$˨>µÚ‰ ¦Â9ŠÅ,O—–qN¦E.ö‚“DPÈGV‹ÂmŽÓå4˜øx&ûäÃì‹eÛÙós*Â) -'§/ÿ;˜0`9E•q;<ƒo>”ødQó;¯ÿÏÁK\|~¥U_oÛ6×§8š®µõÑn×h‰kmÀr[ô© ¥“ÌY&5’Šâþî;R¤-¯Ù®Åïî÷çîòúm½©£øæ&‚˜ò -!“Â0.¸(Álð¯ìN --+LTÙìP˜¤RÈòýK® *Ì'Ö†KYÅ´ÚTöçÏPhÌÁH—*©YFT¦e -a*‘3x•¤Ók ¯¨@ -´ÑRÁNªâëÆÐAÕeV*D‹ERD—~¾XÍî&P Ÿ:GZn6t‡kh¥ÚBA©Xžs[šUÀ쨰d*·ü3Yï/7d+Pé ¯©ÞÊRI§Œî‡²Äu/O¥ÇÚ‹1€”ÈR~5ü ®è‚ ºðo/®Ç.zÇö ¤Fã); Ó™à°]]q&2íÙkÆÏ>‰\[/9* ‹þ5`&8°1¦ÅqÛ¶Cæ¥*ã@1~GÊÎÓÉKb>ˆ -µ&µþl85¬÷ÀjB•±5a­XktF¹ ­"ÅE9°Ñ:4Aߦ“h"Qï_ Ù˜óè"Ia–^À¯I:Kði¶úmñaŸ’å2™¯f“K¸[Ìïg«ÙbNߦÌ?ÛÈßgóû IF¥ð±V–!åVQÌ{ý0Ønñ>é3^ðŒè‰²a%B)P¹a©Qí¸¶Öj™S{ì¸qM¥mè7Üì˜Ø·$÷Ö¦òc¶’²r·¾Sâ˜Q÷—(âØ‡)x¾gÿÕ„”2ŽÂ ÞVNuÖ 91æçÞ†ŸøSË•ü¶Cg·éÖËþ7Ë8r»äûÖ>y?èø.úQ—ƒ£i?ŽªÇÝMÅ‘f=5mãœr!±{Ò>ÒæÉûÉ=¼ŸÇîð©äµÔnÃ<£ “ÆN»cTÁÕ±d¾ ò?g±¼Ÿ, WãèŸ`¡=Å@`뷈õþ33ìc¾4ûš00EÂP)ÈÈ?+k ¿RŠíwY39ÁÔ$?”Åó< H¹œVÝ'!!ïdî{z"b'Üè®'Áîà€a[G ÂóÖER—²(¬9‹îÌôáôû8ÁàáSYœ°ôÏÃ>|Ž.ñé¶BÓ(’çg×Íš†ŠFdη/_œéªÉÌU€7ð®]D×ìö£iR³ \½>¿âºˆÑ>ÑXÞ¨ÑÙ[û¹ÜÑ¢´ü†–oèd·œà/<Ž=e‚0Ëñ7éÖti;þ7 Þæg¢ ­sœšÄq8þEÖQîÑè\ìPþº 9D‡èí/ÑßT]OÛ0}ϯ¸ª&ñ¡ÒL{„ È€jÕX+‘â ¹Îmê‘Ø™íºŠÿ¾{ݤtûDB©Ÿãsν×ïOªEÅûûìÃPÒh/”V:¿@ÀoòÌhg -Ll^—¨ýg¡3á]Þ(S¯Œ¾x’Xñ³ðÿ¥’¨fàM`I*!鑚¹o„EššI»I:ÜZ¢£‘ÑÆBiìZŠU³šƒbÍ"·ˆ,à RÄ@?žLGg0'ýŒÏ”[ãH@£ü‚ö(±0'*‘eŠ(M/Ê „sa3¶.Mµ´*_x0F몢ó¦l%vbÜš¸;–¼.MÝZÙr݆ч"bËïoa—60¨×~íít)– ‡Úá ;`H˜ä’°²*”Ð2 [w›3Hã]Kbf\FÁ -˜ùö6¾«ÀÂûê0Ž›¦ˆ x`lwãKJvœ^ès­ tŽÒúZ+KÏ– *R%ÅŒ´¢á -†B… ¥ÄuÞg´ëš`»L/¡uÉúöŠM„õ’Fi>$é(íÃíhúqr=…Ûäê*OG)L®àl2>MG“1­†Œïùi4>ïRdt>U–MRʼnb¶ÕOî–¶N®B©æJ’=×"GÈÍ#Ú0'ÚR9.­#‘µG©|h*ÇП¼ñ˜ð‡SŠû©Ú ›SÄécÛ)q,¨ûsÔqÞwSð÷5û]eußPÀí„C#õ}X×o†´hg¨á3÷¨«gd”ªæ~ÊÝŠÝURhFJQóÕŽƒZ‘ýðʲ¹Ažÿ7›8’… zþÓ}Er=êì5ÔfO´Š"š1ñß>œYž¦_€Æf˲™}AéÐíëžäÅŠò•Cà En•MôkŽ~h—ÇN0)kž4jÈÁ†Õ¢¯­†G£²ö]žU=£N€y­eßßÓEJ“TK¿ûK{ºZ1 M¨ö‡‡?€{L¸x´(vVŒ?8æÅóퟚ¥{Gáœçè9ŠNŽ£ïUQOÛ0~ϯ8U<´¨$Ûat@µh¬•Hâir’kê‘Ø™í:ÄßÓ”Ú„©Šbßwþî»ïÜÇõª¢ýýöa*K„L+'¤’ª·BÀßÙ©VV—¸Ðú›Pë‰)š -•³ç÷ÖNj2–2Ce1§=vR‹Œ^‰^ºV„©nT.ÃI2}¢­ÑÚ@¥MGÀÈ´q´PvAÑŸ$ˆ>ýl¾ˆOÏaI¬ŸKÛáˆ@+ÝŠb¤…V›[XR*‘ç’%HE •'Â@ƒ…09œézmd±r […Æ®dMç-¸”dÚ“±]âþXªu­›M);UoÄÃwJÄ%ßÁ4ØìFG]‰5(í ±ø”Ð+Lt‰XU—R¨Ì£7ÕmÏ Ž7›$:åæð¥€^î†p}§VÎÕ‡QÔ¶m(<áP›"êKŒ.HÙYr~@¤{Ì•*ÑZRëW# iœ®AÔÄ*)q-EËôò ­!ÅU1f´íM°Û¦'ÑzŠTúnÉ&|“âdŸ'IœŒá:^|™_-àzry9™-âóæ—p:ŸÅ‹x>£¯)Lf7ŒüÏÎÆ€$…÷µá"ˆ©dE1ßñSÏݲ铭1“K™QyªhDPè;4~:j4•´ÜZK$s²G%7•eè«ÚxLxã„ä¾åTOsUzÄÉÝÆ)Q$Èýª(òëý¼½gÿ2!¥Œ‚~ä+CV¹$©Ë5ûwjª”gs ¢xhѰ)IêͨEÝÄúuÛ¤T?m„]^ê$ö7dBAJ£-®Æ²~T—ºÝ¹`æ>v{­<þ¯`Q•‚šü†«‹(:Tùnl´ šð‚ñ³§…£{@€Âv§Jþ$iBèãú7`DEB±²¹U1‚=ÒÕ–R·¾€Hå`OÂë'&wÝóŒ±ÁÄß’tQp§e¾Y‹ü»nRr ,•yâ?~Ð¥KÄšÌ ;bc>v䃻ò=ŒæW¹ÃÃgáƒ9g! sïaDƒg¬^Ú¦ Ïèÿ ?@OІÀèÈ“x ƒàøSðUÛnÛF}çW ² E,ú¨´IXGB‰Ta2 üd¬Èµ¹Ëî.E«†þ½3+R’·º€Aj9—sÎ\üÓûfÓáím·°B®•RIU‚Û à_ùVVW™²­Q¹lßà©+á¤Vó§~¼ÖN9 ÿ}’9*‹8íÃDÈé‘êµë„AXèV>\Géâè'Ð -Ù[¨µ9b1rÕ:º¨ŽA”‘qØ)@ŠèÃ'Ë,¾›Ãš°!íÑtÒmÈFZè´ÙšB‰¢œZT ]Ô;,…)˜{®›½‘åÆî»‘ å˘JºÀØcà!-qÝë¶§rÁºc_(Sþqú\“;ú¯£›·Þ»{PÚAkñÐëLp XÝTR¨Ü{÷ìN9ãCD¯¸Ž <ÐëK3n¨Àƹf†]×M…<Õ¦ Šá'R6IçoôàóYUh-©õg+ i¼ÚƒhU.V„µWÐÊ7¡è )®Ê {Û¡ .Ëtm€HÔ/ H6ák4ŠRˆÓü¥q:¯qöëòs_£ûû(Éây -Ë{¸[&ã,^&ôkQòÀž¿ÅÉÇ IF©ð©1L‚JV‹‹~0p·ôu² ær-s¢§ÊV”¥Þ¡ñƒÒ ©¥åÒZYP{ÔÒù¦²ìú 7þðäÞr¨~Ä2­+ïña×wJ -êþUúûa -¾¿fÿÕ„2 †éHà~Ä¡l»"§ -dUÉ’†ÆÑð“žqâyÍŠ¦V´<7­eiž ²Ú¾²FN›ãðÕ¿s¾Eá“CU¼æp² žšð’ð¹…;ƒÂѤ PØ]Õ«?0wSì†'±0¢~%\‘¼~ƒì<4vÐ{úçZ>Ñ׫¨Z„‹ÃÎRåÚJ þóÙÕ k‚–EúgÓ®¨/`ݪÜ|¤µJsÕæîúß`N†ä7>ÄQ>W\ûDÔ?øU[EÛqüöôÙR«ä¸öAÞ¼cã>ÄË0|ra/ÿ½ÄªiÝl–=ü>Œ“löÂö›ÔR¹‹´ÃYQ­¶çëÃéd%j³Ù î#–óÔòãç#fEc^¤1—ý(ïOfCfŽÃx´›h æ(w¼ê¸¶Þš¬üËa<ÁÍÑ!8ÁûwÁßT]kÛ@|ׯXLbãX¥IH¢úƒŠ,¥!Oá,­åk¤;õîdÅ-ùïÝ=K‰¡PJ ¶ðigwfg÷®nê]„£Q#XÈ!ÓÊ ©¤*Àíðg6ÕÊêgR”ºˆ6Ú¸ùK†µ“ZMÆß;™¡²˜ƒÓÕ"£G¢·®a¡• †ÀY”,†@Ñ€VÈhm ÒæXÛÈMãè vIô†}᥀ޞ†p½S;çê‹0lÛv"<á‰6EØK 勉Ëd~N¤{̽*ÑZêÖFêñæ¢&V™Ø×R´ì 7ʱh u\cFÛ~NmzoZO‘¤ŸPÛ„÷h%'ø%q2†‡8ý²ºOá!Z¯£eÏX­aºZÎâ4^-éߢå##¿ÆËÙZF¥ð¥6,‚˜Jî(æ'óÔsàié|²5fr+3’§ŠF…Þ£ñ‹Q£©¤ek-‘Ìi<*éüPY†þ¡×„_ÜR»Ÿ9U·R©Ö¥GÜî»I CAÓ_  -CÞoÁ¿{ö·!¤”aÐoû*ËcA…ÆÏ€E•[¸š¦ë»ëó[)È^{òÔ:9Ï•€½(eNÊm‹æµ…AV -òãï Ùæ<©÷°·wÁ¯€¦¼þŒ`jP8ÚR -Ûn‡8‰Þ|ÇÌM ëŸÄÙˆ -xèÈÕJTtµðO·=¢¤„ù2Ñ`rˆîo½oÐ5FÁ^˼; ý³n6ä l•yOOtµQ™&sgCqäîci5”»¸8Á}ïÌW‹É†—ð¼7×ÁoTÑnÓ0}ÏW\õi«JƒxÄ–u-DL©ÔdL{tÛÄZbÛYZ&þk7¡E „x¨ª8>÷žsî¹y¥kÅÓiSX‰+é˜BVàjüÆJZÕàrÏQ;¡$ð†Y;'„Ý ŽÒb N@¢§¿\í\Ï ÂJu²dw‘ä«K G4 $z´2Ð*sìjĶstÐ+« b‹ÒÙ9@ŽÊgë"],aGT=¾öˆ#½p5Ýzež`G¥XY -ßš5 $´ˆ¬˜)½J®ôÁˆªv z‰ÆÖBS¿ÂKÉW#{,<¶%­Õ RÎTfÌà ò’ßÌ_Ã]ð Éðvrù. [v©tOÕƒÍD—ˆµºLò€ÔýìA‡"jë',Hµ;¿Ìy´ÿÔÎé·qÜ÷ýœÂseªx”ß‘³Y¾|E¤G̽lÐZrëk' y¼=ÓÄŠ³-qmXï'@,zCŽËjæÑv Áù˜N¦Iúù²…M’Ò|7Ižæ3xH‹Oëû’Í&ÉŠt™Ãz‹uv›é:£§$Ù£G~N³Û YF­p¯AL…w˳<|Z†9Y\ì'y²êX…P©g4a%4šVX?ZK$KŠG+\•õÐß´[rMv?ùRÃ2J5qý<$%Ž¥¿BÇá|Ü‚ŸÙßBH%ãhÜóH9§•ÀÓF—ž¸>üÂ3$‘Vºÿ•GlKfÜ?ü¬àÞ¡,ûfO/¢—è{tõ!úTmkÛ0þî_q„A“ÚcÛ±6KfV¨Ý•~*Š}¶µÚ’'Éq³’ÿ¾“b·.ƒQƲžÓór§ÏuQ{ÁtêÁV¼DH¤0Œ .r0þNRhYb(v¬äé¦6\Š5«pù” {ñ-Øþ¯y‚Bc -F:ð¼f ="™™–)„•lDÊ,Æóh5zER EK•TGŠoC å±"°\!V(Œö"DW~½‰ÃÅ2¢mñ)×Gh¹)h×ÐJõ•biÊíѬ.h¡rD,PaÎTj'²Þ+žd+Pé‚×t^l¥D«žŒ>î%­{ÙtRª;3fðƒ -YÉŸü0¦ 4꾎&ç]±=i ÑøZÐ9Lt‰XU—œ‰Ä¡;u/gÇû®ˆÜÚô€9) ³á6`¦O - 0¦> ‚¶m}æûRåA/1¸&g×Ñò”H÷˜[Q¢ÖäÖ¯†+òx»V«„m‰kÉZ›  Ê5±h9.ò™Eë¾ †1½šÖS$éà dsæ„ѾΣ0šÁ]ÛÜÆp7¿¹™¯ãpÁæ›õU‡›5½­`¾¾·ÈïáújH–ÑQøT++‚˜rë(¦ƒ~ê9ØnérÒ5&<ã ÉyÃr„\îP¹ñ¨QU\Ûh5‘L©=*n\Si ýK›ûá’ì~´¥ºÁŠ¥,âr×uJ0êþE¸õ~ -ÞŸÙ¿šJ^?óq¡¨Õg$"s#Ò5r.„¶à5UFç 6L·nûÑVc0:M e¶Mä»c›<“ñ8¸KŽ—ÈÙÙÃU§´›ÄþמÀKJF‘¾ç¦¢ü Št¸ùå›÷ìÑX€óÅþ¦°PÈH/©ØvÃh‹ÈíOLŒý¾þIÌ«Àv/™òÁÙgï–e´ßøê¿€šF ØIžvk{ÖÍ–’…¬‰C ¼wÅ'nã‘·ƒÐ| óÆÖ1Œ,…a¢'Ï}8±ÃÖEî`rî꼃ç]|ñþTakÛ0ýî_q„A›ÅcÛ±ÖKfV¨Ý•~*Š}v´Ú’&ÉqÓ’ÿ¾“b§£,+÷îÞ»{§Oj­‚p4 -`s^!dRXÆ%Ø5>gS)Œ¬0Vñ|ÙXÕØ”éíì)Ce¹‚» ×`^ -Èâ8 ˜uh÷X[«Î°mÛ ó„'R—a/1¼¦Î.’Ù{"ÝcnE…ÆP·~6\SW[`ŠXelE\+Öº úAy‹VSÇE9vhÓ›àxL¯Më)’ôãjó3D ÄɾDIœŒá.N¿.oS¸‹nn¢EÏXÞÀt¹¸ŠÓx¹ ·9D‹{‡ü/®Æ€Ô2*…OJ;Ä”»Žb~ä§žƒsK7'£0ãÏHž(V"”rƒÚï‡B]sãFkˆdNö¨¹õ¦2ú‡¶~K.©Ý.U·Y©”•G\n:§„!#÷—(ÂП÷[ðö™ýË„”2 ú¥Oך¬¼ Ë”|ƒ¬ßmx¡ªâñèØoþÜ/ÎŽìÕT¹·ì -A*ÔÉÿÔYÅh&o»kh„E~~ø/x ÈÙà¼>÷ÁT#³´¶ ¶ÝR¹Lrõ3;éÃú'ñ׬gBšò»®QQP°³¶? .5ÚF ØHžwg¡ªfE“¢™¯öð@%m2{zÈ:ô¡{ÚD"ìÙÙoÁwu€“—º;ùÛ ¼w»µ› `xî3ï‚`\|~¥TQo›0~çWœòÒ&Ê`Úc;­ei¢¡U¤*tUŸ*x%6³Mi6õ¿ïì@‹4iª¶H²¹ïîû¾»ããY[·^°Xx°€ or) ã‚‹ -L€?ó•Z6Ë+©¹áR$F*,ÖO9¶öè[¬ý_ò…ÆŒtذe9=Yšž)„ìDÁ,ŽÃd3:¢)Т¥‚åuÏ:*Í!#°J!îPí$ˆ.}¼M£ÕJbmñ×蹩)†kè¥z€’R±¢päY\ÐÅα@…S…œËv¯xU½@¥kÞR½ÔJI6#}H<–%­{Ù R&ª3–ðYÉü÷pL4ÞÎæ§½c{Ò@§ñ5; s˜è±]Ûp&r‡Ô½Ô ŽwC™ÙæsR@–Ó0`fì@mL{}ßûÌö¥ª‚QbpIÎÆÉú‘17¢A­É­§öC¶Ö«œeĵa½í k”bÑ+r\TK‹ÖãLÛôjÚH‘¤OÈ6æz4 ˆ’|“(YÂm”~ÙÞ¤p^_‡q­Ø^Ãj_Di´é´0¾³È¯Q|±$˨>µÊŠ ¦Ü:ŠÅdžFvZ†>és^òœä‰ªcB%Q¹íhQí¸¶­ÕD² ñØqã†J[èÚìšØçd÷ƒM5ìU*eãçä£é¯P»·àí=ûÛRÊÀWþhÅ„ˆhã ®ð-; 7˜è±CY(¡¥Gwê^Ï Ž]³ãòðRÀdÃ0ŽÑüì+çaØ4ÍLxÂ3có°—^“³›xõH÷˜[]`U‘[?keÉãÝ DI¬¤Ø×B4\A_(ßÄ¢±ä¸Î§Œ®ú&–éÍ´ž"ImÂ×h´ˆ!ŠGðuGñî£äÛö6ûÅÍÍb“D«¶7°Ün®¢$Únèm ‹Í#¿G›«) YFGá¯Ò²bªØQLýÔsànéêT•(U¦$ÉÓy-r„ÜÑúù(ÑTÅ¥­ˆdJíqPÎ7UÅп´õSrIv?qªn²c -¸ŸçèÚy?¿p}¤( -.?f<­Ž|/´sÄQÐn‰êHîþ§æ0… :½ïþ¡²:Ôé0üõ[ðP·ƒÿóšù7¥Eáh”hlºAãLf÷¥›õaýziÑÕVÃѰT¿úµ¬wä?dµ–ÿøH×õo-É.Ñžïc©ýµ›Ï‡10âÛ%õªhIý-й×{Û;…ºÙÆç>ãK¼_‚?TÁn›@½ó#Ÿ’È5UiÕ„&v‹aÉF9.ËV]º»„¸Qþ½³ ÄT•¢ªËf½oæ½7oøtÑVmžpQ#p%-RÈl…€¿ø•’FÕ¸m­PrýÄÑÿ^3cV„sÐÁQ,À*‹ZÆé+U{Û3°Q,˜ÇDéæè5(‰­44J½µÈ;KõPX©”Ö¬RD_>ÙfñÕöDØá aè…­èŽ0Ð+ý{*ÅŠB¸Ö¬!é ñDPcÉtá´rÕ´(+ ª—¨M%Zê—9)éf"c†ÂS[ÒzPÝ(e¦z4c ?¨“üaõNè‚-Ƨ=ºaÊBgðXÐÛLt‰XÓÖ‚IîÑ£º×Äñ~,¢r77`^ -¨ýü0ëÐîPYÛž‡aß÷+æ ¯”.ÃIbxCÎ&éú‘ž0·²FcÈ­ŸÐäq~Ö+ÎrâZ³ÞMÐÊ€Xôš—åÒ¡Í‚ù˜Ž¦MIúüÙÆüŒQ -qº€/Q§K¸‹³oÛÛ î¢Ý.J²xÂvWÛä:ÎâmBOˆ’{‡ü'×K@²ŒZáS«b*œ£XÌò4qpiçdZäb/8É“eÇJ„R=¢ö‹Ñ¢n„q£5D² x4ÂúPýKÛ´%—d÷ƒ+5®T¦Tí—cRÂQúK”aèϧ-ø÷™½B*Ó¶EÊ9­7zX}â>úðOŸDZXi){ÔÚ¿"¨\‘59­´74ÍœœÕdu­zã3O(Î,¯ÜÙ±?ml%Ü!EEcÍì&Wº)m Õªèø@!Y- -·7L—Ó|lÆRÏd|˜½¾bÙvöüœJpŠÁÉéËÿ% XN1eܯÀ7^‘ødQó¯ÿÏÁKpñ9ø TakÛ0ýî_q„A›ÅcÛ±ÖKfVˆÝ•~*Š}v´Ú’'Ëu³Òÿ¾;ÅN3£,˜HzOïÝ»ó§‹z[{þdâÁ–²DHµ²B*© -°[ü•εjt‰«ÚJ­‚Ò Èvk,dcÑ`¶xJÑí̘‚¿×2EÕ`V;Š )=bÛN„¥nU&§A¼ýEZ!£µJ›½#7­¥…rÏ¢0ˆ*ÛÌbDG­’p¾€œÄ3>#]G:i·tF6Ðió9Q‰,“|µ(A*Z¨œ,„ÉØwªë‘ÅÖ‚îšf+kº/a+ñrÓ쉇kÉëN·½•#×}1¦ðˆØòÇÙ8¥ õ»£ñ¹CWbJ[h|et&¹$¬ªK)Têн»Ã¤ñ®'Ñ΄³:?>ÂIl­­Ï|¿ëº™p‚gÚþ`Ñ¿¦ÊFñâ=‰07ªÄ¦¡jýl%Å›ˆšT¥bCZKÑq‚.(פ¢3TqULÝ MpÓkщdýø•M¸ŒFA a<‚/AÆS¸ “¯«›nƒõ:ˆ’pÃj óUt&á*¢K¢;F~ £«) •Œ®Â§Ú° R*¹¢˜õÓ »¥Ï©©1•¹LÉž*ZQ ú’M%޶!‘µG%­kª†¡yã1áK*÷Sõã•h]:Äåcß)¾/¨û T¾ïÖ‡)x{fÿjB¢ô½aò¹·µ›bP¢B׌Tý}„¦ŸuNEìÇŸcmÿߋ便 ú¿ýåB‘YTÙ1ä°ç={ÔÉà¬ðgs¢±4¡výü0‰ÞüÀÔÎ`87&ÒæNh-¹õ£–†<ž­@TÄ*3âZˆ†;èå@,CŽ«|ÀhÛ…`¿M;Ó:Š$}Ù&|zQ ã¸_¢xàaœ|Þ%ðÝÞF“d|Ãô.§“«q2žNèߢÉ##¿'W@²ŒŽÂ—ʰb*ÙQÌöòÔqà´´}²¦r.S’§òZä¹^¢ñSR¡)¥åÖZ"™Qȸ1Ý"½r•0]ªÄûÂé8šœ=¢­½µ\›‰‘ËÒÑAVG‘Ä•³#€чŸÍÓ«X|öO¤­ý@%Ýšl¤…J›{XQ(‘$’S‹ ¤¢ƒÜaGƒ©0 3u±52];ЕBcײ | ¦MZ0¶ܦ%®[]6Tz¬1†ð™1åW£—pJì4hÞÎ^{ï\lAi¥Å}t@¯0Á%`y‘I¡bïݰërƯM½ä*‚ðT@¯úf \[)€µsÅEVU5ðH›4l)†·¤ì,ºyA [ŸO*CkI­¥4¤ñr ¢ T±XÖLT\A_(ß„¢2¤¸J‡ìmÛ&è—i/Z ‘¨÷ H6ák4G0ð~M£!|™.>Ì?-àËøîn<[Lo"˜ßÁÕ|v=]Lç3zšÀxö•=?Ng×C@’ŒRáCa˜!•¬(&½~j1p·4u²Ær%c¢§ÒR¤©Þ ñcR É¥åÒZ™P{äÒù¦²ìzÄÇ„_\’Ü÷ª°…Ö™÷¸Ü4†‚º?E†þ¼‚߯Ùÿ5!… ƒvöÇt“ ¦Ìjö -aDŽŽTÂÂÆÏ<‰Å. îOl‡b¡`IS+Jž›Ò²4YÝ-‘ncìþV‹0ˆ3Aõû“õDX½Ð#Ð -Ù[(µi9¯mD¹A,Q9;H}øÉt6>9ƒ¡gÿLÚÖ4Ò-ÉFZh´¹‚…Y&9µ(@*:(=v4˜ “1ñTW7FæKºQhìRV”oÆT’QcÛÀ!-q½ÑuGeƒu'F.)S~;x{dÀN½îmoÿ÷.Å (í ¶xÐ+Lp XYR¨Ô{wìîrÆï]=ç"‚ðT@/6Í@¸P)€¥sÕa7M3ð@›<ãsRv’œ½&ÐÁç«*ÐZRëW- i<¿QªTÌ k!® /”oBÑR\å}ö¶¡ 6Ët/Z€HÔ7 H6ákÔ&0Nzði˜Œ“>|Ï>O¿ÎàÛðâb8™Ï˜^ÀÉtr:ž§zÁpò=¿Œ'§}@’ŒRáue˜!•¬(fý0p·tu²¦r!S¢§òZä¹^¡ñSR¡)¥åÒZ™Q{”Òù¦²ìúˆ ¿8&¹¯8T7_3­ ïq¼ê:%ŽuŽ*Žýy˜‚—×ìoMH!ã(ŒþPq—µ“ ¦.Zö*aD‰Ž4ÂÂÊÏ<‰Å.3îO éP0§©5Ï "in ²ºzj‡´NëÿÕ"ŽÒBPýþa;T‡*{Ò§µˆn#ðŠðu'‰.•6\õü'¦nÁ.ܽ\2ÀŽ×–WKwÀ«äî tXŸ/Š‚Y÷¼…GäÉ ¥¼¦w;+QÔxA½‹ððÚ -âíÀ°á}$ƒ®6 -VZfÝYìïU=§žƒE­RçÇZÙ4³uêöž× ÿ,Áþî#PuQÀ¾OÝVН’æXø÷=¦ÒÊ»·ó½þPh•¯wYëgò¡yȬ{ïî2Éìm!zu´…i×¶ã]¸+Ú¾ÊÒ§½·•lý˜ Bë°ý0ÐÇÒ¤­ç´nx&7¼©öô<<ܪÈ] ýÖp­£¢?TÛnÚ@}÷WŒP¥DpÕǤJB ¨¨-H±“(OÑbf‹½ëî®ãЈïÌb'T¨W$dy½gæœ3—÷åª Â^/€LdŽhå„TReàVø=ieuŽóÒI­¾• -§ÍæVê\ðÉø)AÿiÀ1øÿY&¨,¦à´1,EBH/]- ÂDW„ p<Œ&] W4 2Z(´Ù1rQQ2ÈwAd±@åì Bôágóx:Ã’Ø3>•v‡#µt+º#-ÔÚ¬aI¡DšJN-rŠ -O„3aRžèrcd¶r k…Æ®dIùb–MZ2v¸MKZ7ºj¤ì©nÌèÃ-bÉïoá˜.0¨Ó|ítÏ<ºPÚAeñ5: w˜è±¢Ì¥P‰G7ê^rÇû&ˆ^pAx) —û×@¸¶R+çÊÓ0¬ëz <á6YØJ ?“³³h|B¤[ÌÊÑZrë[% y¼Ø€(‰U"Ä55WÐÊ7±¨ 9®²>£mÛûez5­¥HÒ÷/mÂר3Œ`uàÃ0šF}¸›Æç71Ü ¯¯‡³x:Ž`~ £ùìjOç3z›ÀpvÏÈOÓÙU,£TøTAL%;Šé^?µ¸[š:Ù¹” ÉSY%2„L?¢ñSR¢)¤åÒZ"™R{Òù¦² =ÐÆcÂ.Éî5‡jæ+Ö:÷ˆËǦSÂPP÷g¨ÂП·Sð÷5û]RÈ0hG¨@û!†ZXê ³ÞUoôÒL`N -ÈÕî6`¦ï@aL}mÛúÌö¥Êƒ^bpIÎÎãé‘î1×¢D­É­Ÿ Wäñr ¬&V)[×’µ¶ƒ®QnˆE«Èq‘-Z÷C°Û¦WÓzŠ$}wÙÆ\a Q<€/aÅc¸’¯‹ënë«pžDÓW0YÌ/¢$ZÌéß ÂùE~‹æc@²ŒŽÂ§ZYÄ”[G1Û™§žƒ–®OºÆ”¯xJòDÞ°!—¨\>jT•åƒHf47n¨´…îi³1±/ÎÉî[ªKV"eéçݤ£éÏQ[ïSðþžýk©dàõ¡Hbh žÖ L ‚G›qh™Ý,IY+ÙøÄŽ)öw¤LÀ’ÂËŸÆÞðLÌÅÃÞ%òrqlþ×’ÀKKFm|×õD$ Šl÷ËïÙ£D€³Ä~F0QÈ Z¶;*åòÙãC¿¯’Ū½àCg®½BºŸv"¶Þ’Õ–°¹wìñ_O>Wh%àQò¬[ ܳn–4°jDêjÝßÓ…J‰jRsøw‚C‡ÝúàªPT…9>þ=Ø¡xðÜANK)òÍÁÛÑE˜.5ñfˆü OÜ9oãyg§ÞoTaoÓ0ýž_qª¶U¥A|Ü[èZRiɘöirkb–ØÁv–•iÿ³“t$@LšÒØ÷îÞ»w—wçMÙátÀV¢BàJZ&¤Ø¿ó…’FU¸n¬P2QQ%˜Y>rôïstÿŸGi0«<0j§Gª¶¶ca¥Z™3ã(]½¢%Ñ¡•†Z龺›ÖÒAÕgVhÄ¥5s€ѧOÖY¼X–(;|.L#°%ÅÒ÷°¥T,Ï…+Í*’jOÄ5LçN-WÍN‹¢´ :‰Ú”¢¡z™“’®F2¦O<–%­;ÕRT͘ÁJä$¿¿c -p Ép;99óèší@* ­Á—쀾ÃD—ˆÕ õ\rÔíkÇÛ!‰Ú8ç€y) ¶‡aÀìè@ims†]×Í™'‰µf5¸é#{_IV£ß}ÿcX¥^'t¥àå¯ ™ïi´­–ð D>œ…þÙ´r ¶­ä>ÍÝ}ì¨^ËíñPðÄöZ<„vFÚÓÓŸB'Ù :zòèç#rcK-vÎ ÎxQHþÍV–IRÅŠbv0Ož–Ö'W¡Tk%‰žÎk‘#äæmØ -m©[ëdFãQ*†Êqê+nc:å?ÎIî{.ÕnUjL2ÎÚI‰"AÓŸ£Ž¢pÞmÁ¿{ö§!¤’Q¯[ø¥”µu öƒÂÞ¢ ‡Åf;x,iCÈ$×™-c·ý …†í­¨ysjÇâ<h}ÿêîx¾2vÿ«FÔ“… ÿ~+B:{úro=õh HÁŸ!L- -O.@cs@Ѭ¾¡ôcèâº'¡·¢X"ýF‹’®%þi7OT0ÛR%‚Æ!{]ÇÏù}m5<•µgQxVõŠ|…u­epwG×"µ©¥?nû BàžBH¡íÒþää—Ð~l]“wtydð"Y GO¡Ìîè7&÷apêîz»ÞÙÇÞOT]oÓ@|÷¯XE<´Uˆц4•#Õ)UŸª‹½qŽÚwÇÝ9n@ýïì^ìÔ ‘"ÜÎîÌήß_˜­‰â³³Î`!+„\+/¤’ª¿EÀïùL+§+\/µÊ¼¥£Tû;¬ª¶5ó§ÃÙ„“ðÿZæ¨àuH25"§K¦7¾a¡U†ÀÉ4[œ=¢­ÑÚB­í‰•ëÆÓ‹êDikTÞM2Ä>]®’Ù6DŸñ…th¥ßRŒtÐjûDDQH.-*Š" ´X -[°ò\›½•åÖƒnZ·•†ê­XJ¶èɸCâ¾,iÝ릓2PÝ5c _(K~;y'À Qw::}е؃Ò‡/ÙC‡‰.«M%…ʺSw¬Aï»$zÍ.‚R@o†a |ïÀÖ{sÇmÛND <ѶŒ{‰ñ5u6Íæ¯‰t¹U:GÝúÖHK=^ïAb•‹5q­Dˣ‹ÖRÇU9f´ë‡`hÓKÓzŠ$}@mÁ£Ñ4ƒ$ÁÇi–dc¸KVŸ–·+¸›ÞÜLÓU2Ï`y³ez•¬’eJO ˜¦÷Œüœ¤Wc@j•Â'cY1•ÜQ,óÔsàié|rs¹‘9ÉSe#J„RïІ51hkéØZG$ Zú0TŽ¡¿iã5áƒKj÷#§êl¥u—»nRâXÐô—¨â8¼ï·àï=ûÓRÊ8êwŸg[‡-†7´ÿáÖ…mטÐ#v…§³=îþÿj‰£¼Ôÿù¼iU1Ï¢Í21ü;ƒ™EáiG(l» â$zýs?>®¿’+ê^ñ+B;Šæ¶t·‡i>XÙ…µÂÑ|ïD%¹]"‹¾± -vZÝ»8\M³&‹`Ó¨<0yx /%jrr,xBjˆVEùóó_‚GLËX½“ïÆÀ¶¡kL®w :»`“—ZïB™çè9Š.>D?T]kÛ0}÷¯¸„A›Æcíhë¥ Û¨Ý–>Ù¾v´Ú’'Éq³’ÿ¾+ÅNRÂFY Ë:÷žsîÇç«jYyþ`àÁ¦¼@H¤0Œ .r0KüŒ¥Ð²ÀEe¸‘”?˜Xß³¢F=yIÐŽ,Üþ¿ó…ÆŒtð b =B™™†)„©¬EÊ,NƒpÚzER EK¥T[ŠÇµ¡ƒbX®KFBD~¾ˆfã dDÜâS®·8"Ðp³¤;\C#Õ3dŠ¥)·©Y\ÐAéˆX Âœ©ÔjNdµV<_@¥—¼¢|‘•N;2z¸KKZײn¥¨nÍÂ=²’?>Â)]° ^ûµ×¿pè’­AHµÆ}t@ç0Ñ%beUp&‡nÕírÇÇ6ˆŒmý€9) ³ÃkÀLW)€¥1Õ¹ï7M3bŽðHªÜï$úßÉÙy89#ÒæN¨5¹õ«æŠ<Ž×À*b•°˜¸¬±t…r @,EŽ‹|hѺk‚Ã2íMë(’ôà ds5ê!ÌÂ| ÂY8„‡YôuqÁCp{Ì£Ù$„Å-Œó›Y4[Ìém -ÁüÑ"¿Íæ7C@²ŒRáK¥¬bÊ­£˜ôSÇÁvK[']aÂ3ž<‘×,GÈå -• -Uɵ-­&’)µGÉk*m¡GÚì˜Ø×d÷³ ÕŽ Uá׫¶S|ŸQ÷ç(|ßwSðþšý« )¤ïuSnˆ‰)3ÖL ù# -ª.hÒIµ]Ùy‡†iÐuL"wVÖ…áUwC»EÙöÅn7@ÂÄ4Ô¬¶cUÛˆðJŠÄóÑvÙ-”ÍÿZå{IÁ¨¼ïÛ[ÄÒ H¯ïnx¯ -8¯ìoc…ÌÐ -` °9)ãŸdܺ{Ý“(Ve€­ëv·°,#¬íöí:݃šZ XIž¶g¾{VuLU‡¬‰‹òôDK“¦¦NÌéßsõv+ÉE¡qæüü ºgµ€“×zvYH‘oNvýñ¶5†@Óºo†iÌw2êAÿÂåÜxÏ»ºôþUÛnÛF}×W ² E,ú(·ITGB‰Ta2 üd¬Èµ¹Ëî.E+†þ½3+R¦£´1º€ ^æræÌ™á/ïªM5®¯p Y ¤Z9!•T9¸ ~Moµ²ºÀeå¤VɾÂÏR‚oæ)ú§vçßG™¢²˜ÓÞ}V‰”þb½v0 ]«ÌûÂå,^\Ý¢­½µR›##Wµ£Å1"ˆÜ –¨œÄˆ>|´LÂÛ9¬ 8ûgÒý@#݆l¤…F›-¬)”È2É©ERуÒaGƒ¹0לêjod¾q …ÆndEù.%^t`ì1p—–jÝëº-¥WuKÆ>S .ùçÉOpIì4l߯n¼w)ö ´ƒÚâst@Ï0Á%`eUH¡RïÝVwÊAïÛ zÅýáK½î›p]§6ÎUÓ hšf"<à‰6yЕ|$f£xþ†@w>ŸTÖ[×ÒÇ«=ˆŠP¥bEX Ñp}£¼Ecˆq•ÙÛv"è·é™´"•Þ7 Ú„ïÑpCá·YÆcø&¿/?%ðevw7‹’pÃòn—ч0 —Ý-`ݳçaôa H”Q*|¬ AH%3ŠYOOVKÛ'[a*×2¥òT^‹!×;4~@*4¥´ÜZK 3’G)•e׳ÚxLøÅ{¢{Ë¡ÚÑJ´.¼Çû]«” ¤þUøçݼ¾gÿ%B - º©Ÿ)Ð~ˆ¡l½¢N$È¢9Œ£É÷sž°:±}HÉfE3+jžšÚ21OXmÏ–Çi_þ/Á -uïuk‰P:TÙ¹ùÉbð4 IOŸk¸5(M¸…M¯L½ú S7ήû§ -Œ(Ï2ÀEK*¯ŽöR¬×â87¬Š]xòM°R>’ÕÅN5Bÿ$Ï^ÄòÙû><Ç6èj£`§eÖ> üU¯H@°®Uêa><Ðþ¥¬Swù¯u;xW>Æ‘F>¬“H”¿Â¨V[E{ttszmIVé.»8oÞ²}åe$>©°ýoP¨ªÚM§ÉýŸó‡hͧ/ŒÏÒ+ú®ôrwgE-ÞÞ¼6O%?H#•ûq–ÃéŠzLŸ±éôÏÞNFO'r -­òÈ—)‡Ey$·:ÓF–Ãh ´1i9§(w¼€Y Þš¬üÅa4ÂÕÒap¼{;øí=ks7’ßó+`–*$-’²½wU{rdGëØ‰jÙe)qmÉZÕˆRs¦8¼™¡dm¬ÿ~ýÀ˜moîQ;[S3@£4ú…Fã»çë«õ7{~#ŠWÙ2Ó|U%Ù*[-Du•ŠôÓùªÌ—éÑj½©Ät™”åJc…Ÿ³iº*Ó™¨r*|¸N¦ðÏI>¯n“"¯òÍj–TY¾ƒÃ“WC¦…ÈW)ÖÎ qÜb‘]n*x±dˆ"Yiz®ªr"ÄIšøã×§G/^Š9 ‰õgYÉõÛ¬º‚2Y)nó⃘¨d6˰éd)²¼¸&D°b‘.’b†=œæë»"[\U"¿]¥Ey•­¡½SìÊÉ+…LÉ€U³Ð×»|#»bõZÆHü€°ËO&Ä -`¥žüÚ>¥Ú×ÉX啨”©.ÒÓt]º€Øõz™%«)Õ–½ÓmŽ“@òKœ-‘PWD>·‹‰¤ÂÚø!®ªj½¿·w{{;IáI^,öT÷~†‘=>y9¤U_WË´,a´þk“0Æ—w"YVÓäp]&·8ƒ4QD€Åm#¾ZŒ°v©ˆÀž&3h -Eèº]†-¡9ꞈ£“žøËáÉÑÉH¼;:ýéõ¯§âÝáÛ·‡Ç§G/OÄë·âÅëãŽN^Ã_¯Äáñß°æ_މ† šJ?® ì`šáˆ¦3‹žH-ržÊu:ÍæÙº·Zl’E*ùMZÐrX§ÅuVâÔ–€ä Èã:«ˆ¨J¬ôM­’ïa¸? (¹Nó|I5¾¿‘”²·—õ/€Ü“ÅÞ}R ¡û´5Ñ!D+óMA4µ÷Zõ§u«\\A/—Dþ0 ÙMºùºÒÝOŠÅ†V(N™2„‰¢ŸS¤k†”,—ùm)KÁ<¤UÊÐq\hãpËÍ%Œ0…\v‰jB\&Èu$5bU5ÖØ™Uú±‚‰O°1K¯¡NU$Øb~‹`¦ÉºÚ©³B`_(ä¿›æ³ôþÚáo?Ñ`âàßú6>U÷öÄÛt$ eËŒpX'Erâ‹ñÕÞx|•.×!àñ³BV{M¯^;êmÿª?‚ÿŒ¾Šx»<Æí†çаâ`;ÄlüŽÈˆ[ôçý‘üEåo¯Ïûû§{óòâäôíÑñ\bµY.ù×Å5˜“›ôÝ×)~(%þŽŸ¹_m#ÄqÆà—d•­7KœîHïE2Ç¿N¡Á?»Þ,«lMCS›4:´ pí«èWWIä¶NW3Zã9‘3ðôåf½_QS³,¤!gègj€ ägŒˆÇO¿©Y%PQXW¥ ˜’f˜GǧBÂ|ÒS íFCu Y×! -A"Á;ÂÁr8ÏÒl¾®6×—i¡ðVµÉN¡5Èï*=LJD8¿üOPŽP¢£I h+XAš>ôWèÕÈó›5"˜(Jj¢š9DÙTL £TÒ..°ßÁ.\}õAÉhiÜw,ü3JU õ ØT -{5@ùI!õ úïЙ¡u‘Ý ª½£ ¸YvN/`Ùû¬íRO·*òÅF‘ÎA]a‚Ôñ!½CÇBKWÊû&¼™Âžñ6b/EP}pÄâÿ;z@6t@s¢*WšŽhú‰öA-ÔÃ~ÈÔàaŒ÷4Þ¥dB!‰+•v(€×_娣nüzv'.Ótll¹¬£ËKàÏq<$\èÔB,ŽV3tÀ$eöºt$̈­:D -±ÍÊŸÀî–ü`¾L¢L«mQ»Ò NÒª=”=’ç¡B²x|y €´rr_–É·óZ¢Ò¿©ÂñÖ4¬°1mÂ{mµõ‹ZÃ:?ª*õ3 ‹„­¾Èâ¦ÌóçB -ô,¶Ú#Kô:Yã/޼x@‹;XÓúxä_)‹Ãͦbá -Üõær™MÅ|³b\/.H^›i5`XEÀgÍÜñ³ˆúq@®ƒ§~ICêCà´0T¤û@ýØߟ¾þá5º³ù© Å<™¦dô^ƒÔëåf>d¿QM 5퀤˜¹4EV© ƙ޸¿NÁrˆeÀ„„xÌ‹ò 03@°’gHöU,$_Kf³ºjrG¡P¯§šþ&âh®%´dЧR» f‹ÐWD“@S½D†nu†”j»ÿ6+î=¡E~ ÿ}™žáýýÍÊsµ ýj¤®‡ú“ì­_ºH«M± -‹£'·H§@­Ë;Û‹âu|)øÎ :\„¿N,Ó•iÉÖ ÐV-µ™ -B^VwAàþYö@»;¤™.†Â)íÖŇæ#ê*;d*x«ÇC;qtƒÖ‚`2Õt“Ôì%‘O·NrQ»ôæŸÕEÞÞC§_åÙ¹ñ9ìÂôýÌéC´wÚÎÐû^¯vœBJ:sD2]‘ Ä)ÑÄ›÷¦æþâ¶ÊÓ,8UˆgdZÙò}‚Dš.rÉÒKF»Žwâf Áá^벦]\ÖÜVæ8G53+}3AÑ5ŠÚ¥c@KOgÚ˜X Xj¸ÜŸÖýR@šùwdp ÿ“j#_ó 1þ,¶©+Ñ2*ƒZÇyõ’ø¾^;ª†zŽx§X‘b¬8-è=0S3ik¬~ÁFUû'ÜÚÏé× ¬”Mp“Íq†“lp‘«â&ÏfDôÞótŒxèGÝ­ûXUL6+z(>}Š—1ša-ó¨g“á|ã&Ô‘†~Øø×£ÿùh7q÷.h=½1ÿÕûð{L¸ôâm€ÔMp?…_º‰ýê­ìé4ç Ú¹–K^Å$1~s8Å¡°œbP“\Y©¿wTîíùᵫ(Àcy7¬³[þ±‘–[¦Éìƒ9­4´eöUö=œÕ>9ÿuVî*³¤ûçg›ýO  -ø•ì,÷Ïu•=»Ž£,Ë~›îýÉêœjZŒK±'ÆclH¿ÚÐ+lQ¿Jè4ÝÌ u—x‹±øjx ,¬Éwér‰ÁFaëÊê9š[ßÎöŸ?Ü=>œýýÓùÃáûOѯïÏûfÝ€Å÷â*~P}A%âVÃ*-K—û¬¡í‹kÜ”ˆÞÞߌËpwg¯7r‘ÅêÑgð˜¦É€&•£ÜÁ8ðã}ñ¾gÐxß«a.^_.€Ð°?Ü·+ð›ÊÀ×óLK)—…ÏŸ“:žÍH—ê}‹b­$˜oØG¾GãK´„THüÛù`pîkÝz¤×ëêÎÂú‰ª@2Ðÿúïúë0€ö½û×ÐÒóðå~¤Í(üx«øÐ†Zÿa¿¶>@ÿ‡ßôHÇ4æÓé¦Àð½²±ªØaèIã¶³±ÞíŒõã?k]«º[c2]ÎH–¯Ðéç-þBtu¹w‰ü³ÿEh›MÐσq¼ ßÄW韶^‡‘ÞûÐB$Ct¤šì(ͻٸ©^×ù {KÜp–¬ô‹ã:[` eÊ\L*-¸uT¨Ú»+R g¦ƒ§–wb^ä`ÀݤÅ`#Dzo]µ¬›¥ùeŽ6²„s{ïûe¬×‡/±%1H8eÛ:ñìG¯ËÝM·ÀÓØÝ\Û™cä¹Ù\Qïk_¥-fÉI@Ñ-®/« åkÐ -·8ËܬB#¨¬•À;Ÿ­|8Åe‡d ÿã)˜¹víÅ+þ`­”hUOERýµc·¢ƒóÕmÝ67'¹þˆ)Í)˜ˆB0±[¸lgú´3Ò¶îÔþogŸZÍ[st®êù}'¢íu³<‡[±d×õ×jçT!ÎAµ+ŽX¨ò{íi§—¸Lñ7 K,‹Œv¨’Ìì?Ó òfÓµ|–KCèÇOvÊ“'Q9ZKD›çîAGsÐuÝŸqøw@Æ1Úw=øDþÝÌ«&&åÎqû†LˆŽÙM±ºÿ•éºuÒÙCX7 BÕÝÊ3ÙÍåXÏceM¿Í˜&‰ÄÏÛ´–wÀ -Â0q^†É0 ±½Ó›’û¿¸•™ÝÈÀ.Þ»(lþ䯆­´ã©°pª I PÜNðUø•åLW§Åd£v:ÆRãñ0ÐØüö?[ŒyÄš4HÍîšÝ`V9w:P YHò¿O;S¼kµ¤§vèêª~µN“VÍX‹[ªW<€uþnNQQ£bü´¡[»Ú$K°ÖA%;s_Žëœ‚1ÇÒ -é¤ ÿ H eœVÖâÛàÞ%ƦMY`Á¯ZÏ£ 7ñDå41´‰çþŠl&ÏgÊ6yÙs´Æ­ Ï¡`ºUŠ€’ân­Éó -’埧%§›ˆÁaUa()zâçYQV& ƒR—·É]©6Ÿ.nšž¬BÆß0D{Vy”2ºã_í1‘ç|Ik2'euÈ©èñÜôÐÛ« ¯Ú-Hi5" >…GZØ™TÄB÷˜=9Ñ„4'%oÞ*:褔| Ë1 —¬}7¶\{äIMnÝÕVÑÝoY¾¤íÆmPãp¸Åf™Rë7TϨ¶5§­·°µšž¦ªF¤¹¶ÖNïÖi·†púÉ·†òÌMŽE’ –v¼4GœÚ7šetì´a(Ò*…ƒ&Kr‹+ÀÎPï,+é„jJ×-¦€žgv÷DT&¹g¶$™³o>¾É,Yº `m‰+ÁXôjдýiDzÏÁmQoSnõ2Gán¿a×;ýÚ×.N^¾ýíåÛ³>¾ïK÷¼ÿrßÄ?Ì-I~¬Ž0rŵÓþRãëwÇŠ”ÛA8>µ½ÚÛÇ9°o>Ä4Q,H>̆âè:j:•8ŽìîØøÊjS4ªðd9ˆ|-•VóK¶rP+•¡§¥€Ì£‡1ߤÄÒ(°ÚœròÈl<ÞYVÕU„A°j#«‚•†0I„ké«`ÉÓ xÆ’MŒX±D‰Ë -"ÇJTЮ^P‘áØÆHÜÊ:ôO~úû&é¸ÕZJ“8Kvô½yt‘PCŠafÛhn‹èÇC5Ùæ­ïâ{OdX«aõj´ÉÎk”F(Œ@3– Ù§ƒ:t@Ÿœ ‹¦VÒ6J„§7”‚üÙzƒ/W2W®IrÚRY8Íó_’ÕŸ‚llÊÕPÒk:‚”¯–wæ„-O¯«½ø°HmÕÛu¼*?Sì7¢9Ÿ'O )kó¶@û…~kû¿d¤šÓ0u¥RSiæ¶°_ØØâ;4+7ׇ,§ùfUY¢Iɬv4!Wxz€¾3šÙ=ÛÉΉëôÇã~+ˉìZR `J/ÿ Œ«ì¶:¯ss È[@¤_õ`b–1qsC ÑÂs$Ä“‘èÿzújüç>ttÂ[ËÓTÎÚ¶Ú¶—25‹mˆ@~]Ïp*ù°)¢T~ -Zð9À(Ü­v˜×øˆ¾Ð Ì:ý¾Í =v G­}ÐX™SêORªñ¢èñ2™¦ÑßûûøážÙÅC»š¤†[loéI0ml±=쬿†9¿÷Çþ—MYñ™†:=ŽÕ7ö2ºnÌ/ýÛËA%ZçtÌ…|Æ‚ÇSF7µ”l9âß~ë¬i^ÏÅî.tsúj± åïÉêKTþŒÒæøT<ޝ*ÙJÌÕCGížpÆdYSrÚÀr‘gõY½û+„º²‚g`T·Ù4Uq%#yôdÖ²Ìuä8HúëdÅ®!²blŸ‰TqõB—,_àïßûDwOàIU=<}}¯ð¶…Ò‘9õUÊ@ óö¤ýíÒÚ£Z°6‚¬HbBogê¤A> *k8~= ZG¿RÄ ®J¡휂Š_êP…YÜf˜Ã µÆ’içEèäNoó¦¾s<*Neç$*-½ˆ¨ÅØãNnJ#§Dîˆ6¨CyŒ*ëÒÇD|l;õ›ûrji_~71õ$‚KuàßcrYÖ™í51gqž£?HF³3Ô±Çn¼³Ì´áè¤pÒ¬‘Säq{‘'íE&Mejâê‚«ºgU}ðCñ¶v([v\B+<¶CQ¶®þ«Ôãü]Ùun%S_î%(0Ò׌52c3ZÉ"wiïÕ 8§—J‘‰ºèXóìãЂª š|Úá~gàŽ¤ÛœÙ+ Ò§Òƒë4Á¬ƒûÑ„0UͰŽmã¡=PJY Þ]¥ ¿Ï)û¤ù‚ú*õ?3Ñ5”;å\G2׃ äD¥¢ŸFñ»îê²æ&å&©í”""t梮“@¡SSÂ%!°¯ÿ4GLìvÛ¥¦Z2Ðh+Ô’UŸ$ô ãQó^´²\ÖJ‘­¬“ÃÙªÒ+„}:&¥瀎óI2õÍ* ï!•ð×£ÂWï¿¡3Œû@hv çžÖœþÚçD ´ß`-+˜w̳z›hߦ‘Žþб¤ -¹ý‘YDiÏ>)i“³R‚^j¼bÀREVA:¼XÑW.˜>&Á¢1ËxÔo²Dr“q_‘óÅ,•ëüúš|?¤?Ã"ûu•}Tm{j%yÎí†Ué]‡Á®GdåÍø´ -ão z*êhþG° Лo§ñ%fešo4mŠˆˆh82D¯EÐÿ„S¼èêtvñ‰˜gérŽ"UàÔrp3ô¾#ñLì‰ïw<ëéH²Çª -µP¡_tÀ[…t—ÖŽñÊàTûû¿§ºˆjw†Å®³';Q WÄ‚Í.ï¬%§(•ËppÄ%'†>À*cΘ‰F«8Åu|ïÏÌÑÜì‹2±¨eûˆPC°ólY¥v¼ `Úq·× R¾©0–`Nò©cžWî}Ç™-RÚéTÀ@P¿av§—I©²µJ¿‘ÃçbtÀÛžŸª)ç½ ‰tìÄ3 ‚­Í±jgüp*𳯈Ú3Áå©àD˜ÆV…0¢Ó¡ÝtÈ£ùØž\ãŽvÙEá%g¢è#YFJQIŠ‚èÂŒp?òá ž"«R¯ÖÐý³Âäщ›WõðõŠ‹k̇¥šž2Mñ˜d½Šw•ó²ÌHZ•t‚ ÿå•·²ì8a˜JJèóµLoÒ%Ε%“…dŸGšûJ•Ù>8BVÓ§ÞêS”¤RÓ^›Ì'bˆQÃ3SV˜¸5›w gÎÔ½^&w¸**ÔÚuN]ã")sðÌ©1ôR\TyUˆ Yë%¡ ‚%¨â1[?Ygì(GÀ…6TC&ÿ+G*2Ðìᑲ£ýã0|²v@‹'†Ü72dW†üѹ¥MýÊÀ9¯‰Åà]¥ ÃR£ð“h•Ñ/aaèVk•јÿF'ñI›ÕV‡ì”VÇÝš—ÕÄ2à¶zz«7ŒŠ¯ÁÌok·X­×û9ÿ³¯¿8»äÄã#Fƒ¥ùdÛ\h€öë"[d àn7ç»Pp$ßñÎ’jm ² Xh+0Féw¼Ñ¿oÕV]C#¿Ûñ‹/u7z”ZEºAzZåÛïáþ‚3OTCëz?9=s26aGé§vÝÚTê¹ÿõƘ v‹=ù ¸+Ò;Îíà¡›$["™ôš7:ì+8Äzq L|/G~/"µEÔiÏ*™˜éKHH×k¹¤ù ¸OnÙ;°ô21ÐÔÄÙê â2Ã{’> -Ï&EcÊÕ¡mz™šŸÎp€›Ž:]· žl>Ñ`Ý^Tx¸ ÓßÞnµ7Z=5$ÿ«~ÓÎÀ]BÔˆûÊ£ðÔúØe{©kÀ"—ÃB~ñ¼•!“³=«hrÅGZ~òG:ü¨YT\”dzLÖÏGwŽèMÎN‘ÜvâI?¶LÓÌè3¦Îl1ɶà -¤‚Ðò’©Þ  s\.òâÎ:#9L _—ûÈÜÈg1Pfýv±í9¥ê£·cÀÀšåîr “Fì OÃ6EÈqõÖÁió“€Òv¹l<;"=s*pÞÀÓ–8°[U±.ѬáÃäÓ«kõ_¶jðá_¶êÿ9[5én«zî*`ÿô>ˆÿeÎÏÏ3 T¨qøÏI*O¢ ·· ,äYºˆ]WóhÇœ²G}4¢Æ5a`2£35ßåCìŽà?Ò&0Q †ã x2ÌsJ´È±%6çj4m È fŠGíÞnoh­YvK'ÛŒ‚Eú•’æyU"û…ÑDgÎÇÏpã<¨¼z/½»{~ö8,ÿ8zŠLk±X¹u— -–)'Úu<µZ vØ«Zh5±\â˜>²ê["Vè¦cÜQð;_Õ¶Ò6Ò—-qaŸÜš%^v·Ê×eƾhãwÑ»cjÛäñ´ÈL¨óÁ%'z6|Ê–‰”Ú¼Ì ¬˜Ó<×™ -—E½‚%£Qxà …a¨öÑôæš¹’Íà‰ùàÿÄüÿg1¯¢·äòýV¯š’SrêšÕœÏ£ÜIAÂMðÛlæ²ÿ $þ‚1ûO E­ ¯!ÖUå_S}pŒïöçÿ¹ú '§Á¸¢´Ôè¦2@ÁCÛâÏZ•ºˆïëh ¶ƒ\9•_Óò…Ç4 -Ý9’{¿â:ù‹{µ@GÏ\.ùi¾Ü\¯ìñAÄ äÏ\ðËüXoF*¾*§ÒQìÀ÷¸ÛºôŽæú°Lçª y|ù"_¾““f!±‹÷ÅààÀºØÄd0v[°=6¾Ôÿ¯ËÛ}1±¦öDêfV‡ðýÍOo.^¾þù© c¢iÂÜÃ0~v›³Û"YÇÉs¤`9¥„¦>EÜzNá㛤 ˜^ÜGÃÀœøôÞ¯z£àmsŸXçùãî: ‚…úá‚ßo’™EXδ‰Ð7¤ ©>B½Ø˜Iò¡{.öÅ«ì£a# ŠÒ2Ï×Àz’™wôø@âÓ?˜Ç6Ÿ¬‘â—ÝÝvç›ÄºŠ<ÒXWŸ.csÖšé6¨éÓ¥Ùê³ ¶-,mA‰Q0ô#1õ­,næ?[„Å™’í«Àq£³Yâ -÷lnfEšh¥ÖŠÖÑÁl1PÚe›™ȥt#æX<$Aº/ „<9o -HOä1BT°øÌìˆOÿA½2uöL–YY…èF.­‰ŠûH{®Tmž†¿I‘hA¬€¶D,Æiƒl=I@'5Ùì´Î&Z÷5ÅBÄš®‚b­_*R«ð0‹žj»1+ HxkT¨£Ú‡ŽZð®9àwoh]¶!à _dˆùÚ)а ‚쬃›IÊTU9ΫW˜ó¯=SkÞt»¼¾8QKRÖÀÚ<·ˆVʱeª¨A3o>ýfŸHÕ-›A25uÀ¨éØ8î‹T*Œ“.·x5jå->λƑ0iôᨓvòNª3§îy+ePÔ›Cæ©¥ ÏM|º'½¸(ƒyùøó¤3MǦ3œÊ9Ü C'za:_¢€ß¾PŽ|2ÈC+õžt+o  "÷`uË`D/‚cáRšz"ç)k3ebo£r -Ó·;ªÈÿ[Kú´–?‡ø;1)簘â´?2Ö‘e)NÔÈ´ìø‹éÝW ÉÄàvÑ\§(ê”ÖÖŒRš˜”³½£úƳ«oáÀ£§Ô°‚6…. 'XkbìŸ2Iü6E Ú*¦_À ÝLd¶®PŠ f/ì蔵”]k*I¦VÑNM$´ã,E7¬‹nè´¢µYß”çÂL/Î5šäÑÍŒ$v¦`€î*d©” -ŒUF<È+Ï5ý©°ñ3z·Ž-¯L®6è¯v«$VÆ+H¾ûN£D`ЩD}à rŸ˜²µ ­6-´|L>6‡6ofi‹û ÇKm3× ó± †dMAÔCÈ}^`^´UeØ€åÎÒS¥ƒ  …úJ™ aõÎwÏðæbºò,Œu§CÀ:™ÜŠðu5x𮨼Wñ¬#Š¡ÏÙ-[³µi.ƒDÄÀ8–ÌÉOÆ¡.Ì4f5EžI¥Uu?ßÚ8R³a®±œpzh9™¿íú Š-IˆxM§§äE äðÄUð¸0ÛŸÕ~ú„)Vú.vu\¥·µÐ;ëÓ˾L ©$w:ø®/ó6hNõÅBÓÏX‹öÅx·§55¸=¨`×À—±¶ô˜N‚ËåmyxÓïî§{y£ÓïøûžŸàKI/?ARCæ2Ÿüob'Xâ» ­`ξzü¹è÷ú€ F¡?Åoý AÖ…{É ðƒZÀt›{×Qpõ1£û:mµ¹ Hnêeüj —ï˜Ó=ë…º$>5÷_44}t|Ú©]àG[4Áµü§jàÀ"t’äÙ©Šikçf–BâÄð"•.Êø˜:ërÍì|ߦÝóç|‡á¿H mgü3àÁ@='/êį”Cw^FéÝc§j8­,­wìÐñÎRfí©Í6`3ù_’¬TÝ^¡pÕÛáÉòy NU€Òï® N–„éé¿Î{Ocôä³r]ã[œRê6§Ê—*E—±L{+ótÚZwWa˜°U8yÞm(áƒu§RZç%ûz¥ÊX sû\°Ý’­…é`ÿW&[;úŸM¶ŒÒ?!Ùš“k 5¹,ÔÙ$±L&a¶«]?ÛÕîî9ï.ÚlàÈ1_”j;bëxãß5ùê¸AÄ„rßÛ˜çú*ï5©Å5x´(ºAc3º©x«Î‰ÌÈDfPGïyÉœ³ÏxSlW<ò…:jæ˜<|•²—¸Ù…Ôa• ŒáP›­,’hL.p}kš½ G.reZH(ñÞºù£HcoÚ>¾ÞÚ&& -Ä«­X>âþÇýôWêžÒÜ)íå+sÁ¨ßJY)?³*®í!Í5>Ò#™7^­Yù‚¯ãIJޒs³èÅÔø ü±D*O«þQª1lÁï5 -WG´ÆhB¡yÔd8œ^Ï}÷àkLNTèpÂyÛ…Ùi(Q¨5.5b”Ïe²æeþ‘–+åJчÝÅ÷ nlã™u–dœ”À‹aÍ‹J§éB †v^w€ê§%ª¾4\OÖ JkÕ“3Äùyjþ íX9 9+2tW‰›Õ,+=y»¦Õžµå±>r$ãe|9ä¤ûƒ8Û Of/­Œ–êtöˆcªÙ5KÆLªƒb)%¦ÊùC~íhBж\¼!244^g¾*f{hMÓÑoËÀŒˆæ-2=vѦô­^¸‘ Sß%É¥Ú& èCØmvq=AŸ#Çþxðñ¯,“Ò¾HE&Ÿ—yHe+5ýp»€õ=¯SP¹u£Åã@ð‰ñ9µlQøEUšñ¸G«Ë]±€ªÇ/ŽÒ߇“󕈶/ÕÁÉ?wÐCHh¢ -†Š™‘ŒVW⯴-…ç«'~§zb3иšZT±úñp‘NÛ‘êºËŸr2âmg¢Iu&ĺëÍÝħiÍÔjÔ€Aƒ:m?áÜ©'2Öú\±ù4Ò§“m¯o¨ù¯iº9=#ëª<¯Ç£I E®f®ï•ÓI}é-øÅ?(>~!1ć,ä £¾ÝÜn;¯!‚¸ˆÐóÜl¥þÄFXÚFZ,øYà›¸·]˘ùW:©;›tJg%ú•úGnHË)^pià2ÌÖ éP‡õ4ç¯~U©oÂÚæmóI|ã™cSb•nÊÏÌZÎîNÉHÌú~‰gÑÊ|š%ÆO]·_¡b.ìù­rha°(]þÅí¥ Ùãæ4<ÏDy=Õgç¦{ËDÁQWh±˜MÁ°r9ÔßY²âÍK˜Òl&SC€ýíçÔôí7ûž(ÚÐíÇ «X±òC¶æK߀Ѫö¬v?vx–ú%áÉÎa(·ü)MõÒK™â,÷ÔH`ß”´ÂìNµ!gV -x“d™ìDiÝãÞˆ€ »IñäE¥PK³_™²¸Âcò~;d/nøŸï Óž -ËTøÓ¾Þh"^¯h«oq”^ú‡¾ƒ@EVEcG`&â”n=¼`²w?Ð@‚ˆBø|³dm è}2ô…7Ëío ڌΓ1±^ŒA$¾v»ØÙ^h1ÓGÄð Ü!œõÞ÷χƒÉÃáûÇ;´[ôþ îQB8‘Ѐmc$ž„Ê5&Ø'DÎÿã|—0à¶Ås^„ûuö0/`ÖÙ2àAyéÏψàÝê|ÐÉz™Ùé‘ßH¯¤L¥jŸ/ ]lö&63_¿f9Ræ¿^äòÂG>‡q€gl8•ú˜x9N\ 5LŒ[âøN’‹:^£ Õùä¼5ÜÑ7ãM®A¯ºÞD÷Ï`ì¢%†ú­¥º…R‡½ËÄK½ýQ¶Çã÷·»ïÎþ.Î÷2ÿê¡ð-Ú±&ÇšB€e\ɲöÎ)ŠþÝòH<ñ—7[o8ïÓÔRZiSI‚‹¸’ï¿yþì›ÿåYmo"Gþί¨ +Â+rùè]6&»öJ¯ ÉjEV34ÐçazvºÇ˜ìò߯ª_˜žÞlKÑI‡dcfªª«žzêeðÛŸÒEÚè¾zÕ€Wp-b‘L4‰Hæ ø_Ñ{™(ó~6Ï—<ÑÅL©*ί"â‰âSÐÒÈ÷SáÛHÎôŠe®ežL™2Vt}ø‘g NÚ2ƒ¥Ìì¡™˜ä/ÄÖ"°yÆ9¨:#ÎùáÍxðþ -fè)éO…²zèÀJèÊ+™Ýà M±éTÐÑ,‘à…¥q„3>gÙ”‚ŒdºÎÄ|¡A®ž©…Hñ¼1…2ºöÎ(kØ‹±®eîB ¢v`´áw4D!ÿØùZ(@JMw·yþÆh/Ù©!W¼°ü1â©Fwѱe –DFÛE·=}üìŒÈ % ˜ ä,¦I›~Z§Ýîjµê0ãpGfó®±û+";]½F§½ÎoIÌ•B´¾ä"CŒ'k`)z± ú³eÐ$ʽXeˆx2o“¶ò$ÓT€æ]ÄÐC„™5û#Œšðs4µáÓ`ü¯›ßÆð©{ÛŽW#¸¹…÷7ÃñàfˆŸ®¡?üLš¿ †ÚÀ2<Š?¦ž -B”O>yˆ-.O*员‰ÃKæ9›s˜Ëž™ŠHy¶ŠR«ÐÉ)Òc)´!•"ÕZl¾J.î{2åji,el4.Sº]†ìŸ#ÝÙ¼Û5·|!œž¶C<4&‰bJæ™áT·á | Ð1ù„Õ!† ÌßD«hdu:Ö ¦Ò* åï7  JS©…l"s]²ªò "Š4peÆ@-x{Ö‘Všìç®ëLù O0Ç¡g• •A`—¬MøŒÎOBâšþÍ–\£{D?¼H9u>Û2qñ€=°87ô`3”GVO±-m‘’“ÿðˆÂL˜SªtíhïÙSÜÁJ¦¾bŠ“ûÈ« ¬"ZP˜[sF£$i®/.Î|ˆÓí6_¾—i&‘²zíã;K0^0/ʹù䨿ŪÿΕF¸ÎâKnS[Xî™^§ÎŒ³dàºÜÙs²ZÈ ‰SèƒùÌÍõ>•X&s#„*ôw¡ñº¬0Ár‚³%£I#³5úôiÁMñ‡š[™JTKñˆ Ÿ!—XkŠªþƒ‰­ bfÚõ> ÎTilÀÙ鋨¿£#^ÐXWec¯3ΦÞ' m2¯Ï2¹ÜIâ6V¾Ù–¿ÿU#Ÿ#úa»lo:Oì\¦mu¶ÔIÝøÚ sMË¡×+øhÃ8^ý%ÿ~ùÀp°d[»+]óŽÎi,4‚%-”{V²Õð±5‰ØMûwï$y·‹›ÄÒâf €ñçWw£ñí`øÏ@iKß&)5‡Ò’‘=0Ó0ì4aOܦ9¡‰¹Ë̘Kœ–-9¡Zì´³åš9TgHÃà¦c=dÆbÞuämîDÀ©Y‡çüM£š£÷HE3HøÊwû` -˜Æ×y’tÛ5·p°Q––+k§:eÌ(úm¥Ñ*œé|K“ºªf§Ú]’·zíº¤é|E§Â5b_!<ÚÐ`Ùë_(?Ž78àfðRÛ²3n - טÔn´Þ\+è{=Kƒó60œ™3ÇreÆZ 7*ט-5ÎÓ8öõe’%p}¡ ÌÑÆñ*;µÒ4 ç…¥dꔑ²óì#3e§ÎÁ¡RÒxÞTÙeâùC¡díyCʙȸγ¤˜–[j>ÁÍ -fy™ì€½&ÒEC ²Ü«4“ q½›i·Þ‘V¤«÷üFZ*‘r ’Ó«6Ñiµm’æ÷×­Bނ³ k9°ÎáÛ7"]Ì“âÒ[¬ëó­faƒ^z‘ɕ雈âÏLñß)¥WæyÓrS­mµq$¹q'̱‘½ƒšÔÁ½½M"„èõ»bbþaMý‰ac®í²¥jôÙ5©~S-’Šn¯Ö䋌†òþjM<¬¿B|{µ.[ ï®Öăb -ÄÝU+½© ÅEÿ·Å«Ô±6éGÆÐ’ùí üjµW5 ÿUtغn½ÌáRÌœ”GªCi•ÝlWÏ®2_áÅqZQÛKð9íH|QºA¯û=Æ·ÜA)Tü<®rqq{Õÿ–‡Mpe¹³ÃQ³&Ö5å^æ»Þ¾Ö‡ó¾ÿþtyÛ*wC¹µjÏ8˜Ðã=Ä¿6§ÃV,Ê;în7ã=À†m´B>èõ\‡þ»áy)$Å¿ ’í¿Z#þ7!O^ -‡49@ÜLYv0b,*´Ï}Gäv ó¿4ãelTô=$ÿRí3Üÿ †n¾É…ÎI ̼¶Àì^Õq30’6A…½Ë‹sûXZwQáÅÌ:@ -ÌsVГ’d_Çø¼ä¿ÏÉ·AÒÃìJÐP¨U<1e>“æ|1mêîž¯ïø£PZÕ[F55|àOïÿíYmoÛ6þî_Áýàt®½ícº´uó²ëœ!vVEQÐ-s‘I¤¢x[þûîø"Ë–åÚÉZlÀ´±-ÞÛswÏ‘Ò÷/³yÖê?}Ú"OÉO‰¤0” .b挰?¢S)´LÙ@%ù‚ £aIš²Èp)H”R­{ ŒòoxÄ„f11ÒÊ2ÁŸ±œ™‚*F.d.bjå:ƒñůL)JKER9Ÿæ~HFBŘ5Þ#d̘U?ºœ OÏÉ ¼Fù˜k'ÜÌa פê†Ì@cަiJ¸€ÖT,¡*Æ€#™-Oæ†ÈB0¥ç<{ e|œÑNq0 ±.eîC©DíÁè’_A†ü]ïÒ(ÔöwÛGÏ­ô‚.‰†äš­´v±Ì€»àØ"K9‘•öÑ•6ÀÇw^‰œbòµ¡9«.#Ô 4þ#dnLvÜïEÑ£ÖážTI?„ØÈŽÆçÏÀé s-R¦5 õ{Î`<]šW‚¯)-0ƒ6Q¶À‹Bâ"颴EPMÓ -´à"„^]°Q›£ö`L†ã6y=Ç]òv8ùñòzBÞ®®£Éð|L.¯Èéåèl8^ŽàیޡäOÃÑY—0€ L±»Laà)GDY\©§àV‹Ï“ÎXÄg<‚ðD’Ó„‘DÞ2e»#cjÁ5¦Vƒ“1”Ç‚Ek±….ypß *ßW)S+ñêÖWJ¿O¡ú(wšôûöVh„ýÓ¶«­J,1-sekªß -$pºÑÜŽ: @¥ýË ¯±ã!Û‚“⦲t(²ÜÜ÷Bý· ºßrö·1&Ïñ(E—ƒ(‚´vÉÐ0E8º`$ø 2[¶ Ü‰¯§äRAf&LlÔöHXþ¾º¥PÓh¡SwãȯêÛ¿™’½O¤7pâEž·6}ÑÅÁ`[ˆääÅžkf‡WÌä - -˜;¦Hø-àÑL3Íî!¹»¥ä¥3sc›fT™@0•@%@f4bH4MeA¨»ã¦BPƒ€:yP抉Pë7¤ ØSÎíù•¦<ö^Áï@"h$ªFú:€àp†¢~z -¤wQ«b3”ñÓ)“Ú¬]ü»€>ú ˜X^ï†l™0‚#âÀfÙ«eP¢ ²àw¶.®8OüGP=Ý”‚¯”M™Bs‰Ê)æÌù·–•.‘HhG¾¢©e— Óf®daÛç5Õ 0ÌÙ¹(vì¹EáºtÉ,¼g/\‡@gÔ•ûx£=0Á†þ˜Íhžšºb›3À¼Øž¶i;íîÊ”ÁÎ4aÚU[÷-÷S×Û ž#ÒÕ¦¢Ê+>ú¿ûÜýNÇ_Á§Ch Nõ~Å¿°Ë`æ‹¶8ÔJ|×Ö,ÖÑ{¯òÚÎíºÃåq®’A©æyMâ¾öËT1zsy|¿=Í<Öó/KK[ÿâ{i$=-Vl”ó¼ÕÆØIÿF -wÈ¥ÚJ±Ó<¨Z3vºîdQZ°{ã®û샰ÎÁ -‘.C0£t=ÁÒÛõk¡ÀO„¥ÃðKoCÑ–C“[,«ˆ®P#¼al2U£½[É?”è(ð×j¬˜._×Ô…‡*]ñµ¹ƒPRc‚ç+YÜo3ºÙ …¾Œ—Wï R¬`ÝZíØ}vF‹Ôi.Q_a°‹ÕÇVï†|n²{¿OΘÁó°`XkXõˆzÐÉ5¢ñÒþþEz½ÞŠä,†â;99!"OÓÆP.„öÓ]§¶Ë²*¾!/áß1YлÎj‹¦·¬>"_“o«´T ÙÄ7ºí(Û]áÑR¨+ ‡^ç+®?raö™pâÕf6­O[£ÊlÕ­ÛAÕ 9åB|ÀU¼¥‘ö˜cõ9tÀ@[ƒb”æ!bÇÇ—WgçWçg›óu]bÕ0ÍŸ½‘2ÛR„Ÿz^°=ëÞÎf¢½¶p»áiÖîPqè‰àŸŠz[Ësûă‰¹rï-º¤˜sØþp]² -›ÁÎÔj´4ÑôÀ3wس !( -+à½;A`šÇ[{ƒ=ˆoq¿æ|µüŠï63i?x»3+°ñ5• -Oü+$þY‹ ]h -ØÞ; ¼ -.âÝϸÒÍ‘€•u³2°ç)Ð%fh7/Üh©Ѩ€¦Ø"jFíŸ,–ox|/Vžjäk?|Q± «¼)ÿfŽ!_­æÃ>|“ojOú•nåÅZ“ÿüSiOšM¹ýܽo½|Ñú½ZësÛ6ÿî¿§q+)Õ£É}¹qb9nb·žëÙ7–ÒNÇãÉ@$ñB‘:€”ê¶þßowñ Á‡$;É1“±HûÂb÷‡]¾9[/×GÃ/ŽØ vF‚Iœò0ãK—‚‰?‚wI¬’H\Åë,§<žq9ûIDëE,$OÉ‚ˆ+5Håç0±3–&Dá|Íø3Næé–KÁ.“ H¤a³Îùø²ËàVH–ÄgµU"µ2œfH>Ò_H!V"NÕ€±±Dþúfrõî‚ÍAvœ? •žlÃt cBŶ‰üÄæ@ŠÏf!²æ cx°"Ap¢ Ð Õ’õƒ Ë”%[ÐP-Ã5ð› *ãK+ŒÒ„-[Ðõ!ÉŒ*­1zì „*¿|Ï:0'µÌÛV÷5Í^ñ')˔ȩ3ñ{ Ö)ˆ ‚­ÖQÈã€fíñ7C$™â2Nª°d^Æxгñ?cË4]Ÿ ‡ÛívÀIàA"C«âðg°ìõø¢BÛ9âH(ÖúoJ°ñôñ5Hð)Èñ-® -9H±•`ñxÑÃÙÊ:Aq™r£YAõâ0§5jÙÕ¸Å~8_{ì׫ÉO7&ì×óÛÛóëÉÕŘÝܲw7×ï¯&W7×pwÉίÙÿ¼º~ßcL¬Äïk‰J€¤!ZTÌ -þde@o1ë¤Ö"çaêÅ‹Œ/[$!i¬…\… -—V3pU˜’S)œZÑÍî’·`îOHÊì®I’D4ãíÆxÊpÈÁûàî|1Ò+»_¶]~H$ÑÅT’Iò©¡v›³%ìs¶pò'ˆ*†G«XíTäÈUÓTXì›ËdE†R)—é3ÌD6¢W<py×2Üð”Vðíäæý êÎÀ'S!ç<´`+þ .eël -DŸ•bá[fãÐ+pe½iðÚa„á…ÃÃ"'úŸiåñÞ¸£?+­^/þ¤fŸÚ¿o7\– šwCúklÃŽC|õú¨Lþð\šÅb[ò‚tÈX»Ø"܈ذTÄ]sÉWeÍh_n½Jó,hQ>~„D‘" ÒNÃ|Ö¥™Ú‚xclíôËSg|õX1„YP+$ thÎVY”†³–Pé´Â¥äeM0š¯DºLfÖ6d°”O³–j‚å€$ZªÂâ7w¦ZËd¶P>’"Íd ’˜²%WDažDQ²Åè¤-“IqRèMÌÄÈÝ -07D«cïØ÷ìtT~†=o¿IÖ$£Z&2F ðŒùJŒÚ=oðKo0jØc3±1%\£ø1M'W°CGmG¢›S{y¸8Z6döéÿA¼á ο»¯í¯³ÜÖâéíÓ ˆÒL&[›¬õ‚B$‚DEÑ¡Ö3Ñ0BBîÕÒr—G¥JY ¢H;20øNS4£MXÃThÓõ´­€¼%7MÒe·§´3MÖ£Fò¥â÷Ôjá‹T”¬ä¹°;2¥ÑDSŽ@]gá|.$Ø#ß™\'óœÚ— æwŽaUK t òYÊPl(ØKÀ)éR&Ùb©“¼ž\Ïûäd!(wºf÷@W"j73µo$4AxôèxîaD£‘[¾'+ì ‚ƒétåf/‘·³ÙÀàR·>ÎÍÛÏÄ<Œ!d…za­wè}VYwKI¯¿ÂaY«+ô*‡qÅÌDß-(ÈYZdžRP¬\@ë;”¹4©Î8ÆV‰ÀkÀÃB2¶DU6í+Aròv•¢W+ÀŸŠvMl|~kuñDb# ±Ôr—WûQ6MÙn -PÆX·ôF‡7T%^tKŠ»¡ÚTf¬7£»3cZ³|ˆà,k1»!òäßFœS6ç‚E­xÉò§,Î`Å*Y•¬|j²‘.ظ£[ÇK¼ý8¡f­:]Ì¥Ç! ktÝüœ^à€ŠD§F¦¿þ£ÔBý‘ h¥9ÝúÁ¨ÍØ®'ƒ/‘SþîÑ„ÖÑ)‡v½M¶Æ´=§ÞkÆãQõ—Y`"ýeÑI™¥§C%L_$Õ.Ð2K¾6 -Ž7XÀ½MÙåO[¨:÷¦3=‡Œd*OS}òïéó®a¦5WùÖ££îKGÇ)D¥£ ej³ù 2&EÅ(¤Ó0UˆŽž n)u; ¥´Ê t‚6/èmRJ™‡éi€8[MQ5WzN¸•.-A&ÑþÕœ¶kEvc>I OûÀó_ûÓSƒ¥]«æ¹{w(:Äë3!^ÝPw¸x‡£Å¯#®‹o]f -ÏE¥“ª= ,à¶íþÂK±NR@hPH©:ŠÑÖ3`ÁÇ$†2®€÷Ÿ)é9x“?dÇsé-!]`‚cþn¤”ñ(‚H5/~a¦ˆ"°X°@‡É¦—£œ8zpúD€t`˜¹ !)iL½-ì! ÏhPLç§#?¹Û8ö\4aLX#|–>ãÃ`ÅUPaP„»÷µ1†‰ò(èç5žmWÐAð¢LÈŽGrZD¢·˜ÀpÚ„y:>¹× -OÀ9zС@ÇŽ>éÔkç–â.7ñýNôSK‚ÈͯµxµïkŒöxT÷@U_ƒT•+]\.2,ì½GpÖŸƒw…jû9«œl¨É AŸ‹ öT¬L=ÄÉÎN 7ΟUåùÒìJùq_zdù -VòcýIy^9)çGbKŒ²]i*Áý‹ÿÎijÎ}‡‡]¤¼WãŒ;õ¹O¯¦b -ŒÃðx†Acã yëÍ7êä5jUc†‚Ã…æ Sú£ôa]ïõð -¸ªtHON&¿ýûâãÕõä¤9¬ *5"Ùk -fùTÿzçñäöêúǘky:ÿÇ}ÖVT›šw¼ç=͸gì7ä½ü$í¼Ü'•YݪØë̸&kQ–²9娑:C’çœw¬°‡“"G©ônÙI©VØ6ëè¼Æ£v8D©%ß/O¥\Ï &šð)ÓìBåЀǸû%86ˆÑj·€7¶» và–µ[½ -ÿûZRœuãWãÕ쪇_'¬Ýþ|ñЦínû©tùÓæìR¹ùÝ +xb!TÐ*QΤø…Êe¶SùRç`l‡è¶‹$¤âÚªvú­­KÙ–‹~¡dÿÜÁ¸]ï`oŽon‹jŠæ W†:œûÉßty Ù¿¡,ÙÀ£<Øá{g©âJa¬ÕÂÔǰã¿§dCø‚CÈGûÞ¨ê±À&uÏ|‚ä%'Þt*Ê8Ýýh?—Y­ôG±pØÒ­¬õ a¡É΢iÔ;jz™€ O©X *´-)‡)áñ†‡6{zígaÀSó}V(7ò…¨¯^XJ®ˆÑÓÅŠ"GLĦ%ÚÊJǯÊl¸ yœvd¶®a:yGÇ(ÙàâOékÔys”µa£ã×ö”nÛÓ½…¶¬MŠ -lÝk£ ŠŠÑè˜ã KšF*S -ïT‰ÚÇ.÷*‘êp·Çÿö[ˆ%ˆdž?Á)çLßÝ}Nýq|qûËÅí]Ÿµïñ)mÖ~F—ÅT&é¯<§ìP¬:ì-;Þ_q¦¸"C@Á\+—»€¡Üó¸ç­ÓÉä°ƒÍ龃 œ+oà·„]9o®S©Åîîúý{†'V5º/`ò\&a¯O‹(!Úò e|ÊÙª[ÇŦQK±)lÚ\XÜö6¶Õ|– «§ìt‘\ÄÁž†“ëateóõ‹ãØsßæÁúêÌ-5ÛëuaT·ý “*ܘÆg3U¨Þânæê!¦eõ -Ô€‘é’EæÚÇ.ð ÓØ®´¨ ´TйÒT×|Ðífl†Û2æì»ÁSXÃÙÄ\»º#W\‚ö¹7I8£º8hÃc»é6 DW‹øw9«m„¹2=}„¤P_e#¼!åVñÁé'¹HD¡éÀçÈåU>VíÿÌâÃÑ\“\†š{}ž)FúsÛÊ'#Vú?ªL -αìX/xíõ.“Ի˭@ƒs2^:ÓÞá㊰Б´ÓÐ[}Äk2Y}[ŠZSÈ/•lXLUmó9 íø!û«f ñ?EØC»?òU)h“テ4ö -s@gWÊ(ˆwgRï½NŠÍ™Ã›C©§à¿úÐ…WmÖwuåÚ“íuà Í&gàÃ:^^ÎòÈçØ¸ÕÿÓõØBLÜ/glÒÞטlO–²¿Ì¦Ï{ ;…mèj„bÎFGÿíksÛ6ò»êÉÔvF–Ú~Tê$nâ\5ב3¶ÛN§ÓñP"$ñL‘:‚´¢Kýßow‚”üHÚÌ;m#»Ø7v`¾µZ¬öÏŸï±çì]’r6ͳ2J²$›³rÁÿÏôMž‰<åç«2É36M#!ú0!~J¦<†_ïØéø7„üçhü¶Ç8ˆ –âV2”&(Q[ö¤i@kQz+>MfÉØËæU4çlžßò‚üaÅ‹e"PµˆŒÁ<–IIF%´Á›ö’× îD¥<é*ÏS‚x}«,e0ˆÀúç`îÑ|0 !í»«­Ë %š˜È«‚lj°§Ýþ|ò/>-…´Py8%º&8oÄ¢I^•`a„ŠÏe @¡™è0ÊVU©¾2h -ŽòG?6À¶—R~™ÆÖcëE2]°i”± 0 é´8ò8'ÑR*YK›æYºa«ªXåÒ°ù@Ùç3iÑ’— +ä®GïhAÔ1AR$UóŠ¢Ù)Ä-$I™Šdð#h*»ñÉ»ëk'z½*r0œrs\ð(fhé°Ì3±È‹R:¦ó\â{–Ú— ¹PÇìÏûì`vpÔïX$ͳy`ŸàõÖ%Ì`5þ2àë%{VnVÜEÿK”VàZ𾶦wÅ|Ui‰¢ôÄ5^ýöþìz|>>ë»ÑUÃ"¶`îz.P'Àh|u‡º½ÈåÕÅhü;OËä˜è3Å•‹î­bõ–’øb ˆjÑCo](sš Ñi4c‘‹ÍD¥ pQÈ]ä6yÄ€ÈgèÖÉå#EàzÁÑïÐhjºz,)i‡™xJnR®ÑÇ@ Ãv¥àŒs^ë±-Œ¸€Éód A„©d^lZèp½¤ždÁŽ"x)]K&[i4§ ¢¨x¯á$¦e%J76œð[µÑk^UQeAñ%âG¬Lžw¢<’J•»PÍAçö /{¨€z?[FÅ 0Ù ú÷M²ZPê2Ø“£_9ì}ÜCì”tàóbÌÙ"Oc-S”_Â…š§§¿¾ÐÜŠhs(=ãä%…à#5a@ÿðbFfƒéÅž¿ö[¾â¯eÓ h. E‰¾žZ¯/x³¡Ì0ȶÌ.ø¼ý‹HÜc6ÄÛz6ð½9¢ ¢CìÏ{’ÖÄuRlÕDl­ÀN¶£¦VÎ>LÓŠlêñJ©qí¨“ÝçƒJvŸ ©'ï¨Ðü§Ô¯ñwé‹`¹­{)"ðïdžÉ²/”;Ôjú‚‡œ~¥˜’g1ä%”X [¹ÇDj<ôØ^„@m0ÈFâ$&l‹è–ëÔ¤&h„õ%ÔÉy§–I²è‰Š„[ ÅzÔQEWÀÕª2öLÊìD²ÜëÈÐK¤+ãk‹Pf5-ûî,¡¦M"˜ýɦ+ãÜîq°}™µìkt‡ÄW{iqD©Û>eûr6þ‘©ÔÇvƒF&°–­ª…„…MCå-‚Ú T‹XTªËÜ ìßOó˜¿Ô¿ž2 rî{È!Ö<=U”0°Zb`ãÐo× làRTtdÎF[.¢RW›ÑÒDìbUX úêö¨cËM‰ûñ¬{í¼Øѱl,…±¾‡ä‚Ÿ’…ÄKªs§Êà¤<ì;R·,eyõµ´{-*UßEå ÔÅA8']'哬”æ!}HVU -Ë×î¹È©Û¤Ð j‘TUq ^Y@øI7Mw’úvÒmzP-ÄI¶,ŸÖ¾Úºøeõã¾Þ>;Ïèm¸X{îcwËJs«I—jÌ›V˜Nõ‘ºu|þe.h…¿zz™€µ ·®š5Q‡:$€_Äxroòcím^Ná§s÷Âdí‡ÌOA‚4E3y¼¨0""‡N×HÕ@¡H¹]‹²ê$ÝZ#\Dé:ÚˆmÚ·+ØÍVÉ}žÜ…¡ZD£ktµ‚½ »~q -踦 >½A1"¬¬EØa­íÍ V×`;®ZˆG~$}].Š|ív¢À¿’X -h B8£n°…²¯OgÃ!9Dã ‡Ú´Žý.øCyY[»O„†ð»Ýd" Øî,P"ð„H|;2PëŠÀä+˜ëkˆ˜‡lt¿§‡ìtã«é‹ì•=0ìðgfSé­£½×rS{30TÕ\J2ˆz'“qPš¡|׎°'€ÒÎ8\„f` : è DB°w30|T¬² ±­¯à9ñ^Õ”|ý5¬w-C•7çH -Öz34%¾^ ϰð¡víþ¡dæv¼HÈ kNŒµµðdÍ Ž¬ßÝüX‘ø¹7¦›£ lfZÝFÇ~é£Ö^à¸MýV»M» Ú;Ú¹³ƒØHï]£ãpǪ`’(yA"ÐW£óÔ‚ÏoëDì¦×¦ó`U9#áņôT“® •wŠç’ƒ8–x’RÖ誰„TÒ!PfÜggf7}îµe ‡¹o›û'&yÅ&•Ev#û“‰q¨ `Ï?VÚôÉ…I© ^VEÆnó$Øÿ©4ÏK:–òËœ¥4œ”1^ئqÓV(ÑŸœ„š@øHö^8ïï¾ íwÚÜpMmŠø_ß/¨ÛêhG -zVäË.›D0Ôª¬S‚ =䌊Ø}·K[Óç T)[–Ø4fy'þ¸Èc†™mVÚÒËØÑ¬‘äêÖÕ8GxZKbvòò“ÚY•QÐ ™¬þ‡&C&Øm[ ,ߺ ->ãõС·ZYƒXÕ΄™° -s}Hcu$¤Êèt"!ñÂò\𣯸tf©[­WÚö•QRN;„×¹Ÿqž¦©s²ÔºþƒÍ³ØÍ2_ªÂ-Ô^ò³['ŠšuNôS›—ŒkŠTÁ|P:ñáuA’xo˜u¢®MWèµ¶3÷lôK²/%Tçö­VMVJÛíK^¸ñ‚Ww¼i&mÔÉg6¨-)?§z‡?DŒøP¿sÏÉ “¥Ï½Q|\Ÿ´® \ÿx€©²=„J6ÍUœK?má㼤ï»í ¤nÿ(¸j'Á†¹ï%†>î4rç%8³,]}ãÛ€ªÍ}0›É÷õ7¿5›NA_f›ï2åEúb¸§¿ -í¯=)»n¯ívÚ€â#³DާÙ·Uô|ýõ6àÑøêÁ°ê«É£|31§átØò…0ðHwŒ½öáƒ.ò{‚i~¯m‰ü ¼ WIàs×x3ã¾ ‡›P¼Å‡,áo|(£B™Åd§êªœ£1y;hgÝ lL—äéî­ÜµõWÌ硲@ ‚K3•QÕ\q<‘·ÿ¼‹*†jlRØNe‹èôÓ”3>[ÍÎxp6<é¶GV-'êŒÜbK"Ïë„úà‘zoÙKkÙ~Ä -«–ß“9Ã=.ñXVÚv~‡)äOÌ\ä±ü´ä*_*;mÙ•ÃÏbj]©Þ—ÆKG^û%²ÓZj„ª“ ‰ù¤¦wûÌáðâìômˆ—åŸ$¡oY¯ëÞ3#xªê¨ çÖ‚€*Ï'+šÝ<áæêúó”¶Nãn©3ýÿb÷s»‡­fòÄ]†Ú“¾:àÔTßô ÕøvÑ™¬¹«E“ì+eµÁ¾Á¦³ƒÐƒû›óŒô7w8‹ôÙ¨”MkX¬þ ¼þX‹ ãœ«§Í·HÖ·¶ÔÊ™©sEýy¨FeiÄÀõyOcÇ¿>CßÔ Èî9~9 hf`þ¥PŸ>ÉÓp´Î'©ô¥Ô67&Vê–nÕw·äk­$¶Ý:òÿº.Ëuƒ‰^ßiÇÕˆVSzì›ûV%ÿ(õ?ÿD–V¹¨'À?Gd˜êŠv‹ó73h¼¦·ÖûêåÞÕWÛnÛF}÷WL ¡•Y*ú˜ÔNÔØF…¦2`) -ò¬ÈµÅew—b”&ÿÞ™]Þ©k’(a[wngæÌ ùÛ‹x_ Ÿ>½€§p/BžŒ ‘ˆ0+ü“÷JFZ†|jXä3å£81s -Ÿ©À ™ÖT' ¯…Ç#Í}0ÒjbæáÇT.Mʇ{™  #dÝÑô¾ø•+'m´¶–Ê… Ä"!ó¡³,Pœ¯ydô`ʹ5?y˜_ÝÁã&}_h§‡¤Â¬PFhH¥úK4Å|_k‚ˆðÆÚBŠŠŒ {2Þ*¬ È4âJ¯DŒþfezŸ£áÜ-bÝÊ$ƒRA%£s4Dü] ¥Ëìô²÷Üj¯Ù"i Ѽ´ü£Çcƒáb`ë8,ò¬v†®ð1¾ËŒÈ•˜…rYfH›~VÆÄφÃ4MÌ<*懯1³“éÝ뼉B®5fëïD(Ìñb ,ƨ<¶ÀXC–Rm¡,0ŠTaÆ£ OÚ:'AµLeÒòzUÓÆl.GSO/á÷Ñt<íÃÛñì‡73x;z|Mfã»)<<«‡Éíx6~˜à·{MÞ‘æŸãÉm8¦ ]ñ±"© Œr¿Â§<bKV'sO,…‡ð¢ a‡@n¸²ýsµšJ«1H鱯’J“j [Þ%/1ÝÈTÖY3)C«ñr“1e8dÈþé΂áÐåpzÙñК$Ši™(Ë©a>²ÖF–—½ÿ۞ŊĬ‰V>9Œ<^‘§abmS¨‰9iÎk‘Ú#æyT¤X‰ Fb£³sæø8¢¢º9Q‘­Ë\üsô —®*dªV 6<‚Ž´˜]e;L‰›>™Îiª¶¢6t$M$6§ÎQ f~€sEÉ”<@nÎ5<*÷A,ñ`KÃÐ-ê šknÐY1=ÊcºøØ„*妊aÅ6#ÓÉ)J}E#"›‡MHX1ÅÖ¨¯Ø¶Ûä@¯@×_`]ëa5͇¶iñ6'Òv.dhÛç.ÏB®›_cÌIɼ-¤LÃÆjQót—³´ívyŠ ä5U¬î"'z+ÊE32F²c•XhV2 VˆÚf™#}he`»$ü ï8®¹G9 iZÇ%‰i ÊÄÐóCÀÐ~ÆÉ'",“ȳ¶6Y—ºXtב» r¿ÑO=kÄ ºpp¥Ð­´¶†Žðáú&¿•)Õé–,ô®nÊ^__ƒQˆé§ŸÊc‡’Ž–,Äiß«™ª¦Ëf"žžSônóóšÅ/µ¯z±1ÙäÝV&þ^ ¢åêTöA™…v†žÔÎvïkRv c¤¬þ_–ÂËÅω]Ýœû×IUŠž´2ÿ{†ukU7ij¶pû´ÝõÒî3Öê º?宫l¨–-,VžýÞ-—¦R>ÞeÈI÷ð¼ÊVW^ÝÜÔ ôlŸb*t'J\݈¥Å‚þr\Ǩ´¯AJdýÌû×’†&ÍM\>åÚ;ü RYä»éJ`–ðéAsû*AB­<,îÉlrâGÄiG’Ï3I·ÝE9籿ßÉN6ÎÝüÌ*ZcR…9ÅÄ™7ÆmF¿òvÁ¼=ôÙ?L=ÖtÛLÊà¶*@j‡J}i"³:´®÷Ïfm¹Þó¬1_T¾=ƒ¦@¯µ’HqO‘øÄýÌ´Uzï‹å²ÐÔýz° +MËÔnHmXß³@‹Ô,Ôn z5‘>ïÂÏ}ú©oi|ûž)^l™Ræ?ß1ÕGÿõ†©qû…’xdÁÈwØ0…ëê‚qî¿Ã†)ÈpxÁ”/EÖõ_0äôLÊ¿`*5ݳa\IO\1OšÏ²óõèÀÙÌf·íŸ/»ç¬Ÿ*ÊöÏ7o¨­’vàBø8¥k;DDø¬ñ۶HjÉ«q¥¨[:e+þÐܶ›ë¢o-Ü_¬É‹›‹WMoã6½ûW ‚=$ ×*zÜm»qó]Ø@ì$ØÓ‚–Æ2k‰TIÊŠw‘ÿÞŠ”{5R8Ã7oÞÒ¿~ªÖÕ yÿ~ïáV©VNH%Un€ßÒ+­¬.ðZŠBç •C³)Ž(„£>˕ŠœöãJ¤ô5×+׃p«k• 'µ‚óñüöè h…­ ”Ú´Û¹¬½(ÚŒ rƒX¢rv0Gôé§³ÅäêV„•ã3iÛ8ÐH·¦5ÒB£ÍV”Jd™ä­EAÀéEép Á\˜ŒËLuµ32_;ÐBcײ¢ý\Êü6‚±mâ¸-ÕºÓu(¥Wu c”ˆKþeô3œÓ: ÿ=»øè£K±¥Ô÷ÙŸR¬Á%`eUH¡Rªëö Œ_B½ä–ð¥€^õ—pÍkçªIÒ4ÍHxÀ#mò$–˜|&f§ó›ŸtŒ¹WZKlýSKC/w *B•Š%a-DÃôò !ÆU>ähEÐoÓž´‘Jï/ Ú„ïÑÙx“ùü1žOæCxœ,þœÝ/àq|w7ž.&7s˜ÝÁÕlz=YLfSzº…ñô Gþ5™^‰2Ú -Ÿ*ÃERÉŒbÖÓSÄÀj }²¦r%S*OåµÈr½Eã=Q¡)¥åÖZ™‘ݺ|T-è΢5]Õ~'LµÃ0V»ø*Ü´3Œ¿Oâäké&Ü´HOkþMB WÁt<Ÿ~ü ­UaoâFýίEýD¾ÞÇ^Û;š5‚H¢ûT-öØlcﺻë8´êï›Åv¸¦wŠª"ì¼yofÞì÷ê]=JÎÏGtNWºdJ­ Jm - -;&þ#½°ÆÛ’/µ*mq§J©`iØå*å b%üZ§lFWjOÆj²‹æ¨ÙUÚKk=HfJ‡8T^B_hë]òå~¨ÎVkËññ±›”$Q˜þ‚M’Äß{¼¾g_B@&£ÞñóÞÃ`ª1(ìÅB ÃÓãàø´T(^ÕøËù_e%£a|yÇŒþaV)’•×9Ý æ…[„f·T½mÊ0¡îpŸ¢&ÈlÜÍV›_ËÅŒèzû~ôO苈:™áÒ¶ìÞ¤J,öÌëåýlÌo_ƒÙÔõk0oon"æ»—˜+ÃÐ郻 ýȦOÿÄv ØÃýqª¢J?ÁWßtÇ7±h)"ë«7¸˜‡¶h$Íó£?gùL@Ýl1‹”7&;¾›>Ò}YŒÂÊfCGŽEkma6¬šàFeÅag±pœ–ÅlP+}ðo¶pd”EÙË®ôÆ=Øž17Wú)^ -ª1þ¸˜de:ÏÙaÔ©U{?†ÑpK)/»M.A+ëMÆâíÑ […} ãÉ.ñJ]7e\cJ«Dvû§È=í‹{(;g=ö,JÓÔß sƒŽy¯œ.÷Âó <:ËúmÊ $ËrhC§ò ‹Éíã oüØ<ÿÛÜ"ää þÅáœ(÷ó©ùk4úðãèo½YmoÛ6þž_q( -4.\{ÝÇ6ÉæµÍflH€Ú]ÑO-Ñ2Q™ÔHÊ®7ô¿ïîHJ²â¸FÚÍÀZâÝ=w÷Ü ½‹ŸªUu6~úô žÂµ*%dF{¡´Òø•ùwöÊhgJ9ÕUí“eõ«ÔÒ -o,(í¥]ŠLŽPœ4ü¡2©ÌÁ–žT"Ã?3³ô[a%\›ZçÂ+£á|2»~•Œ–$ׯV-j2Q -+åZjïF3)YýÍí|úê ,7ÉçÊ9°U~…g”ƒ­±Ÿ`‰ªDž+2-JŽÖ „­,„ÍÉåÌT;«Š•³E/ÝJUhoN®Ì®'³èëÎÔÑ•Ž×1Cø‘Ë?Ž~€s<@BâÛGƒ—,½;ÐÆCíd«äçLVá"°uU*¡3–ŽÞ56㇨Ä,(} Ø0Ëî1ž¤é?€•÷Õ‹ñx»ÝŽ[Œ“‹ã?0²7³7Ït’y§KéFë¯ZYŒñb¢BT™X ÖRl)ƒœ(&¢ØZŒ¸.†$í ºijƒ– ¢ëÝ6Á9z4™Átö~™Ì¦³!¼ŸÎ»}7‡÷“·o'7óé›ܾ…W·7¯§óéí ~»†ÉÍ’ü}zózC†¦äçÊ’Ä^ЍÌ;|Jˆ-1O®’™Zª ÝÓE- - …ÙHËõQI»VŽRëdŽôX+Ϥr$zÇ·T%?c¸?‘ªXYscJ–øy™2 dtÅx̯R!œž¶c'¾­¥_™¼¡I{±¨Kaa£0¨ò«‰“¦Êš#0â‰`¥¯­Fâ²QX Ç–¦,Í–xü­­|Ñt‘™\^5ßxÇ/¬ë<}ƒàòªÿŒ>üüÉ…©£[ëÇ¥A›Z¬åÕ“áÞáç{‡ÉÃ!ä²’šG^tü1‹s‚%rñêI£bÐj{~:œ€ÆžþðÆcÖ"Ÿâ¿~jc=î†>=}ƒ}¬Ù¦qŠE£‚VŽÃÌà‚ÄéÐZÊ!”u2Y–Dd nWAcô˜bç8»2„nb…ꓺ…ñ«Á…œDyP»§ñyùÙ'/ö!u‘õ˜›0Îó{šûš«åRZŒG[µ­ NÆíkCVP³hQ¯…Lh2i•Üpß´¸)ø•5u± -c6¶ýâE!¹ ž¾Ä"¢¯¬´™‚½¿WÑœ”/ͯâÓd­­É;æpP`èiíiÃÞSŸ¤ï5ƒ2håP~šGÚçr©4¶,›ØêìNÞ“¦GÇê³+›1ÛçQܧ7¹¤ëqT†W‚ÕLÜá!Hk[æÃ‰±Ê#>C«€´¼›&¥®^1Ø‘òǼC¦ãfÙ›ïxûc¼)–Âûp†ý0 v-øêó¼ÑÓ8ÄWÇè ÏH¬SÓuŒ ì1s7úb©yn1Iª»|ŽÂ¸ˆ/w|銘P¶Mc¡ÐC< ëõ‚\kX>lÀ­ÃU3ËjºLè°Ç2r|±¼‚<|ÿxrÑøF÷±àÀóæÝ©» -}¾q! ÏàÀŠq:¼Ów—ÿîþÓ}{j>î×ðÐi~׉!5–öÖv¼ú;æéÞÜ™gAÕið¡‹qéÅѵ?‘†‹Ô§ñLõâi† -7öÈœhÑ'EἿí¨<ˆ²ÄNµì7^<†ó -/ø4ÓèˆèjÇÃvæêr×øSâ —ž­Â¶6¼­NC˜}Œ6ïTÝáryµ?jR{èl‹!<<ÕöMî>mÈýzwÄÅ™`ÿ‰÷,Lˆvâõ¯ºÂ5ý2ñš:¿:¼2¿?¼´ÆÞµ”xÐÞ¿µaå˜ €ÛiSášuÏe¬9×l—º~os½æõ ½ëðN½¼³S·ËsRÆè«[åwÛ'14VÄã5A¿¯×áwIl~) 9S—¢)þG÷¾.õmÁTˆ]¬ä­½¯»¹,¦ÐããÀÍqA—D…SGZüß ÊbxE!û0Rƒµ“â6‹Ï÷»Ê¦òåì éó/•TMoÛ8½ûW ‚œÀµ=¶‹mµIŒ¶k‘Û¢GZID$’%)«n‘ÿÞJ´]-º‚Àæ|¼÷æÍüùÚ4f–ÜÜÌàV²E(´òB*©jð ~)nµrºÅL™Þ¿­,…פòh+Qà’R9û­,P9,Áë™Qп\W~a¥{E©R+˜§ùêè+ZÐ -9›*vÚŽí­ÜõÜ¢+‚¨-b‡Ê»%@Žʯ7Ûìö*ÂÌù¥tc¤o(F:´}„ŠJ‰²”ÜZ´œ~èN´X [2ÝB›ƒ•uãA -­k¤¡~[¦’¯"7Žm‰ëA÷•3Ö“ xO…˜ò‹å0§Nºš^¯®_…ìN@i½ÃSuÀÏOp XgZ)T²'vÇ„ñãTDïxt ÐÕyÏÙüÐxo^&É0 K/µ­“H1yKÊ®óûç:æ¼S-:Gj}ê¥%w†PbGX[1ðà‚Å`IqU/8ÛEœé$Z„HÔÏH6ft•æåWðwšgù>dÛ6ï¶ð!}xH×Ûì>‡ÍÜnÖwÙ6Û¬éÛ -ÒõGÎü7[ß-I2j…Ÿeì^VË3?E ì–iNÎ`!+Y=U÷¢F¨õmØ ƒ¶“ŽGëdIö褦rœú·¸%oHîG.5mÕVë6d¼ÙONIAî¯Éî¢N’ðá÷Çö+†’l1§{<•Ä Å¥2HÞxØÇ•wlÐ’G{q"·TÑ£ólÔÑ|4Ïã™àáÆü¯ÄH=^–ybãLÝ0˜NXغo@´äÿ2èžDQ°Œ•{ê~Únî6¬¬gp¹g' ·ÓïHd†gÑ´üÊ“ r#â4.~Ân„>5øÙe}q•0þÜÀônyPîQEi–SL ý®€o¬ÿtAŸo„r$¥Òu±ºûä} ~¢¥ˆå°ÀÃ…µ"\•gq.%VRÑHÙ,gj°tÏáÒ8²c½pJ:LFV§¡B#ö;$f®ßÑ*ùÑ)ñn_ò¤Ù[Ñæ'›ìúˆð"|GùÙ„ÿÓ˜«^GôâXÕÍ'bñÅÉëW³qrÉè©—Çǘ9Å<Íf¯ÿš}TaoÓ0ýž_qê§¶* â#ƒmakE´¢É6í£›\Sk‰lgYAüw«¢Rd%õ;¿÷îß\Ôû:§Ó¦°”%B¦•RIU€Û#à×ìJ+«Kü„ª¹–¢ÔÅ­(e.œ6 •C³Î Ï%>Ê •Åœöð¨-‰Þ¹V„¥nA¥V0Ž’åè h…Œ¦Š•6#· QvA±Båì AôåWë4¾ZÀŽˆ3>—¶ÃVº=í‘Zm`G¥DžK>Z”Dœ>Tž Âä¬9ÓõÁÈbï@· -ÝËšÎKYJ²ÈØ®ðp,i=覗r¢º7c·Tˆ%¿š¿„1m`Шÿw49óèJ@iÅçê€O֎豪.¥P™G÷êŽgÇû¾ˆÞrÿ@x) w§Û@8Fó°w®~†mÛÎ…'<צ‰áGrv•,^és£J´–ÜúÒHCo jb•‰-q-EËôò ­!ÇU1c´BpÚ¦gÓŠ$ýtÙ&|FQq2‚wQ'3¸‹Ó÷ë›î¢Í&Z¥ñ"õ®Ö«ë8×+z[B´ºgä‡xu=$Ëè(|ª ‹àô²£˜ŸäiàÀiéûdkÌäNf$O( -ýˆÆH¦’–[k‰dNñ¨¤ó¡² ýEÛ0%—d÷—êG+ÕºôˆËÇ>)a((ýª0ô߇)ø÷žý)„T2 †©‡&¦Â…O ¸†ÚÁSDZÏJAVuÞC?–ÿ«- Ž—È_.|r¨r{²ësƒ–Ýþigð-(ßàòo -tñ]aŒ8Îvä-Ç•RW—â0‡4¬—Æ£;䘣©Š·çÝ:ÅoJôÈЯu³¥Á®Q™¿ø -tf<9 ‚ïApqüTQkÛ0~÷¯8ü”„.{\ÇÚ¬m˜YIXœ¶”±ž8¢¶äJr]oì¿ïN±š°Á( 8Âòݧï»ûNΚ]%“I˜Ë -!×Ê ©¤*ÁíðG~¡•Õ~mÑ:©Õ¥•.oE% á´©š­ÈqJ s-sT pÚC̑Ӓé­ë„A˜ëVQ*AÁh–ÍÇ@¯h@+älB¬µÙó0rÓòÕDikTÎN2D¿X®Ó‹+ØyÎ/¤ÝçNºÅH 6°%(Q’§ÚáDƒ¥0ëÎuÓYîèN¡±;ÙÐyk–’ͻǒÖ^·ƒ”#ÕC1Nà–€Xò»é[Q'ÅÃ×x|ê³kуÒZ‹tÀçGt‰XÝTR¨Ügê^Î Ž÷ˆÞpAx) ·Ça gó°s®yŸ$]×M…'<Õ¦L‚Ääš*»È®Þés£*´–ªõØJC5Þô b•‹ q­DÇôò ¡Š«ò„³m0Áq›E Iúq•Møų Ò,†O³,ÍNà.]^Þ¬án¶ZÍëô*ƒå -.–‹Ët.ô6‡Ùâž3¿¤‹Ë@*…Ïaì^®(G~ -Ø-CŸlƒ¹Üʜ䩲%B©ŸÐø!iÐÔÒrk-‘,ȵtÞT–SÿÒ¦äœÊýÀPÃx­µ®|ÆùÓà”$äþU’øý0¯ïÙ¿LHI&? 3LL…$ -=O ƒÇað©%<ùðô2úy%¨Šuk¯£ÍÿÕ—D/É+.|v¨ -{ùGDô3ŠÈßàòo+t­á.;‹ZGsÑhj—üÐVβe7ÞM%úÃr¨ÂÞÜó,âQŸ¨1|ë¿Ç{×4ŽöûØ»"V´’í}íøŸÐö(@ÚÉ¶Ä -s2ýtØ ŸÎ§¸óm´ç<ì„øÄ¯M»!CÀ¶U¹o]‰nå£3<ŸF¿¢èìcô½VÛnÛ8}×W „<$cu÷±©]»¹`-ì"r[‹" %Z&"“Z’Šâ¶ù÷¡Dù¢¸[ìÃHd‹œ™3gÎ ýæm±*‚èü<€s˜¯„¥È9$JZ&¤»âÀ¿%WJ•ókÁr•Í -+ð;$93¦†dû^$\ž‚UÎh\°±ZÚŠi·ª”)#C8Ç·g€_¹%9Y+ k¥ë¸Z,J‹/òÚ#°Ls¾æÒš>@̹s?Í'W7,Ù§ÂÔv v…g0•JéX¢+–¦‚B³„Äk„ 5ϘN…Ì0t±Ñ"[YP•äÚ¬Dñæ”J|ëÁ˜Ú±‹¹nTÙ¤²“uCF>¡#Jù÷þ+8Åd6»áÙ¥³^³ He¡4|ëøS ‹pغÈ“‰³n²kc Æ/µ šs©€ZîfÉšþVÖ¯£¨ªª>s€ûJg‘O1zÌNã› ím>Êœƒlý] -/6À -D•°bÍYEt…r@•FÆeÖ#kãE°[¦-i"¦¾{ic®Fá8†I»q<‰{ðy2ÿcöqŸÇwwãé|rÃì®fÓëÉ|2›â·[O¿åŸ“éu8R†¡øS¡) D*ˆQžîèÉc µ4u2OÄR$˜žÌJ–qÈÔ#×’ÄRp½Ƹ6`2Ey¬…u¢2dÚÉÍwÉé~ WMCÍ•ÊÅè±QJ1T†rgY¹-ß¿^¶Ÿéй$‰UêZS#–$ÄLQ.о‰?Þ1ƒ ¨ÝŽwÎG©ëÒš…¾WΨР-Ù²›ŽÉ'– œèìäѬõé5_»Eº¢Ù¶wêÜô÷£~°@'u—wý©Ò¥…zÛ—{ßÕ/—ÈÕ' -jVŽMIþd¹LÝ>’É›×Á÷€9–iÇ:Á‰»ú•Žv—ÖlsZ§7®ÅOÏš‘{"–'Ô9'Eë aàIëÔCú<B˜ò%+sö¶'ZÎC:!Ë.7®­Þ›–4Yz¡d¾ûå€SeÝ-؆ƒ#ñœ"¹q“¶‘è–X’‡m$‘I¼7÷uຖ¥L\û{Ãíé>í½C6k)}o5`°Í’˜5ÇöÒJ0ÍVY¯÷¶h‰%zæ¾VÀi'8 X²üøA:ɹ|áÔømÁËHür%É+_礥þ_øèAXcíBÉpâ áUHpç¹óf‚x¸|žm[a¨“2þ³tñcŸž»ìýoì…óßIjQ—›Ø£ Õ‘ë6 ]ÃíŒükÏè+ŽÌýtk'ÏÁs¼ÿíWmoÛ6þî_q0RÀR»Û¾%uZ·I0cÔn‹b+Z¢d®’¨‘T¯íß)Jrd;ÝŠ}(0‰"‘÷öÜswÌÓgù*ï ;p W"áÈÌ0‘‰,³âÀÿ -^ÊLË„ÿʳâB°DƳÜüA´ $ ¿Ï4ÁH+8ÎY€¹ŒÌš)W²ÈBF‚Ðϯú€¯\Ì8IK©TκËÂà‡Äi+ÎSž=˜snÕOg‹ÉËKˆÐe’…vrèÀZ˜žÖR}„U±0dš% 2üZGHPñ˜©¢ d¾Q"^ëŒ+½9Ú[P(ó+ïŒvнYŒu#‹2”FÔ%'ðQÈ?ž@P·ÜíöϬtÊ6I…æµvàwÏ º‹Ž¥y"XXé2ºÊúø¾T"—”9`6Qó0CÒô°2&?×ëõ€Y‡RÅCâð";_>F§½Ì›,áZ#ZB!ÆË °½ -Ø}MØš2he €^¬"žÅ'$­= šiªAó.bèͳ9êŽç0™wáÅx>™ŸÀ»ÉâçÙ›¼¿~=ž.&—s˜½†—³éÅd1™Mñí -ÆÓ÷$ùËdzq!CSü.Wz*Q6øä} ¶”yÒ9D$ /‹ sˆå-W¶4r®R¡µ-–…HTK*M¢­Ø|•í¢ŽxõÒ+Y$!8[H4†§÷ÚÕ¡ß²D`³ÅpŽnýŸm7«-òˆºOÝ9´­M&/ŒG´¬#„€üX–9>š(ˆ&ÏBÝâ[¹ßùÔé9ËVZÇ–gF„d|]qW.ÿ@Èþ˜7ÀÜŒq"Øc"%SÂÕ‰á¶"bm ä+3°‘U¢ÓG¦!°$Ù@ŽqÙÑ€-BÜò¬ò¢œ…77š›^Q5+i$¾ÓN -^!vL:éGªûèŸÏÍJɵ…+”_—)™Jc§ê¥v ¹ó~Mp¨åXP÷C˜0P~‡É >½ƒ=¶I?hÀ©p­“U -©›#%h )쟼63ÅRuÏ‘jtžŠ;öáÈG°ã%Ä`ö›`"l^ÏÐ>ób‰ý¢" lonªdõÊlV:G¥Í>ô­ì§Žãˆ8ÿø¼t]pý[—šM÷Cƒâ#è^'`%% Ô²»g‡ô4ÛÕ‡zý¤ûðHÿž­;LéŠÎí·S8,Y¶`dkcWå]8¢W £×¯5c¢"§§[ Vp–¿´JÒÓÓ^xÉ»6§ |Wñ´™²/wô«¼¿´ ê-cj9ËSßÕŠjŽ·Ä(©ëj®?ÄùŠçt…Ã*k”˜ ‹ Ë,Ù[W{köس͔k{ûjÖÝ#ÒP[q†ƒñ:¡Ž´ ûÉ}4ï—‰Æù€ÃñžXylû(­€ŠÅÒéÖ-¡¡o\þ{-Ó0 b ªøü™X’ðlÇ©§ðCÃþn?ü² ð…Ðîm½B´¶Qzø˜Õ»ÿ\×Å|RŒ÷žtwn”¢__Z_–Hµg;€o´o‚ÿ;…÷¿€t«™ÿª_ßj=¬ö ÚRà0¢‡qB¾ü~׈ í_&¢¼Ö¶®Gý×Ì…ÚL­¾} ÙRòï Ûjüõ/ÏÎ;µWmoÓHþž_1WU4©BRøØÒÒPZ]t(9‘BE{ãìÕÙõí®›æ ÿýfÆ^ç½Wg b{ç}žyÆ}õ:›fµöñq ŽáF¥"£½PZéüT‚ü'º2Ú™TösŸå¾Ÿy…ϥ¹j‘â;Iíd Þ°R'þ ÌÄÏ…•pcr R„zgpÓ|”Œ–¤m,ÌŒ-<[5Î=¾H ‹ +åLjïZ)Ù|¯?ì^]ÃÃ%ýX¹B˜+?Eå`nì-LДˆcE®E -Jã‹BŠV&ÂÆ”id²…UÉÔƒ™kiÝTeèoH© nB0®0Üb® “—©¬d]£ Ñ¥ü²uu ¥ƒòô qÆÚ3±m<äN.­ƒ¼dæ1\ l–¥J舵Ëì*ãçÒˆS×@p*`&«b èT:‡Õú;Wk<^€È0ªHŒ1ÖTÌ©ƒÜ(F1·Xq4IÛ¬¶iY´"¦¾*€eÜ£ƒÎºƒxÓtMøÔþÞÿ0„O÷ï;½a÷zý÷pÕï½í»ý>Ý@§÷™4ÿèöÞ6AbÉЕ¼Ï,%‘*ª¨ŒWðb ´”}r™ŒÔDE˜žNr‘HHÌ´<™´3åÐ1Âc¦<ƒÊ‘êVnaJ.±Ü·dª¨¡1)k\Þ•Hi·¢?A¸‹¤Ýæ£0OoÛc8d“1gr˘j×Âô¼Í#_ 6õÑyJÊÔ3_¢j“Ö¹`H(.Œ°·f¢,1|ÃÄôí–©‡u[—™5Xm¿@Py8Ä2S~ñNÞÉ´€s¸ÞJOmÑ¥¿”$(àJ§µÃ U{l¥¸Ýg« ó©dyyï ¤¤B ‰4] Ðq®b‚ ÖÍT3ä?OÑDSaE„²xX±8ÄÝ 8驿'ë걜ˆ<õ&K"©©4e¾Ë¥ïÕˆ6²#ÄàÉå†yÏ­›ÿr3Ì?7ÒàÒ˜ —V`€@.ö]+°oy`-¥Žùüp²|]ûV£¨Žt³»•´œ/8þKF‹i\ ×§¸k,¼¹B¶ŽD|i 3LÕÄÔ…6‘P•ðÅŽ«àŠ7·H»Í`™ˆÕsG©—à§0BÒ¨0Å¥8:ÂB±8ákgÅ „µbQ'‚ÓÉùÅLÝ˸‡!!Ú4¸s½Â%ÞÑÊ*I¸´ÒçVÃQñFâ—~jͼ*çŸe÷{Æóâ½æmÂ;¯âNpRw"Í+úƒ -=!Ì“0't¨UcódêG<Š¥?ôcrž‹¬+CêmþÍò1²Lrñ‡ÄhtÔ,QÀ‡®Cêêó‹Ò°’îËÑ:w}…sxqö˜BÅ ,{ò¨ìrÀXƒ’+òÂ&ßRä£Dú=×K5zqªóYy -çç <{†EØ) }9ù - hTÊˤ¹H¸hµ?=]-ΊÞÒçCu'S'÷XÃöH\%PšáàPÅp~TŒ@m¬ ¯«Òåðs¥ÐF¥ÆÖñ¶]bNNwžq5‹êF8u8XoëA³Œìl¯>·t÷1»~ñd×@~×—Oöº„ÚÏ»}¨í~*îj›4…¿ëðk2Š$ïèâô—°P,[V\€|Ь]®º híqôÆÙ²^ÐϾÙ`á0(÷Ä ÿ¡ÿÊ•ZŠLòE˜àw³ìRK%î?HQ°Ksu—Cµœ¾µÀ÷1Ãp“%Owˆ,yq³Ìd¿!cá×U½ ¾/î^ÁÉ“Y€;Ì»vg“wV  GôQwd}´k(¶Þì"Ç>$Iú¸ª²üŸ3#_?ŸUù¹ËV4{§v G»vÉöj\S¢ÝHùœ•<ƒLóú¢ö/µXmOÛHþž_1H\H Ru§¶P(%jtU¨Ú^UUÕÆ^'+l¯Ï»Æä(ÿýfv½Ž8\iKˆÄ;¯ÏÌ<³ðâe2OZƒÝÝìÂP„<k&bÏ@Ï9ð¼S+òw©œ¥\©)KÏ-ð%x!Sªª¤ýVx¥ëÉd‘ŠÙ\ƒÌcžª¹HÐߥ2º`”5ìÜb® ™©T².ÀèÁG4D)?éïÃ6 -R»8mï<7Ú[@,5dŠ/­¿öx¢1\ ,JBÁbÏhÙ•>0ÆÏ…9¥Ò3©€ ªbÀ4iÓÀ\ëäÙ`çyŸ™€û2 \Šƒ·ˆìxr¶‡A;qˆµG´þÎDŠOÀŒÊcSŒ5d9UÐÊ4F‘§ˆx<ë‘¶rMP-Ó4"¦^@ؘ©Qûd£I^LF“|]¼9ÿpŸNÞ¿?_ŒÎ&pþNÏǯG£ó1~ÂÉø3iþ9¿îGÈпN¨)RAˆr¿ÒO.ê–¢N*áž„‡éųŒÍ8ÌäOÍl$<„Rf Xìc{DB›¦R¤º–››’c„û’LSu!eh4ޝŠN vÿ ÛÍsäáÇËvW“ÔbJf©é©AËQÀD§™§í`S•¦¡¤ÅײlŠ7T²ØÞ$¾}S\o› zÎöŽ‘¼)ëªpa 5Y©â´.A‡A»Îö³†³r,O«“Ò(PÙfÚH6Š”³ÐxZÁÊ)="@„úf«¶]b‡‡‡¶ÉáûwªiÈãÊé 8¨ ÖŒœ{Lûá^Ì›;°^¥1…Ò3Íl°íÒˆ­Z½]{3ÅëÝåó†ü •lÊý&±’æ[|~O,KÚÂG‡ðôW“[áÙÆ ®Ý”›—A(Yõuš‡k ìÿ"2uZÿ©êï?tõ=ÇêjºG…W²¤Šß•sÿйӿHŒ§ŸÁ·7¿õÄ×bÚ¸^ý/ /=oÑ?ÊöŽ–×¶/$û/o6«sÛºmµ^µþ•UmoÛ6þ®_q08 \kݧ¡­Ó¸iŒëì"r[ÃÐÒI&,‘IEñÒü÷IÑ/u»­DEâ½<ÏÝs—W¯ëUÅ\À„—©†qÁEf…€§×RhYâ{% …Zÿ.7RÍkÃéÒ’i=$wáOQhÌÀHç=®YJDæ¦e -a"‘1ëgãdrôŠ -¤@ë-TRyŠ/Ê¥Œrc…Âè!@‚èÂÏæ‹éõ ä„Ûúg\{?Ðr³"®¡•j 9…bYÆmjVô¡r@¬£Â‚©ÌRNe½Q¼X­@¥W¼¦| K%™0Úi‰ëF6•=Ö]1ð‘YÊ?‚32°N½î¶wþÒyWlBh4î¢>¤X‚KÀªºäL¤Î»c·ÍA?wAäÒ¶˜£2ß7f¬·ýXS¿ˆã¶m‡ÌJUÄbüŽ*;KnžèàóA”ÔªÖ_ WTãåXM¨R¶$¬%km]£œE«¨â¢XoD°ß¦]ÑD¢¾o@ec®G½qÓ¤oÆÉ4À§éâ×ù‡|ßÞŽg‹éMó[¸žÏÞNÓùŒÞ&0ž}¶ž¿Mgo€T2J…µ±EÊmE1ÛÓSÀ`ÕÒõIטòœ§DO + -yÊÍGªâZ»1`"#yTÜ8QiëzÄ-LÉ•{mCu“µ²tW÷R☑ú ’;+âØ]…Aøÿmû7ºVbZ6Êi*ŽÂHŒjRãÛöQ;”–‡ìf¾SÕn7ÌS7f· hbx·¼»>ðïê ÄJ¬â<.•«ZI*µÙ€•ÕýÄoâÞ¼˜Ã±“êoƒ1ÈP§¤'ÏÁ „ºÛg´sÜB™ÿ@{\oâÈýÏU‰Eæ ß0Ýçè1²È ŽÁÔJþ¤ãË©j#`J±ÍYö÷¹÷at ýÓ_†ÏóÓS8ÕôÓ8Óó—‘{º–Ús>IZiŠ®Âþ.<¯ÌJÉv‹ð}Wø™4ns߸uä–¦·gšÓ¡2»µ°mW*›2s[mi»B†ßIô‘• þ`ô{ëc×…$å‘" (†Û<5S¬Ú -g˜± -ƒ‚C°áWö°ð)œ¨üŸA¸Ç~¼$óî5öm–4–7"u•¿»ÓhΈAˆ}î,·íÕ´ÙÓx«îöО”J½}%ô^ØÃs -Ãõç~¶Í£ÑrVRˆ/_leJ{·¯àù^ÞoçÇ5¶ßîã!×ô=”“VµÙô­P¿Žútôe©­ 3ÌYSšcÚG˜¾+âPä]à]æû?øÙånÿ°¶Òæje7B#\ª2Bo2¿ì}E *G¶V2¥}Z.KK/RïD¢3Ì­ÌûÙÕbúòV”6ÛÇÒx;J`#íšöH¥?ÁŠ\‰8–Z¤ sz‘¹DØPc"tÌGªØj™¬-¨MŽÚ¬eAñ\Êü2$c¼ã–jݪ²*¥QuÆÞ‘#.ùçácèÑ6êV«Ýþg‰-äÊBipçð6ÂÂRº”XV¤R䑳®ª«cPŽ*'jÉÝáJµjnaÙšÖÖg£Ñf³ -—ðPédJ½&dgó‹G”t°y›§h ¡õ¹”š0^nA”U$–”k*6ÜA×(GÊb£ ñ<°µ $h¶iZH‘Jon Ø„ëQw2‡é¼ /&óé|ï§‹_®Þ.àýäúz2[L/æpu /¯f¯¦‹éÕŒ¾]Âdö-Î^ 2 -…·…æ"(SɈbÜàSÈÙRõÉÉ•Œ¨¼<)E‚¨Ôn< -Ô™4ÆÈc¢G&­#•aÓVmaJžÜŸØU5X ¥Rgñü¦bÊh$ˆý Ñ]$£‘[ -ƒðãm{ˆ‡Î%S̨R;N:A^Cõªæ|;DvJàÀèfÒ×< <ùõ¹â¼V„§Ý÷žÀ=±xk=SÃÃcø¹!Ö`ºîÛ«w"•¤;TÄÉMø³í»^böò îD$vnîD[R]pbÖjs¦L­ÙwùãȺHi6™ …"Æð¼hoã˜Ã 1®½* #N}x?.^¹ÚÙ«Ò¥¿(ÜH|Ôñ­<&è;æ±iµ»Zï|ít8¤# ?§®ÍV—‘%ÕÉqSSG-ÿ¤J†a[ ¼Ä{ñ•V¡P™Ñ²&¨H[*@†®ºÚ€çý1…XÃ#‘¦[(¨6§Ì4¡òó:‹ê(úøÑ íõ!£®(§OôW2I°xg8ÑüËðùÜ®µÚ8Xh@ðMÕ–™²îP»pJíο?Š·¤s4=Z<<‹Ø[âƒúþ÷Z¡a<®øß¾1KRÌïÙõ~jÄ¿?ð¸„Ùi+Sï^#~öQ:¾Íù=¼¯ëk•”Ð}»÷nn ox¾·Þ,‰jŸžÜ|s¸ãÏ·€Ñÿ¯Ð}˜kèr&ÝYóN+TÜ*U’°ñÿ%¤6ǯ_ÿ .GÓúç Uw”6V;åÿ™hG×hKïÞï²iŸB{ÎùÚwN:gžwþ•UmoÛ6þ®_q0äe޵ícÛ¤qÓ3VØCä¶(†! ¥³LD"5’Šâ¥ùﻣD[ŽÓ¢%(ïå¹çž;¿y[­ª(>9‰à®ejå„TRåàVø_z©•Õ&N¸Ú.„™UNÒ'H aíˆÙ÷ƒLQYÌÀiï7®DJD/]# µ®U&ØŽÆÉõ1Ð+Ð -Ù[(µi“¹¨}(Úˆ rƒX¢rv úðÓÙ|ryKBÌþ™´­h¤[‘´ÐhsK -%²LrjQ€Tô¡ô@ØÑ`.LÆÅ¦ºZ™¯èF¡±+YQ¾9—’\0¶ ÒR­k]w¥ôªîÈÂ' -Ä%ÿ>úŽÈ€Ýíàøµ÷.Å”vP[ÜF|H±r—€•U!…J½wWÝ&aüÒÑ n_ -èeß „coþX9W½Šã¦iFÂi“Ç¡Äø1;M®N tðù¨ -´–Øú·–†8^¬AT„* ÂZˆ†;èå@(CŒ«|ÈÞ6ˆ ß¦-i"•Þ7 Ú„ïÑ`œÀ$À»q2I†ðy2ÿcöqŸÇ77ãé|r•Àì.gÓ÷“ùd6¥·kO¿°çŸ“éû! QF©ð¡2\!•Ì(f== ¬–®O¶ÂT.eJ婼9B®ïÑøÉ¨Ð”ÒZ?Be$R:/*Ë®{µ…)¹ ºï8T7Ss­ ïqqß)%Ž©?'¹‹<ŽýU„oÛ÷tèC²Ä¬®×T…8S§®lî£u<”\‡îf¾SÕv+ÌjWÕn» hbd·Zw»ãßñ T•ºÛ‹ó´»T.*£‰j·–ñ~`ë4¥&^®„iµjJ_Á®h~Û©o‰Éúå5z9èRÈ¢6øƒAÙz7âOvÖ·5ŽZ޾³_ñÁ¡Ê¼É;a±û=F Šp˜òœtõH¢ú „1b}… -{„ÂÙ9 ~ ··½ÊÛÛÓîöøuäŸ^|N Íï›Ö‰: -wáyáVF7ÈuLOµóûÿÊ/5¿z[ûp&K"6Cë—˦?©®‹ÌïÆO&}#Ñ'QÔø“ÑïÙ‡—Ž&ý’® 9†›<•0¢Ü(å×0%†9ÁFÏìKùÀiSxµÿùïûÉ\Ѱt¯qÛâzAà ËZ¥žùÛ[‹îȃ†ØÇÞòqÓQK¿é -Z«îvׂOJ”Á 'Á«î{âxvÏG.)‹´·-5G@pvvF3RP„¯_™¸Uïö üÖƒõ2¼p|Aaór›w©’Ö=”¡W –•[²ŽŸG}Úû²0(îv 3\Šºpûeïaú¦ÆC¶·™ø‡þô|;¹³í?4¿m1­ÏSôEoÏ£ÿåY[sÚH~çWœ¸\d Ø3{uÆ&ÔzqÊàÉLMMQÔˆ^ ‰mµŒ™„ÿ¾ç´º‘%“—%e[¨ÏõësëÎ÷?̧óJëåË -¼„®ð98a ˜Dàšrà¿;×a…>²±ÏïæJàWp|EMd"¾[áð â.¨Pó´çÌÁ?ƒp¢Lrè†qà2b„Z{Э~å€w(aÊD±ãXá ?‘Ì“œÏx ¢&À€s-¾7ì]w`‚Ö¿+¢„ X5EÁ"”0AQÌu©f>ˆ_Ì´!Ä(¹Ç¤KŽ:á|)…7U..£©˜£¾!¹2èZc¢D°U‹¾.ÃØ¸’ñڀрŸP¹ümó jH@L'fõ¤þZsÏØ‚PAñT:ðg‡Ïš‹†Íæ¾`£¹wkhã/FH8¦M¦]p’%¦ˆ›~¦JÍ/Z­ÅbÑdÚàf(½–u±u‹ÈöWh´åy|EˆÖb!ãñØ­r(Àg ÚA½Q:Њ…DįAÜ‘ ‚ì6¥ YÑõ,ÂÆô´ÐœÀÛö 7hÀ‡ÞðÝÝÃ>´ïïÛýa¯3€»{¸¾ëßô†½»>~ëB»ÿ qþ³×¿iGÈPžKr-„(w3ñdm h1û͹#&ÂA÷/f/|âRgŜ˙ˆ",p1ÅS0eOœ^aRb µa¡e |¤TM¡Ù¶º}Ûû±?ºít‡«F^ÒnŽûÞï†k?y‚96ìܯ2 îÅvÓé¶n·`M6^GÍ{jR——f^‚3e’9 -³Xx$\s³6æjÁyØ]™)FŠöO‡óp9çy%ôÆ&¶'žP”ÒI­É¡6ÑÉGš=‹¶Ð'æÇ|3ø­'¤« &óój®­´ï±©µ®d â{2,ÆxèǾ¯+ö;gŠÖMvè{Jñ;åÓ!§k¦ƒu:¡Ä á]¤®Cô˜|ëêewÂQ9¡|I†›]Y——sbtœ`¦éÈ ÚmØÛPbŸÛiÞX“™%ÃE¶T̪1$//'¦i§’º©n¥­JÒ˜JæY,ËAÕ!œJTÿD¢ö×ÇRm¨%ĽÀxbàÖíVR?â1:0‰ƒdJµº¦ø¸ŽÏS&=ª-D<ò¸Ñ÷F£%¨%«A<3«pyy çðÍ7hÇÈ «ZЯg¿AÞ¿Àœj>ù5ü·Z¡­ÆS[ ..²Öf8S‹Vë'îG¼DâÅñ\FUúSáRâ" #¶YécúeM3Õ·–·èãà–ÂÙEášÆš2ë՛ѵ–)ß cÓëRÎ1:óX¼¬•ž¤”ZÁñ:¿Ý[g®ƒ¯ø»CœµÍçxµÞ[mÚÍŽ×ú—½µæÚàñŠÿzâLg=^õߨ`Ý®Wù÷CƒÙtòã5ÿãP͹IâÖ¿ªKžV[Èí’ú²s®oO’Õ/ÐZ¸<Ò~ë&‡CŽ)ÔMÇÔQ@³DÑgiô¤¯–4ÒqÄF,sŸÍ8è_f² Í Fs›D{¤§–âá!å -‰ë3Ý\‡CΖF¶«¥Í)íb9ÃË:°ŽÇ´-m¦ž2-_ëÔÃÀ„a+¦Æ¯×¸ÖøZ?½@BsuVß»©êÖ3fá^Ñ@5ÚDAêtpBZOªEy²ÚzS1)2Ô;K€YûX~¬ÊAQ~‰¶ÙõÃð†pÇép‡íekhð±øç戃7!w9¶áô$»]rM·¥¾üêÛ–s¼`{2çöÝ.–.k¿¾@vÙa­do_l—–?ËDÛ±ž¥óàá•ÃÞw|¦$h²nïçÎÍׯ -ë+™v bn¼½(!ÈŒ¡E$f\,Ù…¢Ö•ö¶OŸh -ðy°^{¡ÁùöÐ}ëW Ê -žšâÙý\ÿ©þBÖ —åÀ(}O}m@¾¹Qûÿ ƒÃ¶ë[¶•Žú[ÃgÑEŽ9餷ݿæ˜~C/È»×æp‚Ç“ÞTþ í\{s7’ÿ_Ÿæé–djLʱ³ÉJ‘bÅ‘²ªu$—Åĵå¤\à$g=œá fDs}úîÛÝx 0/ÒŠs[Ww¬Ä9@w£Ÿ?4@}ûÝz¹>ñÅû‚]F±`ašäYc¾A ’¡È@ŠMOÎ–Æ \3•J3"ÂÒÝ 6N6êß²«Ûûþüöê6`o®&½ùyÂÞœ¿~}~=¹º¸e7¯Ù‹›ë®&W7×ðî’_ÿgþíêú‡€ P°Ö.$P£bæø“‘½EÛI®EÍ£–—, -¾l‘Þ‰Œâa-²U$Ñ´„œ{¬¢œœJâÔÚÚL”<u¿GR:’&iÓŒçwÚSÆcÞ¿wç‹ñ˜™@Øßl]~H$ÑÅdZdäSãö/0¢IKXU¬Â‚e)żYǤ5°u–ÞE3z?ÈE6ç¡@§PX.>ä&Ihâ#v•³™à±Tî­#¸Sáð¨Y4Ÿ‹ Ã6|«Ôžâ'ük…´V0/'‡L×d -dƒdmܘÅIE߆éLœáoã1{‘ ž+ÇÐR“>D†Ïá#vʱ©©`0<1TnEN$À´ÓTFùå‰ÅˆÙ“#Céñ™öñ™÷’Ɯ¨Mê"¡u¡k@dAè¡r ÂÁD¨é9¨™=;bá’g<„7²„¯ ôe†²}ä¹YF¹hà©Çx–n™Ákéœ0 -š³*ÊÈ„ÂsÀDð @u}7¨ê*­ð¹y½P0©ò¨ª*°³Û¯úJ@_‡m}7OËVVWÓ ˆFÈRaªXP‚øDɳ… pA.Ž¿Èvg(Z ’£rZ ð# ž -ŸF1ÄÊH“ÓO4nÎ&篼˜¼ƒíÂ+Ø1œ²ìqB+2½“O•bÄÚyÜN~¸qyÈ|–~2‘ei¶ƒËÅëטÓÀEÛVE×J6Y;J$¤g†?¿ã™®ð¸K§g«èƒ˜ =Q`z.BŒ‚Ã’R÷›¥ GóÐÆð³dS(%°Ô”6olzM{¼Jå`U3_¦³QUD)ꛎããrž·–)8j«ìZª[%Ë)¤ÂXŠú:蹊ŽU‰¹U½C #õ>&‚Í¥ ùZ˜‰&w`‚,„¬­¤®lp„6UKÜX†ìÐÔY5ñÀ1”h¾í—A}zÆžåãi ܯ—'+âïñ—Îã­ˆãtÓw?õdäàæ<^qÚ÷Ç_9Ã-O*³ÿìQbã.¯€5=«ÙœLMðmßhs×ufÀgm΀ÏÚ<Ÿµ¹>kó|Öæø¬Íúø¬Íôøì/Á§žüwØ]A-»'kõf½²þQ_-ÍÑ5íâ¼ t­P0ÉûÕ®-Ä -q¿:ÂRŽrÀŠauìSZ^„Ôž6Q£n{|'tm›€«½qHí‰Ï°J‡+!ôÛ¾ªÿ[Kgو嬥“ž–‰èÕ„û²¸v$ÈWS·ö§>…ÂãŒcå–tff!8ÂÛšBÔò¤%vÛá Õ­01¤ne)åË %RÜ Íä¸û¾Ns:l¼ 4:çÓè×Õ\­!‹Ôiv\ üÓä±øÁÆrâ«jv™ušùý‚ƒº˜Ñ²Ý&j›è£&‰•ÎÔÏQ ³\pI²˜®"4¤:ñc¨¨IÒLÇàF3¤æp•B‹9º#4×à˜¬Ñœ `éï4XqËŠWß!ÏV²zs(Ü—EŒgŠÈÛ4 -€õ·¹ßƒD ÓoQý£Ï[̃QUëÔÏaä_Õ±x&ŽU¶œ- gˆNå¿{· ZèIR5ƒÜDy¸dµamQbgØšè¸á™©lþ³N“{¼;ñ&ê S¨4Es-d[_[õNÃ[¢ârŸÁÔDå‡P}Ô½U“LªÎÚ«5¹7w -^•¸M ÚÕX”Ú*òïι‡ §ž#Ü^A$kA(ý‘¡„/*ŠÙ^•qX£ñ±ö ¾vµ†å¬ß¸ï2óº¯}²«>:•2NôÖžföÕÛ¥Ý#üëM3~¸Þ¼ÍÃÞzû·dÒÚFæUYL ×îTª‹ /°I¦0½—Dà=0XŠ|á2<]øÄÒj6š*®\m…M»h²¤~¬ÏQÔ³ºe¨‹Ópý«Rqôõ nÌS»,67[ZFfx§Ñ'ì}r1 Ôù®¢e)žš.S)’»¥BÈñz³4ÅÝùƒ°VÃÕ¡´!ÕÞð¹HXœ‚½àÝó´žïw•-[Ûé²w<õ#CIMWõ…µ¼®˜K—ÃN¢]šë7²Ýº•I#g†Fe±PØÞ:øW€×°Â¥¹,Í%"™M}jÈÛîÃ}–Nÿ!B,œ¸M0Jæ±>~w¬ û ÜÖ®×–©Ë27—lØ@Œ#u<7d\²ˆcüIx[º–´Ì¬HÚK`EC²; ^ÈUB{yµu°»«°ˆîDbät«f«)â¡‘*¹)îÆD¢Ûvúº-s~Å«¢~Šêg> -GýBõ›ð$•T¤™¤mD/%©+…¦:njf£gVn¶Ü$Ú¡Ì­™Ø\x1·EUÿ‰LUKÂwid¼¶9ºah©þ´ ¼ &Ö){ÒÒÆènLTÈœÖ(·¢5Ó$-íâR^ä²?ýiïÁg쨂Dê(„”ô’òÆ)R,ÞÉuá5¢Á¯Ù¯ÉãÙ{ä( õ¹*J%-ÂÃh†çöýAQIæ-Ð@H²I³^‚uXûj!`¯þúêÝÅÍË€jÙ¾ {Jׯә”4œ5V(ùTÆcv…ù’Å?M2 -ÐæÙKLh‰½Qw‹G ¨5êC·ú­½‘§]Û ø­†<ë -¹žS ´X«Ëñ˜¡6œ.¹Ø¡[9ê^ -}E›'M´„ÝzáªQ3tþôuœ²çsÌuvfÛЀõ6=ê+žžê[ß{¤÷Âìö­š(ˆ¤îĘʋ4N·‹cvKWª)’cåÏ«ô4ŠU¤ÀßZ`MŒ%ú($:#G¤ö±Â“–ó|þ¨îŒÝVHa š@ÅØ'$²sj}|²o¾SýÿRðºÆr -¨ºj±m¹§­ïÛŠÅéÎ&fKüFÈ㘾è#è¶1ž“«Í\:§D嘌VQÌ»nv;Åy:²€i$ÐW¥SN”+ph¾"lCœÏÍ=iÌÁå °¦Hÿ¾´ZˆY½E€ ͈}/$~ƒ¥Ä< ¸]ˆ¿£bI‡%ꆈs"$“ÄætZãûnUþ?˜ÿCÁ|[àÿ&§´p¦ßÿ8\AÃ:ÙÕ69èÈž -n똳&ãÛ`Çò¢µ²=Fh%föi´wJGµÞTÈ\õÔI-à`<ÎÔ^Ë‘ÞýZ©½a®³™ -º€áŽÖdh[ûí×&Ú9ñK˜[½¤<Ý᥾ƒª{ô-Îr—hªéROÅ¥:*®ãMõ}”íZé¦ß¥àÀRH¨r0ìî^õôµÿ^ÇéO­¶6&ý£iÅ3sUià ‡‘õìæ‘ÎZwŸ¸:7 ÍQ'ü”˜-ô­äªÜB½éœ ¾2¦ús)N ÍüVŸ9ìÝéûû –­©)ÇeñKMæ¡êNø¿›A…d´Ó£Fçx¢úŽ‘´‘dEÄ®(¬£ÞŽØ79×Ûöå;ôPŸu™VÏ"EÓ¾îùžc°nõ¾xS´)™Iel¾ËÄv¤¶²g]Ô§Rž6ì®ö¢kÕ¬ëô•·ºÎÓ³$m·èþ¦týî³ÓÛ£TìÖ²¨ãÿ&ìߪ¨Açοt®oz»]æ'-× 0Å—_D4T¬l%4Ù±dÕÎHGî$ºšÈ±A¥ó Æ~ÒŠ Îh’/Ô`÷bµöjҾ¢–b{/îóÄüÛšÓý{È”¨Äßt7–¾Ëç]ë²Ê.¿ÍîßðjÚ<ͺ¬êÕ,®3(méà ‡ ô =ãwOõ×útÞ@h¡ß`Íæ«¨€´px­/ãë­ød»hÐÑ ¼mC%ïÅÖ‚f-2nmºŽÚ´§ºêh¼ ¤¯É[—Šä/8ÖY‡’4PR´ÜÒ]7)â9´4ãþ-Îøm7‚¥¿˜R¹kí[Îlßjµ $Pùök…^`‚–rªOÓr÷ŠFº×¸k¤çºÇŸ¾„p¨þ„/RÅö{ Ö- ËŒM±nžÖ‡Ö£ÛȩﳛzàßFØQ°áëp•ÎÀ@ø—%œ{ãöiyØ|#ÞÆ™ --7àœ‰NgÜàöžóã¦õp`oƒwïÆöX¦‚ÞYFïp¿4MõDåfUo«[u¦ôÁ­SÑ 1UõôEú&”Dvb]„œ–ARKÁô—cÒô}±y¢'ÅJdèfå}6[|l€<еʷ$«þ¾|Khõ‚:¬ÍlŸ  ðœfO°ð;‚.Èj-DUgï€*L{>×òu\¥ihyÄ:öýÁwgÿÕ[ëSGÿÎ_Ñá ’!‘¤R•ƒMlSç€Ë’ãJÙ.j´Iöu;»Åñÿ~Ý=3û^IØäé -#vgúÝ¿îyøñ“hí =ÚGpîzœ0H„¸Á’…ù—ó, TèÉ×q8¥Rƒã ¥8‡¦½r(9…$ä)g‘pð×(œ%KK8Ó`*7  {6:ïþ)cI³Ãü0Ö|cw’&øÀÓA CéË Q€‘”Lþòj|ñìÌPXš?u•ž‡,Ýdc\Ë0¾’Ó©K¬…n€|„&Ær.â)éé„Ñ*vç‹Âe cµp#ä7&UFçV¥ [¶¨ë*L*­1úð;"•BФ]óv·w̳}±‚ L U2§òΑQ‚â¢`~ä¹"px¶Ñ.ã2þaˆ„òVÂYqˆ„fÓÀ"I¢£áp¹\ <ãùЪ8|…–½½8@¡íœ·‡NGký7uc´ñd"B©1AY=±$²£8PŠeŒæ}š­lݔ͊ˆª Ùûh÷l£]øålt1êû‹ñË«·cxwöæÍÙåøâÅ®ÞÀ³«Ëçã‹«KüëÎ.ÿ ™ÿ¹¸|Þ‰&CVò.¢È%I]²¨œâÉÊ@Ñbü¤"é¸3×Aõ‚y*ææá­Œ9)"û®"×*rŠáá» •¢©5Ýl–.Ñà.‚'cìS4„ám­aŠ™‹¿–h´ Ú¬Íd†ôˆ(sAkâo¡+Hý -%f, ;wfN{f]K%†Ç,}–VÉ„’JUãk“lÈnÄ|Z«v9Ø™ÿ‰“I°”{Á:¿ê”6æº(ÕÙ^˜Š­ÀÕá®°1fD!¿ékÙ3 ’20˜”Y -û ˜Ê™H½DWZ‹OÉRK`Àɣ uÅ+«Œ¨%¦i÷a%[0k‚¤MK¦_N4ÿ+ãä‚U#Ó ù(º{0Y¡˜2ÀzKú+1“ž`_wé-!™»A÷kãºî-YaOeïëÒé>AŠûÔbVÔ|%üzÀŸ_b™ðÐ%öÅF0ögXŒKÊVzhþüfr†‹@»?—Û2Kn»÷¨)¶ÛûƒŠ$E)ëhàÊv6eƒ(Ù²Ýpt”7CE‡¤\Á, %áúš"Iœ:ض­³kŸÍd ¹X£{ ñüS†‘{”¶-ä''EzÇÕy„Ô,ypq×Yžw}ÈÔÕ¥S õAy ó¾cDï|\·02æî暢ŸùßZ9– Ó2ƒ3ßrñõ%VÉ)Ï —Š™Î—ɲԒ""B+£­Ñoämh€Wíwä¦rXɨ%‹˜äAr¿%GÞ/Ä·ž^ð~ -ïú”üb¦5ˆ]½–EÊ”¸ap ï\,(˜Oš¯Î™Ázv¿Ó˜u¼È>ºÅFCÒ¶þáN3|žJÅ,še³\H#•N|—¼¨·?D`B=ùl<^˜¡—ªÖxd°6ûÐx •LÂÕEõ¯M7TØË[£|ø¦°?8õe<—õÐæðÎ)J*eÌ;h€6X»û"¹ôyJâ´PeoÛ\®;×£†..4-‹>ì]ºNÝ’ -TàLÒØ¬1m§WEƒâkR3—É”IÙª´ ²èŽ™ÎzŒÛåhŽÅy‹U(7üÖ9ï¸Å,¯í’KB ¯ñë -i`3]ÇÞ\Á¥ð¥]ŠØeù j^¶;»:–¶-ƒÔó6 žoØ#òEÌÉw 42͈@.£;GäŠïœJ+\µ¹Zº ®ÑJoë‘ï yá¨ôî^ž+äÀ:µáx‰Á -/ ±îÇ– -¾Œš˜S!¿‡&dŸŠ¦+¯™`Þ4K AZÃ:dcÀÓŽ¾|°ˆ×ãuÀÓ–„ÞÒ•ÑÃ꬈yQv‡×©ðYù{–ÝêY­§Mp´FL]Ò=“JÙ¤êkSý3©Å•ñ›®f±}aìÕ}ª=iŒÈjMËDëËЇζ­S,höó¹þ¨’.¹UšS”-‚6ÁV—UÆ2=øö[~4óB‘?ìÁßëïáðጒ{Ía6:NOà°YãínÄÿÛ }P¹Ì©C9êl5vo‰Ñ_ -ÅÅO+ÎÓ©/¼T¶ŸEBÖt"Kxšïq@Û-Éúšµ²ñÒn,.S% ¡T­ÅÃU¼®zØv‰¶`k|-5K.›£!-}–.ì’>÷Ä]úkgÚgm‚ÍTº)Ìë‚óê}ÄwÕýÚÒ[U{Íg*q\4%Ù™¯éÇÍ©š¦pš©ìŒcJ}´H›±|zŠãoÚvyBs0üÙÒ£ý=:±û—­Ë‡ÛЮ_’nÝÚrÔÄvvð›Iކ½-å FÏë°iHžB¹“êNx‹eÍÈùN,é[v¼[³+'–2PÇaU¢íWÝÂÈ#ÈóPKmE™Pu¥Hª 8T=Rrˆañ¹Ö…mkvëÑŠÙõJÜØÕ–ûnð»Œ'´«¼‚ÓªÙ³a·vÌ+y+½r–`Uj +îrºßœ|ƒZ~Õºµ“‘Pø)UÈ6ÀЇòäIóå»3Èx€GLÈ‹^¸äË&´§“tT•\X<‚P¥M,ó©V3­UeY¯M‰â„n¯‘pņ¨bCF1wS4Ï¥H() p ±ûÎ ¦Øžï¶ -"TÄ×±Œ$µ.»î~¦=“Šƒ—î4YÀZIç2 ³Ý®”¤d&f”>Í-©'Ó•ˆRþ› 0 EñS.ƒÁ —]¥±Ç/¶e×jØst$ XàœyŠB)•ï}+ÓÚYR£朋êRŸ$Ñg -õHÜ6ìÍžÍ.?±íénKéoOê_ @ îse¤~Ùª]v@ZØã,£REQ„ÿ_lkGš »Ï]ê ø”•v¤ëeoïó[ aX5 ݪۯ˜´›Ð1¥Ùý˜QÏ8çÁñ\PÅ´øA¬‘¯úät­¬OÖ¾=ªR;.1ÎC ?¸ãï¯Å´ M9¹q\al ¯ö&—n±–<åßOøß£·­L•]ÚúxŸð.p©xËuÂàögy2èææ¼—µf}輟üÜÁ¯%èô#¤ª½²ãÏœíÇ­ȳìô{ø綸;£ÚàÂGÛ8¿WÀ0ôó“âG–þV¾¥[w÷r«¦ýÍíSÿ|Úª,m“|,fð†aq×$`[í¾à¶ÝVm¾‰Iá uyaPíGJå§-‹ -×ÈsCÑýP¡÷¡Ê&¡`/ ]´“Óâ©A™s»Y&Q§‚ë¤ýO<ùóþ®Ý‹åaµþ“>ö$‹á¸ÙÀÙ%!#2ùõèôqõìjop©©7l±Ì OyÉø“Ï“ ÕEÅ6I$Xìkjk]!uüÍ2‘KŠ0m -ÈUu°Œ¨éÀ:Ë’7ž·ÝnGL+<’*ôœ‰Þ{ôìt~{J;šq„Goý‘ …>^î€%¨•Ï–¨kĶA( Ôb«Ðãq8$êÔ ¦ÒiNE4½ºÝÆtŒzã9Læ=øy<ŸÌ‡ðëdñËìã~ßß§‹Éíf÷p3›¾›,&³)þºƒñô7¢ü÷dún]†¢øSBè%My”<9-6NiÂ}±>š‡9 9„ò‘+ W‘RhST2@xlD¦A•iË6—%oÑÝÄʦÔBÊHS¼}´Hñ<†èî,ô<½äáåa;„CÍ’ –Ê\iLy'.ÿ?(SÔ£ûYN¡NÑ®<­æ E†ló #°ÆýèË€_Ó›çi5›h§–ÏÄ|Û]TúåYž%yÖ á‡×0¸´’ÿ}[Õ–LÑ7T£ÑЇSm°Ô¼Á€–¿èãsŠâP ½vq'‘dA_³6ëÈ|˜F†ý†BíÕK 9S2³›®±ÄÜÒÆ>œ}üð~6~w6t"†)[pÏÓ<Ê6zôíõè_ÿCÞ#SžÑËËxš’8ìõ³ö²W¸ ¤”D8f»n§ÎL8•IÑò¹1õ>Õ1µ;l`FE¾¿¼d­yh é·nEO0Jä B#=ç0sëŸîë[ôÐQsífOÿE'eܧ²âœpyÒ”µ¨u;ƒ<,ªÿC: -®Óø†¤S®^ýËEÄU[ú 6È «†­@ 2¾AGˆê`WÜöš -¸Ö%Õ·l¯àÕ~‹ã|³¤F¼º '©V"ý×KÛ°§=–¡ %¤ÎíÄ ¾ŽÖ¨ªLÝI0Å6œÔߊ(¢Ìíˆ"‰°ç‘§GÇÈ1ÖêPWÉjfÚeëàŠ±à³e9v…H¾±éK¾fë§ë²–§#ù‚5;~8ŠÐçž´Ám’[œOÜa2‘øÓ´-YEŸc…±2nØÿL ¯4¼Ñ`Ôb»>õæ8¼º6¥Ã¬=-sR~`~|ó¦¬GU4åKli°ÊcÝ;àógßµ’þAÏ µ¡C£k©Û•U~@}Sbè9¥wq]‡ÜU•åes/yòʼɦw°ÁYWõK†Õs+o>¸ÂN%˜ïó´p14dB§|SÌL× -º·Šc_a#žÖŸX”·öÒ„çQÔ -g¶Vr«Ë÷Ï,åN½©Ìôp«'VÝîÍ~÷L {úðTÏ…(ÌNš}WÄ`t!Gh ›‘Lq*6­¿\­ï ÇG¥á̺ýìMmë™z¦@Êúè€Eý€3ßZbË‹"ª2tI‚ƒ‰¿Æs8¯RÐÙX-:'ÊfÔ^|@ҥн£hôð‘ˆæÐÁù%½P›ƒƒv`9Ó\,ã þ$Ò Gp+×ËJ1Û+¯žÊ×”][]ñ‡Šìú±‘9êvT -™”æË ˜šÛŒ‹Äb©¾¹¤Ltáž¡ -  ­H?›a°º±³v×Ë\…¼=¸i|—[ë:èÓ·=ówœ.]ïÊXhf>zAÖúŠú)GþX{U˜Ó¥;ÝåófÎVs387§Âæ„éÄ¡žL‹Ó/µë4'£fl]©‚ƒr›:=¬ÄA«õË;©}-‡ˆbÈz>ùéúä/­YmOãHþί(!¤$lHF÷vnѭŠdv´š[¡ŽÝIzqܹv›á¿_Uu·íÄN£±„ˆíîz¯§ªËï^Ìýãã8†•Hˆtj…JU:;“ ÿ‰®tšéD­°y6¢DdYwЦßT$ÓLÆ`5o¸\ˆÿ õÄ.…‘p£ó4VéڗÛà­4 SI»µ¹6Ž«QãÜâƒÄQ15RÎej³ÀPJ&?¸Ý^]ÃE¥ý±ÊÜ>`©ì ר –Ú<ÂI‰8VÄZ$ R|0gAh£‘SabÒ2Ò‹•QÓ™½L¥ÉfjüF¤Êð&“9Â-êºÒ¹W¥¢µ7Fþ@B¤ò¿zï  hÓ¡{Ø9ãÝs±‚T[È3YRùÉ…EqQ°ù"Q"x·×®à2þé‰è1y «zR]ÂÒnú˜Y»8í÷—ËeO°À=m¦ý bÿ7´ì`x}‚B‡=ŸÒDfZë¹2hãñ -Ä¥ŠÄeMÄ’<ÈŽâ@)–-žN»´; APuSi´ "ª^]€fì£ÃË!ÜáãåðvØ…Ï·£_ï>àóåýýå`t{=„»{¸ºür;º½àÝ \þ¤ÿ¹üÒ‰&CVòyaH ”T‘Ee\‰§ E‹÷S¶‘š¨ÕK§¹˜J˜ê'i8%ÒÌUF®ÍPÈÃc®,UF[kº…,ù€æ~$R>™FZ'¼ãÓ”~_`ôO1ÜÅ´ßçW!^ï¶]qÈ$)Ä2Ž©þAÈü+#y X©9FSÀ€Œ³þÓ>#%, ¾-ó=r -õÀkú>Ò±¼ _ý>kkM…¬;räàR¹l–öÆ‹»Ü.rÛî@çÌÓGªC‰¹ºØ yráe_ZYEèð«™0­¿Wë¸UÙ}Ÿ§^+äGÏÐõ­m8bó€ÈÜ/èÐë¯.wð:Â0Brüîä"_$ZÄm̽Gâ—q쉃šå9åã½ hÙŸˆ„²]—ôJòAD­¶c†HDù'& Q (f"´í¥¢•´Fª'ÉÄlZ$ EÈW°Â4ÎòÄrÜͳ)éxN¥:³¡±{Ð6¢ŒeÜÅ›ÞÚ¡’ÜH¿p‚w˜Rlb8Ò¹EO°×FòÙ¶áð)›Qâ³Á(¨ØÌ§,ÃÓCç[xß/"\ÊéfWMqrç|üEò•ו«a¨_á3ÍX”/xcfú´¤ô`œBü«IÄ  - -Ê0ºŽƒX„f:‰Y>¯¦’™_–xB— cĪMà˜NÏ/æêYÆ¿ Ïÿq»•%äQIéì`“÷h­–»´ÂÂñ7n%ir†ª:ûÍ-ÛX;ÿŠÁ—HSç~…M€E½É>;9P'.’ÀmÏD܆P_ ölÕ?ò\ÎýO/Î8¿€wÝâ™KÅòY§Al‚EF%Ÿ×.g×MµFÌëö%³x›@øOƶ*Qÿ¸š£«f „ÖîþwŠX÷òß…È_%“MÛéi™*Uëåc¬#0ÉSÆhxxˆd·wêÓuB–B£wÀùçkaè#ʺ -Á çUbg›kËHþÒò É·T oŠv)MÇ‘|©¹ô÷*èÚ‡b¯uÎ Îðpô(W0sZ«LžFÚܤÀé ˆ$¯­%ÜNó$©…޽dù(2ÄhËó5wƒ\éÜúpÝ:òôËŒ{³‚bõ•"Pʨ¦)º=ÞGto;…7½˜aêŠdùv}]ê…ËN×ÞÑå µËÍgµMcôÕcùø¥ø…%¶Úf,ô’'Nè­b¿B,G£I -ö`ÍN ÆÛœÔØÏ´ð݈ÊÖ\Ú™ÆMŠ:@ ”D3ìQåZÃÀkí…œ×`̷͔߬³\GÂojc¤ÝѨu–¯ hÖÉ(×["eÂ]žÈg<`_ìùÂåWo7;ÎÁ}ÉÄB¶àŠÃ1 È)Çr³½\H£,ãýêN#"õÈ™j¾Á6ÅÒü¶Ia‹7‚8ÍIŒ†kÀCØHgŸ:¾RVv`K’ìÎŽ¹4SYG`ô’¢¤šË¼‹…Á¨ÿŽFﻤâ*ãnšWrÝHµ–Óë®Æ¶ÖÓ=ì,ºpXuæve׌³¯PÑZþ°JåÖ»Bu„1ï&.BðoîúµJÔ«vkØSêåf­zcš5P/r[SŸ;C8ùÆb˜…bØu¦ú¾’ˆ‡³ÑLÓ©o©†!ˆÎÖ¯¨ É´Ó¹ L ÄNÄÀM24(:*½8ðž\T¼œNÔÚ Îç™Ý¤QÝ_ÙÖk¨âÕcôiÃ{ß¼7¼÷¼TŸdôˆ+‰’0+V{DŽگS茌ŽSi…í9´¯I(Ä,µ."ãPÛùöµ(t~~îO½¯µ'tí…’2Âð¨½y«Šáz©=©ã!Ñg(Du -®õYˉÈ[·Ø÷¶:ë¢î‚ìiqãVpäæïG·ñ<®‡kM<Þ#¿.h*åKEsCŠ…7âJèX›Úl/Â+šZo©|û¶}¹_S fË{æèrcÊN«´huM¨Û~m²âV­˜® ó)[«½ç¦wdØh»Í朖íÎ[î?lÔ«/ÍñB&õó?-Û˜øµ4m[ÎV6‰›˜ª9"V&«žïA!T9£ùtÕ¬T…uääT¥<åî>Q©äj±TIsý$‹jqÌëSùlyÕ–IGxÆþNâAµ† YibÒ… -ÄÓÃ`÷ö}Ò*Þé"7ÏôÜ6Q©²ªh7z4£¦Si¤1Ú´¡õ)}Lõ2 w¡Õ{øòy¡-wÝ(¨ÓkõZ]¸~ø4¼¾ø|y?¸ü{_Ëa5Ïž:áA¤•­Àššu¡¹&‘ upmš“¬ÏRwÂÁúØ»[ÔïÆºá«e]46ù—­Ú+lþ~—lu#{~Ì÷Å›ú¯Ÿ~Ú–Å÷’ )änüå7ÊTY:Š(«°ЩlE¾6Ü q­Qå+Úüµ!DÚ…bn Ÿ-&À}·ÿHP<Íçcú; I/3ˆs>ùš¡ %ÆMŒž»BЗ›¦$ÜÔ…Ù øþKO•÷ ~°¥ÜV´¯ÆÇçíÆÙ?Ö.A–½fñßeÞbN÷Â./?_üÅXmoÛ6þî_q Ø{ÛÇ4q›f f¬pŠØmQ C@Ë”MT–4‘Šâýï»;’’ü–&]Úm›¼·çž{QN_f‹¬Õ?:jÁ\©XB˜&F¨D%s0 òŸð"MtËę̈4¹)èN,´î¡I½Q¡L´œIYâ<!¾ÓÈ”"—p•ÉL,tÎÇW]À2‡4‘$æ°Lsk6WÓÂà±ÕbžK¹”‰Ñ=€±”¬~t=^\B„¾’üLi+‡”Ê,ðŽÒP¦ù'ˆP•˜Í™1¨¿X²#$˜Ë¹Ègf˜f«\ÍÒ2‘¹^¨ íM(”ñ•wF[ÅÞ,ƺJ J#jFïQ…ükïgèà:p§Ý,½+HR…–µv÷¡Ì º‹Ž-³X‰$di]e}ü蔤SJÒ¨y „!iú°0&;é÷˲ì v¸—æó¾±ÿ‘/Ñi/ó.‰¥ÖˆÖß…Êãé -D†^…bŠ¾Æ¢¤ r¢˜èE™#âÉ< iíIÐLS šwCo^@Øçèà| Ãñ¼>Ç|N~¿~7ç77ç£Éðr ×7pq=úm8^ðÓœ>’äÃÑoH„ MÉû,§ ÐSEˆÊYƒOÞb‹Ë“Îd¨"bxɼs óôNæ\™Ì—JSj5:9Cz,•aRiÝŠÍWÉ+„û©rÕ4IÓ˜%^Ý9¦ôûÙ?Gº‹y¿ÏG¾Ÿ¶‡xÈ*‰b:-ræT¿åKlò"4¶°)ÚPQ -ÈD.–Ò`L9¾fBdÕV„oAb[ãtOÃTšRʤ–Ç>¯/aµkL8¦$"}M;f! Xk”Ê“WxšÙzŽW|ëNÄ…ìè.°u·‰©µJ*‘…¸Ãx0qó„ÒÃ^ÒÁTRýÍ8ÿ3™IL`*i³K -±ãÂ&|GT"µJ´®ÙÁ(ã´då)RÉ ¡’?†ÓéÀ†vÚŸàT 6ÕöÕ ðíÙªÛB ÓBø×õ*å ”öÊEž‹U‡J.™w74 $µ6ÔF¬ŒUNU,BjMˆŸ'µ–ÛaûÎñÆ3Ýû-‹Õ.[Ÿ[ؽ€ÉJ¯#x[á×s_ù“Ww;Åç¾éó;ndHíå°ÆÎìÍØ»øjÛ,´álIÇA}báà+Õmªh,Mè CòA÷EkÓï‹\ -Cì‚D–ŽÌ¾¶ÖÂØÞJ¢j$ŠØVÊ¡ËSE¯C‹A.3³²P.T¸@iC},ñÉ%-ÎÕ„Í3Êz-z0¡?Ãæo¤cES,MbWh!ÂKÉ:x-Y,BîºKT£ÕŒ•T=ܨc lÔÒNg#IÁ¬¶ª¬«> ¡-Ú´§m®ÞvئÚ>Ù@ö4Lgrà?rÁœ1Ê»¨×Ck6ðTñ66Ð¥,{Íý¦jÿí0âi_ŠÄp£`±ú¥5ì¿]Y|œ‹ÍRÚ¼®ÄÍÙ2™­w•pc¬ó‹ý)$îø ÎrfL“oEp<ÃWCGר%¤9p¬!l ›IÍ{…£ÃBYò@n0Œn -µÞC®¾F?¬ €Š*¨"P‘Â}”öEÂJÑZãÍ6TF‹¨Œð½0=Ê¡³§TßÁC:í,²Ú\`Vi®i#)•–{ä³NªÄ¹A"ùãNíàÃLæ[­ØJœÏCå~EŒyHر&¾T÷Ô%]E5^$.¢ÈvQ{¼);Å&ïZï¾Å׈Š$dó··´ðÑÙ믫¸Ê•³ªíúdœq. Ë6>WÍø*ãxp{‹¸uªŽT8xÚn_u->¨lî¿j~劻ø…î™V+Ä\̘Üz{n™ENUh¼Zz‘Qjø ê’ È{/à_CK™f5eÞž²ü‰HC•«œÙ- ‹«Öð÷$áêdçÒyâ˜òž+sã.•ÏZ7/ܿŠ9A»îI6²«ñIgØÖ½êB}•^!‚Yqàdíˆ^.—Üz5øÓ‹üõb‡:Ç“§¨s";ÕY.=E›•h(ûRýÆ<òüA*mAø(ÓžÜ ñ3pj­ùøcË­‰ðþ)mKü+Eô¶zj«bßSEiöš¼F¸˜Òrå{L3ª÷ã«öq¤· -(ØDó;N°üÔÙ´Š Ÿ¡?e`þ·ú}·ak·Í½Üfåû½:.-›¶ÛÍï__¶¾y =àZ·²­Ï–ñ“úˆEQé[·tnåð‡!Æ|;L¾íý'˜öõÇ -%Ú;þOÈþ·cäšù7@ô¼]oËÇÞ‰+Î3µ|~*XÈðÓÖ>ÁÛãf#–÷ö/E9õÄ'vCö{w_ûíïš~Ôœ§evWnÝq$b-}²Zøïå õ/ÅXëoGÿÎ_1µ¢, U?ââ„8v‹aËDQ¡ån9¶>néîž1uü¿wfÇÓ¶"õ¢$÷˜÷üæ±üöv6™Uš''8+‘rˆdf˜ÈD–€™pàÿF2Ó2å×¹™åæJª)3¥Lë2ßGñLóŒ´<‹ð¿¾›9S®džÅÌ™AµÓ¿ª>r2ãÄ-L¥rŠ•å_¤N"°Dq>å™Ñ €>çV|ïzн¸„1ZKü±ÐŽ ˜ 3A¡a.ÕŒQ‹cAªY -"[ëñ‰O˜ŠÉÑHÎJ$ržq¥'b†úäJÿ*£à }]ÈÜ»²âµF>£ rùׯ/PEb:ò_jg–{ÊI¹æKéÀ">3h.6¥‚e‘åöÞ:ÐÆ¯^ˆQÒ€YW@ŽWÉ€⦿cf­fs>Ÿ7˜5¸!UÒ .6?bd{ýËS4:ð|ÊR®5FëŸ\(Œñhl†VEl„¶¦lN´‰²@+æ -#ž%uâÖ«iZ-˜ˆ®¯`ؘÍÑQ§Ýþ¼ïô»ý:|éþ¸þ4€/ÛÛNoнìÃõ-\\÷>tÝë>]A§÷•8ÿìö>ÔcÈP˜)r-Q¯à)Ø@hñyÒ3‰±ˆÐ½,ÉYÂ!‘÷\Ùª˜q5šR«ÑÈá1Æ‚Jë†o¡JÞa¸ïH”¯§”©åxwï‘Òl2D‚pgI³i?…Bx~ÚöáЊ$ˆi™+‹©f%ߨ<ò…MyÔ†ŠÒ ºVaV± -rí@°Þ‚Ÿ?LÐÄ(ÆîYš#=¢ú’ÝíhJ­Ö›H¦R=â­EN!Qláîºáç™»]ð4•sw?BînÊl -ÜC´`žx>ÆSÄ|ÌòÔ@UqÂyäÛeäÌÒ‰µ¨æ=B;º0J¼$n,É@îc@•„·"n«Tÿ«ƒ#4 QÔá˾R÷<ä«6‹”cºŒ/|0쎜ÄêWŠÙ>F¢ª3‡„E ¦¨RÌR¾äÁÉp1‘’êWÉ©µ1ÅN¢aÄÑõ–·¦ä’æø™¥éŠª§¨,#™úޱ¹w›‘ñiAƒ¥U>™âѽ±ÍcR˽þùJ¯B¾0v+·c¦ Â7ÿŒƒÌˆ{Ÿ; –ðO®í(‰-Ë,€Ú+fщ›áºpC_ûãwß i$Ùl5ʲl~ªNb \"÷ˆtÁtZBz‡;a{„Œ ³»,b·úàŠ/–=š×áyÀ¯ Ø0•p³G®´HGGèÉi߈èŽötµÌ»^­Ö sûûå`ˆÓìæÓ ¾› ?ø€4eièÂ>úËÛÛW ;qš×··—lå±BêíÄ ë$Ä„&ž„ Ö‹ Ž'6yOÈßÝ3UÂNû|*x\óMû?²&Þ,%AÛ3B%„áØfôØÞ·ÏáØðq}IañVPx!ÔVH=–Žw sÉ>öÂ¥ÔòÕÎ*!SñŽ«ZÆç»Ök9úÐ(³hÏã>º%qVqGZDzÆ›–kV¯›LíÊHßì€i¬±o+s˹,f?™Ö9×*t«âðm«êr%®Z>po|"gÓF@ØeqyçYdOÃ!-»—TC,Ú+)öãÆû׆,OÓúÒöi0¨}à@ýXàç ¥ëô|8ÄùS à­{);†ë¸#Ûgoe Þ†ÛÖ`ï‘€¾âánbù¥ßžôÉþ»Žíkì*©d1–îpˆÔUœØÜL¤=$tBÁdŧ2Kq„D÷¢œ–ú,‡fmдÒv$“ô,!¥¸ÉU¶×À®íAÆÂÄO4žê é¬0¸J–Ü"Á¡Ï ,±¹)Ù¶#.šÀv²2)]CK|ö[¥/ty—ª6õµ¶e¿ü«¤äÛÙÑ­-_D¶}óˆØiÑË,ñˆÝ”f&JÎC|šo‚iì -—ö”ŒÁ߈çRÓÇê^œêçâtéR.®1©–t(¤}»ñ„Gwš°(ÖnÍUG*ëŸ>è\ W×A=§Œ²ˆ÷vÆ›3ý¦àP½CßgÂþ^%jaW~Iªh#™=wøª±¿¬+^]°¶æ3·ùvÍÔkÏN¿³ë…%ª7J´îä®*ö„*üúíUv?m¢Ê'çÆ™BXçzëPÐ.2¬ -w6-àQ†Ã6@Ù6ß¿oûè§ÀÑz€þù• ópznµJŠ{yr–‘;XØ«‰@¶õ!ŠÙ-fëíëµËËÆÒ2Â# Tn$-­9øŒŠW÷–1#þ®ÚÜÞÕÅÛòì–XZqþ¾=¯üåXmoÛ6þî_q ÄkØÇ´Ië¥5f¬p†Ø]QE@K”ÌE5’ŠâuùﻣHEµ-ÇîúmAÇÖ½ßó~õ:_äàô´§0)‡Pf†‰Ld ˜þwx%3-S~]˜¼0#©–ÌhS¦õµHñ½y¦yFZ¥aÎB|™ÊØ”LqÉ"‹˜2ƒîp:ê¾å -dÆI[*XJUyVb^ü ­,KçKž=˜rnÍO®gã«wc¸¤ ]éa¥0 ”J©î FS,йf)ˆ,¶áã;RTd)׫õW!Öx¾–cT!›c¬)+©ƒ¶QE©°âYÒ'míAÐlÓSÑ|ˆ˜zSËÆlކSOà—át<íÃÇñì×ë3ø8¼¹NfãwS¸¾«ëÉÛñl|=Áw#N>‘æoãÉÛ>p,ºâ¹¢$0RAåQO>B‹ë“Îy(bbzYR°„C"ï¹²´È¹Z -M­Õd„ðX -cA¥Iu#7Ï’7Xî;2å5“2µoîR‚€!ú„;K‚À>òDØ¿m»phMÄ´,”ÅTÐñì¿"FSµ!6R¡LSZÞRmyˆ/$ËkþϹö³Jë<ÿ5ñ+æÝµ ’Ç>” .*:RˆëãÊÈÜz×ÜØZl=ú@^…2â—ôWÀ„—’àžKûöìÒùÁøE¦ bn™z䯫Âd[t{/=oÐÍ[³"5>›3ª(¦qó´à c>}vU*g—^ô„dO^¶Y,¹[hR¦Ñ3&µY!c/€)ÅV]´Œ*'`#nÔÌ™>B¢H…%1GÀqlwRK7"Gá:ðÑ6«sdD¢èthT?{Öů±3ÞÇ ÔÝpS¨LW§I¡’§æÜ3œlë`{’UûâÓâÕÎÏ¡nïq“BÊ:l©ÊNàÕV×@ç,úÇkÅiO}ÝÓqRå^çì6äŒ?àU¢8¼¤xþÿÌqî,Bew{ì³½ÓßÙù;¾úž¬QmWÒ´>fÉÎü¬…íéÑ£²Ã•d{kc¡ôSoORñRdÑ·7º=uZ»híÕ‚‡wxÆÛ››Km/\´Ti#Ò”ˆ.¢ï(…ÕÛU‰gñì,lO»ÛNjxqq1e|?„gÅrN7Ú˜.•xátQŠë­q¿ÄëUGý¹+ó{)¢Ý㬲Ð2ÌìÃÐÎ"`ö̪Q¾=7¿HÐ…¯RÀ:Dxm MºÂ›Ò§µoPFp]/ní€q ìÛ]"‰rtCæXÖ>»«‡v#±×D Úîšn&n%¨ÎÝëoÔ/gŠ-ݨð‹Ó„-ù~$³ß ì·Æ$–RO`½ÈŸ.¼À›ä&÷>7ô¾ {µÒ“:ýìÒÚw=x\Ç£mùˆ~þ¿AH%Ðc´Û@ ¹Abp0…ooõ†ú;½>³.¯¡ƒT|?a½¡¿W-X…§kÔæ0j+Ø_î[(×ÎÕFhzÃLöÛŸ¦¤=98öRÒ—7¥ ïfh?G9Ï¥¤s®÷a] vü÷ú²ó/í=ksÛ8’ßó+—km%²ìdî®®ìÈYʼnë2vÊV&»•K¹( ’¸¦H IEqfó߯»ñ&@Jò$3;[ÇÚÈ"Ðè7ôâå|:´ÿäÉ#ö„Ç gÃ,-£8Ó +§œñ/Ó,-²„÷£¾N¢¢è@kìð&ò´à#VfÔ¸7†ðÏM6.—QÎÙy¶HGQg)ÛíÝœ·üÉs–¥{g9›e¹1‹¾HDMrÎg<-‹c7œøË«þÅɚآ °ŒË)´‰ ¶Ìò;6PÑhãÐQÂ⾘"Ø1ç“(!…Ãl~ŸÇ“iɲeÊóbÏa¼>’rs®)`5,ÐzŸ-$)Õ’mö3B’ŸwØ.4ÀN[òíVëˆzÏ¢{–f%[Ü@güóÏK@›Í“8J‡Ô[R§Çÿ.d”‹ˆ–íf,*±7þŸ±iYÎ÷÷—Ëe'"„;Y>ÙW$î¿Î^ÞœíҪϻ4áEÜúeçÀãÁ=‹æ€Õ!‰–(A)`±Ìã餽 ¥¶˜ ÓŠ@ºÝØ‘Œ¶z7ìâf‹½êÝ\Ü´Ùû‹þë«w}ö¾w}Ý»ì_œÝ°«kvruyzÑ¿¸º„¿ÎYïòïØó..OÛŒË`(þyž#€iŒå#KŸ¨-RNÅœãq<òÒÉ"šp6É>ñœÌaÎóY\ h @rê1‹KRª»z´)+ù+°ûA)Cʲ„züõ“Ô”ýý´êMö÷é•2„õÅÖ¤‡U¬È9éÔþ#eõ'9J2w”k¢p6Ïã´4–=¨w˜¤é P¿÷œC6ø–l¥"õ#*X~8øÈ&ñ' O ¦H ‚ ;/§ñpŠú)\†OÚû$”ÞU9p-¿J.tÈD‘r¸¸ æyšTÆ5?‡–É}üJ€w&ƒñÞ±ðZ‚Œ,z"Ò$@UHò$!¾@‹\Ñ•ÄwÜ ‚œ‘‚*4ûK°7ZµÇ$-H¤E pÓ9˜#Œ^fÒ#u!°qévI'ÅÂÁäa%X Ê„Óê¯p„)²s9å©#ê)Ÿ)3—´”ÀH´PCAê"€‰öBmJ¾ã^½LùR¨&㉚£Î€&‰ø(Û¢ºcsÄ_rRðMšÑ‹a6âÇøiŸ]¤à=£$þÂm“cÙ¢œ/J6úžÓ ðë`£WÔl·u$¡òqœr9¾à&ÛšòhzË·ÅèbïX½Û;f °ªËvÀëï56-Ê{@±+ø±ËvY2ÚaÍH‹Yh|øÚz,xpljV6…½{PCËáO„ÀÄðÄx##¤i»4\›ý×A’1œ@¢àÔŒJ¡jZJ 5ÃP$êµä{¶þƒ ‡Èh6Cž‹Äó#ü÷ûOü÷éSÖÂ÷¿Š3²3ð–x;Þ¢‘¿ªá·!>‹ 'ŸµÙó6û¡Íþ#H‘͸À’º9*ÝéH\9LCˆ/5#Úþ0«¨VŃÔRO4LboÁ!*w -& Ñn-– ˆêl•ô*ÏÅà.Í0ô ÀŽ Ãaå8sKõDf£S:Žˆ9BÝ;ÎE{«jêGfL¨Xàa’3®Ûüˆ~ ÏX‡ï¹ö…8¼4ƒˆ{ÇÂAõB{±¯ýŠ@„Gö&ì«9E/ ósƘçD¬Ä´ [H' -î[/,ð2°íe<*§.¤÷ø•3½êبàÜsbM2bš®„E7ôÉ PÐ — p©œ/JžG°úh³ZAæŒG ª¨¦$áó„õ`8\Dˆ e™GsVòÏ%JmcÔ0O³´£:U$4 éÕ>ý‹¿dï¯{oo{ïúW ïgGªHœf´nУw€æÓÔj€‹з‘ÝÆÒ?%Q>á8éaMO¿v‰Ñó¡˜áy\ÜÝ?þm¸_^]ž‘§òpï#·šÃÅwáÜ ,`ôŽè…'Â$ž¤BjÒwø8‚xTÆO¹Ã {o.~¼¼==;ï½{Óð{ÏŽšA ó–þŠV˜Z°oÎÎg€zÓ¿¾}Û;½½¾øñu“>n€Oàlø8à&à‡÷æõÀ¤vm ðêªÿ: ~EÎB×ãhpñ¸ô(`MÐ@+¸^àø6ÞBL"I‚>¨J1ƒÏ€KHHï/Nû¯oÏ/þvv*lgƒñcZ˜DŸãÙb&&–6bàŽÞ6þ‹M8ø…M-2?õþ6é[qÁ˜±)MÚDβ¶…OQ.§h\+§“îñ,†%R˺— ÄÀÁm),‡ªËUK7ÀfA+WxßK‡‡ÓÑk®†(–‘¥© oåf¸(×ù'>r£ %p`‰¿«å ŽàL.Š8ÁÑ -uopÁ Oa*ŵY!þ!æ3ä­Xøw‚h„n¨¯`ÂÐg»Ðïœr–jÚt3òhæK… %À®œõI¸Œq•Qb&oæ?W0ëbزôfr¶;œFyÑêTÀ‰’r×UpŽßÈãëÆå”Ú¿Š -þ3ÚìåÏPµ®0$)Ç#eæ®Îƒ$²ñ"Úx{K–›/†ån#GÛ’MmCŠŸ[¬%4Aølc´´wL¸êfGÕ׎Ñ`ØšY&TiktÆ[ÃuÃ1ªoo°Z"ìwÌÂ\Þ®¡ -b¿S îšÀ±¥{‚­ú°#î|$êÄfà¯úO0+ˆxÄÅ­\•hŒZ1°Ô“4ØÐëð©“4Pö•p—mIÈ[FUÚl‹ˆÚòGûêy\C xÙW›…k3^N³‘š0M¦ ¶˜N¸±WÂn‚Pë?‚Ëš1Ôg´ÈäZã0¸Ë¬¤-ÍÕ\="¿Z+âU\ò»ËÒ=þ9.hÝ$Æsr§y8—ý±b1 -üÃ0Z¸•ñ‚ÝbȺÁVŽB£Å`£ðDÓKäÓ,ŽIX -§ -!,Œfß|óÕ¹Á)5Ø{€íÏ8,0jL‰9¶´¹yFk8™okÔ¶DĬeñ×¼\ärÉ=\ä¹±cývÅFÙ6¡Ö,Ò£71JNêÞ¯;¬}£}­Š¢É‘šDu´+D¤§ÚªþÇn xƒË>¸ã ŒDCÛbÿ -bLLÜbÊIæq¡‚Gi&êdí4Dl>½/pýO½•gåÑ2UÙuÌA,(`ŒóÉ “Ø5*ÊÅxL[÷2ñ,³Ë„šE-m (*Q,þâÃiF¹ øòÓ-ÖÖé †Ì±Ö¡î¿ïÐ{ƒ¨Pù Àû‡‡NŠé+e¼ðf)jÁµ^Ze_d‡üŽ^Ö*•¯Q¥&<ÅXœ›ôWP™dçÍÞ"×¥½áž+/ÿ+;_5ä~ÊâQ#ëª~ØäÛ×ooϮ޴khcµÔ…ME®Vê0oW„Äe&BÊ:)|;Üåz_,ͳñýá°>AìR*…²w¸áù8’)VrŸçÙŒ6)Y–Ò&´Ò"¥q*w©L8ª–Ú'ÆÔF”ز¯8ËMÙEMx£Ñª HzØf`r˜°‹¦ªBMyz - pzu²Œî )œAEÄMÉ4 “à ãªSÚ‚µ÷tcTgÁ—¸„w8 ËÉx¾•VH:ázÿCmðG^Ö ú¾ËL›n½‹$;| sØ"uí¾>Tm6µäïcÊX£ƒט´Â­Á¢W%ÜæÁ¤Àu¶Ümò(!Hu3›Úü—7î5LÇ}\C›Ç­ƒHÚe™US>Õžp_¤ Ï­øê»àÆeÎþSŒßI, ãï缡Lh«¿±¬¾mí£3úÝU¯ëÔÈ÷zYm»Gá–ëÃ_Ëvµ[©5WíÏlÇÕ ú_(ø¨ñ6º…œÅ»´ø7r®ƒXhÚ„ŠBhô‡Úy“É‘þT±®Ìå=d^\¤+ãc3Vó²Ø>ÀÒ_’{{ë,ßt1FH_±…ÐV~–›T„î¡ed¨Â:6…~³(½WÙ84²~Õ&.Í—!*D×f员T³;~¯ó°·øG%3<–H(‡G[ìté%ˆ–æË§ì…oë¤ìÄ`"6A‘´u„¢ÊbVúí ¬¢&ÉïÁ=¹(0ÆJjt'Tó©³r»Týéd»dYËêë£t;mYGmìD§º‡z’\3ïA^Š—ÿžb@“éoDhXпŽûøjsΧXÆB•¢0¡ja ØH™µ²„kù'”DUT ´ -™V3 Ñ©¦ÜÍ1…%ƒýêDCïÖ“Í”ÅxrÀª0G ©ü@\þ¹åPç—ª4[˜4ó?çË|0³¾©cŠ;•Eþ…ÈËü?óæO6›ØãnWØUÞªbY f$9V—¼’åF8ñ³Ëh¦wœTÁ­E ?@Aeµ­J¯¬Ø¹Wè­³uOÛ Ö¾¹©‹à108Âò$ØÈñÛÛ —áz° …åæ­ÛÊRêÍÅÃÀ;Qýâ¾±äêoUâxœö²jÔ2©Þ…¢t/ò¯e´"p¥ái;þÍ4H´ -„KU‘åÑ ¶`¯o C‘».¬¨¬*úäN<|™èŽ9z‹Gk€G9–Ñl¨º…R]‘"ù -ŒîY«z¢åøÕû&¨¡Õµ©!ÍÏýÈáœ%ªz¾z߬ªÜ€!|0Â>6°hQi‚|zK¦ïÂZœWÖæ›NÎEÑÌÖ"ú÷t>^ý[c+T¬õmç/³C®+€¿)R·Cºž‰ª4Éï=¿ˆ7Ã, Y´¤½ÌUvО|ÝTü(wÛCu ͹;»jCÖ–·Èó‡J4dÕ²U£álòWº ôŠ“?]SPžÈ/ · -VÉóêcõa̲ZV°ïËp~FKšœÇzË«Fvúpf·Z¥ðŠ -tv}{U$´½WnÎ ÑâN›ú£rHìíH«Ý©ø!'ͦ?îï³kœÓD¡Ö¹Àƒ#&†¶úÌYÁ [`0<Úî#»ãtì°pÞ[GúTò3ˆ_%ul[BoÑÙ¿AŽ-Y÷˜>žÐRÀå€ï…ëå„Ûs5Z»ŠIÕ»¾x;Ãúã•{Ž/”C1Û†¢ýË_B/*b~ܵäür‡U´Ý÷. ²€M9,-Áá¬Ï¬Zæº:|6›ƒë–÷ -¤xOÄ0É褻 ò!Æ ‚ngÿfã·I¶¬5hŸz­€0å´Ý䕳ùþ +Ël¦K1ÆÄkwS„#„è¢e™TO•1Š£râ4F5„W“®<5j=Rxi4ãÞÌ+{¡çü¨T­˜Bj#ð¦yÞleçÈöeÊÉhrÑ ñ”ñ>ªP'\ ³Ó­Ñ£×YÁ“E–&½lŒCñqŽ´ÀwW¶z:ȤۜÏyTú“‡Ñ¼¦Ql-÷g CÐÿ”ÕƒÏsh<ÌÒO·€XÂÓÝ•$&oñžœt:ÿ®¾÷ßu¤âÓ0si<¿» ŽVH…ºõERR a)áÊÈ)¤ !ºÆ·nïJ鼈P¥áˆ•dD©n¯¨‹Ý¸k[¤ÊNì³ávç&ßp%ÃEB7a õ‰`Œ³Ö©ÆÀ峫1M~ÂÏŸÕy1mý9Góü|y*.%¨8&ˆxG|4 <仆g;¢Ó®z*A¸œÏ@=éì.áЖ#Tæºm}¿ÚW¸×æÎ•«ª ìIvW²Ç…à‚“—7¨È…8üþ‘á¨óÍ¡ÃP‡×nÈŒ}Íj·fl½½”Í–z÷³÷•^nê×!ÞÅ£Ï0м÷ÂRsÉ}p° ·õ…æµê]=ÿެøê›^X6“8«„»þ~·±Î=Ÿ*Ë'2wò¤^`ïÛ½’;á‘ãtÊóX¤ ç8„Å|å#Ú—5ÁS .;ÁB‚Bl´õ¶ õ cðb’l™Z0v#Ú'c±å¤pnhu0!™f(F“_L'©c‘GYi×l¡îlR—˜fñ8_s"ÐÓ]óÁ麆$ÃSò~iý`›‹‘£ x…—> #÷yÙ{È=ÉFQøDÇp#dh ÷ž´VÌ; îðìêoSG4ý [‚R kÅH¥Y’®{ã49”c­?„ç ^Ú¼·‡l•ÁJ­é=t|‰ÃÚcÖJ·bàyÄÚÐÍõ rZÖŽA_ô›<„ Õvúº~BB’NBÁ"g¡W›+ü‚aûÈó²íŸÇÈȲ§0·—©«ì<zëùØÏÞ4›s`v6ö¬¡Õ3 ƒ´µÌJM«±J›ˆÙù›[ˆ ;l²ïÁæQ£î›j8[SÇ¿Š†Bû°~§zezh^Q̵Té•—v¬/!‰*Ùb!&û˜-¹Hkñ,ïñѵòt…&æ²õE¸ö=P(…¡YÎÊÔ·v¿tñžH2‹ð®S}Uº{Ô»«kŽW¿ê [U±3Èváe XŒB׿Ìíu¼º‹QÞd-ßsX‚¥YºÁ¢ÞYÉWN#†÷nÞZé‹B¯ÀGjc»¦ò¥ª¶vŠ¿ºnÜqRw» ÞjYª©<[L¦îÅw9Þ­'ŸÚ ­øM -°ö:¹vÖ¼ú*@wÁxÙ|bñ¨ Æž‡ªîh¾%ll ©”¨Â»™'J…}ý!þ€ë›E)Þ\HÜ-D)žOÃT2ƒ¶x·%}••_åºEѹ¦þ²ùåóLâ~šIoj#Œ&ùÒk-ªÍÝ£ËÊ!²c[Ž&%±î&¼ÙŒ]µœ}7á…s–aÐøÐ~¬xê«÷ü=ZûÙ.ƒªŒ;àC2\Ù*VX‚cFÿåðÙO.Á=ä†.>:û±J“‰ú„žï2#;¤»š©ç¼¦TìxÁŸ>ý¨ô£+€7cèWUØO¥¢ú4þä]…ÜÃ(KcX @jŽ‚I e!ÍD>œ ¼~±žŽÚÚ‘5Õ¤=u_tþ7ÎÕ,ê ëÓæxºÃÙۖ꓃«ƒj}ÙŒÌþË{,UxP®ý#ü´¹]%Q™k«W÷¬ôrÖ¬K…¯qC‹SW¬`8b±‹Q54:èãΟ^yM–èsLŒì£m›EŸwù_x6V‘uÛjÞÂ[ÎJ·Ûpnˉ´žÞíit™ÑVå/΄éÒ±INÕé)=‰þÎÞÃxd1(óhXªë1Y0©_F7ö‰¨}’dƒHÞëg°ßVŠwÜ6øì±ÀÆV0žÿ!mIJÔðx€©Rà‹õIÍVç÷Ûâ|êJÍkÓª~”>c=ó3#AšZÀ%n ´ àè’Õ5¸¨Ÿd¸ïÀÛÿ‘£cK—°XS"Ê1¿³ë -n?løåOÑgÕ³¾âʱk:,ëb¼E˜Q! |×4gŒ†•" ×Ôìe5´«ÄžÚŠ€v[†üox:!ü‰ÀŒ¢£lsƒ ŽbîoI è¯kÇ%ÕãÄýTíÔé¶®+ºoðZ¥Þë¨ZÊñÿøho/zïp‘¼¯ÿ®]¥Ÿnœp¾ª/"²Ñ©UTý/''´.óÁº>ç -ÆAXÍŠî¸Þ5 ŠÃÚ§faªMÇÖË™ú²¡ÆN/²ÔeÜæÈµÜdAhw -ï\pšÙXÚSqa×’³)´Ã¼*œ:ò$Ö>¸pWqbâÓ¿èJÂŒ;yêp­µÖò=—È·A!î¸M0ŠHÆ)Çzá(¿jž«vG_qmüžúìÙiªô‚Íúå±LRQêQÜ žEŒé$n ÑDÙ‰ZN7“tc8Ï—øs ™2tËò§b`BDfÓåÅ%Ÿ×c§ìÇçh7vÍfMìEVÑÇ{Pº¡íEûÂö•¬'Xõ|_“ß5…æñRÅ[És7lGçqJ‰ì"Âßú"/Éžb?Tz˜§áKÚcñý,‰Kp¢‰‹t„Ñ#Mé󷳿œÌõ˹À =ûÈöº÷=¿†3È:gÆÅ5+Ûô bGÿ°à¶»»¤z«KѶaJ;'…<§B¿lAçÌå=î8É ßZ(ÌV!#~/iÓ蘸Ǜ,$NVMnÝq\óNî\U“¡Ë «i ·þ©¯ñuê¹í«Í­jP‹iëå&*€šÐ éDÿz€RíúõÑ×G/ýµXmSÛ8þž_±Ç0%0)éÝGh()%mæ¸Ð!i;›FqLJcå$™kóßow%Åq^xkÏÛzVûò쳂×o&£I¥~pPh%©„HeV$Y’Å`Gä¿Ñ™ÊŒJeOôSy&Ó¢Tsˆ]$‘ÌŒ€U hND„]5´S¡%´Tž „MTÕf·µx+5¨LZi+ívÕI?·ø uAÄZʱ̬9èJÉæ;—½öÙ9 ÑUÂãpèÀ4±#\“˜*}C4%ƒ„¶)$>³#Ô2z@QFj2ÓI<² ¦™Ôf”Lp¿…ÒmgŒ3¶ÅXg*÷¡,Eí“QƒÏhˆBþíðTqvüÛýcFÅ 2e!7²°ò.’‹î¢cãIšˆ,b´n±úøÕQ}ªÔpyKhúY;9ª×§Óé¡`‡•Žë!Äúf¶Ó=‰Ņ,•Æ`¶þÉ9îÏ@LЫˆÈ©˜R¹PLôbª1ãY\#´ $X.S‘´à"†¾¼Ó&¸F;Í.´»;ð¶Ùmwkð¥Ýûpù©_šWWÍN¯}Þ…Ë+8»ì¼k÷Ú—¼kA³ó•¿·;ïj 1e¸•¼›h -=M(£r°Ä§à±Å×ÉLd” “ÃËâ\Äbu+5·ÄDêqb¨´ =ƉeR‚®ÅºäÓ}C¦B3)•2âôÖ3¥^Èþé.âz_…Fx|Ùîã!›$Š•kæT½:ÿJRŠhonT¤Ë%ްá)hâãþß2²Ž`X3–¤†‡š2šü #A/"©™£Ô縖ÙAÔ%2áOp½é4„è ¬¨H“8ãlÒ=‘‹~g«”{£*!Á½Â#ƒ" ëÖšP[ø†ÍnV%m^Ö³S#×TïJMCCœN´BØa‘»>$×aáêÉ;K¤ž¤b†”^rýp³—€²‘–K -7\!°…U‹›¬˜K2 »œ·²©&="- ò@X\m’,\ø#7ú’äW–m¬$åè¨yÑ~ß¹¦š+X¦±«Ê˜Í)ЋóVo^{ -âªýþCoNå - -û£w~5F3r'Ö+ŽXfaå[…¶ç6¢ë€lÓIŒT:àôú%Òøuaùé­@ÕZÌªŽ -“qr'û~A?n±õ°æ»…¥ãÊÚÞZ -‹’™œ.yûQ«˜°/ô—¹¼Þ<  I‰,(ªÉû({ ÞsÜ¥v¤U»QÅÌÐyDS¿ŒdÌPŠ0|‘’‰Ðb¼Ú_œØ%û^Úñj ᛦ§«pN¼oŸM\)·³·¡¥Íu·*”k—÷Qªa˜g‹ëõõ"-Õ"ºìíÕžãÝ@EžZzèjlc÷»óVóÓEe!éÚ%)}yr}y¯Âžß‰ †M÷·-v~,y´}){W¸éÎ×Èù1h’n"Фy°ö7r1–¡AçÖ²îJ÷Y¤ùÚZb^–•Z@‰©Sîê·ÂÈà^GY>²žó9ŒO‹n}¸Ú^@IŠ¥áSQ!¿†OtC2PøˆiÁ‰ô)bJ&¼ZÇdU´ÌÙö¹/ºçO‚üûUFÒå´XTu¾øóáÞÔ‡,9 -åO«y©[oñlϧõ[.~˜õ«¨-UgÆÜWjÁÖœm'{¤ÂaGy_u¯ -Onx–=n>ãÇÚQn„>ä5f¾šÍGQÛj×\¹V N×âÆ 2G#(õÂúòkWHÚQé]¾g®©ª~_h40)b÷× ßÖžÐµÖ eÆ,ÇUƒ·ÝβZ†k¾ö¤Bxs¼!,/¾Ïˆêûwj£Tf‹w¯á×ÿ5Öàn1þiz¯~4n7I¶„ÍñüÒØ:©`CX/^<u}ôL0·Ó3±ar¯¡rÅ|Éöîw£v_j·¾tÉÛúšÓ³÷lbøSÐ:'ž;¤Ê;o§ ÎXpC4Œ9Ø:çxJÿì³Mÿ<žÎù%¥“ Þã~5Pt*Ÿ&ôo ’'ž<ÂÑbÓÙãÇÕøI»¿ë}ôxP–äÄ -æ+åsÉYœUðëÍIå?íZës9ÿî¿¢×åZ GÀÙIì„M섺N²[[©”K tfXIcÌíúßn=æÅ —÷’lÝT€Ô­~üú!i^¾ZΗÝ'Oà œ‹CGš‰HD3Ðsü¿Á›8RqÈGlòËxAÈ”ê Ñ|Ÿ€ŽÍüÞ’øß0žê“Îã$š0-âš½áy ð+—Gœ¨c ‹XÚE¥'-G`3Éù‚GZu†œöƒ‹QÿÍLQR¢ŸeéP€•Ðsœ#¬by SdÅ&AK³D„?,Œ D(ùŒÉ )Ä˵³¹†xq©æb‰ëH•á¹FYÆ~YÔu'N•œÖÎmø‘Ê?uŽ¡‰ˆèж^ê[CkHϸ¿ øR£¸(Øb -†Úi—®2þæ˜Äcr0£ -ÄÓü4`š¨é/À\ëåónwµZu˜¸ËY׫Øý€– Ïž¢ÐžæSr¥ÐZ¿'B¢Çk`K”* ,@ÈVäAã(”b%ÑâѬMÔʃ ï¦Ìh^DT=?ÍÆŒ{CèáçÞ°?lïýÑû‹O#øµwyÙŒúgC¸¸„7ƒ·ýQÿb€ßΡ7ø(ÿݼmG“áRüv)I ”TEù$‡'/¡ÅùI-y ¦"@õ¢YÂffñ —&"–\.„"×*r‚ðXm@¥ˆtC7%¯ÑÜ×ÄÊÇR‡†âõCJ·Ëý3„;›u»fÈÂînÛ†CÃ’ ¦âDLu|àµL §$'c¡¤-mü,1èѵ¥T@ºaœ ÷LBÈHÑ4žÄsˆÇÿáîÈ t‰ %w)c4¬f½D>AÄ:\·q,T±#33†fºgR$a -„ee—†#“#¦)ÐQ·pÜé´¼‡^ñ„ŸÒ§nÞHÎ4‡ˆ¯2 ÐÐ-rb~ßÌ‹ÍÖ 6ÈbÈ5Lø”%¡›yrº5”•ßó|zꦜ@cÎÙ$oä¹]D†t®!°²y` -cÏçóñ—§§”KÑ ÄkÀŽÏ½<ž¥<žy¼Á Ëyìòšcl`rŵ -bÌp*ŠÂB1‹IÉXÏŸ÷>ôß ®·£³Ë¼ž}Í¥•LÆÉl^¶—šŠ#Ê¡iÝ~=2K·hð›én˜¼š$‹eÓšeî2ÈAÄÞ;ÉÊê ¸¶åé,ÎDäEÉ\¶Ÿr/»`¥°QXó¸òì•ÏDðÆt]æ~W¬¾¯Sy)¢ŽÆ±Ätnàäma¯°ƒšÉãYݶt.Q8”ŦÉ"“ ©.½Lô]µ0Ó -1Î7–7þqˆ3X›/˜¼ve½ÈÁ)pè>&£Óó„–§Æ€*R ó8œ”’­›ç§¿Æ±ù±iýwrjÌ×rºæ$טOɪ§åµGùí°Ý?Z±dIyÊ:µ [Æ'޲µ¹ºË߬”©?ÊxF­À˜É˼8vºÚu~¦#bnÁõ«5¾PYrÁOE©žlº/IfþöXw£ÛŒ¦Ñë -=ÅäL5[p -ÇÐJ§dªÑ“Õ/C5ãÚSQ)89ÅŒ%g9›LÒ•hÚÉ­I{ôL…7 UâVÍ‘›øhBã£GC£ƒâ¶ÍúmhT,Û0e·ôÜmüâaý™ŒO‹„‘ýt·ó—Ø(mûfâ†GˆÓ)v(¸Àý…êT.~Bt§ÍY.¡¢IQÇ) 8EöÔl¸4¶›Ë··,­›®Ý´ý§(ö›‘h‹‚#'*%N÷‘ -Òœ×)ÙkitÄZ‡0’ ÇLÁmgRP´ 1í|V‚66Ø8óGH-œKŒbS°ûoÉv´3ä -³òöp·âéš©®åÀ·€ê - ’›þ™~y¹%°îG®eÒh{vˆZ²ýé  š¡ÍY÷|œDÊÕñøâ ë!iÎQlÏöñy€f¥è«AúØÁ£ÍÜjžAÝñåèeክ•³•ÑÌ£ »hZš¦(Z;p%—ZÐæÁíLÚ$s¶Ç&1·%Ç@û±"¨"W•»¡¯!︾?ñ}‹Éÿ, ÷fí¶a7‚{«SU_={@_m-<Ìeˆ¶7[u:iúá=È}£×,Ðð‚ìÐ*Ö…ñ#ä¼o:iÕåk¸º¤ñ)Rÿ ´QÌIª›E)nž¶ûWnp'¾«þÖˆôÀ*™D÷7ÅÙjÛÛãìÔ¤|àºË®-=«Â,MHÇÅSÏëãût¦lrD+ó¢ïaŽt :Íq§-îtæ,ÝE–QH†Ti‘Ln“¤„—£k¾NϹ®èKÑÚy#;)|Ú3”öâz˜G“ìÇÁ3ü÷9ï²o )1¥„kP˜]Ìù­½‹Wü1em"ñ§XžWîÀÐÙ{¼¦þ¹˜;†:€ÒŠkž»ËáYŒ3<wÂÒÚÜ-Ô·ÿ¶«Ø®lï,ц÷¼GÜp¥ç¶Ûýåmùt…Ìh/=«=€ôuÖ§¡X>â·ÚVºåµ¢(RÍhNTüž÷ÂúûóDÙöš¤**ÜiZfô„I–ª=Ctu®1c;úfè<`.×0Rå<ä„þ®ýP——Ê*ç/é¶Ú_ò•ÀÔ_㺮ß;1‰B ZyPsäóãçoL²gY€NNl`Õù᣿ÛDm&®!¯;ó÷°”`é]ï?ºÑJÛD`úÊò\Šø(É]M§íÅÄÚ¼úuß>Ø^Á+óvQº”Û O‰A&#nôÑ…[M~E×)¶Ó©î¾‹­nîê‡H¶5»ÅÓœ2aUk½Ñ®×šÆ |¯Ëéå*þh>·óÝ9‚՞Ѥû¬Jª‡ï¯²=œJÆ ¡©´ûUì«Îë¾õ7o˜d-{ê–Ê+G?÷áì|t×ÞÆ¾©±/ÕeÿÝû½—rׇwekîmå¡mOR6NOúE­„¶/Éd±°9ÝœøûkÒçC…‹×âz\L]YÐ5\pâ“mmq,äQ:ö’vŒx™Y£ ‡Vˆ6àj3=§½Ïán÷cL¥×/*´·×Á5j}(]o"T¨õã÷’ZD>Øó´Ÿ›Ô‹ÇÊç€%)ÚÛ,[;hmW;l¬³ã½t.Ü[›xh¶/®\W—ì ¯P[ Ly{ì¦ »nªØàwsÊTwݼ[^ó5¹ªhÿýil{¤;hé_ï‚£Èõp™‹±´ãŸW§ÍXmOGþÿŠ)¢ƒ±I¤ªUˆÓŠj6"UBëóÚ>q¾»îîaÜ”ÿÞ™}¹÷3iE£^U™»Ý™yæ™—ÝÉëŸãEÜêííµ`Ný€ƒ…Šù¡ÎA-8ð?½÷Q(£€”Àã( -À ˜”]!©sßã¡äSP‘–8Ž™‡?£h¦VLp8’pÊ”…°{<:m¾rQÈI:°Œ„1+üI¢ðC`4› Η Æg×cøt|uu<NFpqï/†ãÁÅßNáxø™$?†:À‘24ÅïcAN RŸåÓ\>9 ”-6N2æž?ó=t/œ'lÎaÝq¡k"æbéK -­DSL¥¯tRI­øæªä-Ò}Kªl5Qi‰·w6Sz=†Ù?Çtgó^O/¹Bøú°mÊC­’RLF‰Ð9Õs•ojX.î¬ÜAÀzÕ¥¯”ƒ–I üƒÉZa&‡^¤+L²;C¬1³äjMµ ø‡ÜXb˜çQ@cáß1e<1 ëÚUëK S´«ôìÁ;?db°fœZÅt%X¼ÛÆ$æéŽÓµ[ĘÊÓà¦le n¢¾œ’”²Ë³K§h–„žî…™Ý. ,1<ÄÏ<¬µÔ„/Ø*° ³ÝÀ"qÚjL>öλ›Lµ4­âz|zðS -®«ZÌC/UÄéqÿNW´Ó¦rNb½cÏTEò“2¼u‰‡G7äªçà9M܇. #Å_Á¯ì–ƒL°`›ˆBôqAõ“C‰Xè âôQâK§Î`r1÷ûVCsYµ¿å%um¯ü)ÒÑ 4œÝ–'”õÛ^¢²ÁU"B+ö׌’Ûµžþ“ Öc1¼Ÿˆ«ãPôáÇ:Îj¶~·:ÆR´Rhku&eé!ñ€‡øWßFÚ|pŠw4ƒ;Ð>ÊD´zªˆè•z¡¯¿Wdgg稕.ø3ØMQôû}8´‹8é±$‘¸ûô ÿ*)Ëð}:ÍK^cI›eV«zþܰù¯UncQR1¡‰0oØž8¾–6ÛRŽ“ ’”q|ئSij »„SJvÒœ½½v\gßö÷ýÙöLT!˜”³â8èéõàäÏ^*¬lì:½¾IèT¥`\e€Ibnn¹ÇDÁÁ ä¸)lÓ‰ñt?—©×µ"›½Kµä¼Ì!)kl>|©L ¡Û@kš!8È'Î~-¤£ª¥”‰~ŽŠxQ³5Ó^ÊÊ%¹‡J¤?rƒxÚR+×d‡â—EžN·ÓéŠ'd¦x¥+†‘S“*…|ÿ{ŒV+RÇ×›¾+âvE¬ªèIb”‹K­zº6(ÕhT#ÒzÂYŠàcÑѵeêo£ËrF&ŽxšJ¼1`þH^ª¢|Ä6ÒßÀ„ë©ô[”J½¨•üÏ í± 6ðñrª£kI$Š^U˜2%4Çi.ˆÂ¹žXH“÷p¤yòxd»_Ó0dT=M È ±È^jëª ¹¿Ÿm//û«õìš¼âR¹1ÙÜèJWŠLñwý\u7žÂO˜Éµ·{mqvÌ»Þ0נᛘM¿õX“šÅûñ±&Ýý¿œj,:§([?ÓèqF6O8ÓøaœŸBrS "9çá¼y²Á v¬o¯cÞ0àlmpË%Ò`ÁurP:y«úZÐÉ,õa4¾º¹<þps5øål\tŒ¯ôôa×àhÛ¯¹K+UÔ¹ž‡ªÓT7Ý\çu3Q -¹þ–œÎ?$L½9cþ‘)Ãa¯)h£4¥¦Ÿ‘óîb|ö¨bJ¤ƒ76Õ¾¸y9#»S¿f}ݬ¥`×µ.¤ËmèÁKh7èHI­,×Hä2¨v͆§²æ8;?9ë»èö, ÔuÅcΔ¤4ÃZhÃFs™SÌ' ù-_Ń¡üañu€ï R©|‚Ò†©©8jQB{WÌë²çm:’Srº$6Yo‘ÏͦTÔ7Ÿ|^UÂã²ÕáëV*¢¢H·†¢¦)Ÿ1<•šÕ›¾ÑMí”ÿñá¡…9ðó›ÖßµYmoÚXþž_qŠ"AF$m#õæ“lpk°¶i&ÚŽÐ ¾€c{}MR4Êßç\ÛÁ`CÓ®6Zð=/Ïy?×üþÏx¼ÿí·ú:Q¼JüÙ<¥ÖäˆN?|øÇñ釟ÈHBI—e’*ú]àû—‡âû‰'/˜ÛÒÜŠ©dò$½<ç#[z¾Jÿa™úQH"ôh©$ù!©h™L¤~òà‡"YÑ4JªMÏ~:§(ÑÿGË”‘çOý‰`m–)I±L~šJâ$zò=|Hç"Å?r‚ zöÃM¢Ðó™Oi¦…LÏr\TÁ¦(š &‘ê¥JaO*–ÅŠ‡è‰ -O…QêOd;“F ñÈrÊŠCo ´Ná/dr² ´–üR µÞÿO€(·Õ‹&Ë… SíôB ß#.ZˆT&¾Ô::pš»dHÙľô5/Ó„b!ØV†…ÑúXåÀ3YQ¢ - ±¢ɉK"’¡‡CÉ9,‹(•”¹ ò<€D:Ò™GT4MŸ‘ …°"ÍT,'œgàõ9ûN¯0K4¥J–¸7–CÎàʽ3l“ðyh¾Z]³K—÷84©3ÞÛÖõK7ƒ^×´2ú]<í»¶u9rxÐ0p6tñàÌèß“ùçÐ6‡6Y·ÃžyP`}×26YýNoÔµú×m‚ íÍK=ëÖrAéÚ4³†™WtkÚ|5.­žåÞk­W–ÛgWPiÐа]«3ê6KŽìáÀ1‰MìZN§gX·f÷0 —̯fß%çÆèõj-†esYॠ°ÆeÏÌÔÁà®e›—-[êÀÙk“34;0ÿ4a‘aßk Á ÉŽù¯èpN]ãÖ¸†­-my‡ƒÔÙæ-\±(gt鸖;rMº ºÚóŽiµ:¦ó™zG;nä˜m(q6ŸC -¼†c|¾9ûeY}×´íÑеý#8áRÜ]íëA_Û g ì{–ËÎСhÓ݉ç{_·bvœÁîpàÀŽ[¦„VøÓ-K}óºg]›ýŽÉ§tg9æ‘N-Ûr˜ÆÊ”ßÐ#Ö)Xyúà©3êÜäÞ/*ãK,&b&¹¬ Tl O?KÔX¢Ëímå˺«½£½kÑ—1TÑ¥Ó¥^ö5Ãûþ@w€–äÎ¥#eò­€M0ú¢RdÄqO â€ÿÐ)žÐé0ˆf3™|®LÅkUs‚¾6õgŸK–ÐAÓe8ÑzÆc ¢µzZ~¡§qÍÌ…6]ej^õ%•þ¹ó_dìt^\"Êd2Q±†(×ÃT_vÛ”,ÃV¶ R•ÉQ£I²ØÖѦzJ­w9ÇñÅ\¨Q觪u´-4›IôL¡|.‡Ïü>‘1h5ú-™›žeÂÓp‰¹xÌ“c"r ×ëÅI£]Ë~vÖ´î+æÛBùRÁ¼áÛã _uÄd.ÍP<Ò«‡¿ééã‹™L5SëèøCIaÆn‹-H®üd{A>,ýÀË’¡ªÈÆH…S’Vîê-Q‡z?:‚˜i†ÖŠÇàçÔÅðDdª]¹ˆ”ַ⨞¦·PWï$¬gË$,e“·4¾½æWøñÄæn1–RY/ÊÅK.á5Smí¨ÉûJÍ—Ë ”á[fÕzáJïjÎjøáãŽ|ß(rý«yõºã©Õâ!âbԋ̲ï¤I'Ôø~ û3fR@®Ï™5‹õU"++V§ë'šÅ—°‰„¢C/Ria…k|5M«DXG¹ËÎD„a¶òæìÄæ¯¥e¾ØöÄ«HÅü»ªÆÉ¹@ñÍÂ~,Ø%¨;¤¾z•µŸÂ1«V¡rïû÷ÙV»ÄTK9ª¡”^¶7¦þ÷ Rr6Üa‘yj¾L½è9Ì.`ØÀ‡7CúÊݳ¦V¼Å ÉöbÀÝâçÜ_u”nuÜã¿9qÀ_¬pmdG â74†’&ݹ¸[õ¡®¼Ëíd{Þá²/Kó®T}”µïºÁ·Ý†s‘ìnŽº“ÚÎÏ©é¸]ìÍŸ(˜=Á“y”M‚Áª•¶[^ÑP{ÖÙ™ÝþøQàøéUÑC69)®§"ñ”5ÃRâk’V[dq«;§/zVÁ5¥Y•ùªMuóc¯63ôê½_è{wNXåæ9ñ3!¸ƒ .”tV19Î&M…d+ -"‹ûÇÛ<‹ þ±íýׇñuMÖˆþνÐL†ÜõjW¨æêê¿Å‘ÊüÖ¦æxŒ[§;î n‡VÏ´Q'ÈgÎî+£‡kÏÛæb­›w¸YÀÑgT¬(Ù´ÊuÆï¡øÕ†ÇïYôk ~1”Èÿ,Ñk<ªà¢‰ø€NjµiÏsƒk,=Hd‰ð¸uã²-°m2ÿê„o&•.ò7Sb¥AnþÇô/Vî\ûFcÙuý6À% -¾ÎbÏåä‘ï7¯MLÊÇÆÝ=‰XðBÆF—¢§#]oÈോuì’•£ˆ¢@ŠpÇý?Jq—à_!JW„Ò›Ší‚§b$…H±ª®*èü"?kÄ~,€FÒ8ªv¦5„Ïu„§õ„tG¥7•cþÛTý8Œ[ú"wÎu9ã[…ìt4ÛÚr®%€PÛt–ãöŸÈìGºV!ò­/CÖi>K?­éèêëh¶Mïß òpÜNèÍ7¼ö3@¶ãßþªŸÏÓI©ÕÞãU<ªRl¼m!‘¥XlŒít¿ÔÓªÔdR„¨ Ì½\M|N§Ÿ>½5Î -ków’ÜyK]€³Ý›2ÌCб#æM¬ÜÇ\èà‘Hþ¾Yó¥ÃÜCG;ä6ÞébãéY}·îÖ´ú:£{¥5ÕpKhÅê×ö­—?P¼¶`Ò«”§èÛúÑ:JúÇ*¿ÄFÜKi—›8ÎO?ª_þ µYmsÚHþî_ÑçJ-"Ëâlªòáâ8‰ÙVNI\É%`° I5’ìø®ò߯»GB L.Y>y4ýöôë oÞ%·ÉÑÉóçGðºqò(ƒ›Û ŒY^¾xñÏ?^¾øó˜2Ð ýèNÈ,…7>þÿ~ªÿoÏÅ[¢6Ø:)R!ïżëôÊó Íd0ͳ ŽÀæ§‚Ò8—3Á+Ó òå#,b¹L[ðd·KþŽó –ñËuaè€}5êÛÈ8æÀ³-·ö Û÷ìÁE £9ô o_Ùîô†-¥šµƒ†çpe9ÝKü×ìØ}Û»f©ç¶7 ‰ç(Ò„‘éxvwÜ7â4;£¡k™Ø³Ýnß´¯¬^Õ@¹`}°¸—f¿¿Ób4¢l.1ìX¨¬Ùé[Jܳ«ë‘eë§.âˆJö[àŽ¬®MÖ' -2k¶i‘³ký{Œûð=ôÌ+óm4*UÐ!'uÇŽuEŠω•;í= .†Ã#ïZλk¹§Ðº ÜØµZ(Ä3[ô¹ jøŸ;c×&üˆ—=ð,Ç<{8h"!ÔÔDêc=°ÍÖй&¾»¢/-\G·¸p&Áá"€]¯¼¥"ž^ÉXX}ûÂt-z;$Fm×jrh9¶K{l%ü£‰’Çd>; uS¥pn±kÁ>³÷Á&åÕf DÄ.ÂWÝq÷²@_gÆûÄŸÝù7‚ÒÊÄŒ cÎë~Ž9&9Ýë(ï×UíŠV]‚÷!VÄ(e:núê_|urtÄ5UàÝ -WùE+ ÿ=:"îŽÀµ«“á«GÂÔ§Âãë½Ü,°Fc휅9U -|²„5è«ÀTpÐŒ~Œ‚ê—¼Nø ~š®¼ä` Ksaø†ñJ3MãY€ {Ž/%–`ªÎÄ µq'›ë΄´vhÒÊ#·ß *ñ+³~ïKų´z²zF 31VÈ;­×2‚8¡¾ã+?a/’Ô#¨!%ì%RP -?L|3+…)öéG¢›§$™=yF½–6¢e<¡ÜúÒH›?/8`–$*Ÿ=zt•tÕI}š"1Epî~^Ÿ+TéøKt\¯„‡ƒGšùË„¼Q4nJ"\“Ù>E0ËÄOi’iþõ*œã„…ã² Ò¤è2Á¼ê0йśvšVeŒÍËÃ:^ŒÖÛa…Þ9LD‘:°„¬“±‘µì+ÎqEF‰¦û‡&¸ 6‡”cŠnðŒ&ˆ ë1‚“SLÉ(¢Áz€¨M)²\FpóC]ÙQ£„A -Ô`±ž6hÓ!@ ï…¤£-Fbáça¦NÍâ>ˆó‹]°šNTU: ¦bÑ#‚E SÍÅ¿_Žš ŒBj <«™¨Øö«ZÏ64¾=Qö4>á4Å*ºNí'g­ÿ•>òìOƒÄÕ RžÌhÛ!¨˜³™Àù_eÐ,—’p]3BÑøwß8T±å¦lKÕŽ‚]Õœ¨Epút†Otdå$þ†³c'43²­ÍzÊÑÅ8ªNÈ£à¬FÏ:J.˜ëc2…\UÐCý¾¡ ^,X€ñ ”1jÃo¿­DyKU"ú¨Q$µÇ &o@@—wøË[µ´¯_ÛžƒùJýæf/þ¾³Ç¬Ž g -êó»?ÿJ7©|MYö4ßqž%9_—þ€Ûu~/ä2ƒ±ôJ, æÑDNÔê7P¹F›iÚüü¡È´0Öáèˆ4ïé"!T7"a¬~ ÐÃ$ÅÄ0U£å` Ê*þtS‚å<ñ`kôËã:Le|'"tJ4§â@œÔuøÃ-.Ë<¢Añ¶}`pî»Ý8 <ç†òRÙOc‘¡˜ïª9èùìÑØœUvÖ™µx(Âh™ £ñåK£üSØ[4ÌgxpJB `C]*ë‰kLÇÄÇVenª°|FŽ;€ n!… }‹¤hVù%1À/*«Kÿ®Î✪q¡w…òá–BÈððAU@©õ™øýÅ¥{s ÎÎVèMÛÓ‹ß?ÝZ'G)MÏX·]´ô©ôØÝ~ø¾šõ‹¿Çæ×8ˆ ¦ásà$¥kßp-¶½ênŠE„"—qÉìÛg¤Î>-´o*N­ey¦MXåí6i^¡ýƒu†6ì^`ˆ*›ñ‹˜pˆnAXßÔQ¾r­ÍÙþviØSjt½ÿuàdÍŒç­ê.è'ÂÍÛ«ò{ìrŸÝVõÔ¨Ô%œ½UµÓ_Œ ÏL½Yùˆh;'´BŸ©«7ŽÛ8uÌSu+RCÉl¶ñ n(㪷ëÛú^¹üŠƒo³¬í2£tTܸx ]Ï&“s»oM&u x رþaoÃVøW³“W;`²òFÕ®[d§±¥\ccÜ¢ l†o^·§Ööøn{é5 F³ÙÚ-¬oºnßv=‡Â¸€@£Å9T=&µ7Ï“­•k¸wL×bà´)üÝÛͱ7ìÍÂt - ƒ¤ÍrþÊHù—öà?©–\#ÚúÔµøGHmXÍÅ z®NØË|óרÍoäX#kPòÊö%Ì6« NÕ²»£ä«˜Á‰15t$5u%ç‘lc}]¶ªšØ6Ûª;°¹ãÐ5OáËz©ô³ß)‚WÄÙ9fºkúó´²§zzÁ=/OWš|?úÍksâÈñ»ÅœkSÀ¶×›G%ìzsËk*ÝlÎW.YŒÎBb5Â6—ÛÿžîžIèÂØ®£’[£™~÷ôôô´øðÏùt¾·wôã{ìGÖòçËÀ¹†¬jÕØ»·oÿqðîíñ_Y3ð8;uM`LøþÓþ~hóÝt]FЂ\ðàžÛ‡ð‡ÜvD87‹Ðñ=fz6[Î XœžÜ8ž,ÙÄf¢ÎœpÊü€þõ!›ù¶3q,Ô§p6çÁÌ Cn³yàß;6üNÍþÃëúŽwË,ß³„4ãaCñÅ2¼ æO4S–oÃì…AžÐf­yãßã֔燎Åëƒ)Ž`. D3ÎØéW4X«×ÿ:hº±‹^çÌ Y³{O»£Aût<êÁƒýæ ÷iñÀX³û•ÿéŒáõ¬}Ùï´4»£¶1¬³v·ÕŸµ»Ÿê p6{#Öi_¶G0sÔ«KÖŒ`Ö;g—Æ u_›§íN{ô•¨ž·G]¤x$›¬ßŒÚ­q§9@Lýñ ß EÝ^4;\‰Aˆ¤¸ˆðÔf›§C’ÏÚ£5BÉâ¿Z G`²SgþÑjãÆ ¨9øJ,`ÿÃ<ggÍËæ'±šRPJ;h¤Öx`\"ã½sD5ŸGíÑxd°O½Þi~h >·[Æð=ëô†¤¸ñШ‘Q³Žã€´Ãð÷éxØFý!®vwd ãþ¨ÝëÖ@ _@CÀi ÏH×½.É Êê ¾"^T™¢Î¾\ðÌÞ¥PŒŠk¢:† ÀÖ(9¨‚>G aY×øÔi2º-G{ˆèK{hÔȵí!ÎiKâ_š@yŒâ“Ñ€7ùgÂëdZÖ>gͳÏmd^N&—´•ûÀÓá¸u¡´¯WÆOsÓº3o9.«&¬X×7mzn.`´ÜÊí(?ÅQ­D½hb?¹=AÏXG~…¡£½=Š1À2g£)r\i¦Ùÿöö·*=væÜ‚(´Z¦çåwÕ¡¤ - E‘EHjiýÎÔš2T±áÝ;ïaºm8zæŒ%ÂeO*UÚú]¥Ï?Wr ^›îFù`¼ÉPÏd¶Qšàñ¦wû8¿i·T|‚Ä.¥Š‚DèîÿQ”kq,@zg ”ú¥•]‚žåÏæfy‚-š¾E0 L¯<͑؂ª¿Už¥/ÇJSïÑt ÷íS„Æ£Ý&’38ZPuø¾ê@£Ñíuüœ1‡ÆÍoÎüÝ‚\Чÿ}—“K2îb¥;Ÿî-ÐÝ•ì§ÿ–Ê`µ]¸‡y‚’Sl$TÏŸ‘•ÅtÝH”Ò@w|¹=é:¦ˆÀ2PyÇ‹„W~6UP­ô/šƒÊ©²–˜Ó`7°Ëb)Z›¸M§ŠBiMyùȃ³å2܈j37(’íùB –fíæG´÷z.€¬å.lžÏŒ8Èn?8âÚ sYÕ˜r³Ø™ÔìuA,)\[ÎOfÕÉ×£ת3%’)>ÇS[…ÏxTâå#H[ ¦ÓET®¨Ñp9ËEÓóm—$–(k¿/b8gI¸¦uW,Z4¼# bK&Éf ¶µæ©†,FR.6 *e—޲ò½SZä{Vù`؃É;Q“EÒôÎiúp9sïNäS-•ÁY{v9ºj“— éSM9zžÀõªQÛH5:v‰ „¨…§‚0Žckb†þ’¦ófg˜›5­Fcœ¯á6[>ä³¹‹Gœ\þôhùT\Ĉ7³.é–ÏC4\š‰Ž†Hà~Êðà|øÀËoóœ¥ZyÒ\ÉÞ«DMäK¿áX0ñA:,WÅxLÁð[Q@Eª" æ¾  :«œTj”º—þ„ÓÀ cìÕ`á…Î,^Õ}ob‘Çñè¬\Aô¬¸:ðïØT­ÄûC?Ä–UUàöa^½ «.ý‘áóÍ: -JŠ9aüqî¢ÚAz ‚½+º¿ÈË“WnÚWJF3Ž¥¾‡3öûï쇼u,Dèx·å×™(𲕯ªð¡ÀËܨ]pwŽ­+>Sçduû†ÄþÕ(ÍOÖKüP–좊ÉJá)%•ÜDÙœƒg½‰ §Èœ„HNÈÕ‰ ò¬Ñ¨ð¬¨7·'þ0 PsEèïOQЂÊzOTªq§Ä›—!ûðáƒÑ;ߣ) uAñ³,Qsñ û`ëcÅñï8ûÿ~47ÃéQèáéÖ<8üUøÞGöóááa<»K³»Aœ:;8Ðù9§ºŸ†\äÔ£Õ¨ˆûã!pƒ'½Žà:áÎW£Z¡qV‡Ÿ(-“×ï²_*`qÓBõÁqmË lÁÄbŽå\n×"dqŒŸ(¡ÝJrƒ’裟üœªo`Y†:Cõ -œâÜhû¤OßĦ0_¶ÔECð`!Hôa”˨,j¢qË=˜è#„%Ö÷ptÖHásDƒ£Ø[Z° -“Ñc3°¦Î=@c¹l.€4‹õE… T•AVATî•3hæ5V•Õ³„nKúï:´XJc¥gY¤w|™@ÚƒTo8ì0|J*“Ê%Í çÖCäE@">À á&è >-Ô§,tjBŸ”èÎí¯‡ï˜vp‹Cà ˜@0ÃÒ`¦nŠqKÄŽÉx2iUP~ î -¶î‰€çšª8 Ϫz.ˆ -8­»º¼H¹Ÿ0ç8B>a#Úd:ËØ™O7œrߎŸc[Twˆ•@ªYÂÕRRIž$@)‘â[puÞ/8A¡gŽ'@çNèÜ;á’0}CLTÇŽìJujì~…XbK¬j™˜Þ2yÿ@WA‚ÑuPl#o¡:û€ÊþȘA†ÓØ;ÉÎ#ÄF´1>y Ò\J|"qã+–³;FèÜêÈxÂS¨K”üE«%Ð"çí8Œz"ho"Ž0Á{ÏæTœ(ã'Êrh ´ª­AµsTNç¼_·uÎcÊê<¡>r+”Í¥Ò)Žâ# ˜‹Ù ˜;…1lŠ„ƒÿUÕz9~WSãµXmº„/¿·o=ÈRY‹:«V®4…îÁhZ"wãu?¦kÃ&tGEë÷‰7®ß—DòóÛ_ŠñTÙ~t{¹Ÿ¹Í_‡3yKÂöGôk‚úwVÙöv¸¿Îœ-œ¹ËóÛt38áÈí3ɼó¾úƒFé^ÝI½ùã÷œß(PW0YÀNƒôÏ©¼¡¤”N¹Âêxô^C„_k¹È¼aêç!mß»¦ÈaWåôÂË?£mu[Oð]ÄðèO‚¶l13]—ÛGòE#\³åæ·ÒÌYþßÊQ$syŠ_¯(øœü·˜õ¯Š¿¹P$Ê }ø)@ÛhZq—>½ùÕªŒî+6¿YÜVrEw½<Ô“vÕÍ@½oó~)5yf>^{œÒ»k—ßs¼]ÿûñ?ò^öÈЙú×QŒ¼‡¦,ª„¸Vo{­yÇKý©þ‰~=.÷‡ŽHK¶`‰툕#.m‹ø×ä¾ïÿ­T]OÛ0}ϯ¸“"áTEü€®04mo“Ðà Peœ›Åšk[þ€²©ÿ}¶›¦iêB'á‡$²Ï½çøÄŸ¯t« I—h5ew-Þ"š‡kï”P´†¿Ea0A­…¯”µ¸Šãb2é¿a_ž©Ù€¾Ig^ï‹ý·6ü™:„2À:B9Z˜5†¾’jöQüÞæÙwHÿ$8ƒÆK渒°X0%­3ž9’àPrɧ¢£©‚xŒÒµÜž_Ž…ŒvÍú=ëãÒ45t ·Ê†ß¹í7á9€ì¡ :o$<)%òŒ”µÔþDë…#ã -’4um DÔç—¿ÐÝt“Ñ¿!š7@>qkÑ‘œ÷=Ûc5.G'£¡Ââ>ñºÈàÞ)‘:½ã!ËŽ.5©`>jø—†ÖÇ“à'ú•èÛ¹¼æ$»Ö¨øÒyÅPÇ’ä,e¤rÐ(/ë³ê-Gþï˜JLÜó÷œåÒ=øÐH–XgÙ“JK©§Î‘Ó|§u}Ä÷)ÜPcq³ -¥Iï#ÿã^Çsb󻈒ƒ˜Lû'5®ÑXnãÁÇ¹Ä \Ý¢rùðRpù{‹x+‰P{/-üÞÒNÁ¢ ·ÿƒäÐjOO§j|Ç÷©\êÚÂÃnª»ÿöuñ•ÁnÂ0 †ïy -8°jˆ€Mˆ;ŽH•—™5RI#ÇAB¨ïN¤k;X5_b%¿ÿ|¿§3—9eqOÞ¡&Ød´&âí{"/ðNJAU:GïaŽ:£…>ÆûK“¤î!·2,‘=­È‡\oãºwl(þÖLþv3¶ÇEL@pïF.|äFÃ.X-¦°¦º°^8hþ <7Q#ÎS5ÌøÑk=/­/ïH¯>] åã¨LØöï®ì‹äªv¹o†-¦ÿ<Üûo‚M\GĵUêv–ê …RËNÃ0¼ç+öÐC¨Zõ€B…„Ä QŽHÕâ¬K‰mùÑ ê¿ãGR%i {±ÏÌÎîäáI7ºØ‘ÕÈ>Ú™¯wªUXÁOQ@(Ö¢µð‚¬²~GcÉ€ètKIg!y“Ž 2=+Öf¹<ßa ÏG4søè}s¾k#Žè:ïÿVŒÎþÑa2’Ñþ» ¸—Ì %áp`JZgâê™ ¨Œ 6Æ 7èõ seaî÷ñ^¸4-5šæA [!uS-Àšæ|ÜÐkºòl¨Ý -ÜÃéª~±‚2ía%Ç~‰¸é4–âêW”:’êLò†HÂN¥©REÇ -Û]%2‰ÆúWB>æÄ{(;-öÁØ2±Óû‚Øå3’’plñ‰‚nœ0Z?¿*÷8ï>äY>dƒ:'á{†7ˆjõÉÉ%IàÏ`nPN´†Ï’s¤Fª%jËÍ~ÓËѨžÃ>ÞD)ò¬^Öó\±{b†ÛŒäL›Ù³C­9¡¿ÿO(+˜Ñð¾4âçL0G‘   ÛãævÍ…Ô -j˜p{K¥ÐFYj¢Â:(Õª•úı» ÆÐdLO浇KVºÅ´åMƒJîÍvÝPI’\¥±äD´ºÉù‚qü*R ÃÔÍÆìÃPÿMÈ,…èUµ7™gDÿðwÅM;?«Äñ9vǧòy=«ýqü|2¿C³D¯‰É|åCëT*$4‹êôζJD—thÃQb. H(ÅÜD¥m›±îN g'»»ÖàLkt1Ë ) ~uf0™’[¸möê—ÏÝWÔêç‡vt&í6ðãb‰ :5P¤¸|™‚Q„9N:WT©×©*¹H¥Ét%ܯ¨'ø™ÂkíL9¶IJ­"‚ÖËGáýâŸOQ3&§õ;ã°gO§UÜ «îÓé•Í]ã8=ðµøÖ>~ -9ZŽ´gºÇ}¢ru(ð xX,¤òP+Rwõ[4Ú¸Aײƒ]?XqÌïæð¦UvšÊ[…èߘÆáº0µTêÅðô',Ë“ä®k6à &îʾ¶Û°®¥ä½ïÖAãCukÀ­Õ³ù’xéDaÔc—v¦bCŒ÷,¬ÆÐ/žè”p}V@w}ÏâË t¯ö?l?ZuÕ»ž/°Z]Œã«†Õaé²ø–€ýq­ÿv¶Ï±üÝXÛrÛ6}÷W¬3jI9²äÎ4/¾µ©Ý6θ‰ÇI:¶G‘ …˜X”ìiôï]€Q$H)©óR·ÖrÇ„ÿ—Ž7°Y%6£û•¾"ÃÜÞšÉIªSÉ;ß8\­çä]Wë4©ëÐ%†%(}dÊP³h–âa44«òœ d –)] ,Øz‹É*äŠõï—ï¿wù×ùÅu¦Ø*œ»õ!Qi¬»š5ŸÜ,BÎq;ÙûîÏËË6ëÌÌ·&ug½¶ŽÂdZ²™5Éu¼øí2>Ξx™UŽEe+ÒÅèŠÙÍA/lñºQÛùWo®à|¯NàÕð`xÐ?žÈÑiÕæ:CQO)©”(„@³=XÅjmÓ3þS­“ÃÑ%hÈ©ÍOI<¢|Äò×ýaîmh6„ÕéyÙf쑆pFxQGŸ@?%tèÞËÕöa¹w¿ŽaAŠ&Œ…VuçlÔ¯Àî1§¦iD† nÈŸ =㪠º¹`!¼F¸²s„·S)¦€Ýsìáp; MŒ€+˜^¾|.œ*{ O ¢o@7tÜM5˜HÀu«40‹Ýç¦ql®E„ũܒ|kñ¾çïlJƒe4¥ 3›Ün¤ÿ#tÖGx!bŠ]ú+VðϲmÁ¹ –‘(M-ý SÂCS`ÔX¢¾®ñ1ÿÏ8¡ì‹V¥(¦&‰ýâ¢ØUl. ã[OŠÊáäçãû‚e@ù ñ1ç“ê¹(/m˜o­Y”Ⱦ˜Õ[v}ç+?*¾ý+¸]]Z…±_Ú åcFýᨵÜùµZÿo›Èÿ=Å´Šj\¹N[éžôÚs[bãcû7µUD`s±ÁpÚèÔÿýf–o ^0®ôÚÀîìÌgfwggvüûÇíj{röòå ¼„a°} -½ûU ŠÓ…·¯_ÿ÷ÕÛ×o~5ôœ¯mÿ…q¿Ûøýé.ûî»ìV×kà£#YÄÂGæö±º æzQzw»Ø |°}vχ(Ø…ã-wžo‡O° ÂMÔƒï^¼‚ äƒ] ›Àõ–žcƒñ´C[n¼8f.lÃàÑsñ%^Ù1þÇÏz|÷ü{pßõh\ÄmXü.Å{Ø"–('p‘zŨOl#XbkßÔ•YÊbÏa½„ ‰ÁQ°ïVP¡Tgm{öРTÁ.ÔÖÝ!Âÿ Huug·a~Ìž1Äg8/„°±czö:*&€O-("ª8eK4¾½a¬²Âü èŽRà ¯ Œ2 û î-$Ô$æ»ØÉhÍ –M3HÌ„ü\‰Ë–Ø‘X$ -–ñw\ ³l™E[æÐ:ñ­¾–—Ÿ,´(4±.uÌÙØºV ð}nÌ>ë#mç7Ø©Áp6¿1ô‹K .g“‘f˜ NGØ:µ ý|aͰá¹jâÈç|ó`Ÿ:½í¯¹¡™&Ì Ð¯æù¡CZºfö@Ÿ'‹‘>½èòàÖœY0ѯt )­Y/¦IÃl Wš1¼ÄOõ\ŸèÖ —:Ö­)I£HæªaéÃÅD5ˆÓ|aÌg¦¤âH7‡U¿ÒF}„rAû¬M-0/ÕÉDª1*!ªK Ï5«žO´D*<Ò mh‘fÅÛíˆ '=0çÚP§í/ 5R®!ŽEΦöçé°Fê•z:*U¬C“4\ÚŸ‰•¹87-ÝZX\Ìf#nyS3>ëCÍ|“™É ·0µ -±Ôõ#´vãûùÂÔÉ~ÄKŸZša,æ–>›vÑ×h!Dªâè·õlÊuFcÍŒâKÆàSуëK ÛqÚ§Ü“áT2‡‰Z"%JE{Z‚²0Õ.&ú…6jÔ;#F׺©uùÒ2t“hôDøµŠ’¤>Ÿ4Ä–¼ -˹ǧô1¨£Ï:Oˆù’@‹èéòÁVs1¼L­ŸíŒO[Ûy°ïm+wì:°]Þnïp…|»µ;Q>^­Åˆ^Ý ŸÖèýˆ#:7G0I>¼g'ÜË hÖŠ™Œ…_3ØðÏÉ B¿Ex<úKï>k£Ä#z@8ýßÎcñ«S{¿Oãz!sÐyèÒx…ö“ҕСÚîâ±·&fÓálu$tÛ•éùÎzÇ)q—}<î;2©ìG™TFó}åÅŒŸ%C)3œç¡D(¥²#6Jò„”ÓÅd"!‹Ùf»Æ7I×ÚóÙ]Èìýü«ÿ\jO0ùظÁth'I«l¶ö¡‰ŽèÀtác¡Ý!ñ´§“y–±Q¾Ó$v:håz.þ?ÆÈ–™èÑÆ³ýnݼ(hÑ,¸ãè|¤5;Mµºû{ªé¡Ý;€%²©N(<;šRÈ€Bd’`Æ|Úàä>D ÜÛY1Úb´÷eÒ0ÆÂ€¢î¶MB©àL!MA´»CËïðx÷öã †0QT2dÉtÑ£€ðœR€òêCÙ]ˆÞËÈq½"™2¿œßÎL ÐB×ú´¡3|÷{é_Ÿý`x³]ža`yVq?땈X|.nX¥¼k´¨îñò V‚ï«‚«¢¼%(RqωS© Cú]èã{;z%eÐ-[úgT/š§¾XéÊd%n#´‘'šÀgßaŽ"‡y£²?åÑb‘Û«hä³ |2‘Ò°pÄ<+Θ6fBˆ´eöuá#®«~§Âi¼¡UšFì£Bã*øªd/ºEá -±øòúŠƒô׳+ëMÀ´^ÚÃܱ+‚“¯YÔ¥S@ o%Ì‹YU©Ò9ƒÌË´Óg”ûuEðñu®&'àžFr$4oOAX³BG²F=´$,ÉÜf¥ÔèQÄ0a[ 21ÍðaŠØu¿„= Æj°¡ZFØ{&¦{S~ý“=.§#ù™/tœ5ºè,ä;€# [!!?·I€Qe+L‘ˆ©[wN ëéqÅZ×Y$}ÀZyÄ}¼µò¡m­U`*ÆÖXKLN›1J÷…äJš×îêL¶C9‚?´8ó†!åÜ5ž7þnÃBÏ)ì‹Ø‹/¤¨Ðíó&ÃÁ[ -2Ñgv Ó“p”„?÷Zª›¼lªý1¥¨ÅÌyÜ’2Cí}Ž5úäBJ§ÝGxóÏë7ÿi}0O²O)²½½%³¾ ‹”t2îÀàÏ{üéW˜|å½!öCůɼ£T…X~)$~“Çu‰ŽbZW±0Ì&ÚrÊ>ê¬ß¼ -Ã5»‰˜ƒ3’J”B×lß4»VîÌsm¿Ëi[ÆG¹€ƒÀ[»œI– §À³Ï:ôBâ,¨µ¶Õ£$ô€2GñFf˜ú'ÊÐ%@éý@¡5´DŸ hÞš#aγåTÌäØÅk0¼íA ; Áq¬™OW"yÂÇÃÿêݺ?›ßfPÈŽ,»ßâ=žüðÉ“ùüj¯ôWhÊ÷."”Ú!É-K±"g-í6¡o`W\É$šµ\^EÆÜ89™%Žàжd¬Šº7¯¦yÙÚ-˜e“qXÚ¼óÒ-Úa¦ù,µ2JJÛvWÏW[…®Kk×2OùK÷©‡oâlÇ Ñý™ÝÌ+Å%} Rñ¿Ø yk[‰BT%\×È,ÝB‹æ– _ åMw$gÔÇJïß•ü&¾F—¬›ßðì]Ú7Ïy.dŸ÷vm=mYqm´°~„Žãñ{M'êT]•ªs?ô+ˆ%Ï–x\ܲ˜õD‚]êb~ôŒ1 }´ü#¹½éÆím¿s–ŒÎ:ýBUìèô%&¬¢(DÔâØ³ˆ0H.f?ãhÈA¤€…y§çì \S9Ýg`ïâr<ø¾£ª\ ìvUÂ\¶´wë˜*X}lîÈæO’sÈ÷‚-²ûím Ó -ö#®|ʳª’=JθÇV—Kì+ØÌG’¡…~yƒ4a;wúÍÖN—•|³d|Ò­’ J0\ZZ|KœtVŠ«skE¥®pÐYcK÷\Øì âLº¤UB%¯ÖéQ”=ÒÆ¶ÒÆ¥ -›R©¸ÕHÞ+ËòË]-­YÑlÏ_’µÍ|iÁÏiQU9¥ŠEª¬ë]Ý‘šU`¿pâoä²9yÛc5vÈH™œ–æ)‚ªf¶ÇÅNÕzÐÞ-OÍ -èY!³•¤’˜lQõ´ážoÉ3RNóâP 0)&ñª¤RbD,ìÿ¾´N&b ß0¡ãQÇK|ÔøÕLü”î/ƒ„{7A×x^“Ú_øÔ»­Ï観!ƒy¿îR ÄÆŽUK œö×éåáé1×ÇìvÞ'­à×ÕéÄ*?á^îUü› u4^ãù¾{¨TW•…m—}¡ÒR޹­H~Î ®“t*ÿµCë#juL+©ZBÕŠ©ëE„VËZQ¸ôã‹Ê/4šA7ðÞ«õ¥„{¬žü<ùµVmo›Hþî_1U:»%/­Ô×4½`ØÄ+aðNµU…a]£bÖeqÒè”ÿ~3 8ø-éIwùàÀîÌ3Ï<3;Ëû?³Eçøå˼K.î‹ôÛ¬„n܃7''¾9yýÌ"ÐÏ¢ü»(Jï#|?Ÿ4ïG‰ø@Þf–öVP%Š[‘á:mù"IUY¤“e™Ê¢<¥æ ä²ˆ…^™¤yTÜÃTseÀ]ZÎ@ú¿\–0—I:M㈠Œ - QÌÓ² , -y›&øP΢âd™¼KóoË¢ j¸ÏýqÀI?ÂânÈ|< -¹çöP„kT™šèmk­=WçŒbyþ á’º\®cÙ]=ŠI8“äP@+l[bTÔ3l% .»tø%s-F»]ó€õtkù< ^¿61ò˜Ò×ECnÕc« ]Zà`ÚWœÈWƺ%P^·®ckP«ßœŒóE¾ :V&žØLF‰^–xÆ -}Ü~íF9œj¿àaì»à<ɘ+ͨØàT¯¸uÜé胔„3Q|nHÃß¹èÛôì -dQê+%‹”ÂÑ4¹ÇÙ²Hpöˆ<Ö3Ë üX¦È¢ölþ­µ×"„Æ:Öÿ5°è׋š>%‡s¹ÎšþpÞℇÚÞÁ~º½—4©P§;|3q+²]Šâ%p†·rÝw{m›åkÓeë/†¯_ñÀë§y×$ëš’À/…ú½M£‡I@ëïÍüë,hílqºË¶ G¶ëY6Æû)ãå ¥º{¸hUød=:vˆâYw‹q¤j¾pö^LÓLlÓ_:…îoiþµR´r0š•Þ½]~-bØ02»µsïtËö¡³þ¶ž]¡åZUô‰Üêò¯ÛŸ©ÜRäSåõeo>ôÍæKñ\ íª½'Öig? ~#.‹\#íîºíW ²!ômòêÕz`Re½ÎàíÉ.ÊY!ï w»Ï:û‹‘éXQþ{Ùp¯킾.£qAÇПaíCp`<ƒùî](å0Êï-Ô{JFÊm­àí˜OÖ|£½vùéfýýÖ0h¡ÆüWQ«x« -¯Bn÷â¶Û+»:£¢ñéËjícºv‡‡íެ~Ÿ»Veñ¿€Ÿ—ZW„žË°§ÒÈíu=Õ:µX[o£È~ϯ¨EZ<ò\v¤ó°“ì`'èãœl¤H£6´“V0xiH6»“ÿ~ªÚÁ€æáø!ÁtÕW_U×¥Û¿ý¾¹Û}xûöÞÂ8ݘ³ ¾ž=Z.¾xcú¨ùF®™³k°þœ{–ïƒë}1wlÄCž9 lË‚=;‹‰=;b¨hº8ö… dàKjV‡2¸S¸°¼ñ9~5G¶c×ÊêÔfdqŠ&M˜›^`ŽéÒ|áÍ]ßrqbûcÇ´/¬É{¤vÁº´føç¦ãtzŒNÔÝ%À‘…dÍ‘c•æÐá‰íYã€<{yc‘¤3nmz°þ´Ð#Ó»V¢."ûÖ ”Ãu˜˜æúh4ÔˆmÒxáYDÜ”¿ù, Î\w¢"ï[Þ¥=¶üp\_ná[C4˜CZGŒ.ãóháÛ?²gåy‹y`»³á -#„LMÔž¨X»3å3Ëõ® —‚¡¶bWç¾ÇmŸ©VL3)>pÔ%Ñ*Æ3¨9 3ëÌ±Ï¬ÙØ¢U—€®lߨÔòlŸdìÒø•‰–ä¾Ú4äV>ÖÒy¨¶ì)˜“K›È—Â*%0"v•>øÖ_ŒÏ«èëÊøºaá=»åTV&Vlœ²H½gÖX¦Ê­ßDùúÒÕzh ÷M øcGL¤b4ò'à”_K¾ŽT—AÒ‚;îsžÝhÚðïÑ)ѰÒk‘ñûГ²$éxqRê`/•¦L-i ú¨a«?Hîe8y“•¸­½þ°}ÆFô€]ŽC%sò - ïø+8$rfÃ2¶†›f,nJŽšG·b‰¡†U‘„jÐKž—ZÆ®òãµÏ1õäw§å"|yñU <ï§‹³¹È;v/J·Hɱ&ƒ -%á„d(Bƒ±on6qu<éË£¦rˆO]¬ -*;éí-ÏŒÁp7xÕ×nê4Ì~ó•ÄŽ•w§BþQž_àÉüP æ §tÖ7F¥t‹ßñF½ÇT!Š•ÐŽ„’jrvÒGž…Lò’÷ŽBÍ úˆ?µTyY [ÆïM9„Å#Ø+~Pê’}Üô¶È¦Ö]zÔÏþÆÑQA%†û;!# ïÍM§/Û,à†ÂôHœ:Bßrãi_ «ƒ p+t uav¤b³h‚4æKªfÑG!ÃkÖCOdsu'rN·œ~âxŽïKñ¯˜3žo›î&Íù_Þ€0·ðj馺nQçQ §cæ.Ó4ÆzPš]5Ú´Ô·\+q£‚Æt ¼…Õꩲâ_fcûXS¦ê«à:‹ºÂzwŠG; ã"â²9Cn·KFWÅí`XïŨ–ZÏmÂÍD›ªË¯ÿ´ŽEr/»úiÌnjIòIæ|m£ÿ ƒôùóÔu÷ê›}áØ³ÿú½ -X6#‹IwpÞ±lTˆ8ꚈËrAÄšè*֙ўt€çéjÀ÷**œ«Û¤9<\5YÓqºÞàq.×ÊZ™¸Ô¤Z;½J3Ž]°CSó˜9`;µfع×[^,Š^|©)5·µs_+”>ÍäœÇú-$¥ýÝi+úÜíñ±t[ cñc=eÛÌ=.‹8‡ãLýß§”ße飄¯Hr±æX[|Ó8ÓnÛQûŠÐäü½-âÓ¯I¡èÛÁ´¼±ÇV5YjŸ+ôJ™Ù'M5Ê5|êP£•=J”œ,ïR*Wö¨¹´Õ¶hE+µÛØ‹s_º[¹ÂÏtâ”a7ðF8U%‹Dä²»kU©¾¡¯IHåTØYxgÉ*Þ¯*xü¯K¢bTqkVâ¾ãY3 Í툎ñQH>Ï”ã݃£áƦ”Õö©…÷9'vÞÖ垡հÍÕ¥®ôšéFgÛÝŽ2©mâ7“ôx‰£{f硾1&ºn]ZýûwøIÈoøhèwÞª¦¥v·Õ·Œ7gâ' !þW#=ÿ QÊé·æÔ‚~9åwÛŽÿæà$ßKåÚ Ùf\è7ü®>A%Är>UË]1©4ÖyY¢`*(­wplí"ØTÈyçYM-4«cWÛ á4¾ï µ¥Z4#³‚_2¼­aòêù]^OáøÅE÷…r‡Ö7”æPëõšã¨5ÈñßóÑÿµUQoÛ6~÷¯8yp5É -ìaK×…–h›€,y"×À€B–hG¨,z¤” òßw¤¬YuÛ¡/Óƒ-ñî¾ûîãñøþ÷Ããatsu5‚+ðÕáE—»ÇÆù%¼»½ýåí»ÛŸ~¢k “*«?KÝxŸá÷ý¦ÿ¾.äMª -\´-ÔO²¸ÆukJdQšF—›¶)U Y]@k$”5Õê\º•MYgú¶JïÏeóJ»Õ6°WE¹-óÌx3ÓRï˦‘´z* |i³$âT•z.ëäª.Jg\Ð^6¿yÁWÜ ¨mO*Wz·¦Ázš ÉZØl£ž¬©WªVM™K¯Ct) Thq†‰ëâŒfÍ«¬ÜK}ýl0ë@—ž V[´Èð"ÇZ •·{Y7Nôop_:hØgÔeV™Ó¸sуB†%F²t±Ö§ÎöÒ;ë°ZÌæH¼ÃRÚôDöÙ l¤m$¬D¬ 4JÛ3Èe¯ LˆW IlGØ¢¡SĨmóŒÝЃõmf2·}†±¥í>mÛ«î͘A%bÎ8ðx*V$¡€ïË$~` `²F#?^®6› ˜Ça@$ -p5 ›¤"Æ…7„cäwxÐF¢5ÐË„rql± âa‚„D‚Qî‹ü0 X4ó1œš±€-˜@O{5ú`ˆ§° ‰?ÇO2a!k—uÊDd3N1%%IóÓ$i™&˘S°%Œû!a \# Ì ôFøœ„á7+Æ"†åZÀ E²dÒ.°„úÂVvzóQG$zÀ—Ôgö…~¤XIÖ®BŒEdNÿHÑí™aã3ÎÔ±›ä§ ]XâñÔBñt© 0‹ãÀ)ÏiòÀ|Êï Œ¹.åÔÃ$‚xÖŽ(¨šñ}’rfõ³X,4IÒ¥`qt‰"¬P!dJ0:pZÇ‘«ÅŠ“µÅµb¸­ð`5§¸ŽÛ¹Ql…#VŽúbè‰YQO1(": ÙŒF>µÖØ­§—®µÆ­ë’¯fNmùnÓ[÷:hgÏm-°)àYò³k T„ÛWyêÏê÷'ãþ埳´ÇŠà‰­TV¸õ¬Å3¦Ýqû±åþ4Õ~ ÂûÞ ÷NÄÚ8F@Ø}v|oFnÊ i âQr)õŸ=mø{4²A8Pív8·ŽköÁ!ñ„.þjKÙÀo0%!§w'w±ö“Fg{Ø(UcxÇ Ô>9KÞ—Y°ª7ÓÍ‹³˜×œJùª‰?ØAx#´Æf6w§«ªfùUŽ.eÝ»S—‚ýø#´kdXÿZ×RŒ[oçbÿ•× ¥]3_±(§àÕ[YsÛ8~÷¯@RÞ‘”Ð×dó°¶• -Ñ1«dI+Rɸœ”Š–`›eŠT‘”™ñßn€D‚0}efù‹D£/4¾nÙÿmq¹XÛz÷n¼#`qº—1iN[ä×ííÿlüº½ó‘è¡OÉçøW4Œ#²ïÀûç³ô}sF?aoÝóë‘F4¼¦³MøŽM#:s£8tÏ–±øÄñgdQâú$ -–ᔲ/g®ï„wä<ç‘FnÜø’!û,c2fî¹;u†<’ çnÓY„Áµ;ƒñ¥Ã?øx^pãúdø3ûE¬ÓœÆ»‰^¤¤[D‚óT©i0êeƒ=±Ê"[ç,¸Æ¦ÔS~»SªqnH܈xÀùˆ‚ýYA+:õwNÃM…6 UðKª X;[‚†¯¤IlÓåœú1szÊ:nÁ¸@’¹ÓÐu¼(6p¬·`ˆhbŸº¬/ÒøÎœ¢b…óƒ¼9J缂0J™;wäŒb %¡þ )Æ è2bJ¸›€ß ”„p$çÐÀ=çñ DCÊ, ³hA§gÐ×Åè 1¼|hQ$Xb™±‡ö7}dø= ¾š]£KN Ñ Áðdd~9²ÉÑ ×5FÑû]øÚ·GæÁØÀ‡·º=ß²Émzÿ„¿G†e‘Áˆ˜ÇÞ ü@ÀHïÛ¦aiÄìwzã®Ùÿ¢àÁ¼9°IÏ<6m ´WÍt&ƒCrlŒ:Gðª˜=Ó>aRM»A¤N†úÈ6;ãž>BNÃñh8° ‚&vM«ÓÓÍc£» j€\b|5ú6±Žô^Oj1!š‹  PV?è\Ü5GFÇFËò_ð#(ÙÓˆ54:&þ0~7À"}tÂ,„¾ÀÙ2þ;:h']ýXÿ66 *x©3ǨøàYYãË6í±m/ƒA—yÞ2F_ÍŽaí‘ÞÀbŽ[†Bl]Ãvà^ƒfø}0¶Lôò2û¶1‡¶9è·À ßÀC ©½»Ì׃>³œ5 _t -|;2à; {ŸA1:NGwXàÀŽ-R‚Tð§-KúÆ—žùÅèw l £o¦e´XhL iL.ü›’Çh>4ÐÿÂYcCKÌC¢w¿š¨<'f!1“ð¯Ö¸s”x?ŸÎôʹ 8­t˜±^àÌØwg s,dÓ­^Fùœ£ZZU"Ÿ=@D?bX]Òã¯Ð´µ¶Æ0T¦Ä¾¤¥á÷TiòçÚvÙÚ"ã!ù¸ùph¾pböuFÏ]Ÿ6öÊ´'?44²³ýáãÇÖ#pÏIó §šedV Ø’ä)ð;IïûD6ffÂq3SÔ¹aÉϸ ú€ÉŒ:½Cg'|gð<ŠAÝÓ!Õ§¹íÜõh”pNëXsn|*—Ç8írŸ+å|Þq$¹zŸ9® 8ægK˜ù5—ûYhG;‘3dîЙ‹¥ˆCd¼.¤ Ì4ÉÜ«êë¤eès G4Zz±Ð¼UéQ–Éše±n¬~¦z\%ÄÕ³C ’D¦„ª:ÄWä SMÒ^1׊òl“­€CâÒO4¶±!*[€Ÿ;à\d9Å¿Í'IŸ..¯L®è]”öÊ’q¡D+´·÷ û¾ ßß¿/:3]†!ez5™œVI±ÓõøÇ^©#Ö`içÓíí¶=Ázªá_~ɸžî@C‚Èø=êvŠ1‰2ø$%á>…ÿNŠB˜#·RZA>èŸç²¶Ò±CÃRp.å^÷R«ß¸þ„ª _ˬUe®´]IëÈÉ -ãäÒ‰8æ`9½»Ë~jPà-#ÜZH’§|x$oìü`Þj³b` ëÅIgÐÃEÕó•^gÑíxÞd åäA¨™8 -5ÑH1zOþha{!žWe$èÓ›"ve2Ä4¥É¡«%M iþÊ!´T5×AT "J½¿'Ó{“÷dç)âYåXWþÆÆª|!&r|Ǧ¬e÷K°)…:P/*0X z )ÜWY¶j@[ë -#Ôè¿bmE¢‘†ì“†œ-qäcí ‰¡ +‡bîˆb°€dÆg‰Év=qÔ8i?ËýƒæiŠ}*Òex”ˇÿ º…ü&kÚ$ïßd·œ a… 36’åî¤é0©NÎ/*Òz¾š­G%¦ÖRº–Æmæ¸yÝNÖ*è„$aêL/9ôM"Ü!Iܨ‘¶AÒ1]È1ºqãé%†sp°X‰Ë09üǸ㶫¢é:µè¾™6_ ïVeÄ• ŸrRðú@Å|;w³ÍÜÕƒ\Ê3õè[Ëê#ÝŒêiƒ1û*ª¿ÛF¿k)µ(D?®‚ªuÉ¢3éõ:jã8ÛêUk^ž”5•Ï;¾†þ ­¡R›%®Éª*UsQb/ÂËéCÞ5í¦UÉ"bSèЪ¶³Àº"¹ªíf¶?Á_°ôu ÆR¹+¾ ƒ›¼( Û)]`kFÙüø¼©´ì-_tÓ0ÄC¡K¶ï°´ÍÅÉÆ%[‡³C6Ò\úôvA§1;¡‚Ô†kˆÅ­Í·JqPeÔÜÝe T ²kÅð”¶úER¥ÉÒ¤´y¹@RjÀg%I®_Ûj··eÚ=qÀŸ8ÐiYˆ;Ö²Q~äÈ*ý$+pBzN¡!Ö}Íœ@Kª&ÈÕ˜®¥Ûâbä4ïʆuÕç’‚]„EåZ%£Fð$Ô)”½¹„:»(²Ú|¥ÆgµVjÑGÎÙ~ÿ?³xþéu³²ÖMSîß\È®ÔdÿEdÊí'ÔbªeR=,d„Ày2~T1}Rýò¸D»®BnÚÂáT«t)ú%\$…ØU Ïò„ O½ó½^åç#k…Y¬â*x‡ù@•óþ¡>/YEdžHv\Á¥±”„k´<‹â0Ð"oB½ˆÊº/œ-  "ö`ª7QŽF6¿J¦åzD°9ß+ŸýF@¼ªqCAÆŸAø.É^$\¯hvV:ᚉ$­°«'щí¬#‹*pJ½Ô|râlmÊ&‡Ò·¢`TNŽ[¨»E4N}µó£ò ç˜ì+€†Y¯[eH‡U{Âx³Y]gWsÕ™jü(C0»=ðz¿þ*L ¬:sé5¡å_"®l¾ÕäÑ’ºð›§ÌÈ?j^wÐYg'_éæG/Òˆ—¼ð|Yž‰Õ'ˆ©ìüÌ-Þý©³vؘý;ô3y;Mè -Z9ß}òLÂÓE:_Äw$¿¡—ÝqÀÉAœ·U GퟎrVÆ‹›¶Q\ë;Èéìä­¼‹¸Éá8‹T m±.ü•~Š ŽÄ'®ï¹>»ö -¸~–m_U´ÖŠYå¥ç-±dé®bÕ#ÕMu%H4öÙ+òqÕ¡ei>5š?}:ñ‘–ßaÃTÒ0<¦^-Yx”Hð ¦oÙŒ Ç]c‚Á ¾Ÿ9a9ÚíÉá¸ßÁ»Ìi‡ÌaÒ>’I#q:ø%nŒ‹ë&>÷ke‘ìë|"ÒýÁ„”]=‚œÛxÿC€¡tˬnáÊQÌù"…ñ¬‘ žÃ…€aœ†\E<§Wi¼òj-fùnLtåVܦÄG<£+WÙi ¬I8T…h*XøI#$ÛqÌÇD¹ë¥›jï  ™]ÿGÜÇ•@²{+6M1°p+¡’·ù–¥.¶ÝMà¥`ø­Üð'ÀÌÈ‹õ[Å~&>­Ùž+[(Ý?¸ÝÇ… ˆ[5k|*¢X|ª _öp’â^C±_üÀö¨tËMÜO«s|¯Øú¬˜/bûËn›£¢›mñîæË©\r5‘ìq`U¬ê!¿ ¯ºðýŠMa°\ÈúdE¥äRRô§+3e…Ÿ ’<ó’JU+iqª¾Û‘¨¾Òñôy­çÌó8š¯!þ9°Â÷2“Rüðep„^Õ~yñY÷£ˆoß„PÖ2ÒøŽØÃøÍ7Ø"<Úh“C½gu$2©éI7ä˜XÆë}i·Zö(wY+¥©8ãýÄŒ„Ïã6Ï*wÓØ·\¢Vju‰~Š^`©ˆ}xìñÙŠžªT”`#Ÿ] -²jH\!S¡ øüC2`~pü9PÐE¯wnÌFì ‡²pòGü_¢ÙÖ4IOѾ矄ÿ&Ê7<òÝkÐ~g/åz¿ö?QANÃ0¼û{àQÕ< ¤= qAˆrä²M6…k[k»!þÎÚi"¤^°dYkïÌÎŒ×~ðÊâ‘‚Ç–àm ¿oRtÆa·Rª®*<Ï=xF&ðÈ¢ƒ^ÛP6}FÆ6BGrE´C gmA&Ap‰…¢×†‚°fâSC^¶[ƒöƒ8X£ÔÍ~ª—ÝDëüëÃÿƒXÀÆ(í˜Dô‰º¥ðÔJÛHÜgO/ÅÍÓ\+•õïyUc ô‰l1½¨.^£v6€ë'Ç ´ŒË©ÌCÂ…jbl$B<®Dò˜ oþÄ““õìv…cЉí¨è•B2ñòT—Ó§½Ñ-ôɶYØøS·×cîVêGýRÉnÂ0½ç+æ”%Ç¥Ë µ7!c ±dìÈvh«Š¯&i6Pç4Ê̼ÍY¬’8ñ>Q`Bá-¦¯”ª÷§ÔH.ñ¾=l޵†56ñ‹<%Xa#U1s5 ÊðxÆ -´QL7Qe0)ûD±36ü=S”X4F5,+…¿P0¿ŠÜ@¤°4©WÖjZÜîé¹F×­+ÝqFà -b˜°Ý–¨ Ø  R©(&1ª¹Â:»iîºòMÌôÝCe{Ù,O¬Ñ '÷'ýyíôâýuW•©±A¤xÆš¢&;;"2µ5°\´K¯¢&UnÊ\)ªSn¬‘ÓhÞYkõfp%…Nwöy²¤F0”$³¾VôÀ>Q¾=ú… niÏ'°ºwn+'6ñÖO\f^c_Ï,¥¡éÀç3§Ü(N²[ E>«ã°9fËiýËGÌ8E>ƒEÝëAÞ‡Y¯gŸEîQ-˜k;eÃá?‚±ªT"5*bw]ê,µ‚Êãºx?µX]o£È}Ÿ_Q»ŠdgÄ$™‘²ÒM63ƒm’ %à 8ÙhwµM;FÁ€øÈ\ë*ÿýžjÉæåòCwÕ©ªÓ§ :¿KéÂuüñ£ú¥4LÒU>. -êÏéËÉÉ¿>}9ù|JzKD"~’Y‘ÓïÏß§ÕóQ ¿Vz‘BÈ)“¹Ìžep´™«L\„y‘…Ó²“˜DP™K -cÊ“2›I52 c‘­hždË\£Ÿa± $S¿IYÐ2 Ây8  U¸"“”Êl… (Í’ç0ÀM±þH`EQò3Œi–ÄAȾ¹rZÊ⬑c;Ïœ’y•à, àUæj,gx1Mžyªb0NŠp&µ"Á,Ì)(cÕ“ˆƒF†ˆ<‹D¸”Y“½®ÌA¯*30”Èöÿ˜mj’Y¹”q¡¤ -çc¬[£Œ–¢Y(¢|·8jaB­ ®’m* ¶ÅRr’ UÆÉn:ß±ÆL²¼žÔR¬h*Yt¨,!0¬/äµL -Ikê€ aH˜æ˜X3”'óâ'TS¬d™§rƺ„ÈjÍXŠñZ”yÞQ™mzä9—þî„û±ëÜš#cDƒ{L4tÆ÷®yuíÓµc ×#ÝaÔö]s0ñ üª{ðüu»1¯Û÷dü9v Ï#Ç%ófl™ÀDW·}Óð42í¡5™ö•FÀQ ;>YæéÃÒw´]ŠF9—tc¸Ãk<êÓ2ý{ùÒômŽz‰°:u×7‡Kw+´ñÄ;žA\îÈô†–nÞ£#¤ƒødܶOÞµnYÕ£˜zéèÀ@âúÀ2ÖaQüÈt¡ÏUîî†àÉZycchòñ§Êt÷~[-üÁ3þ=-lh¤ßèW¨·ß ¬Á/Üpâ7\€sYÁy“ç›þÄ7èÊqFj5<ý5‡†wN–ã)"'ž¡!¯k<$°ˆiÜ&žÉ|Vx¦í®;û¦c‚”;0†Œu ŒÿŽ­êyŽ{ÏØLŒZî® ŒCö¶Ý3™:ÓãÔ¡_·Ftpì× -'Û¸²Ì+Ã<ë0Øé‡[鹦Çvæ:‰;L˜µ˜Èq}[“¼¦–œÌKÒG·&±6ÞÊ ™yaÆ› ¯7+ÒÜIßS1{’Ÿtìø(ÁvN”ØŸ™zzÿ›ìû®[¾ÃK{ëÍGß#tÛ8WÙ ¼YëÇýŽ?¨Î…B$ù éI™ý]•Bÿý ¬øEYÍÂLÎÐÛVÞLÄqÇÀùÚ½:Ïi¼Ù  #t´ -Œ/tªg´e:È+ŸÖÌ,Y¦¨ˆûWÇì“\uŒNškØ…&¢Pä6 -=ïH"ØT¢_àÝœ‰Uÿ°nXNÁ$ÍËx¦¾Ðãñâ@¯î7«ß–¤mÓ9DåT»¸£úº±CÄ6 5³ ›µÊ{y=Ç\Ã7øtèàûE¾’LmŽÄ–ï ã…±(ÊLþ!W}^˜WB`†¡÷Vî d[nûÛ%z ¼¶„ýà0[‡÷–¡W -éð†x%ÎVG#Vzzü”w@ÿ`F’} ¼(§Íáœúlò ÿƒÏ’|gش䫌£0~ªí«çe?ûû)Çò'ýÍ{²žÌ‰Ö®î— êõè[{âŒX…±âi—ßy;^ˆ¬”ó9¾fâÇþ+F¸è¯9oRÏ/dO,«‹ƒÍfþC‰¬×;oY$)z_=¤€Ãi’5p­ŽpØö®e[É]¡·b±ì+FÏΜ±a{žõP7âøˆ»Í^Z²xÖSµÜ:0”LÒ²àF„o½ºXèˆzG {Z=Ø_=úÑÔ Éݽ‹Ñ7*®Z˜Œ°É¶óþ*…*د©ˆÚÞPص¦¶ßå¾5κvøÉ}xœ?¤˜-úmS9½Þ¯Ýœ7ûÖVk\)« ú€ICøƒu­#+ ŒÖÄì|´Z&mž/÷Ë,^c·{ÁË[Â;>&3çóiÆÿàXÑøzL·2Sêã³ãzFý³"H$Ÿfqž\'D‹¤ÀÉ\±û­‰;€û‚;ç\DÑßÁ|ª]§N¹8€ò©XÄ ¸€Üöœ7õl–êftÚ’"~^>üM± -1DûûŠ-,’Â/PÁN¼+Ž÷LpÝ„d‚Ü¿›S§Yvæ1³ÞF6wÌÑX„Îa‹˜ú]‘@Á\àÙ4PeÉä m(ÉâÞ>ù’¡o#ÍÆÇð…gÅr&oa,lņ+JnÈYéŠÁŸJI 2§CÅC¤ÆZù~là:$Y-Äù¼ÜTŽFœÒZ¯~UÓg»ž©yµWmo£Hþî_QEkÓ:•›L§§( Tªß´Èi“†Ñ:Zl@g›´rå¹i+ÓÇ(ÄCþäø°ÇéS”ÜÓ*Mˆõ2¥´ù»*.:ˆ-£t]µJCHYÙÖåCÒwô24óˆ29Wtcº£ ^¡e[þòzeùSöx—Í ×·FsÛpÙÒlîÎÏ$†8¶¼‘mX7æø aÀ/™Í©OÞÄ°í£ˆ¢ — Mk m³tÀcË5G>#kžFàAÚ:y3sdñƒùÉ"ýS¡ ËžùŸ9ä°OcãÆ¸F­CP‡NÒhîš7¸sŦ¼ùÐó-î›tí8cżgº­‘é]íxЏ¹gêpâ:ïà -XÃ6ž‡sÏbþØ–5õM×Ï|Ë™@Â-B¤´ÇŠkgª0ƒ,ǽc»L†J…N·ëHûTµb&Î`:<8òÛ’ð ->ýXšš×¶umNG&ï:lèÖòÌ*-×òXÆ*ßðXõæ£IÅ~}2>lƒÕçà^ð±2pbã4ÕzPàŒIuÜ^7Q>4]íúKˆ>ÄèˆI¦"zc²ËWl÷zªÇ dAþƒð„ÿ­ƒ¦?{=VQÓ‘TïQ¢{pK\ÁÉ—"ÂDQíý}sÜ%ð„–„þó»@ÿ©´k#ÿ/•Ö_B†²u®~Ñ쳌<ÅE÷MYüv„5»Š þVXè§§¡Ø²@²ŠDvqL`ûÈ£5w—Ô¯û‹å%vO  KEñ¸öø dðÜCåÉ`ƒ!uÛt9òuÄÈZêçM˜ÅCë"Y©ûJ&òq ¨fì À µ>§<\~|ߦY²!áë‹0ýôþ>ÆØg„aTÞzDKâØešÆ"HJ¦_‹fÙ˜Ö”Ö T—¤U\~Æ“Pc9Õ„'4_ùª\/ÒY¯¼e‡o¢tKË\iJñ M)6XYœ~ÙզзOïÚÅú}"ªàù„ûÕi.6Û¦— â–YȤH©N§¶³|pdbqû­ˆù­Ik%º«ÙÑ>é³Ð»ó󓳚µÇ¿e,²_û‹Åb61\üô;;éÓì;ûJ"æû~ã³2ý·•ð*Ýlq«G:ÂHr¿Ö‹+Ë6‹|©´,¸>,üÚqÝÛgDðE²<•¥ñ,•ùð¹iÚࢣ‚ûvÌóá²ì, Üï…Ö¥A/wµ=]¦fäšîÌV.ßSˆLi»V¾Ú¹^/布cÂl¶@|°ôŽøY ôGL‰my¾ò?¿§Q²óG‰XJ|¦]¹&ì¶âäˆÉ¡éo¹MìurE \òlǨpB´H¢/Q¨õƒj”ô{:ƒ.ÏMù/*Ƶ’ïÏâ9Óê, *žA\ˆ½õæ¼æpND¼å!)q”3AdçÜB®a°ú‹$ƒ”Q‡”ª¿E¨Lôó°ž+Q²N¿s¢ƒÎ jèÝ@l×A=v5K rÔc"žhÄ7âžÚ¬«³B¥Lƒýƒrªn1œåÚ:ƒLAD¦uE›CTÖ|gõ,‚ÕC•>®ƒç…í(ÈètÅ­JÙ]«ÿƒ—(… ƉÐJÑ‹Iî$ÿ@¶ó烆òÃ\BÛ¥¡Ìí°×———oyß‹ ]…ûú:Z©^ ‰ìë!ªŠ­_kšN=rÐ)iÿ˜•†ûÝzì¨Ô–Ûå^~÷¾öþµV]Oã8}çW\!F-(|,Ò>,ÌÌ’&†Z -I7N`*­„ÒÄ…hÒ¸JRX´â¿ï±ÛÐPʈ—ÍCëësÏ9¾±óõÏùÃ|‡ð˜: GÍŸ«üþ¡¡~ºO§''žžüö;ÙU)iP$åOY55}Mп˜´ý£L~oì¢ ƒPS%kY=Êìh5׆„2Ëë¦Ê'‹&W%%eF‹ZR^R­U*ÍÈ$/“ꙦªšÕ=åÍ©Êü«EC3•åÓ-?±ÊúÕÍGNÛ²6ìÂ%oÙ}«áxÇœ\")zBÊêïV -ý»c¢pîÖ5ÝÈJŸ&í ~pâ<âx¥ZŸÁ)í=®B¾‘{Þy'p1™6nº(Ss ßËf…Úß.už|JýZÓ³³5ê·%îf¨~6Ci4Ùƒ;ª@Õž¿‹×ðoB€N½/™|”…šë[åKo[ýì¥O2€<ýý÷àÆ³‡,¯úww8 -îî>ˆÙ»ÏÉdÚï¥j6Ó·Þáœôp&ë׈¤ÃäxJžk4€Ø<Óé÷cÐ<.Eѳhoª~«ô—<4å´XnÜ=ùHòV‹5ýí˜/ïFߎ¼íásfQ•økà—Ï”/§JàÞ-ïßUÒ -¾‡/ÏdB=:ZezS|G´K‡Ý/Qgù%ŠÁ]Lf¨ò~oÜ[Nž7ÞÍÝwlñ÷²óm‘ÏJÃ@ÆïyŠ9ô€ÒТ5]!PjhzDÂ’¤ a7îN‘¾»³¦¦Mé°‡ùÍŸoØû‡nßEó90ÚÖŠ2q8çY‘VU‘W5ò‰ŸÜÓ.›5-^sÞ†‡ÎøÈ­ú´™ÂT?ô{ǥ䱜•ß½²bsv¹X`<Û¦%Žæ0Ù},ryŠnåé[FYïwÈ‘•”ÑÝ&üƒ½X8¿ü&bÐä|›5Ïö¯,/hIPúm‘ÝJÄ0…ïós!l Ê>€.Z» -ÅŠ­ ˆ”ÐL»Ôdªˆì»;µtÀ!C¾9sÉÍí°Äz w­SÚöI«¤W!ï­óø  .S÷‰^ö8#žô41Úé|¤9’ëÑò¡‚ŽÅpÊu¨4‰n´-ig¡išä¥.‹2Ùr]´F†î@’t ó%Ø€¹þcºƒè63Z„S¨¤÷ò;:©Ø,-’ª*òªæþÀâyû^Ì+,«yrÆ}¡_âhv CŽ7¼Ç§!<~ŒÚãdwŸTÙ6æîl|ñÛ‹0˜fz8ã¤j<ö:[®Î_hu9íÊ^Óì©ÎËGî9Íÿ“Y%~m‘ÁjÃ0 †ïy -vH`£°•­K=”6Ô= Æ&VRƒ±S[ŒÑwŸ½liöãÃ>I¿ÀݱK xª­T¦å$ŒNú¢5Öá‹ÒøG1·èD‹ -Ž"££òž0 z²-šÐE(¡ ÃpÒ‚±(%¾ÓUlÒVÈÊa«<¡KjzS“²&½©µð>ƒ¯Ÿr”'Aª† ‡%˜^ëû‘«Ò \øzAÔÕ´pN|¦UUU¾Yq¾)ø!ø Ï.içI® -;iLÌ{6Owxê•Øñ¼âl]샛OÍ3ηÉï]ì5g塨mƒ‹åž•l»Ž§†óþÿ%fdò ]ŽMk„0†ïþŠ9ŒPº÷ý ˆ ¬`wƒz(”‚Ív©f“xXÊþ÷NjqÕ÷’—yÈ<³}6g9£¹è}§;ñÉ­üRÎKK"Àœú¶ñªkÉC£…s üüCœ^50é`m¯õfäêäwž.™üÖŠ+™ÑÎyV¤UUäU}Æ“»í6ó*ÜéGûûP>’¥ÝÊK¯¬„Øœ…]¯V¸ŸíÓŸž`ù})»=FÿÒ·Œ²:?°CVRF/áf¼“Ãú[˜PH<1!ä|Ÿ5ÏŽ¯,/hIpô m‘ÑJÄ0Eßûó l Ê~€.Z» -ÅŠ­ ˆ”ÐL»Ôd*ˆì¿;±´®â‡KÎ̽aru=Æh»…›ÎJe†š„‘ÂI_ Æ:¼SŠ™}G'œw: -ŒÊa@Ld4ÜE(¡ça¸iÁX”Š¢~2)k mÛô©©Ê*ݳŒÏ:-¼Oà3.O‚Tó%zØ™´¾üfª‡øìf´ †:™Ήx%¡8,+Óº.‹ºa½²dv?®Š=hMz™ÅkršäðmRƒçmZçûâ‘Õ߉Å÷ùQ·aAÚ -Ù:”'tñæ÷&6çÁ.Îò‡¦¨îYóËþÿ€ÜÈè uŒA -ƒ@ E÷sŠ\@¼@¡BQpg÷Châ8PSÏoЏþâÃ{ÿ?žë²†¶…î£T$O†BXi‹Y´òP¾|Q~éÎ3ŸÈÍjfKÙÀƒø3Í,nÌ>†HAÔ€©XH) qìÇ8½½Þ<÷Bá³±/È(PÐ×W(ÉÈ,V¢Ä<…ÄÒ’üôԼԢĒÔ…´ÌœT]…”|…¼ü…Ԕ̮øøx7OWÏà Èõpô ‰wö÷ ŠihZsPNZõѼÁ«Õ’ö&ðNx%?Ùï¦ïW5â‹Î¾™baö¸–Ï'´NëaQŽãQ¿D)ÎGBMB \ No newline at end of file diff --git a/tests/vendor/phpunit/phpunit/build/binary-phar-autoload.php.in b/tests/vendor/phpunit/phpunit/build/binary-phar-autoload.php.in deleted file mode 100644 index 3113b240..00000000 --- a/tests/vendor/phpunit/phpunit/build/binary-phar-autoload.php.in +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env php -')) { - fwrite( - STDERR, - 'This version of PHPUnit requires PHP 5.6; using the latest version of PHP is highly recommended.' . PHP_EOL - ); - - die(1); -} - -if (__FILE__ == realpath($GLOBALS['_SERVER']['SCRIPT_NAME'])) { - $execute = true; -} else { - $execute = false; -} - -define('__PHPUNIT_PHAR__', str_replace(DIRECTORY_SEPARATOR, '/', __FILE__)); -define('__PHPUNIT_PHAR_ROOT__', 'phar://___PHAR___'); - -Phar::mapPhar('___PHAR___'); - -___FILELIST___ - -if ($execute) { - if (isset($_SERVER['argv'][1]) && $_SERVER['argv'][1] == '--manifest') { - print file_get_contents(__PHPUNIT_PHAR_ROOT__ . '/manifest.txt'); - exit; - } - - PHPUnit_TextUI_Command::main(); -} - -__HALT_COMPILER(); diff --git a/tests/vendor/phpunit/phpunit/build/ca.pem b/tests/vendor/phpunit/phpunit/build/ca.pem index 20585f1c..960f2657 100644 --- a/tests/vendor/phpunit/phpunit/build/ca.pem +++ b/tests/vendor/phpunit/phpunit/build/ca.pem @@ -1,25 +1,44 @@ -----BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk +pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf +OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C +Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT +Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi +HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM +Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w ++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ +Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 +Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B +26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID +AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j +ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js +LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM +BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy +dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh +cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh +YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg +dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp +bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ +YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT +TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ +9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 +jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW +FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz +ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 +ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L +EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu +L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC +O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V +um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh +NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= -----END CERTIFICATE----- diff --git a/tests/vendor/phpunit/phpunit/build/library-phar-autoload.php.in b/tests/vendor/phpunit/phpunit/build/library-phar-autoload.php.in deleted file mode 100644 index f919b762..00000000 --- a/tests/vendor/phpunit/phpunit/build/library-phar-autoload.php.in +++ /dev/null @@ -1,9 +0,0 @@ - + + + Sebastian Bergmann's ruleset + + + + + + + + + + + + + + + + + + + diff --git a/tests/vendor/phpunit/phpunit/build/travis-ci-fail.xml b/tests/vendor/phpunit/phpunit/build/travis-ci-fail.xml deleted file mode 100644 index 45869893..00000000 --- a/tests/vendor/phpunit/phpunit/build/travis-ci-fail.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - ../tests/Fail - - - - - - - diff --git a/tests/vendor/phpunit/phpunit/build/travis-ci.xml b/tests/vendor/phpunit/phpunit/build/travis-ci.xml new file mode 100644 index 00000000..94f6b137 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/build/travis-ci.xml @@ -0,0 +1,35 @@ + + + + + ../tests/Framework + ../tests/Extensions + ../tests/Runner + ../tests/Util + ../tests/TextUI + ../tests/Regression + + + + + + + + + + ../src + + ../src/Framework/Assert/Functions.php + + + + + + + + diff --git a/tests/vendor/phpunit/phpunit/composer.json b/tests/vendor/phpunit/phpunit/composer.json index c6ca3fd0..9864bbe3 100644 --- a/tests/vendor/phpunit/phpunit/composer.json +++ b/tests/vendor/phpunit/phpunit/composer.json @@ -7,7 +7,7 @@ "xunit", "testing" ], - "homepage": "https://phpunit.de/", + "homepage": "http://www.phpunit.de/", "license": "BSD-3-Clause", "authors": [ { @@ -21,51 +21,46 @@ "irc": "irc://irc.freenode.net/phpunit" }, "require": { - "php": ">=5.6", - "phpunit/php-file-iterator": "~1.4", + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3.1", "phpunit/php-text-template": "~1.2", - "phpunit/php-code-coverage": "~3.0", - "phpunit/php-timer": ">=1.0.6", - "phpunit/phpunit-mock-objects": ">=3.0", - "phpspec/prophecy": "^1.3.1", - "symfony/yaml": "~2.1|~3.0", - "sebastian/comparator": "~1.1", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.3", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/resource-operations": "~1.0", + "phpunit/php-code-coverage": ">=2.0.0,<2.1.0", + "phpunit/php-timer": "~1.0.2", + "phpunit/phpunit-mock-objects": ">=2.0.0,<2.1.0", + "symfony/yaml": "~2.0", + "sebastian/diff": "~1.1", + "sebastian/environment": "~1.0", + "sebastian/exporter": "~1.0.1", "sebastian/version": "~1.0", - "myclabs/deep-copy": "~1.3", "ext-dom": "*", - "ext-json": "*", "ext-pcre": "*", "ext-reflection": "*", "ext-spl": "*" }, "suggest": { - "phpunit/php-invoker": "~1.1" + "phpunit/php-invoker": "~1.1", + "ext-json": "*", + "ext-simplexml": "*", + "ext-tokenizer": "*" }, "bin": [ "phpunit" ], + "config": { + "bin-dir": "bin" + }, "autoload": { "classmap": [ "src/" ] }, - "autoload-dev": { - "classmap": [ - "tests/" - ], - "files": [ - "src/Framework/Assert/Functions.php", - "tests/_files/CoveredFunction.php" - ] - }, "extra": { "branch-alias": { - "dev-master": "5.0.x-dev" + "dev-master": "4.0.x-dev" } - } + }, + "include-path": [ + "", + "../../symfony/yaml/" + ] } diff --git a/tests/vendor/phpunit/phpunit/package.xml b/tests/vendor/phpunit/phpunit/package.xml new file mode 100644 index 00000000..61b8fbf6 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/package.xml @@ -0,0 +1,86 @@ + + + PHPUnit + pear.phpunit.de + The PHP Unit Testing framework. + The PHP Unit Testing framework. + + Sebastian Bergmann + sb + sebastian@phpunit.de + yes + + 2014-03-07 + + 4.0.0 + 4.0.0 + + + stable + stable + + The BSD 3-Clause License + http://github.com/sebastianbergmann/phpunit/blob/master/README.md + + + + + + + + + + + + + + + 5.3.3 + + + 1.9.4 + + + dom + + + pcre + + + tokenizer + + + + + json + + + simplexml + + + + + + + windows + + + + + + + + + + + + + + diff --git a/tests/vendor/phpunit/phpunit/phpdox.xml.dist b/tests/vendor/phpunit/phpunit/phpdox.xml.dist index b32db692..e77645e0 100644 --- a/tests/vendor/phpunit/phpunit/phpdox.xml.dist +++ b/tests/vendor/phpunit/phpunit/phpdox.xml.dist @@ -1,5 +1,5 @@ - + diff --git a/tests/vendor/phpunit/phpunit/phpunit b/tests/vendor/phpunit/phpunit/phpunit index 704e54c2..44f3c6d9 100755 --- a/tests/vendor/phpunit/phpunit/phpunit +++ b/tests/vendor/phpunit/phpunit/phpunit @@ -1,45 +1,53 @@ #!/usr/bin/env php + * Copyright (c) 2001-2014, Sebastian Bergmann . + * All rights reserved. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. */ -if (version_compare('5.6.0', PHP_VERSION, '>')) { - fwrite( - STDERR, - 'This version of PHPUnit requires PHP 5.6; using the latest version of PHP is highly recommended.' . PHP_EOL - ); - - die(1); -} - -if (!ini_get('date.timezone')) { - ini_set('date.timezone', 'UTC'); -} - -foreach (array(__DIR__ . '/../../autoload.php', __DIR__ . '/../vendor/autoload.php', __DIR__ . '/vendor/autoload.php') as $file) { +foreach (array(__DIR__ . '/../../autoload.php', __DIR__ . '/vendor/autoload.php') as $file) { if (file_exists($file)) { define('PHPUNIT_COMPOSER_INSTALL', $file); - break; } } -unset($file); - if (!defined('PHPUNIT_COMPOSER_INSTALL')) { - fwrite(STDERR, + die( 'You need to set up the project dependencies using the following commands:' . PHP_EOL . 'wget http://getcomposer.org/composer.phar' . PHP_EOL . 'php composer.phar install' . PHP_EOL ); - - die(1); } require PHPUNIT_COMPOSER_INSTALL; diff --git a/tests/vendor/phpunit/phpunit/phpunit.bat b/tests/vendor/phpunit/phpunit/phpunit.bat new file mode 100644 index 00000000..33dfaccf --- /dev/null +++ b/tests/vendor/phpunit/phpunit/phpunit.bat @@ -0,0 +1,43 @@ +@echo off +REM PHPUnit +REM +REM Copyright (c) 2001-2014, Sebastian Bergmann . +REM All rights reserved. +REM +REM Redistribution and use in source and binary forms, with or without +REM modification, are permitted provided that the following conditions +REM are met: +REM +REM * Redistributions of source code must retain the above copyright +REM notice, this list of conditions and the following disclaimer. +REM +REM * Redistributions in binary form must reproduce the above copyright +REM notice, this list of conditions and the following disclaimer in +REM the documentation and/or other materials provided with the +REM distribution. +REM +REM * Neither the name of Sebastian Bergmann nor the names of his +REM contributors may be used to endorse or promote products derived +REM from this software without specific prior written permission. +REM +REM THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +REM "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +REM LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +REM FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +REM COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +REM INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +REM BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +REM LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +REM CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC +REM LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +REM ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +REM POSSIBILITY OF SUCH DAMAGE. +REM + +if "%PHPBIN%" == "" set PHPBIN=@php_bin@ +if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH +GOTO RUN +:USE_PEAR_PATH +set PHPBIN=%PHP_PEAR_PHP_BIN% +:RUN +"%PHPBIN%" "@bin_dir@\phpunit" %* diff --git a/tests/vendor/phpunit/phpunit/phpunit.xml.dist b/tests/vendor/phpunit/phpunit/phpunit.xml.dist index ad6baa86..ba09f01d 100644 --- a/tests/vendor/phpunit/phpunit/phpunit.xml.dist +++ b/tests/vendor/phpunit/phpunit/phpunit.xml.dist @@ -1,6 +1,6 @@ @@ -18,6 +18,13 @@ + + + + + + + src @@ -31,4 +38,3 @@ - diff --git a/tests/vendor/phpunit/phpunit/phpunit.xsd b/tests/vendor/phpunit/phpunit/phpunit.xsd index 32eb7dd8..e812eca6 100644 --- a/tests/vendor/phpunit/phpunit/phpunit.xsd +++ b/tests/vendor/phpunit/phpunit/phpunit.xsd @@ -1,8 +1,8 @@ - + - - This Schema file defines the rules by which the XML configuration file of PHPUnit 5.0 may be structured. + + This Schema file defines the rules by which the XML configuration file of PHPUnit 4.0 may be structured. @@ -14,6 +14,7 @@ + @@ -34,7 +35,6 @@ - @@ -114,13 +114,10 @@ - - - @@ -131,8 +128,6 @@ - - @@ -191,7 +186,6 @@ - @@ -205,21 +199,17 @@ - - - - + + - + + + - - - - @@ -229,14 +219,27 @@ + + + + + + + + + + + + + - + diff --git a/tests/vendor/phpunit/phpunit/src/Exception.php b/tests/vendor/phpunit/phpunit/src/Exception.php index 480ec936..9ea7dc29 100644 --- a/tests/vendor/phpunit/phpunit/src/Exception.php +++ b/tests/vendor/phpunit/phpunit/src/Exception.php @@ -1,16 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** * Marker interface for PHPUnit exceptions. * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ * @since Interface available since Release 4.0.0 */ interface PHPUnit_Exception diff --git a/tests/vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php b/tests/vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php index 86601d4e..9735a829 100644 --- a/tests/vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php +++ b/tests/vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php @@ -1,11 +1,46 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Extensions + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.3.0 */ /** @@ -14,20 +49,25 @@ * We want a TestSuite object B that contains TestSuite objects C, D, ... * for the Tests tagged with @group C, @group D, ... * Running the Tests from TestSuite object B results in Tests tagged with both - * * @group C and @group D in TestSuite object A to be run twice . * * * $suite = new PHPUnit_Extensions_GroupTestSuite($A, array('C', 'D')); * * - * @since Class available since Release 3.3.0 + * @package PHPUnit + * @subpackage Extensions + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.3.0 */ class PHPUnit_Extensions_GroupTestSuite extends PHPUnit_Framework_TestSuite { public function __construct(PHPUnit_Framework_TestSuite $suite, array $groups) { - $groupSuites = []; + $groupSuites = array(); $name = $suite->getName(); foreach ($groups as $group) { @@ -36,15 +76,14 @@ public function __construct(PHPUnit_Framework_TestSuite $suite, array $groups) } $tests = new RecursiveIteratorIterator( - new PHPUnit_Util_TestSuiteIterator($suite), - RecursiveIteratorIterator::LEAVES_ONLY + new PHPUnit_Util_TestSuiteIterator($suite), + RecursiveIteratorIterator::LEAVES_ONLY ); foreach ($tests as $test) { if ($test instanceof PHPUnit_Framework_TestCase) { $testGroups = PHPUnit_Util_Test::getGroups( - get_class($test), - $test->getName(false) + get_class($test), $test->getName(false) ); foreach ($groups as $group) { diff --git a/tests/vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php b/tests/vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php index 5f315269..fab3a11e 100644 --- a/tests/vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php +++ b/tests/vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Extensions_PhptTestCase + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.1.4 */ /** * Runner for PHPT test cases. * - * @since Class available since Release 3.1.4 + * @package PHPUnit + * @subpackage Extensions_PhptTestCase + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.1.4 */ class PHPUnit_Extensions_PhptTestCase implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing { @@ -23,7 +64,7 @@ class PHPUnit_Extensions_PhptTestCase implements PHPUnit_Framework_Test, PHPUnit /** * @var array */ - private $settings = [ + private $settings = array( 'allow_url_fopen=1', 'auto_append_file=', 'auto_prepend_file=', @@ -45,13 +86,12 @@ class PHPUnit_Extensions_PhptTestCase implements PHPUnit_Framework_Test, PHPUnit 'safe_mode=0', 'track_errors=1', 'xdebug.default_enable=0' - ]; + ); /** * Constructs a test case with the given filename. * - * @param string $filename - * + * @param string $filename * @throws PHPUnit_Framework_Exception */ public function __construct($filename) @@ -62,10 +102,10 @@ public function __construct($filename) if (!is_file($filename)) { throw new PHPUnit_Framework_Exception( - sprintf( - 'File "%s" does not exist.', - $filename - ) + sprintf( + 'File "%s" does not exist.', + $filename + ) ); } @@ -75,7 +115,7 @@ public function __construct($filename) /** * Counts the number of test cases executed by run(TestResult result). * - * @return int + * @return integer */ public function count() { @@ -85,8 +125,7 @@ public function count() /** * Runs a test and collects its result in a TestResult instance. * - * @param PHPUnit_Framework_TestResult $result - * + * @param PHPUnit_Framework_TestResult $result * @return PHPUnit_Framework_TestResult */ public function run(PHPUnit_Framework_TestResult $result = null) @@ -98,23 +137,18 @@ public function run(PHPUnit_Framework_TestResult $result = null) $result = new PHPUnit_Framework_TestResult; } - $php = PHPUnit_Util_PHP::factory(); - $skip = false; - $time = 0; - $settings = $this->settings; + $php = PHPUnit_Util_PHP::factory(); + $skip = false; + $time = 0; $result->startTest($this); - if (isset($sections['INI'])) { - $settings = array_merge($settings, $this->parseIniSection($sections['INI'])); - } - if (isset($sections['SKIPIF'])) { - $jobResult = $php->runJob($sections['SKIPIF'], $settings); + $jobResult = $php->runJob($sections['SKIPIF'], $this->settings); if (!strncasecmp('skip', ltrim($jobResult['stdout']), 4)) { if (preg_match('/^\s*skip\s*(.+)\s*/i', $jobResult['stdout'], $message)) { - $message = substr($message[1], 2); + $message = $message[1]; } else { $message = ''; } @@ -127,26 +161,21 @@ public function run(PHPUnit_Framework_TestResult $result = null) if (!$skip) { PHP_Timer::start(); - $jobResult = $php->runJob($code, $settings); - $time = PHP_Timer::stop(); + $jobResult = $php->runJob($code, $this->settings); + $time = PHP_Timer::stop(); if (isset($sections['EXPECT'])) { $assertion = 'assertEquals'; - $expected = $sections['EXPECT']; + $expected = preg_replace('/\r\n/', "\n", trim($sections['EXPECT'])); } else { $assertion = 'assertStringMatchesFormat'; - $expected = $sections['EXPECTF']; + $expected = trim($sections['EXPECTF']); } - $output = preg_replace('/\r\n/', "\n", trim($jobResult['stdout'])); - $expected = preg_replace('/\r\n/', "\n", trim($expected)); - try { - PHPUnit_Framework_Assert::$assertion($expected, $output); + PHPUnit_Framework_Assert::$assertion($expected, trim($jobResult['stdout'])); } catch (PHPUnit_Framework_AssertionFailedError $e) { $result->addFailure($this, $e, $time); - } catch (Throwable $t) { - $result->addError($this, $t, $time); } catch (Exception $e) { $result->addError($this, $e, $time); } @@ -179,12 +208,11 @@ public function toString() /** * @return array - * * @throws PHPUnit_Framework_Exception */ private function parse() { - $sections = []; + $sections = array(); $section = ''; foreach (file($this->filename) as $line) { @@ -208,34 +236,21 @@ private function parse() } /** - * @param string $code - * + * @param string $code * @return string */ private function render($code) { return str_replace( - [ + array( '__DIR__', '__FILE__' - ], - [ + ), + array( "'" . dirname($this->filename) . "'", "'" . $this->filename . "'" - ], - $code + ), + $code ); } - - /** - * Parse --INI-- section key value pairs and return as array. - * - * @param string - * - * @return array - */ - protected function parseIniSection($content) - { - return preg_split('/\n|\r/', $content, -1, PREG_SPLIT_NO_EMPTY); - } } diff --git a/tests/vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php b/tests/vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php index f21509b1..f0b4b3ff 100644 --- a/tests/vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php +++ b/tests/vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php @@ -1,28 +1,70 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Extensions_PhptTestCase + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.1.4 */ /** * Suite for .phpt test cases. * - * @since Class available since Release 3.1.4 + * @package PHPUnit + * @subpackage Extensions_PhptTestCase + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.1.4 */ class PHPUnit_Extensions_PhptTestSuite extends PHPUnit_Framework_TestSuite { /** * Constructs a new TestSuite for .phpt test cases. * - * @param string $directory - * + * @param string $directory + * @param array $options Array with ini settings for the php instance run, + * key being the name if the setting, value the ini value. * @throws PHPUnit_Framework_Exception */ - public function __construct($directory) + public function __construct($directory, array $options = array()) { if (is_string($directory) && is_dir($directory)) { $this->setName($directory); @@ -31,7 +73,7 @@ public function __construct($directory) $files = $facade->getFilesAsArray($directory, '.phpt'); foreach ($files as $file) { - $this->addTestFile($file); + $this->addTestFile($file, $options); } } else { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'directory name'); diff --git a/tests/vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php b/tests/vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php index 152bffc4..65efc670 100644 --- a/tests/vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php +++ b/tests/vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php @@ -1,35 +1,93 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * A Decorator that runs a test repeatedly. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Extensions_RepeatedTest extends PHPUnit_Extensions_TestDecorator { /** - * @var bool + * @var mixed + */ + protected $filter = false; + + /** + * @var array + */ + protected $groups = array(); + + /** + * @var array + */ + protected $excludeGroups = array(); + + /** + * @var boolean */ protected $processIsolation = false; /** - * @var int + * @var integer */ protected $timesRepeat = 1; /** - * @param PHPUnit_Framework_Test $test - * @param int $timesRepeat - * @param bool $processIsolation + * Constructor. * + * @param PHPUnit_Framework_Test $test + * @param integer $timesRepeat + * @param mixed $filter + * @param array $groups + * @param array $excludeGroups + * @param boolean $processIsolation * @throws PHPUnit_Framework_Exception */ public function __construct(PHPUnit_Framework_Test $test, $timesRepeat = 1, $processIsolation = false) @@ -41,8 +99,7 @@ public function __construct(PHPUnit_Framework_Test $test, $timesRepeat = 1, $pro $this->timesRepeat = $timesRepeat; } else { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 2, - 'positive integer' + 2, 'positive integer' ); } @@ -53,7 +110,7 @@ public function __construct(PHPUnit_Framework_Test $test, $timesRepeat = 1, $pro * Counts the number of test cases that * will be run by this test. * - * @return int + * @return integer */ public function count() { @@ -64,10 +121,8 @@ public function count() * Runs the decorated test and collects the * result in a TestResult. * - * @param PHPUnit_Framework_TestResult $result - * + * @param PHPUnit_Framework_TestResult $result * @return PHPUnit_Framework_TestResult - * * @throws PHPUnit_Framework_Exception */ public function run(PHPUnit_Framework_TestResult $result = null) diff --git a/tests/vendor/phpunit/phpunit/src/Extensions/TestDecorator.php b/tests/vendor/phpunit/phpunit/src/Extensions/TestDecorator.php index 1f1530f9..e3ec809b 100644 --- a/tests/vendor/phpunit/phpunit/src/Extensions/TestDecorator.php +++ b/tests/vendor/phpunit/phpunit/src/Extensions/TestDecorator.php @@ -1,11 +1,46 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Extensions + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** @@ -15,14 +50,20 @@ * test decorators. Test decorator subclasses can be introduced * to add behaviour before or after a test is run. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Extensions + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Extensions_TestDecorator extends PHPUnit_Framework_Assert implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing { /** * The Test to be decorated. * - * @var object + * @var object */ protected $test = null; @@ -61,7 +102,7 @@ public function basicRun(PHPUnit_Framework_TestResult $result) * Counts the number of test cases that * will be run by this test. * - * @return int + * @return integer */ public function count() { @@ -92,8 +133,7 @@ public function getTest() * Runs the decorated test and collects the * result in a TestResult. * - * @param PHPUnit_Framework_TestResult $result - * + * @param PHPUnit_Framework_TestResult $result * @return PHPUnit_Framework_TestResult */ public function run(PHPUnit_Framework_TestResult $result = null) diff --git a/tests/vendor/phpunit/phpunit/src/Extensions/TicketListener.php b/tests/vendor/phpunit/phpunit/src/Extensions/TicketListener.php index 8ebe8d06..48782c70 100644 --- a/tests/vendor/phpunit/phpunit/src/Extensions/TicketListener.php +++ b/tests/vendor/phpunit/phpunit/src/Extensions/TicketListener.php @@ -1,27 +1,71 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Extensions_TicketListener + * @author Sean Coates + * @author Raphael Stolt + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.4.0 */ /** * Base class for test listeners that interact with an issue tracker. * - * @since Class available since Release 3.4.0 + * @package PHPUnit + * @subpackage Extensions_TicketListener + * @author Sean Coates + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.4.0 */ abstract class PHPUnit_Extensions_TicketListener implements PHPUnit_Framework_TestListener { /** * @var array */ - protected $ticketCounts = []; + protected $ticketCounts = array(); /** - * @var bool + * @var boolean */ protected $ran = false; @@ -64,7 +108,6 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 4.0.0 */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) @@ -77,7 +120,6 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 3.0.0 */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) @@ -88,7 +130,6 @@ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time * A test suite started. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) @@ -99,7 +140,6 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) * A test suite ended. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) @@ -139,13 +179,13 @@ public function endTest(PHPUnit_Framework_Test $test, $time) { if (!$test instanceof PHPUnit_Framework_Warning) { if ($test->getStatus() == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) { - $ifStatus = ['assigned', 'new', 'reopened']; + $ifStatus = array('assigned', 'new', 'reopened'); $newStatus = 'closed'; $message = 'Automatically closed by PHPUnit (test passed).'; $resolution = 'fixed'; $cumulative = true; } elseif ($test->getStatus() == PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE) { - $ifStatus = ['closed']; + $ifStatus = array('closed'); $newStatus = 'reopened'; $message = 'Automatically reopened by PHPUnit (test failed).'; $resolution = ''; @@ -187,18 +227,6 @@ public function endTest(PHPUnit_Framework_Test $test, $time) } } - /** - * @param mixed $ticketId - * - * @return mixed - */ abstract protected function getTicketInfo($ticketId = null); - - /** - * @param string $ticketId - * @param string $newStatus - * @param string $message - * @param string $resolution - */ abstract protected function updateTicket($ticketId, $newStatus, $message, $resolution); } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Assert.php b/tests/vendor/phpunit/phpunit/src/Framework/Assert.php index 892ff0a6..d1765212 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Assert.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Assert.php @@ -1,22 +1,63 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * A set of assert methods. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ abstract class PHPUnit_Framework_Assert { /** - * @var int + * @var integer */ private static $count = 0; @@ -26,22 +67,19 @@ abstract class PHPUnit_Framework_Assert * @param mixed $key * @param array|ArrayAccess $array * @param string $message - * - * @since Method available since Release 3.0.0 + * @since Method available since Release 3.0.0 */ public static function assertArrayHasKey($key, $array, $message = '') { if (!(is_integer($key) || is_string($key))) { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 1, - 'integer or string' + 1, 'integer or string' ); } if (!(is_array($array) || $array instanceof ArrayAccess)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 2, - 'array or ArrayAccess' + 2, 'array or ArrayAccess' ); } @@ -50,64 +88,30 @@ public static function assertArrayHasKey($key, $array, $message = '') self::assertThat($array, $constraint, $message); } - /** - * Asserts that an array has a specified subset. - * - * @param array|ArrayAccess $subset - * @param array|ArrayAccess $array - * @param bool $strict Check for object identity - * @param string $message - * - * @since Method available since Release 4.4.0 - */ - public static function assertArraySubset($subset, $array, $strict = false, $message = '') - { - if (!is_array($subset)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory( - 1, - 'array or ArrayAccess' - ); - } - - if (!is_array($array)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory( - 2, - 'array or ArrayAccess' - ); - } - - $constraint = new PHPUnit_Framework_Constraint_ArraySubset($subset, $strict); - - self::assertThat($array, $constraint, $message); - } - /** * Asserts that an array does not have a specified key. * * @param mixed $key * @param array|ArrayAccess $array * @param string $message - * * @since Method available since Release 3.0.0 */ public static function assertArrayNotHasKey($key, $array, $message = '') { if (!(is_integer($key) || is_string($key))) { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 1, - 'integer or string' + 1, 'integer or string' ); } if (!(is_array($array) || $array instanceof ArrayAccess)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 2, - 'array or ArrayAccess' + 2, 'array or ArrayAccess' ); } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_ArrayHasKey($key) + new PHPUnit_Framework_Constraint_ArrayHasKey($key) ); self::assertThat($array, $constraint, $message); @@ -116,13 +120,12 @@ public static function assertArrayNotHasKey($key, $array, $message = '') /** * Asserts that a haystack contains a needle. * - * @param mixed $needle - * @param mixed $haystack - * @param string $message - * @param bool $ignoreCase - * @param bool $checkForObjectIdentity - * @param bool $checkForNonObjectIdentity - * + * @param mixed $needle + * @param mixed $haystack + * @param string $message + * @param boolean $ignoreCase + * @param boolean $checkForObjectIdentity + * @param boolean $checkForNonObjectIdentity * @since Method available since Release 2.1.0 */ public static function assertContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) @@ -130,26 +133,15 @@ public static function assertContains($needle, $haystack, $message = '', $ignore if (is_array($haystack) || is_object($haystack) && $haystack instanceof Traversable) { $constraint = new PHPUnit_Framework_Constraint_TraversableContains( - $needle, - $checkForObjectIdentity, - $checkForNonObjectIdentity + $needle, $checkForObjectIdentity, $checkForNonObjectIdentity ); } elseif (is_string($haystack)) { - if (!is_string($needle)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory( - 1, - 'string' - ); - } - $constraint = new PHPUnit_Framework_Constraint_StringContains( - $needle, - $ignoreCase + $needle, $ignoreCase ); } else { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 2, - 'array, traversable or string' + 2, 'array, traversable or string' ); } @@ -160,38 +152,36 @@ public static function assertContains($needle, $haystack, $message = '', $ignore * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object contains a needle. * - * @param mixed $needle - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param string $message - * @param bool $ignoreCase - * @param bool $checkForObjectIdentity - * @param bool $checkForNonObjectIdentity - * + * @param mixed $needle + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param string $message + * @param boolean $ignoreCase + * @param boolean $checkForObjectIdentity + * @param boolean $checkForNonObjectIdentity * @since Method available since Release 3.0.0 */ public static function assertAttributeContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { self::assertContains( - $needle, - self::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message, - $ignoreCase, - $checkForObjectIdentity, - $checkForNonObjectIdentity + $needle, + self::readAttribute($haystackClassOrObject, $haystackAttributeName), + $message, + $ignoreCase, + $checkForObjectIdentity, + $checkForNonObjectIdentity ); } /** * Asserts that a haystack does not contain a needle. * - * @param mixed $needle - * @param mixed $haystack - * @param string $message - * @param bool $ignoreCase - * @param bool $checkForObjectIdentity - * @param bool $checkForNonObjectIdentity - * + * @param mixed $needle + * @param mixed $haystack + * @param string $message + * @param boolean $ignoreCase + * @param boolean $checkForObjectIdentity + * @param boolean $checkForNonObjectIdentity * @since Method available since Release 2.1.0 */ public static function assertNotContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) @@ -199,30 +189,19 @@ public static function assertNotContains($needle, $haystack, $message = '', $ign if (is_array($haystack) || is_object($haystack) && $haystack instanceof Traversable) { $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_TraversableContains( - $needle, - $checkForObjectIdentity, - $checkForNonObjectIdentity - ) + new PHPUnit_Framework_Constraint_TraversableContains( + $needle, $checkForObjectIdentity, $checkForNonObjectIdentity + ) ); } elseif (is_string($haystack)) { - if (!is_string($needle)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory( - 1, - 'string' - ); - } - $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_StringContains( - $needle, - $ignoreCase - ) + new PHPUnit_Framework_Constraint_StringContains( + $needle, $ignoreCase + ) ); } else { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 2, - 'array, traversable or string' + 2, 'array, traversable or string' ); } @@ -233,36 +212,34 @@ public static function assertNotContains($needle, $haystack, $message = '', $ign * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object does not contain a needle. * - * @param mixed $needle - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param string $message - * @param bool $ignoreCase - * @param bool $checkForObjectIdentity - * @param bool $checkForNonObjectIdentity - * + * @param mixed $needle + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param string $message + * @param boolean $ignoreCase + * @param boolean $checkForObjectIdentity + * @param boolean $checkForNonObjectIdentity * @since Method available since Release 3.0.0 */ public static function assertAttributeNotContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { self::assertNotContains( - $needle, - self::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message, - $ignoreCase, - $checkForObjectIdentity, - $checkForNonObjectIdentity + $needle, + self::readAttribute($haystackClassOrObject, $haystackAttributeName), + $message, + $ignoreCase, + $checkForObjectIdentity, + $checkForNonObjectIdentity ); } /** * Asserts that a haystack contains only values of a given type. * - * @param string $type - * @param mixed $haystack - * @param bool $isNativeType - * @param string $message - * + * @param string $type + * @param mixed $haystack + * @param boolean $isNativeType + * @param string $message * @since Method available since Release 3.1.4 */ public static function assertContainsOnly($type, $haystack, $isNativeType = null, $message = '') @@ -270,8 +247,7 @@ public static function assertContainsOnly($type, $haystack, $isNativeType = null if (!(is_array($haystack) || is_object($haystack) && $haystack instanceof Traversable)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 2, - 'array or traversable' + 2, 'array or traversable' ); } @@ -280,12 +256,11 @@ public static function assertContainsOnly($type, $haystack, $isNativeType = null } self::assertThat( - $haystack, - new PHPUnit_Framework_Constraint_TraversableContainsOnly( - $type, - $isNativeType - ), - $message + $haystack, + new PHPUnit_Framework_Constraint_TraversableContainsOnly( + $type, $isNativeType + ), + $message ); } @@ -301,16 +276,14 @@ public static function assertContainsOnlyInstancesOf($classname, $haystack, $mes if (!(is_array($haystack) || is_object($haystack) && $haystack instanceof Traversable)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 2, - 'array or traversable' + 2, 'array or traversable' ); } self::assertThat( $haystack, new PHPUnit_Framework_Constraint_TraversableContainsOnly( - $classname, - false + $classname, false ), $message ); @@ -320,32 +293,30 @@ public static function assertContainsOnlyInstancesOf($classname, $haystack, $mes * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object contains only values of a given type. * - * @param string $type - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param bool $isNativeType - * @param string $message - * + * @param string $type + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param boolean $isNativeType + * @param string $message * @since Method available since Release 3.1.4 */ public static function assertAttributeContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '') { self::assertContainsOnly( - $type, - self::readAttribute($haystackClassOrObject, $haystackAttributeName), - $isNativeType, - $message + $type, + self::readAttribute($haystackClassOrObject, $haystackAttributeName), + $isNativeType, + $message ); } /** * Asserts that a haystack does not contain only values of a given type. * - * @param string $type - * @param mixed $haystack - * @param bool $isNativeType - * @param string $message - * + * @param string $type + * @param mixed $haystack + * @param boolean $isNativeType + * @param string $message * @since Method available since Release 3.1.4 */ public static function assertNotContainsOnly($type, $haystack, $isNativeType = null, $message = '') @@ -353,8 +324,7 @@ public static function assertNotContainsOnly($type, $haystack, $isNativeType = n if (!(is_array($haystack) || is_object($haystack) && $haystack instanceof Traversable)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 2, - 'array or traversable' + 2, 'array or traversable' ); } @@ -363,14 +333,13 @@ public static function assertNotContainsOnly($type, $haystack, $isNativeType = n } self::assertThat( - $haystack, - new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_TraversableContainsOnly( - $type, - $isNativeType - ) - ), - $message + $haystack, + new PHPUnit_Framework_Constraint_Not( + new PHPUnit_Framework_Constraint_TraversableContainsOnly( + $type, $isNativeType + ) + ), + $message ); } @@ -379,30 +348,29 @@ public static function assertNotContainsOnly($type, $haystack, $isNativeType = n * or an attribute of an object does not contain only values of a given * type. * - * @param string $type - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param bool $isNativeType - * @param string $message - * + * @param string $type + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param boolean $isNativeType + * @param string $message * @since Method available since Release 3.1.4 */ public static function assertAttributeNotContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '') { self::assertNotContainsOnly( - $type, - self::readAttribute($haystackClassOrObject, $haystackAttributeName), - $isNativeType, - $message + $type, + self::readAttribute($haystackClassOrObject, $haystackAttributeName), + $isNativeType, + $message ); } /** * Asserts the number of elements of an array, Countable or Traversable. * - * @param int $expectedCount - * @param mixed $haystack - * @param string $message + * @param integer $expectedCount + * @param mixed $haystack + * @param string $message */ public static function assertCount($expectedCount, $haystack, $message = '') { @@ -417,9 +385,9 @@ public static function assertCount($expectedCount, $haystack, $message = '') } self::assertThat( - $haystack, - new PHPUnit_Framework_Constraint_Count($expectedCount), - $message + $haystack, + new PHPUnit_Framework_Constraint_Count($expectedCount), + $message ); } @@ -427,28 +395,27 @@ public static function assertCount($expectedCount, $haystack, $message = '') * Asserts the number of elements of an array, Countable or Traversable * that is stored in an attribute. * - * @param int $expectedCount - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param string $message - * + * @param integer $expectedCount + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param string $message * @since Method available since Release 3.6.0 */ public static function assertAttributeCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '') { self::assertCount( - $expectedCount, - self::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message + $expectedCount, + self::readAttribute($haystackClassOrObject, $haystackAttributeName), + $message ); } /** * Asserts the number of elements of an array, Countable or Traversable. * - * @param int $expectedCount - * @param mixed $haystack - * @param string $message + * @param integer $expectedCount + * @param mixed $haystack + * @param string $message */ public static function assertNotCount($expectedCount, $haystack, $message = '') { @@ -463,7 +430,7 @@ public static function assertNotCount($expectedCount, $haystack, $message = '') } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_Count($expectedCount) + new PHPUnit_Framework_Constraint_Count($expectedCount) ); self::assertThat($haystack, $constraint, $message); @@ -473,41 +440,36 @@ public static function assertNotCount($expectedCount, $haystack, $message = '') * Asserts the number of elements of an array, Countable or Traversable * that is stored in an attribute. * - * @param int $expectedCount - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param string $message - * + * @param integer $expectedCount + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param string $message * @since Method available since Release 3.6.0 */ public static function assertAttributeNotCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '') { self::assertNotCount( - $expectedCount, - self::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message + $expectedCount, + self::readAttribute($haystackClassOrObject, $haystackAttributeName), + $message ); } /** * Asserts that two variables are equal. * - * @param mixed $expected - * @param mixed $actual - * @param string $message - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase + * @param mixed $expected + * @param mixed $actual + * @param string $message + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase */ - public static function assertEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) + public static function assertEquals($expected, $actual, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { $constraint = new PHPUnit_Framework_Constraint_IsEqual( - $expected, - $delta, - $maxDepth, - $canonicalize, - $ignoreCase + $expected, $delta, $maxDepth, $canonicalize, $ignoreCase ); self::assertThat($actual, $constraint, $message); @@ -516,51 +478,46 @@ public static function assertEquals($expected, $actual, $message = '', $delta = /** * Asserts that a variable is equal to an attribute of an object. * - * @param mixed $expected - * @param string $actualAttributeName - * @param string $actualClassOrObject - * @param string $message - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase + * @param mixed $expected + * @param string $actualAttributeName + * @param string $actualClassOrObject + * @param string $message + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase */ - public static function assertAttributeEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) + public static function assertAttributeEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { self::assertEquals( - $expected, - self::readAttribute($actualClassOrObject, $actualAttributeName), - $message, - $delta, - $maxDepth, - $canonicalize, - $ignoreCase + $expected, + self::readAttribute($actualClassOrObject, $actualAttributeName), + $message, + $delta, + $maxDepth, + $canonicalize, + $ignoreCase ); } /** * Asserts that two variables are not equal. * - * @param mixed $expected - * @param mixed $actual - * @param string $message - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param mixed $expected + * @param mixed $actual + * @param string $message + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase * @since Method available since Release 2.3.0 */ - public static function assertNotEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) + public static function assertNotEquals($expected, $actual, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_IsEqual( - $expected, - $delta, - $maxDepth, - $canonicalize, - $ignoreCase - ) + new PHPUnit_Framework_Constraint_IsEqual( + $expected, $delta, $maxDepth, $canonicalize, $ignoreCase + ) ); self::assertThat($actual, $constraint, $message); @@ -569,34 +526,33 @@ public static function assertNotEquals($expected, $actual, $message = '', $delta /** * Asserts that a variable is not equal to an attribute of an object. * - * @param mixed $expected - * @param string $actualAttributeName - * @param string $actualClassOrObject - * @param string $message - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase + * @param mixed $expected + * @param string $actualAttributeName + * @param string $actualClassOrObject + * @param string $message + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase */ - public static function assertAttributeNotEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) + public static function assertAttributeNotEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { self::assertNotEquals( - $expected, - self::readAttribute($actualClassOrObject, $actualAttributeName), - $message, - $delta, - $maxDepth, - $canonicalize, - $ignoreCase + $expected, + self::readAttribute($actualClassOrObject, $actualAttributeName), + $message, + $delta, + $maxDepth, + $canonicalize, + $ignoreCase ); } /** * Asserts that a variable is empty. * - * @param mixed $actual - * @param string $message - * + * @param mixed $actual + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertEmpty($actual, $message = '') @@ -611,23 +567,21 @@ public static function assertEmpty($actual, $message = '') * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertAttributeEmpty($haystackAttributeName, $haystackClassOrObject, $message = '') { self::assertEmpty( - self::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message + self::readAttribute($haystackClassOrObject, $haystackAttributeName), + $message ); } /** * Asserts that a variable is not empty. * - * @param mixed $actual - * @param string $message - * + * @param mixed $actual + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertNotEmpty($actual, $message = '') @@ -642,14 +596,13 @@ public static function assertNotEmpty($actual, $message = '') * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertAttributeNotEmpty($haystackAttributeName, $haystackClassOrObject, $message = '') { self::assertNotEmpty( - self::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message + self::readAttribute($haystackClassOrObject, $haystackAttributeName), + $message ); } @@ -659,7 +612,6 @@ public static function assertAttributeNotEmpty($haystackAttributeName, $haystack * @param mixed $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertGreaterThan($expected, $actual, $message = '') @@ -674,15 +626,14 @@ public static function assertGreaterThan($expected, $actual, $message = '') * @param string $actualAttributeName * @param string $actualClassOrObject * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertAttributeGreaterThan($expected, $actualAttributeName, $actualClassOrObject, $message = '') { self::assertGreaterThan( - $expected, - self::readAttribute($actualClassOrObject, $actualAttributeName), - $message + $expected, + self::readAttribute($actualClassOrObject, $actualAttributeName), + $message ); } @@ -692,15 +643,12 @@ public static function assertAttributeGreaterThan($expected, $actualAttributeNam * @param mixed $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertGreaterThanOrEqual($expected, $actual, $message = '') { self::assertThat( - $actual, - self::greaterThanOrEqual($expected), - $message + $actual, self::greaterThanOrEqual($expected), $message ); } @@ -711,15 +659,14 @@ public static function assertGreaterThanOrEqual($expected, $actual, $message = ' * @param string $actualAttributeName * @param string $actualClassOrObject * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertAttributeGreaterThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '') { self::assertGreaterThanOrEqual( - $expected, - self::readAttribute($actualClassOrObject, $actualAttributeName), - $message + $expected, + self::readAttribute($actualClassOrObject, $actualAttributeName), + $message ); } @@ -729,7 +676,6 @@ public static function assertAttributeGreaterThanOrEqual($expected, $actualAttri * @param mixed $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertLessThan($expected, $actual, $message = '') @@ -744,15 +690,14 @@ public static function assertLessThan($expected, $actual, $message = '') * @param string $actualAttributeName * @param string $actualClassOrObject * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertAttributeLessThan($expected, $actualAttributeName, $actualClassOrObject, $message = '') { self::assertLessThan( - $expected, - self::readAttribute($actualClassOrObject, $actualAttributeName), - $message + $expected, + self::readAttribute($actualClassOrObject, $actualAttributeName), + $message ); } @@ -762,7 +707,6 @@ public static function assertAttributeLessThan($expected, $actualAttributeName, * @param mixed $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertLessThanOrEqual($expected, $actual, $message = '') @@ -777,15 +721,14 @@ public static function assertLessThanOrEqual($expected, $actual, $message = '') * @param string $actualAttributeName * @param string $actualClassOrObject * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertAttributeLessThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '') { self::assertLessThanOrEqual( - $expected, - self::readAttribute($actualClassOrObject, $actualAttributeName), - $message + $expected, + self::readAttribute($actualClassOrObject, $actualAttributeName), + $message ); } @@ -793,12 +736,11 @@ public static function assertAttributeLessThanOrEqual($expected, $actualAttribut * Asserts that the contents of one file is equal to the contents of another * file. * - * @param string $expected - * @param string $actual - * @param string $message - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param string $expected + * @param string $actual + * @param string $message + * @param boolean $canonicalize + * @param boolean $ignoreCase * @since Method available since Release 3.2.14 */ public static function assertFileEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false) @@ -807,13 +749,13 @@ public static function assertFileEquals($expected, $actual, $message = '', $cano self::assertFileExists($actual, $message); self::assertEquals( - file_get_contents($expected), - file_get_contents($actual), - $message, - 0, - 10, - $canonicalize, - $ignoreCase + file_get_contents($expected), + file_get_contents($actual), + $message, + 0, + 10, + $canonicalize, + $ignoreCase ); } @@ -821,12 +763,11 @@ public static function assertFileEquals($expected, $actual, $message = '', $cano * Asserts that the contents of one file is not equal to the contents of * another file. * - * @param string $expected - * @param string $actual - * @param string $message - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param string $expected + * @param string $actual + * @param string $message + * @param boolean $canonicalize + * @param boolean $ignoreCase * @since Method available since Release 3.2.14 */ public static function assertFileNotEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false) @@ -835,13 +776,13 @@ public static function assertFileNotEquals($expected, $actual, $message = '', $c self::assertFileExists($actual, $message); self::assertNotEquals( - file_get_contents($expected), - file_get_contents($actual), - $message, - 0, - 10, - $canonicalize, - $ignoreCase + file_get_contents($expected), + file_get_contents($actual), + $message, + 0, + 10, + $canonicalize, + $ignoreCase ); } @@ -849,12 +790,11 @@ public static function assertFileNotEquals($expected, $actual, $message = '', $c * Asserts that the contents of a string is equal * to the contents of a file. * - * @param string $expectedFile - * @param string $actualString - * @param string $message - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param string $expectedFile + * @param string $actualString + * @param string $message + * @param boolean $canonicalize + * @param boolean $ignoreCase * @since Method available since Release 3.3.0 */ public static function assertStringEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false) @@ -862,13 +802,13 @@ public static function assertStringEqualsFile($expectedFile, $actualString, $mes self::assertFileExists($expectedFile, $message); self::assertEquals( - file_get_contents($expectedFile), - $actualString, - $message, - 0, - 10, - $canonicalize, - $ignoreCase + file_get_contents($expectedFile), + $actualString, + $message, + 0, + 10, + $canonicalize, + $ignoreCase ); } @@ -876,12 +816,11 @@ public static function assertStringEqualsFile($expectedFile, $actualString, $mes * Asserts that the contents of a string is not equal * to the contents of a file. * - * @param string $expectedFile - * @param string $actualString - * @param string $message - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param string $expectedFile + * @param string $actualString + * @param string $message + * @param boolean $canonicalize + * @param boolean $ignoreCase * @since Method available since Release 3.3.0 */ public static function assertStringNotEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false) @@ -889,13 +828,13 @@ public static function assertStringNotEqualsFile($expectedFile, $actualString, $ self::assertFileExists($expectedFile, $message); self::assertNotEquals( - file_get_contents($expectedFile), - $actualString, - $message, - 0, - 10, - $canonicalize, - $ignoreCase + file_get_contents($expectedFile), + $actualString, + $message, + 0, + 10, + $canonicalize, + $ignoreCase ); } @@ -904,7 +843,6 @@ public static function assertStringNotEqualsFile($expectedFile, $actualString, $ * * @param string $filename * @param string $message - * * @since Method available since Release 3.0.0 */ public static function assertFileExists($filename, $message = '') @@ -923,7 +861,6 @@ public static function assertFileExists($filename, $message = '') * * @param string $filename * @param string $message - * * @since Method available since Release 3.0.0 */ public static function assertFileNotExists($filename, $message = '') @@ -933,7 +870,7 @@ public static function assertFileNotExists($filename, $message = '') } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_FileExists + new PHPUnit_Framework_Constraint_FileExists ); self::assertThat($filename, $constraint, $message); @@ -942,9 +879,8 @@ public static function assertFileNotExists($filename, $message = '') /** * Asserts that a condition is true. * - * @param bool $condition - * @param string $message - * + * @param boolean $condition + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertTrue($condition, $message = '') @@ -955,9 +891,8 @@ public static function assertTrue($condition, $message = '') /** * Asserts that a condition is not true. * - * @param bool $condition - * @param string $message - * + * @param boolean $condition + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertNotTrue($condition, $message = '') @@ -968,9 +903,8 @@ public static function assertNotTrue($condition, $message = '') /** * Asserts that a condition is false. * - * @param bool $condition - * @param string $message - * + * @param boolean $condition + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertFalse($condition, $message = '') @@ -981,9 +915,8 @@ public static function assertFalse($condition, $message = '') /** * Asserts that a condition is not false. * - * @param bool $condition - * @param string $message - * + * @param boolean $condition + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertNotFalse($condition, $message = '') @@ -1013,46 +946,12 @@ public static function assertNull($actual, $message = '') self::assertThat($actual, self::isNull(), $message); } - /** - * Asserts that a variable is finite. - * - * @param mixed $actual - * @param string $message - */ - public static function assertFinite($actual, $message = '') - { - self::assertThat($actual, self::isFinite(), $message); - } - - /** - * Asserts that a variable is infinite. - * - * @param mixed $actual - * @param string $message - */ - public static function assertInfinite($actual, $message = '') - { - self::assertThat($actual, self::isInfinite(), $message); - } - - /** - * Asserts that a variable is nan. - * - * @param mixed $actual - * @param string $message - */ - public static function assertNan($actual, $message = '') - { - self::assertThat($actual, self::isNan(), $message); - } - /** * Asserts that a class has a specified attribute. * * @param string $attributeName * @param string $className * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertClassHasAttribute($attributeName, $className, $message = '') @@ -1065,12 +964,12 @@ public static function assertClassHasAttribute($attributeName, $className, $mess throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name'); } - if (!is_string($className) || !class_exists($className)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className); + if (!is_string($className) || !class_exists($className, false)) { + throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name'); } $constraint = new PHPUnit_Framework_Constraint_ClassHasAttribute( - $attributeName + $attributeName ); self::assertThat($className, $constraint, $message); @@ -1082,7 +981,6 @@ public static function assertClassHasAttribute($attributeName, $className, $mess * @param string $attributeName * @param string $className * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertClassNotHasAttribute($attributeName, $className, $message = '') @@ -1095,12 +993,12 @@ public static function assertClassNotHasAttribute($attributeName, $className, $m throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name'); } - if (!is_string($className) || !class_exists($className)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className); + if (!is_string($className) || !class_exists($className, false)) { + throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name'); } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_ClassHasAttribute($attributeName) + new PHPUnit_Framework_Constraint_ClassHasAttribute($attributeName) ); self::assertThat($className, $constraint, $message); @@ -1112,7 +1010,6 @@ public static function assertClassNotHasAttribute($attributeName, $className, $m * @param string $attributeName * @param string $className * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertClassHasStaticAttribute($attributeName, $className, $message = '') @@ -1125,12 +1022,12 @@ public static function assertClassHasStaticAttribute($attributeName, $className, throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name'); } - if (!is_string($className) || !class_exists($className)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className); + if (!is_string($className) || !class_exists($className, false)) { + throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name'); } $constraint = new PHPUnit_Framework_Constraint_ClassHasStaticAttribute( - $attributeName + $attributeName ); self::assertThat($className, $constraint, $message); @@ -1142,7 +1039,6 @@ public static function assertClassHasStaticAttribute($attributeName, $className, * @param string $attributeName * @param string $className * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertClassNotHasStaticAttribute($attributeName, $className, $message = '') @@ -1155,14 +1051,14 @@ public static function assertClassNotHasStaticAttribute($attributeName, $classNa throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name'); } - if (!is_string($className) || !class_exists($className)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className); + if (!is_string($className) || !class_exists($className, false)) { + throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name'); } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_ClassHasStaticAttribute( - $attributeName - ) + new PHPUnit_Framework_Constraint_ClassHasStaticAttribute( + $attributeName + ) ); self::assertThat($className, $constraint, $message); @@ -1174,7 +1070,6 @@ public static function assertClassNotHasStaticAttribute($attributeName, $classNa * @param string $attributeName * @param object $object * @param string $message - * * @since Method available since Release 3.0.0 */ public static function assertObjectHasAttribute($attributeName, $object, $message = '') @@ -1192,7 +1087,7 @@ public static function assertObjectHasAttribute($attributeName, $object, $messag } $constraint = new PHPUnit_Framework_Constraint_ObjectHasAttribute( - $attributeName + $attributeName ); self::assertThat($object, $constraint, $message); @@ -1204,7 +1099,6 @@ public static function assertObjectHasAttribute($attributeName, $object, $messag * @param string $attributeName * @param object $object * @param string $message - * * @since Method available since Release 3.0.0 */ public static function assertObjectNotHasAttribute($attributeName, $object, $message = '') @@ -1222,7 +1116,7 @@ public static function assertObjectNotHasAttribute($attributeName, $object, $mes } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_ObjectHasAttribute($attributeName) + new PHPUnit_Framework_Constraint_ObjectHasAttribute($attributeName) ); self::assertThat($object, $constraint, $message); @@ -1243,7 +1137,7 @@ public static function assertSame($expected, $actual, $message = '') self::assertEquals($expected, $actual, $message); } else { $constraint = new PHPUnit_Framework_Constraint_IsIdentical( - $expected + $expected ); self::assertThat($actual, $constraint, $message); @@ -1262,9 +1156,9 @@ public static function assertSame($expected, $actual, $message = '') public static function assertAttributeSame($expected, $actualAttributeName, $actualClassOrObject, $message = '') { self::assertSame( - $expected, - self::readAttribute($actualClassOrObject, $actualAttributeName), - $message + $expected, + self::readAttribute($actualClassOrObject, $actualAttributeName), + $message ); } @@ -1283,7 +1177,7 @@ public static function assertNotSame($expected, $actual, $message = '') self::assertNotEquals($expected, $actual, $message); } else { $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_IsIdentical($expected) + new PHPUnit_Framework_Constraint_IsIdentical($expected) ); self::assertThat($actual, $constraint, $message); @@ -1302,9 +1196,9 @@ public static function assertNotSame($expected, $actual, $message = '') public static function assertAttributeNotSame($expected, $actualAttributeName, $actualClassOrObject, $message = '') { self::assertNotSame( - $expected, - self::readAttribute($actualClassOrObject, $actualAttributeName), - $message + $expected, + self::readAttribute($actualClassOrObject, $actualAttributeName), + $message ); } @@ -1314,7 +1208,6 @@ public static function assertAttributeNotSame($expected, $actualAttributeName, $ * @param string $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertInstanceOf($expected, $actual, $message = '') @@ -1337,15 +1230,14 @@ public static function assertInstanceOf($expected, $actual, $message = '') * @param string $attributeName * @param mixed $classOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertAttributeInstanceOf($expected, $attributeName, $classOrObject, $message = '') { self::assertInstanceOf( - $expected, - self::readAttribute($classOrObject, $attributeName), - $message + $expected, + self::readAttribute($classOrObject, $attributeName), + $message ); } @@ -1355,7 +1247,6 @@ public static function assertAttributeInstanceOf($expected, $attributeName, $cla * @param string $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertNotInstanceOf($expected, $actual, $message = '') @@ -1378,15 +1269,14 @@ public static function assertNotInstanceOf($expected, $actual, $message = '') * @param string $attributeName * @param mixed $classOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertAttributeNotInstanceOf($expected, $attributeName, $classOrObject, $message = '') { self::assertNotInstanceOf( - $expected, - self::readAttribute($classOrObject, $attributeName), - $message + $expected, + self::readAttribute($classOrObject, $attributeName), + $message ); } @@ -1396,7 +1286,6 @@ public static function assertAttributeNotInstanceOf($expected, $attributeName, $ * @param string $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertInternalType($expected, $actual, $message = '') @@ -1419,15 +1308,14 @@ public static function assertInternalType($expected, $actual, $message = '') * @param string $attributeName * @param mixed $classOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertAttributeInternalType($expected, $attributeName, $classOrObject, $message = '') { self::assertInternalType( - $expected, - self::readAttribute($classOrObject, $attributeName), - $message + $expected, + self::readAttribute($classOrObject, $attributeName), + $message ); } @@ -1437,7 +1325,6 @@ public static function assertAttributeInternalType($expected, $attributeName, $c * @param string $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertNotInternalType($expected, $actual, $message = '') @@ -1460,15 +1347,14 @@ public static function assertNotInternalType($expected, $actual, $message = '') * @param string $attributeName * @param mixed $classOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertAttributeNotInternalType($expected, $attributeName, $classOrObject, $message = '') { self::assertNotInternalType( - $expected, - self::readAttribute($classOrObject, $attributeName), - $message + $expected, + self::readAttribute($classOrObject, $attributeName), + $message ); } @@ -1500,7 +1386,6 @@ public static function assertRegExp($pattern, $string, $message = '') * @param string $pattern * @param string $string * @param string $message - * * @since Method available since Release 2.1.0 */ public static function assertNotRegExp($pattern, $string, $message = '') @@ -1514,7 +1399,7 @@ public static function assertNotRegExp($pattern, $string, $message = '') } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_PCREMatch($pattern) + new PHPUnit_Framework_Constraint_PCREMatch($pattern) ); self::assertThat($string, $constraint, $message); @@ -1543,9 +1428,9 @@ public static function assertSameSize($expected, $actual, $message = '') } self::assertThat( - $actual, - new PHPUnit_Framework_Constraint_SameSize($expected), - $message + $actual, + new PHPUnit_Framework_Constraint_SameSize($expected), + $message ); } @@ -1572,7 +1457,7 @@ public static function assertNotSameSize($expected, $actual, $message = '') } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_SameSize($expected) + new PHPUnit_Framework_Constraint_SameSize($expected) ); self::assertThat($actual, $constraint, $message); @@ -1584,7 +1469,6 @@ public static function assertNotSameSize($expected, $actual, $message = '') * @param string $format * @param string $string * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertStringMatchesFormat($format, $string, $message = '') @@ -1608,7 +1492,6 @@ public static function assertStringMatchesFormat($format, $string, $message = '' * @param string $format * @param string $string * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertStringNotMatchesFormat($format, $string, $message = '') @@ -1622,7 +1505,7 @@ public static function assertStringNotMatchesFormat($format, $string, $message = } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_StringMatches($format) + new PHPUnit_Framework_Constraint_StringMatches($format) ); self::assertThat($string, $constraint, $message); @@ -1634,7 +1517,6 @@ public static function assertStringNotMatchesFormat($format, $string, $message = * @param string $formatFile * @param string $string * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertStringMatchesFormatFile($formatFile, $string, $message = '') @@ -1646,7 +1528,7 @@ public static function assertStringMatchesFormatFile($formatFile, $string, $mess } $constraint = new PHPUnit_Framework_Constraint_StringMatches( - file_get_contents($formatFile) + file_get_contents($formatFile) ); self::assertThat($string, $constraint, $message); @@ -1658,7 +1540,6 @@ public static function assertStringMatchesFormatFile($formatFile, $string, $mess * @param string $formatFile * @param string $string * @param string $message - * * @since Method available since Release 3.5.0 */ public static function assertStringNotMatchesFormatFile($formatFile, $string, $message = '') @@ -1670,9 +1551,9 @@ public static function assertStringNotMatchesFormatFile($formatFile, $string, $m } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_StringMatches( - file_get_contents($formatFile) - ) + new PHPUnit_Framework_Constraint_StringMatches( + file_get_contents($formatFile) + ) ); self::assertThat($string, $constraint, $message); @@ -1684,7 +1565,6 @@ public static function assertStringNotMatchesFormatFile($formatFile, $string, $m * @param string $prefix * @param string $string * @param string $message - * * @since Method available since Release 3.4.0 */ public static function assertStringStartsWith($prefix, $string, $message = '') @@ -1698,7 +1578,7 @@ public static function assertStringStartsWith($prefix, $string, $message = '') } $constraint = new PHPUnit_Framework_Constraint_StringStartsWith( - $prefix + $prefix ); self::assertThat($string, $constraint, $message); @@ -1710,7 +1590,6 @@ public static function assertStringStartsWith($prefix, $string, $message = '') * @param string $prefix * @param string $string * @param string $message - * * @since Method available since Release 3.4.0 */ public static function assertStringStartsNotWith($prefix, $string, $message = '') @@ -1724,7 +1603,7 @@ public static function assertStringStartsNotWith($prefix, $string, $message = '' } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_StringStartsWith($prefix) + new PHPUnit_Framework_Constraint_StringStartsWith($prefix) ); self::assertThat($string, $constraint, $message); @@ -1736,7 +1615,6 @@ public static function assertStringStartsNotWith($prefix, $string, $message = '' * @param string $suffix * @param string $string * @param string $message - * * @since Method available since Release 3.4.0 */ public static function assertStringEndsWith($suffix, $string, $message = '') @@ -1760,7 +1638,6 @@ public static function assertStringEndsWith($suffix, $string, $message = '') * @param string $suffix * @param string $string * @param string $message - * * @since Method available since Release 3.4.0 */ public static function assertStringEndsNotWith($suffix, $string, $message = '') @@ -1774,7 +1651,7 @@ public static function assertStringEndsNotWith($suffix, $string, $message = '') } $constraint = new PHPUnit_Framework_Constraint_Not( - new PHPUnit_Framework_Constraint_StringEndsWith($suffix) + new PHPUnit_Framework_Constraint_StringEndsWith($suffix) ); self::assertThat($string, $constraint, $message); @@ -1786,13 +1663,20 @@ public static function assertStringEndsNotWith($suffix, $string, $message = '') * @param string $expectedFile * @param string $actualFile * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = '') { - $expected = PHPUnit_Util_XML::loadFile($expectedFile); - $actual = PHPUnit_Util_XML::loadFile($actualFile); + self::assertFileExists($expectedFile); + self::assertFileExists($actualFile); + + $expected = new DOMDocument; + $expected->preserveWhiteSpace = false; + $expected->load($expectedFile); + + $actual = new DOMDocument; + $actual->preserveWhiteSpace = false; + $actual->load($actualFile); self::assertEquals($expected, $actual, $message); } @@ -1803,13 +1687,20 @@ public static function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $m * @param string $expectedFile * @param string $actualFile * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = '') { - $expected = PHPUnit_Util_XML::loadFile($expectedFile); - $actual = PHPUnit_Util_XML::loadFile($actualFile); + self::assertFileExists($expectedFile); + self::assertFileExists($actualFile); + + $expected = new DOMDocument; + $expected->preserveWhiteSpace = false; + $expected->load($expectedFile); + + $actual = new DOMDocument; + $actual->preserveWhiteSpace = false; + $actual->load($actualFile); self::assertNotEquals($expected, $actual, $message); } @@ -1820,13 +1711,19 @@ public static function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, * @param string $expectedFile * @param string $actualXml * @param string $message - * * @since Method available since Release 3.3.0 */ public static function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = '') { - $expected = PHPUnit_Util_XML::loadFile($expectedFile); - $actual = PHPUnit_Util_XML::load($actualXml); + self::assertFileExists($expectedFile); + + $expected = new DOMDocument; + $expected->preserveWhiteSpace = false; + $expected->load($expectedFile); + + $actual = new DOMDocument; + $actual->preserveWhiteSpace = false; + $actual->loadXML($actualXml); self::assertEquals($expected, $actual, $message); } @@ -1837,13 +1734,19 @@ public static function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $ * @param string $expectedFile * @param string $actualXml * @param string $message - * * @since Method available since Release 3.3.0 */ public static function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = '') { - $expected = PHPUnit_Util_XML::loadFile($expectedFile); - $actual = PHPUnit_Util_XML::load($actualXml); + self::assertFileExists($expectedFile); + + $expected = new DOMDocument; + $expected->preserveWhiteSpace = false; + $expected->load($expectedFile); + + $actual = new DOMDocument; + $actual->preserveWhiteSpace = false; + $actual->loadXML($actualXml); self::assertNotEquals($expected, $actual, $message); } @@ -1854,13 +1757,17 @@ public static function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml * @param string $expectedXml * @param string $actualXml * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = '') { - $expected = PHPUnit_Util_XML::load($expectedXml); - $actual = PHPUnit_Util_XML::load($actualXml); + $expected = new DOMDocument; + $expected->preserveWhiteSpace = false; + $expected->loadXML($expectedXml); + + $actual = new DOMDocument; + $actual->preserveWhiteSpace = false; + $actual->loadXML($actualXml); self::assertEquals($expected, $actual, $message); } @@ -1871,13 +1778,17 @@ public static function assertXmlStringEqualsXmlString($expectedXml, $actualXml, * @param string $expectedXml * @param string $actualXml * @param string $message - * * @since Method available since Release 3.1.0 */ public static function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message = '') { - $expected = PHPUnit_Util_XML::load($expectedXml); - $actual = PHPUnit_Util_XML::load($actualXml); + $expected = new DOMDocument; + $expected->preserveWhiteSpace = false; + $expected->loadXML($expectedXml); + + $actual = new DOMDocument; + $actual->preserveWhiteSpace = false; + $actual->loadXML($actualXml); self::assertNotEquals($expected, $actual, $message); } @@ -1887,54 +1798,46 @@ public static function assertXmlStringNotEqualsXmlString($expectedXml, $actualXm * * @param DOMElement $expectedElement * @param DOMElement $actualElement - * @param bool $checkAttributes + * @param boolean $checkAttributes * @param string $message - * + * @author Mattis Stordalen Flister * @since Method available since Release 3.3.0 */ public static function assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement, $checkAttributes = false, $message = '') { - $tmp = new DOMDocument; - $expectedElement = $tmp->importNode($expectedElement, true); - - $tmp = new DOMDocument; - $actualElement = $tmp->importNode($actualElement, true); - - unset($tmp); - self::assertEquals( - $expectedElement->tagName, - $actualElement->tagName, - $message + $expectedElement->tagName, + $actualElement->tagName, + $message ); if ($checkAttributes) { self::assertEquals( - $expectedElement->attributes->length, - $actualElement->attributes->length, - sprintf( - '%s%sNumber of attributes on node "%s" does not match', - $message, - !empty($message) ? "\n" : '', - $expectedElement->tagName - ) + $expectedElement->attributes->length, + $actualElement->attributes->length, + sprintf( + '%s%sNumber of attributes on node "%s" does not match', + $message, + !empty($message) ? "\n" : '', + $expectedElement->tagName + ) ); - for ($i = 0; $i < $expectedElement->attributes->length; $i++) { + for ($i = 0 ; $i < $expectedElement->attributes->length; $i++) { $expectedAttribute = $expectedElement->attributes->item($i); $actualAttribute = $actualElement->attributes->getNamedItem( - $expectedAttribute->name + $expectedAttribute->name ); if (!$actualAttribute) { self::fail( - sprintf( - '%s%sCould not find attribute "%s" on node "%s"', - $message, - !empty($message) ? "\n" : '', - $expectedAttribute->name, - $expectedElement->tagName - ) + sprintf( + '%s%sCould not find attribute "%s" on node "%s"', + $message, + !empty($message) ? "\n" : '', + $expectedAttribute->name, + $expectedElement->tagName + ) ); } } @@ -1944,33 +1847,316 @@ public static function assertEqualXMLStructure(DOMElement $expectedElement, DOME PHPUnit_Util_XML::removeCharacterDataNodes($actualElement); self::assertEquals( - $expectedElement->childNodes->length, - $actualElement->childNodes->length, - sprintf( - '%s%sNumber of child nodes of "%s" differs', - $message, - !empty($message) ? "\n" : '', - $expectedElement->tagName - ) + $expectedElement->childNodes->length, + $actualElement->childNodes->length, + sprintf( + '%s%sNumber of child nodes of "%s" differs', + $message, + !empty($message) ? "\n" : '', + $expectedElement->tagName + ) ); for ($i = 0; $i < $expectedElement->childNodes->length; $i++) { self::assertEqualXMLStructure( - $expectedElement->childNodes->item($i), - $actualElement->childNodes->item($i), - $checkAttributes, - $message + $expectedElement->childNodes->item($i), + $actualElement->childNodes->item($i), + $checkAttributes, + $message ); } } + /** + * Assert the presence, absence, or count of elements in a document matching + * the CSS $selector, regardless of the contents of those elements. + * + * The first argument, $selector, is the CSS selector used to match + * the elements in the $actual document. + * + * The second argument, $count, can be either boolean or numeric. + * When boolean, it asserts for presence of elements matching the selector + * (true) or absence of elements (false). + * When numeric, it asserts the count of elements. + * + * assertSelectCount("#binder", true, $xml); // any? + * assertSelectCount(".binder", 3, $xml); // exactly 3? + * + * @param array $selector + * @param integer $count + * @param mixed $actual + * @param string $message + * @param boolean $isHtml + * @since Method available since Release 3.3.0 + * @author Mike Naberezny + * @author Derek DeVries + */ + public static function assertSelectCount($selector, $count, $actual, $message = '', $isHtml = true) + { + self::assertSelectEquals( + $selector, true, $count, $actual, $message, $isHtml + ); + } + + /** + * assertSelectRegExp("#binder .name", "/Mike|Derek/", true, $xml); // any? + * assertSelectRegExp("#binder .name", "/Mike|Derek/", 3, $xml); // 3? + * + * @param array $selector + * @param string $pattern + * @param integer $count + * @param mixed $actual + * @param string $message + * @param boolean $isHtml + * @since Method available since Release 3.3.0 + * @author Mike Naberezny + * @author Derek DeVries + */ + public static function assertSelectRegExp($selector, $pattern, $count, $actual, $message = '', $isHtml = true) + { + self::assertSelectEquals( + $selector, "regexp:$pattern", $count, $actual, $message, $isHtml + ); + } + + /** + * assertSelectEquals("#binder .name", "Chuck", true, $xml); // any? + * assertSelectEquals("#binder .name", "Chuck", false, $xml); // none? + * + * @param array $selector + * @param string $content + * @param integer $count + * @param mixed $actual + * @param string $message + * @param boolean $isHtml + * @since Method available since Release 3.3.0 + * @author Mike Naberezny + * @author Derek DeVries + */ + public static function assertSelectEquals($selector, $content, $count, $actual, $message = '', $isHtml = true) + { + $tags = PHPUnit_Util_XML::cssSelect( + $selector, $content, $actual, $isHtml + ); + + // assert specific number of elements + if (is_numeric($count)) { + $counted = $tags ? count($tags) : 0; + self::assertEquals($count, $counted, $message); + } + + // assert any elements exist if true, assert no elements exist if false + else if (is_bool($count)) { + $any = count($tags) > 0 && $tags[0] instanceof DOMNode; + + if ($count) { + self::assertTrue($any, $message); + } else { + self::assertFalse($any, $message); + } + } + + // check for range number of elements + else if (is_array($count) && + (isset($count['>']) || isset($count['<']) || + isset($count['>=']) || isset($count['<=']))) { + $counted = $tags ? count($tags) : 0; + + if (isset($count['>'])) { + self::assertTrue($counted > $count['>'], $message); + } + + if (isset($count['>='])) { + self::assertTrue($counted >= $count['>='], $message); + } + + if (isset($count['<'])) { + self::assertTrue($counted < $count['<'], $message); + } + + if (isset($count['<='])) { + self::assertTrue($counted <= $count['<='], $message); + } + } else { + throw new PHPUnit_Framework_Exception; + } + } + + /** + * Evaluate an HTML or XML string and assert its structure and/or contents. + * + * The first argument ($matcher) is an associative array that specifies the + * match criteria for the assertion: + * + * - `id` : the node with the given id attribute must match the + * corresponding value. + * - `tag` : the node type must match the corresponding value. + * - `attributes` : a hash. The node's attributes must match the + * corresponding values in the hash. + * - `content` : The text content must match the given value. + * - `parent` : a hash. The node's parent must match the + * corresponding hash. + * - `child` : a hash. At least one of the node's immediate children + * must meet the criteria described by the hash. + * - `ancestor` : a hash. At least one of the node's ancestors must + * meet the criteria described by the hash. + * - `descendant` : a hash. At least one of the node's descendants must + * meet the criteria described by the hash. + * - `children` : a hash, for counting children of a node. + * Accepts the keys: + * - `count` : a number which must equal the number of children + * that match + * - `less_than` : the number of matching children must be greater + * than this number + * - `greater_than` : the number of matching children must be less than + * this number + * - `only` : another hash consisting of the keys to use to match + * on the children, and only matching children will be + * counted + * + * + * // Matcher that asserts that there is an element with an id="my_id". + * $matcher = array('id' => 'my_id'); + * + * // Matcher that asserts that there is a "span" tag. + * $matcher = array('tag' => 'span'); + * + * // Matcher that asserts that there is a "span" tag with the content + * // "Hello World". + * $matcher = array('tag' => 'span', 'content' => 'Hello World'); + * + * // Matcher that asserts that there is a "span" tag with content matching + * // the regular expression pattern. + * $matcher = array('tag' => 'span', 'content' => 'regexp:/Try P(HP|ython)/'); + * + * // Matcher that asserts that there is a "span" with an "list" class + * // attribute. + * $matcher = array( + * 'tag' => 'span', + * 'attributes' => array('class' => 'list') + * ); + * + * // Matcher that asserts that there is a "span" inside of a "div". + * $matcher = array( + * 'tag' => 'span', + * 'parent' => array('tag' => 'div') + * ); + * + * // Matcher that asserts that there is a "span" somewhere inside a + * // "table". + * $matcher = array( + * 'tag' => 'span', + * 'ancestor' => array('tag' => 'table') + * ); + * + * // Matcher that asserts that there is a "span" with at least one "em" + * // child. + * $matcher = array( + * 'tag' => 'span', + * 'child' => array('tag' => 'em') + * ); + * + * // Matcher that asserts that there is a "span" containing a (possibly + * // nested) "strong" tag. + * $matcher = array( + * 'tag' => 'span', + * 'descendant' => array('tag' => 'strong') + * ); + * + * // Matcher that asserts that there is a "span" containing 5-10 "em" tags + * // as immediate children. + * $matcher = array( + * 'tag' => 'span', + * 'children' => array( + * 'less_than' => 11, + * 'greater_than' => 4, + * 'only' => array('tag' => 'em') + * ) + * ); + * + * // Matcher that asserts that there is a "div", with an "ul" ancestor and + * // a "li" parent (with class="enum"), and containing a "span" descendant + * // that contains an element with id="my_test" and the text "Hello World". + * $matcher = array( + * 'tag' => 'div', + * 'ancestor' => array('tag' => 'ul'), + * 'parent' => array( + * 'tag' => 'li', + * 'attributes' => array('class' => 'enum') + * ), + * 'descendant' => array( + * 'tag' => 'span', + * 'child' => array( + * 'id' => 'my_test', + * 'content' => 'Hello World' + * ) + * ) + * ); + * + * // Use assertTag() to apply a $matcher to a piece of $html. + * $this->assertTag($matcher, $html); + * + * // Use assertTag() to apply a $matcher to a piece of $xml. + * $this->assertTag($matcher, $xml, '', false); + * + * + * The second argument ($actual) is a string containing either HTML or + * XML text to be tested. + * + * The third argument ($message) is an optional message that will be + * used if the assertion fails. + * + * The fourth argument ($html) is an optional flag specifying whether + * to load the $actual string into a DOMDocument using the HTML or + * XML load strategy. It is true by default, which assumes the HTML + * load strategy. In many cases, this will be acceptable for XML as well. + * + * @param array $matcher + * @param string $actual + * @param string $message + * @param boolean $isHtml + * @since Method available since Release 3.3.0 + * @author Mike Naberezny + * @author Derek DeVries + */ + public static function assertTag($matcher, $actual, $message = '', $isHtml = true) + { + $dom = PHPUnit_Util_XML::load($actual, $isHtml); + $tags = PHPUnit_Util_XML::findNodes($dom, $matcher, $isHtml); + $matched = count($tags) > 0 && $tags[0] instanceof DOMNode; + + self::assertTrue($matched, $message); + } + + /** + * This assertion is the exact opposite of assertTag(). + * + * Rather than asserting that $matcher results in a match, it asserts that + * $matcher does not match. + * + * @param array $matcher + * @param string $actual + * @param string $message + * @param boolean $isHtml + * @since Method available since Release 3.3.0 + * @author Mike Naberezny + * @author Derek DeVries + */ + public static function assertNotTag($matcher, $actual, $message = '', $isHtml = true) + { + $dom = PHPUnit_Util_XML::load($actual, $isHtml); + $tags = PHPUnit_Util_XML::findNodes($dom, $matcher, $isHtml); + $matched = count($tags) > 0 && $tags[0] instanceof DOMNode; + + self::assertFalse($matched, $message); + } + /** * Evaluates a PHPUnit_Framework_Constraint matcher object. * * @param mixed $value * @param PHPUnit_Framework_Constraint $constraint * @param string $message - * * @since Method available since Release 3.0.0 */ public static function assertThat($value, PHPUnit_Framework_Constraint $constraint, $message = '') @@ -1985,7 +2171,6 @@ public static function assertThat($value, PHPUnit_Framework_Constraint $constrai * * @param string $actualJson * @param string $message - * * @since Method available since Release 3.7.20 */ public static function assertJson($actualJson, $message = '') @@ -2050,7 +2235,7 @@ public static function assertJsonStringEqualsJsonFile($expectedFile, $actualJson // call constraint $constraint = new PHPUnit_Framework_Constraint_JsonMatches( - $expectedJson + $expectedJson ); self::assertThat($actualJson, $constraint, $message); @@ -2073,7 +2258,7 @@ public static function assertJsonStringNotEqualsJsonFile($expectedFile, $actualJ // call constraint $constraint = new PHPUnit_Framework_Constraint_JsonMatches( - $expectedJson + $expectedJson ); self::assertThat($actualJson, new PHPUnit_Framework_Constraint_Not($constraint), $message); @@ -2091,7 +2276,7 @@ public static function assertJsonFileNotEqualsJsonFile($expectedFile, $actualFil self::assertFileExists($expectedFile, $message); self::assertFileExists($actualFile, $message); - $actualJson = file_get_contents($actualFile); + $actualJson = file_get_contents($actualFile); $expectedJson = file_get_contents($expectedFile); self::assertJson($expectedJson, $message); @@ -2099,7 +2284,7 @@ public static function assertJsonFileNotEqualsJsonFile($expectedFile, $actualFil // call constraint $constraintExpected = new PHPUnit_Framework_Constraint_JsonMatches( - $expectedJson + $expectedJson ); $constraintActual = new PHPUnit_Framework_Constraint_JsonMatches($actualJson); @@ -2120,7 +2305,7 @@ public static function assertJsonFileEqualsJsonFile($expectedFile, $actualFile, self::assertFileExists($expectedFile, $message); self::assertFileExists($actualFile, $message); - $actualJson = file_get_contents($actualFile); + $actualJson = file_get_contents($actualFile); $expectedJson = file_get_contents($expectedFile); self::assertJson($expectedJson, $message); @@ -2128,7 +2313,7 @@ public static function assertJsonFileEqualsJsonFile($expectedFile, $actualFile, // call constraint $constraintExpected = new PHPUnit_Framework_Constraint_JsonMatches( - $expectedJson + $expectedJson ); $constraintActual = new PHPUnit_Framework_Constraint_JsonMatches($actualJson); @@ -2141,7 +2326,6 @@ public static function assertJsonFileEqualsJsonFile($expectedFile, $actualFile, * Returns a PHPUnit_Framework_Constraint_And matcher object. * * @return PHPUnit_Framework_Constraint_And - * * @since Method available since Release 3.0.0 */ public static function logicalAnd() @@ -2158,7 +2342,6 @@ public static function logicalAnd() * Returns a PHPUnit_Framework_Constraint_Or matcher object. * * @return PHPUnit_Framework_Constraint_Or - * * @since Method available since Release 3.0.0 */ public static function logicalOr() @@ -2174,10 +2357,8 @@ public static function logicalOr() /** * Returns a PHPUnit_Framework_Constraint_Not matcher object. * - * @param PHPUnit_Framework_Constraint $constraint - * + * @param PHPUnit_Framework_Constraint $constraint * @return PHPUnit_Framework_Constraint_Not - * * @since Method available since Release 3.0.0 */ public static function logicalNot(PHPUnit_Framework_Constraint $constraint) @@ -2189,7 +2370,6 @@ public static function logicalNot(PHPUnit_Framework_Constraint $constraint) * Returns a PHPUnit_Framework_Constraint_Xor matcher object. * * @return PHPUnit_Framework_Constraint_Xor - * * @since Method available since Release 3.0.0 */ public static function logicalXor() @@ -2206,7 +2386,6 @@ public static function logicalXor() * Returns a PHPUnit_Framework_Constraint_IsAnything matcher object. * * @return PHPUnit_Framework_Constraint_IsAnything - * * @since Method available since Release 3.0.0 */ public static function anything() @@ -2218,7 +2397,6 @@ public static function anything() * Returns a PHPUnit_Framework_Constraint_IsTrue matcher object. * * @return PHPUnit_Framework_Constraint_IsTrue - * * @since Method available since Release 3.3.0 */ public static function isTrue() @@ -2229,8 +2407,7 @@ public static function isTrue() /** * Returns a PHPUnit_Framework_Constraint_Callback matcher object. * - * @param callable $callback - * + * @param callable $callback * @return PHPUnit_Framework_Constraint_Callback */ public static function callback($callback) @@ -2242,7 +2419,6 @@ public static function callback($callback) * Returns a PHPUnit_Framework_Constraint_IsFalse matcher object. * * @return PHPUnit_Framework_Constraint_IsFalse - * * @since Method available since Release 3.3.0 */ public static function isFalse() @@ -2254,7 +2430,6 @@ public static function isFalse() * Returns a PHPUnit_Framework_Constraint_IsJson matcher object. * * @return PHPUnit_Framework_Constraint_IsJson - * * @since Method available since Release 3.7.20 */ public static function isJson() @@ -2266,7 +2441,6 @@ public static function isJson() * Returns a PHPUnit_Framework_Constraint_IsNull matcher object. * * @return PHPUnit_Framework_Constraint_IsNull - * * @since Method available since Release 3.3.0 */ public static function isNull() @@ -2274,57 +2448,18 @@ public static function isNull() return new PHPUnit_Framework_Constraint_IsNull; } - /** - * Returns a PHPUnit_Framework_Constraint_IsFinite matcher object. - * - * @return PHPUnit_Framework_Constraint_IsFinite - * - * @since Method available since Release 5.0.0 - */ - public static function isFinite() - { - return new PHPUnit_Framework_Constraint_IsFinite; - } - - /** - * Returns a PHPUnit_Framework_Constraint_IsInfinite matcher object. - * - * @return PHPUnit_Framework_Constraint_IsInfinite - * - * @since Method available since Release 5.0.0 - */ - public static function isInfinite() - { - return new PHPUnit_Framework_Constraint_IsInfinite; - } - - /** - * Returns a PHPUnit_Framework_Constraint_IsNan matcher object. - * - * @return PHPUnit_Framework_Constraint_IsNan - * - * @since Method available since Release 5.0.0 - */ - public static function isNan() - { - return new PHPUnit_Framework_Constraint_IsNan; - } - /** * Returns a PHPUnit_Framework_Constraint_Attribute matcher object. * - * @param PHPUnit_Framework_Constraint $constraint - * @param string $attributeName - * + * @param PHPUnit_Framework_Constraint $constraint + * @param string $attributeName * @return PHPUnit_Framework_Constraint_Attribute - * * @since Method available since Release 3.1.0 */ public static function attribute(PHPUnit_Framework_Constraint $constraint, $attributeName) { return new PHPUnit_Framework_Constraint_Attribute( - $constraint, - $attributeName + $constraint, $attributeName ); } @@ -2332,12 +2467,10 @@ public static function attribute(PHPUnit_Framework_Constraint $constraint, $attr * Returns a PHPUnit_Framework_Constraint_TraversableContains matcher * object. * - * @param mixed $value - * @param bool $checkForObjectIdentity - * @param bool $checkForNonObjectIdentity - * + * @param mixed $value + * @param boolean $checkForObjectIdentity + * @param boolean $checkForNonObjectIdentity * @return PHPUnit_Framework_Constraint_TraversableContains - * * @since Method available since Release 3.0.0 */ public static function contains($value, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) @@ -2349,10 +2482,8 @@ public static function contains($value, $checkForObjectIdentity = true, $checkFo * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher * object. * - * @param string $type - * + * @param string $type * @return PHPUnit_Framework_Constraint_TraversableContainsOnly - * * @since Method available since Release 3.1.4 */ public static function containsOnly($type) @@ -2364,8 +2495,7 @@ public static function containsOnly($type) * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher * object. * - * @param string $classname - * + * @param string $classname * @return PHPUnit_Framework_Constraint_TraversableContainsOnly */ public static function containsOnlyInstancesOf($classname) @@ -2376,10 +2506,8 @@ public static function containsOnlyInstancesOf($classname) /** * Returns a PHPUnit_Framework_Constraint_ArrayHasKey matcher object. * - * @param mixed $key - * + * @param mixed $key * @return PHPUnit_Framework_Constraint_ArrayHasKey - * * @since Method available since Release 3.0.0 */ public static function arrayHasKey($key) @@ -2390,24 +2518,18 @@ public static function arrayHasKey($key) /** * Returns a PHPUnit_Framework_Constraint_IsEqual matcher object. * - * @param mixed $value - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param mixed $value + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase * @return PHPUnit_Framework_Constraint_IsEqual - * * @since Method available since Release 3.0.0 */ - public static function equalTo($value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) + public static function equalTo($value, $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return new PHPUnit_Framework_Constraint_IsEqual( - $value, - $delta, - $maxDepth, - $canonicalize, - $ignoreCase + $value, $delta, $maxDepth, $canonicalize, $ignoreCase ); } @@ -2416,28 +2538,22 @@ public static function equalTo($value, $delta = 0.0, $maxDepth = 10, $canonicali * that is wrapped in a PHPUnit_Framework_Constraint_Attribute matcher * object. * - * @param string $attributeName - * @param mixed $value - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param string $attributeName + * @param mixed $value + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase * @return PHPUnit_Framework_Constraint_Attribute - * * @since Method available since Release 3.1.0 */ - public static function attributeEqualTo($attributeName, $value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) + public static function attributeEqualTo($attributeName, $value, $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return self::attribute( - self::equalTo( - $value, - $delta, - $maxDepth, - $canonicalize, - $ignoreCase - ), - $attributeName + self::equalTo( + $value, $delta, $maxDepth, $canonicalize, $ignoreCase + ), + $attributeName ); } @@ -2445,7 +2561,6 @@ public static function attributeEqualTo($attributeName, $value, $delta = 0.0, $m * Returns a PHPUnit_Framework_Constraint_IsEmpty matcher object. * * @return PHPUnit_Framework_Constraint_IsEmpty - * * @since Method available since Release 3.5.0 */ public static function isEmpty() @@ -2457,7 +2572,6 @@ public static function isEmpty() * Returns a PHPUnit_Framework_Constraint_FileExists matcher object. * * @return PHPUnit_Framework_Constraint_FileExists - * * @since Method available since Release 3.0.0 */ public static function fileExists() @@ -2468,10 +2582,8 @@ public static function fileExists() /** * Returns a PHPUnit_Framework_Constraint_GreaterThan matcher object. * - * @param mixed $value - * + * @param mixed $value * @return PHPUnit_Framework_Constraint_GreaterThan - * * @since Method available since Release 3.0.0 */ public static function greaterThan($value) @@ -2484,33 +2596,29 @@ public static function greaterThan($value) * a PHPUnit_Framework_Constraint_IsEqual and a * PHPUnit_Framework_Constraint_GreaterThan matcher object. * - * @param mixed $value - * + * @param mixed $value * @return PHPUnit_Framework_Constraint_Or - * * @since Method available since Release 3.1.0 */ public static function greaterThanOrEqual($value) { return self::logicalOr( - new PHPUnit_Framework_Constraint_IsEqual($value), - new PHPUnit_Framework_Constraint_GreaterThan($value) + new PHPUnit_Framework_Constraint_IsEqual($value), + new PHPUnit_Framework_Constraint_GreaterThan($value) ); } /** * Returns a PHPUnit_Framework_Constraint_ClassHasAttribute matcher object. * - * @param string $attributeName - * + * @param string $attributeName * @return PHPUnit_Framework_Constraint_ClassHasAttribute - * * @since Method available since Release 3.1.0 */ public static function classHasAttribute($attributeName) { return new PHPUnit_Framework_Constraint_ClassHasAttribute( - $attributeName + $attributeName ); } @@ -2518,42 +2626,36 @@ public static function classHasAttribute($attributeName) * Returns a PHPUnit_Framework_Constraint_ClassHasStaticAttribute matcher * object. * - * @param string $attributeName - * + * @param string $attributeName * @return PHPUnit_Framework_Constraint_ClassHasStaticAttribute - * * @since Method available since Release 3.1.0 */ public static function classHasStaticAttribute($attributeName) { return new PHPUnit_Framework_Constraint_ClassHasStaticAttribute( - $attributeName + $attributeName ); } /** * Returns a PHPUnit_Framework_Constraint_ObjectHasAttribute matcher object. * - * @param string $attributeName - * + * @param string $attributeName * @return PHPUnit_Framework_Constraint_ObjectHasAttribute - * * @since Method available since Release 3.0.0 */ public static function objectHasAttribute($attributeName) { return new PHPUnit_Framework_Constraint_ObjectHasAttribute( - $attributeName + $attributeName ); } /** * Returns a PHPUnit_Framework_Constraint_IsIdentical matcher object. * - * @param mixed $value - * + * @param mixed $value * @return PHPUnit_Framework_Constraint_IsIdentical - * * @since Method available since Release 3.0.0 */ public static function identicalTo($value) @@ -2564,10 +2666,8 @@ public static function identicalTo($value) /** * Returns a PHPUnit_Framework_Constraint_IsInstanceOf matcher object. * - * @param string $className - * + * @param string $className * @return PHPUnit_Framework_Constraint_IsInstanceOf - * * @since Method available since Release 3.0.0 */ public static function isInstanceOf($className) @@ -2578,10 +2678,8 @@ public static function isInstanceOf($className) /** * Returns a PHPUnit_Framework_Constraint_IsType matcher object. * - * @param string $type - * + * @param string $type * @return PHPUnit_Framework_Constraint_IsType - * * @since Method available since Release 3.0.0 */ public static function isType($type) @@ -2592,10 +2690,8 @@ public static function isType($type) /** * Returns a PHPUnit_Framework_Constraint_LessThan matcher object. * - * @param mixed $value - * + * @param mixed $value * @return PHPUnit_Framework_Constraint_LessThan - * * @since Method available since Release 3.0.0 */ public static function lessThan($value) @@ -2608,27 +2704,23 @@ public static function lessThan($value) * a PHPUnit_Framework_Constraint_IsEqual and a * PHPUnit_Framework_Constraint_LessThan matcher object. * - * @param mixed $value - * + * @param mixed $value * @return PHPUnit_Framework_Constraint_Or - * * @since Method available since Release 3.1.0 */ public static function lessThanOrEqual($value) { return self::logicalOr( - new PHPUnit_Framework_Constraint_IsEqual($value), - new PHPUnit_Framework_Constraint_LessThan($value) + new PHPUnit_Framework_Constraint_IsEqual($value), + new PHPUnit_Framework_Constraint_LessThan($value) ); } /** * Returns a PHPUnit_Framework_Constraint_PCREMatch matcher object. * - * @param string $pattern - * + * @param string $pattern * @return PHPUnit_Framework_Constraint_PCREMatch - * * @since Method available since Release 3.0.0 */ public static function matchesRegularExpression($pattern) @@ -2639,10 +2731,8 @@ public static function matchesRegularExpression($pattern) /** * Returns a PHPUnit_Framework_Constraint_StringMatches matcher object. * - * @param string $string - * + * @param string $string * @return PHPUnit_Framework_Constraint_StringMatches - * * @since Method available since Release 3.5.0 */ public static function matches($string) @@ -2653,10 +2743,8 @@ public static function matches($string) /** * Returns a PHPUnit_Framework_Constraint_StringStartsWith matcher object. * - * @param mixed $prefix - * + * @param mixed $prefix * @return PHPUnit_Framework_Constraint_StringStartsWith - * * @since Method available since Release 3.4.0 */ public static function stringStartsWith($prefix) @@ -2667,11 +2755,9 @@ public static function stringStartsWith($prefix) /** * Returns a PHPUnit_Framework_Constraint_StringContains matcher object. * - * @param string $string - * @param bool $case - * + * @param string $string + * @param boolean $case * @return PHPUnit_Framework_Constraint_StringContains - * * @since Method available since Release 3.0.0 */ public static function stringContains($string, $case = true) @@ -2682,10 +2768,8 @@ public static function stringContains($string, $case = true) /** * Returns a PHPUnit_Framework_Constraint_StringEndsWith matcher object. * - * @param mixed $suffix - * + * @param mixed $suffix * @return PHPUnit_Framework_Constraint_StringEndsWith - * * @since Method available since Release 3.4.0 */ public static function stringEndsWith($suffix) @@ -2696,8 +2780,7 @@ public static function stringEndsWith($suffix) /** * Returns a PHPUnit_Framework_Constraint_Count matcher object. * - * @param int $count - * + * @param int $count * @return PHPUnit_Framework_Constraint_Count */ public static function countOf($count) @@ -2707,8 +2790,7 @@ public static function countOf($count) /** * Fails a test with the given message. * - * @param string $message - * + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ public static function fail($message = '') @@ -2720,11 +2802,9 @@ public static function fail($message = '') * Returns the value of an attribute of a class or an object. * This also works for attributes that are declared protected or private. * - * @param mixed $classOrObject - * @param string $attributeName - * + * @param mixed $classOrObject + * @param string $attributeName * @return mixed - * * @throws PHPUnit_Framework_Exception */ public static function readAttribute($classOrObject, $attributeName) @@ -2740,24 +2820,22 @@ public static function readAttribute($classOrObject, $attributeName) if (is_string($classOrObject)) { if (!class_exists($classOrObject)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 1, - 'class name' + 1, 'class name' ); } return self::getStaticAttribute( - $classOrObject, - $attributeName + $classOrObject, + $attributeName ); } elseif (is_object($classOrObject)) { return self::getObjectAttribute( - $classOrObject, - $attributeName + $classOrObject, + $attributeName ); } else { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 1, - 'class name or object' + 1, 'class name or object' ); } } @@ -2766,13 +2844,10 @@ public static function readAttribute($classOrObject, $attributeName) * Returns the value of a static attribute. * This also works for attributes that are declared protected or private. * - * @param string $className - * @param string $attributeName - * + * @param string $className + * @param string $attributeName * @return mixed - * * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 4.0.0 */ public static function getStaticAttribute($className, $attributeName) @@ -2806,10 +2881,10 @@ public static function getStaticAttribute($className, $attributeName) } throw new PHPUnit_Framework_Exception( - sprintf( - 'Attribute "%s" not found in class.', - $attributeName - ) + sprintf( + 'Attribute "%s" not found in class.', + $attributeName + ) ); } @@ -2817,13 +2892,10 @@ public static function getStaticAttribute($className, $attributeName) * Returns the value of an object's attribute. * This also works for attributes that are declared protected or private. * - * @param object $object - * @param string $attributeName - * + * @param object $object + * @param string $attributeName * @return mixed - * * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 4.0.0 */ public static function getObjectAttribute($object, $attributeName) @@ -2867,20 +2939,18 @@ public static function getObjectAttribute($object, $attributeName) } throw new PHPUnit_Framework_Exception( - sprintf( - 'Attribute "%s" not found in object.', - $attributeName - ) + sprintf( + 'Attribute "%s" not found in object.', + $attributeName + ) ); } /** * Mark the test as incomplete. * - * @param string $message - * + * @param string $message * @throws PHPUnit_Framework_IncompleteTestError - * * @since Method available since Release 3.0.0 */ public static function markTestIncomplete($message = '') @@ -2891,10 +2961,8 @@ public static function markTestIncomplete($message = '') /** * Mark the test as skipped. * - * @param string $message - * + * @param string $message * @throws PHPUnit_Framework_SkippedTestError - * * @since Method available since Release 3.0.0 */ public static function markTestSkipped($message = '') @@ -2905,8 +2973,7 @@ public static function markTestSkipped($message = '') /** * Return the current assertion count. * - * @return int - * + * @return integer * @since Method available since Release 3.3.3 */ public static function getCount() diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php b/tests/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php index 4cf6f20d..7b4267c6 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php @@ -1,26 +1,60 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.5.0 */ /** - * Returns a matcher that matches when the method is executed - * zero or more times. + * Returns a matcher that matches when the method it is evaluated for + * is executed zero or more times. * * @return PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount - * * @since Method available since Release 3.0.0 */ function any() { return call_user_func_array( - 'PHPUnit_Framework_TestCase::any', - func_get_args() + 'PHPUnit_Framework_TestCase::any', + func_get_args() ); } @@ -28,83 +62,60 @@ function any() * Returns a PHPUnit_Framework_Constraint_IsAnything matcher object. * * @return PHPUnit_Framework_Constraint_IsAnything - * * @since Method available since Release 3.0.0 */ function anything() { return call_user_func_array( - 'PHPUnit_Framework_Assert::anything', - func_get_args() + 'PHPUnit_Framework_Assert::anything', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_ArrayHasKey matcher object. * - * @param mixed $key - * + * @param mixed $key * @return PHPUnit_Framework_Constraint_ArrayHasKey - * * @since Method available since Release 3.0.0 */ function arrayHasKey($key) { return call_user_func_array( - 'PHPUnit_Framework_Assert::arrayHasKey', - func_get_args() + 'PHPUnit_Framework_Assert::arrayHasKey', + func_get_args() ); } /** * Asserts that an array has a specified key. * - * @param mixed $key - * @param array|ArrayAccess $array - * @param string $message - * + * @param mixed $key + * @param array|ArrayAccess $array + * @param string $message * @since Method available since Release 3.0.0 */ function assertArrayHasKey($key, $array, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertArrayHasKey', - func_get_args() - ); -} - -/** - * Asserts that an array has a specified subset. - * - * @param array|ArrayAccess $subset - * @param array|ArrayAccess $array - * @param bool $strict Check for object identity - * @param string $message - * - * @since Method available since Release 4.4.0 - */ -function assertArraySubset($subset, $array, $strict = false, $message = '') -{ - return call_user_func_array( - 'PHPUnit_Framework_Assert::assertArraySubset', - func_get_args() + 'PHPUnit_Framework_Assert::assertArrayHasKey', + func_get_args() ); } /** * Asserts that an array does not have a specified key. * - * @param mixed $key - * @param array|ArrayAccess $array - * @param string $message - * + * @param mixed $key + * @param array|ArrayAccess $array + * @param string $message * @since Method available since Release 3.0.0 */ function assertArrayNotHasKey($key, $array, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertArrayNotHasKey', - func_get_args() + 'PHPUnit_Framework_Assert::assertArrayNotHasKey', + func_get_args() ); } @@ -112,21 +123,20 @@ function assertArrayNotHasKey($key, $array, $message = '') * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object contains a needle. * - * @param mixed $needle - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param string $message - * @param bool $ignoreCase - * @param bool $checkForObjectIdentity - * @param bool $checkForNonObjectIdentity - * + * @param mixed $needle + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param string $message + * @param boolean $ignoreCase + * @param boolean $checkForObjectIdentity + * @param boolean $checkForNonObjectIdentity * @since Method available since Release 3.0.0 */ function assertAttributeContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeContains', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeContains', + func_get_args() ); } @@ -134,19 +144,18 @@ function assertAttributeContains($needle, $haystackAttributeName, $haystackClass * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object contains only values of a given type. * - * @param string $type - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param bool $isNativeType - * @param string $message - * + * @param string $type + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param boolean $isNativeType + * @param string $message * @since Method available since Release 3.1.4 */ function assertAttributeContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeContainsOnly', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeContainsOnly', + func_get_args() ); } @@ -154,18 +163,17 @@ function assertAttributeContainsOnly($type, $haystackAttributeName, $haystackCla * Asserts the number of elements of an array, Countable or Traversable * that is stored in an attribute. * - * @param int $expectedCount - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param string $message - * + * @param integer $expectedCount + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param string $message * @since Method available since Release 3.6.0 */ function assertAttributeCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeCount', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeCount', + func_get_args() ); } @@ -176,70 +184,67 @@ function assertAttributeCount($expectedCount, $haystackAttributeName, $haystackC * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ function assertAttributeEmpty($haystackAttributeName, $haystackClassOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeEmpty', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeEmpty', + func_get_args() ); } /** * Asserts that a variable is equal to an attribute of an object. * - * @param mixed $expected - * @param string $actualAttributeName - * @param string $actualClassOrObject - * @param string $message - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase + * @param mixed $expected + * @param string $actualAttributeName + * @param string $actualClassOrObject + * @param string $message + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase */ -function assertAttributeEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) +function assertAttributeEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeEquals', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeEquals', + func_get_args() ); } /** * Asserts that an attribute is greater than another value. * - * @param mixed $expected - * @param string $actualAttributeName - * @param string $actualClassOrObject - * @param string $message - * + * @param mixed $expected + * @param string $actualAttributeName + * @param string $actualClassOrObject + * @param string $message * @since Method available since Release 3.1.0 */ function assertAttributeGreaterThan($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeGreaterThan', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeGreaterThan', + func_get_args() ); } /** * Asserts that an attribute is greater than or equal to another value. * - * @param mixed $expected - * @param string $actualAttributeName - * @param string $actualClassOrObject - * @param string $message - * + * @param mixed $expected + * @param string $actualAttributeName + * @param string $actualClassOrObject + * @param string $message * @since Method available since Release 3.1.0 */ function assertAttributeGreaterThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeGreaterThanOrEqual', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeGreaterThanOrEqual', + func_get_args() ); } @@ -250,14 +255,13 @@ function assertAttributeGreaterThanOrEqual($expected, $actualAttributeName, $act * @param string $attributeName * @param mixed $classOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ function assertAttributeInstanceOf($expected, $attributeName, $classOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeInstanceOf', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeInstanceOf', + func_get_args() ); } @@ -268,50 +272,47 @@ function assertAttributeInstanceOf($expected, $attributeName, $classOrObject, $m * @param string $attributeName * @param mixed $classOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ function assertAttributeInternalType($expected, $attributeName, $classOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeInternalType', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeInternalType', + func_get_args() ); } /** * Asserts that an attribute is smaller than another value. * - * @param mixed $expected - * @param string $actualAttributeName - * @param string $actualClassOrObject - * @param string $message - * + * @param mixed $expected + * @param string $actualAttributeName + * @param string $actualClassOrObject + * @param string $message * @since Method available since Release 3.1.0 */ function assertAttributeLessThan($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeLessThan', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeLessThan', + func_get_args() ); } /** * Asserts that an attribute is smaller than or equal to another value. * - * @param mixed $expected - * @param string $actualAttributeName - * @param string $actualClassOrObject - * @param string $message - * + * @param mixed $expected + * @param string $actualAttributeName + * @param string $actualClassOrObject + * @param string $message * @since Method available since Release 3.1.0 */ function assertAttributeLessThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeLessThanOrEqual', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeLessThanOrEqual', + func_get_args() ); } @@ -319,21 +320,20 @@ function assertAttributeLessThanOrEqual($expected, $actualAttributeName, $actual * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object does not contain a needle. * - * @param mixed $needle - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param string $message - * @param bool $ignoreCase - * @param bool $checkForObjectIdentity - * @param bool $checkForNonObjectIdentity - * + * @param mixed $needle + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param string $message + * @param boolean $ignoreCase + * @param boolean $checkForObjectIdentity + * @param boolean $checkForNonObjectIdentity * @since Method available since Release 3.0.0 */ function assertAttributeNotContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeNotContains', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeNotContains', + func_get_args() ); } @@ -342,19 +342,18 @@ function assertAttributeNotContains($needle, $haystackAttributeName, $haystackCl * or an attribute of an object does not contain only values of a given * type. * - * @param string $type - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param bool $isNativeType - * @param string $message - * + * @param string $type + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param boolean $isNativeType + * @param string $message * @since Method available since Release 3.1.4 */ function assertAttributeNotContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeNotContainsOnly', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeNotContainsOnly', + func_get_args() ); } @@ -362,18 +361,17 @@ function assertAttributeNotContainsOnly($type, $haystackAttributeName, $haystack * Asserts the number of elements of an array, Countable or Traversable * that is stored in an attribute. * - * @param int $expectedCount - * @param string $haystackAttributeName - * @param mixed $haystackClassOrObject - * @param string $message - * + * @param integer $expectedCount + * @param string $haystackAttributeName + * @param mixed $haystackClassOrObject + * @param string $message * @since Method available since Release 3.6.0 */ function assertAttributeNotCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeNotCount', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeNotCount', + func_get_args() ); } @@ -384,34 +382,33 @@ function assertAttributeNotCount($expectedCount, $haystackAttributeName, $haysta * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ function assertAttributeNotEmpty($haystackAttributeName, $haystackClassOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeNotEmpty', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeNotEmpty', + func_get_args() ); } /** * Asserts that a variable is not equal to an attribute of an object. * - * @param mixed $expected - * @param string $actualAttributeName - * @param string $actualClassOrObject - * @param string $message - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase + * @param mixed $expected + * @param string $actualAttributeName + * @param string $actualClassOrObject + * @param string $message + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase */ -function assertAttributeNotEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) +function assertAttributeNotEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeNotEquals', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeNotEquals', + func_get_args() ); } @@ -422,14 +419,13 @@ function assertAttributeNotEquals($expected, $actualAttributeName, $actualClassO * @param string $attributeName * @param mixed $classOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ function assertAttributeNotInstanceOf($expected, $attributeName, $classOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeNotInstanceOf', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeNotInstanceOf', + func_get_args() ); } @@ -440,14 +436,13 @@ function assertAttributeNotInstanceOf($expected, $attributeName, $classOrObject, * @param string $attributeName * @param mixed $classOrObject * @param string $message - * * @since Method available since Release 3.5.0 */ function assertAttributeNotInternalType($expected, $attributeName, $classOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeNotInternalType', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeNotInternalType', + func_get_args() ); } @@ -455,16 +450,16 @@ function assertAttributeNotInternalType($expected, $attributeName, $classOrObjec * Asserts that a variable and an attribute of an object do not have the * same type and value. * - * @param mixed $expected - * @param string $actualAttributeName - * @param object $actualClassOrObject - * @param string $message + * @param mixed $expected + * @param string $actualAttributeName + * @param object $actualClassOrObject + * @param string $message */ function assertAttributeNotSame($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeNotSame', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeNotSame', + func_get_args() ); } @@ -472,168 +467,161 @@ function assertAttributeNotSame($expected, $actualAttributeName, $actualClassOrO * Asserts that a variable and an attribute of an object have the same type * and value. * - * @param mixed $expected - * @param string $actualAttributeName - * @param object $actualClassOrObject - * @param string $message + * @param mixed $expected + * @param string $actualAttributeName + * @param object $actualClassOrObject + * @param string $message */ function assertAttributeSame($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertAttributeSame', - func_get_args() + 'PHPUnit_Framework_Assert::assertAttributeSame', + func_get_args() ); } /** * Asserts that a class has a specified attribute. * - * @param string $attributeName - * @param string $className - * @param string $message - * + * @param string $attributeName + * @param string $className + * @param string $message * @since Method available since Release 3.1.0 */ function assertClassHasAttribute($attributeName, $className, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertClassHasAttribute', - func_get_args() + 'PHPUnit_Framework_Assert::assertClassHasAttribute', + func_get_args() ); } /** * Asserts that a class has a specified static attribute. * - * @param string $attributeName - * @param string $className - * @param string $message - * + * @param string $attributeName + * @param string $className + * @param string $message * @since Method available since Release 3.1.0 */ function assertClassHasStaticAttribute($attributeName, $className, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertClassHasStaticAttribute', - func_get_args() + 'PHPUnit_Framework_Assert::assertClassHasStaticAttribute', + func_get_args() ); } /** * Asserts that a class does not have a specified attribute. * - * @param string $attributeName - * @param string $className - * @param string $message - * + * @param string $attributeName + * @param string $className + * @param string $message * @since Method available since Release 3.1.0 */ function assertClassNotHasAttribute($attributeName, $className, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertClassNotHasAttribute', - func_get_args() + 'PHPUnit_Framework_Assert::assertClassNotHasAttribute', + func_get_args() ); } /** * Asserts that a class does not have a specified static attribute. * - * @param string $attributeName - * @param string $className - * @param string $message - * + * @param string $attributeName + * @param string $className + * @param string $message * @since Method available since Release 3.1.0 */ function assertClassNotHasStaticAttribute($attributeName, $className, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertClassNotHasStaticAttribute', - func_get_args() + 'PHPUnit_Framework_Assert::assertClassNotHasStaticAttribute', + func_get_args() ); } /** * Asserts that a haystack contains a needle. * - * @param mixed $needle - * @param mixed $haystack - * @param string $message - * @param bool $ignoreCase - * @param bool $checkForObjectIdentity - * @param bool $checkForNonObjectIdentity - * + * @param mixed $needle + * @param mixed $haystack + * @param string $message + * @param boolean $ignoreCase + * @param boolean $checkForObjectIdentity + * @param boolean $checkForNonObjectIdentity * @since Method available since Release 2.1.0 */ function assertContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertContains', - func_get_args() + 'PHPUnit_Framework_Assert::assertContains', + func_get_args() ); } /** * Asserts that a haystack contains only values of a given type. * - * @param string $type - * @param mixed $haystack - * @param bool $isNativeType - * @param string $message - * + * @param string $type + * @param mixed $haystack + * @param boolean $isNativeType + * @param string $message * @since Method available since Release 3.1.4 */ function assertContainsOnly($type, $haystack, $isNativeType = null, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertContainsOnly', - func_get_args() + 'PHPUnit_Framework_Assert::assertContainsOnly', + func_get_args() ); } /** * Asserts that a haystack contains only instances of a given classname * - * @param string $classname + * @param string $classname * @param array|Traversable $haystack - * @param string $message + * @param string $message */ function assertContainsOnlyInstancesOf($classname, $haystack, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertContainsOnlyInstancesOf', - func_get_args() + 'PHPUnit_Framework_Assert::assertContainsOnlyInstancesOf', + func_get_args() ); } /** * Asserts the number of elements of an array, Countable or Traversable. * - * @param int $expectedCount - * @param mixed $haystack - * @param string $message + * @param integer $expectedCount + * @param mixed $haystack + * @param string $message */ function assertCount($expectedCount, $haystack, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertCount', - func_get_args() + 'PHPUnit_Framework_Assert::assertCount', + func_get_args() ); } /** * Asserts that a variable is empty. * - * @param mixed $actual - * @param string $message - * + * @param mixed $actual + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ function assertEmpty($actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertEmpty', - func_get_args() + 'PHPUnit_Framework_Assert::assertEmpty', + func_get_args() ); } @@ -642,67 +630,65 @@ function assertEmpty($actual, $message = '') * * @param DOMElement $expectedElement * @param DOMElement $actualElement - * @param bool $checkAttributes - * @param string $message - * + * @param boolean $checkAttributes + * @param string $message + * @author Mattis Stordalen Flister * @since Method available since Release 3.3.0 */ function assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement, $checkAttributes = false, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertEqualXMLStructure', - func_get_args() + 'PHPUnit_Framework_Assert::assertEqualXMLStructure', + func_get_args() ); } /** * Asserts that two variables are equal. * - * @param mixed $expected - * @param mixed $actual - * @param string $message - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase + * @param mixed $expected + * @param mixed $actual + * @param string $message + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase */ -function assertEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) +function assertEquals($expected, $actual, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertEquals', - func_get_args() + 'PHPUnit_Framework_Assert::assertEquals', + func_get_args() ); } /** * Asserts that a condition is not true. * - * @param bool $condition - * @param string $message - * + * @param boolean $condition + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ function assertNotTrue($condition, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotTrue', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotTrue', + func_get_args() ); } /** * Asserts that a condition is false. * - * @param bool $condition - * @param string $message - * + * @param boolean $condition + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ function assertFalse($condition, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertFalse', - func_get_args() + 'PHPUnit_Framework_Assert::assertFalse', + func_get_args() ); } @@ -710,35 +696,33 @@ function assertFalse($condition, $message = '') * Asserts that the contents of one file is equal to the contents of another * file. * - * @param string $expected - * @param string $actual - * @param string $message - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param string $expected + * @param string $actual + * @param string $message + * @param boolean $canonicalize + * @param boolean $ignoreCase * @since Method available since Release 3.2.14 */ function assertFileEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertFileEquals', - func_get_args() + 'PHPUnit_Framework_Assert::assertFileEquals', + func_get_args() ); } /** * Asserts that a file exists. * - * @param string $filename - * @param string $message - * + * @param string $filename + * @param string $message * @since Method available since Release 3.0.0 */ function assertFileExists($filename, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertFileExists', - func_get_args() + 'PHPUnit_Framework_Assert::assertFileExists', + func_get_args() ); } @@ -746,69 +730,65 @@ function assertFileExists($filename, $message = '') * Asserts that the contents of one file is not equal to the contents of * another file. * - * @param string $expected - * @param string $actual - * @param string $message - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param string $expected + * @param string $actual + * @param string $message + * @param boolean $canonicalize + * @param boolean $ignoreCase * @since Method available since Release 3.2.14 */ function assertFileNotEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertFileNotEquals', - func_get_args() + 'PHPUnit_Framework_Assert::assertFileNotEquals', + func_get_args() ); } /** * Asserts that a file does not exist. * - * @param string $filename - * @param string $message - * + * @param string $filename + * @param string $message * @since Method available since Release 3.0.0 */ function assertFileNotExists($filename, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertFileNotExists', - func_get_args() + 'PHPUnit_Framework_Assert::assertFileNotExists', + func_get_args() ); } /** * Asserts that a value is greater than another value. * - * @param mixed $expected - * @param mixed $actual - * @param string $message - * + * @param mixed $expected + * @param mixed $actual + * @param string $message * @since Method available since Release 3.1.0 */ function assertGreaterThan($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertGreaterThan', - func_get_args() + 'PHPUnit_Framework_Assert::assertGreaterThan', + func_get_args() ); } /** * Asserts that a value is greater than or equal to another value. * - * @param mixed $expected - * @param mixed $actual - * @param string $message - * + * @param mixed $expected + * @param mixed $actual + * @param string $message * @since Method available since Release 3.1.0 */ function assertGreaterThanOrEqual($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertGreaterThanOrEqual', - func_get_args() + 'PHPUnit_Framework_Assert::assertGreaterThanOrEqual', + func_get_args() ); } @@ -818,14 +798,13 @@ function assertGreaterThanOrEqual($expected, $actual, $message = '') * @param string $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.5.0 */ function assertInstanceOf($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertInstanceOf', - func_get_args() + 'PHPUnit_Framework_Assert::assertInstanceOf', + func_get_args() ); } @@ -835,60 +814,58 @@ function assertInstanceOf($expected, $actual, $message = '') * @param string $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.5.0 */ function assertInternalType($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertInternalType', - func_get_args() + 'PHPUnit_Framework_Assert::assertInternalType', + func_get_args() ); } /** * Asserts that a string is a valid JSON string. * - * @param string $actualJson - * @param string $message - * - * @since Method available since Release 3.7.20 + * @param string $filename + * @param string $message + * @since Method available since Release 3.7.20 */ -function assertJson($actualJson, $message = '') +function assertJson($expectedJson, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertJson', - func_get_args() + 'PHPUnit_Framework_Assert::assertJson', + func_get_args() ); } /** * Asserts that two JSON files are equal. * - * @param string $expectedFile - * @param string $actualFile - * @param string $message + * @param string $expectedFile + * @param string $actualFile + * @param string $message */ function assertJsonFileEqualsJsonFile($expectedFile, $actualFile, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertJsonFileEqualsJsonFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertJsonFileEqualsJsonFile', + func_get_args() ); } /** * Asserts that two JSON files are not equal. * - * @param string $expectedFile - * @param string $actualFile - * @param string $message + * @param string $expectedFile + * @param string $actualFile + * @param string $message */ function assertJsonFileNotEqualsJsonFile($expectedFile, $actualFile, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertJsonFileNotEqualsJsonFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertJsonFileNotEqualsJsonFile', + func_get_args() ); } @@ -902,8 +879,8 @@ function assertJsonFileNotEqualsJsonFile($expectedFile, $actualFile, $message = function assertJsonStringEqualsJsonFile($expectedFile, $actualJson, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertJsonStringEqualsJsonFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertJsonStringEqualsJsonFile', + func_get_args() ); } @@ -917,8 +894,8 @@ function assertJsonStringEqualsJsonFile($expectedFile, $actualJson, $message = ' function assertJsonStringEqualsJsonString($expectedJson, $actualJson, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertJsonStringEqualsJsonString', - func_get_args() + 'PHPUnit_Framework_Assert::assertJsonStringEqualsJsonString', + func_get_args() ); } @@ -932,8 +909,8 @@ function assertJsonStringEqualsJsonString($expectedJson, $actualJson, $message = function assertJsonStringNotEqualsJsonFile($expectedFile, $actualJson, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertJsonStringNotEqualsJsonFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertJsonStringNotEqualsJsonFile', + func_get_args() ); } @@ -947,174 +924,126 @@ function assertJsonStringNotEqualsJsonFile($expectedFile, $actualJson, $message function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertJsonStringNotEqualsJsonString', - func_get_args() + 'PHPUnit_Framework_Assert::assertJsonStringNotEqualsJsonString', + func_get_args() ); } /** * Asserts that a value is smaller than another value. * - * @param mixed $expected - * @param mixed $actual - * @param string $message - * + * @param mixed $expected + * @param mixed $actual + * @param string $message * @since Method available since Release 3.1.0 */ function assertLessThan($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertLessThan', - func_get_args() + 'PHPUnit_Framework_Assert::assertLessThan', + func_get_args() ); } /** * Asserts that a value is smaller than or equal to another value. * - * @param mixed $expected - * @param mixed $actual - * @param string $message - * + * @param mixed $expected + * @param mixed $actual + * @param string $message * @since Method available since Release 3.1.0 */ function assertLessThanOrEqual($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertLessThanOrEqual', - func_get_args() - ); -} - -/** - * Asserts that a variable is finite. - * - * @param mixed $actual - * @param string $message - */ -function assertFinite($actual, $message = '') -{ - return call_user_func_array( - 'PHPUnit_Framework_Assert::assertFinite', - func_get_args() - ); -} - -/** - * Asserts that a variable is infinite. - * - * @param mixed $actual - * @param string $message - */ -function assertInfinite($actual, $message = '') -{ - return call_user_func_array( - 'PHPUnit_Framework_Assert::assertInfinite', - func_get_args() - ); -} - -/** - * Asserts that a variable is nan. - * - * @param mixed $actual - * @param string $message - */ -function assertNan($actual, $message = '') -{ - return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNan', - func_get_args() + 'PHPUnit_Framework_Assert::assertLessThanOrEqual', + func_get_args() ); } /** * Asserts that a haystack does not contain a needle. * - * @param mixed $needle - * @param mixed $haystack - * @param string $message - * @param bool $ignoreCase - * @param bool $checkForObjectIdentity - * @param bool $checkForNonObjectIdentity - * + * @param mixed $needle + * @param mixed $haystack + * @param string $message + * @param boolean $ignoreCase + * @param boolean $checkForObjectIdentity + * @param boolean $checkForNonObjectIdentity * @since Method available since Release 2.1.0 */ function assertNotContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotContains', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotContains', + func_get_args() ); } /** * Asserts that a haystack does not contain only values of a given type. * - * @param string $type - * @param mixed $haystack - * @param bool $isNativeType - * @param string $message - * + * @param string $type + * @param mixed $haystack + * @param boolean $isNativeType + * @param string $message * @since Method available since Release 3.1.4 */ function assertNotContainsOnly($type, $haystack, $isNativeType = null, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotContainsOnly', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotContainsOnly', + func_get_args() ); } /** * Asserts the number of elements of an array, Countable or Traversable. * - * @param int $expectedCount - * @param mixed $haystack - * @param string $message + * @param integer $expectedCount + * @param mixed $haystack + * @param string $message */ function assertNotCount($expectedCount, $haystack, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotCount', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotCount', + func_get_args() ); } /** * Asserts that a variable is not empty. * - * @param mixed $actual - * @param string $message - * + * @param mixed $actual + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ function assertNotEmpty($actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotEmpty', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotEmpty', + func_get_args() ); } /** * Asserts that two variables are not equal. * - * @param mixed $expected - * @param mixed $actual - * @param string $message - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param mixed $expected + * @param mixed $actual + * @param string $message + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase * @since Method available since Release 2.3.0 */ -function assertNotEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) +function assertNotEquals($expected, $actual, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotEquals', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotEquals', + func_get_args() ); } @@ -1124,14 +1053,13 @@ function assertNotEquals($expected, $actual, $message = '', $delta = 0.0, $maxDe * @param string $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.5.0 */ function assertNotInstanceOf($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotInstanceOf', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotInstanceOf', + func_get_args() ); } @@ -1141,61 +1069,58 @@ function assertNotInstanceOf($expected, $actual, $message = '') * @param string $expected * @param mixed $actual * @param string $message - * * @since Method available since Release 3.5.0 */ function assertNotInternalType($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotInternalType', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotInternalType', + func_get_args() ); } /** * Asserts that a condition is not false. * - * @param bool $condition - * @param string $message - * + * @param boolean $condition + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ function assertNotFalse($condition, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotFalse', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotFalse', + func_get_args() ); } /** * Asserts that a variable is not null. * - * @param mixed $actual - * @param string $message + * @param mixed $actual + * @param string $message */ function assertNotNull($actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotNull', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotNull', + func_get_args() ); } /** * Asserts that a string does not match a given regular expression. * - * @param string $pattern - * @param string $string - * @param string $message - * + * @param string $pattern + * @param string $string + * @param string $message * @since Method available since Release 2.1.0 */ function assertNotRegExp($pattern, $string, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotRegExp', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotRegExp', + func_get_args() ); } @@ -1204,15 +1129,15 @@ function assertNotRegExp($pattern, $string, $message = '') * Used on objects, it asserts that two variables do not reference * the same object. * - * @param mixed $expected - * @param mixed $actual - * @param string $message + * @param mixed $expected + * @param mixed $actual + * @param string $message */ function assertNotSame($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotSame', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotSame', + func_get_args() ); } @@ -1222,76 +1147,96 @@ function assertNotSame($expected, $actual, $message = '') * * @param array|Countable|Traversable $expected * @param array|Countable|Traversable $actual - * @param string $message + * @param string $message */ function assertNotSameSize($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNotSameSize', - func_get_args() + 'PHPUnit_Framework_Assert::assertNotSameSize', + func_get_args() + ); +} + +/** + * This assertion is the exact opposite of assertTag(). + * + * Rather than asserting that $matcher results in a match, it asserts that + * $matcher does not match. + * + * @param array $matcher + * @param string $actual + * @param string $message + * @param boolean $isHtml + * @since Method available since Release 3.3.0 + * @author Mike Naberezny + * @author Derek DeVries + */ +function assertNotTag($matcher, $actual, $message = '', $isHtml = true) +{ + return call_user_func_array( + 'PHPUnit_Framework_Assert::assertNotTag', + func_get_args() ); } /** * Asserts that a variable is null. * - * @param mixed $actual - * @param string $message + * @param mixed $actual + * @param string $message */ function assertNull($actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertNull', - func_get_args() + 'PHPUnit_Framework_Assert::assertNull', + func_get_args() ); } /** * Asserts that an object has a specified attribute. * - * @param string $attributeName - * @param object $object - * @param string $message - * + * @param string $attributeName + * @param object $object + * @param string $message * @since Method available since Release 3.0.0 */ function assertObjectHasAttribute($attributeName, $object, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertObjectHasAttribute', - func_get_args() + 'PHPUnit_Framework_Assert::assertObjectHasAttribute', + func_get_args() ); } /** * Asserts that an object does not have a specified attribute. * - * @param string $attributeName - * @param object $object - * @param string $message - * + * @param string $attributeName + * @param object $object + * @param string $message * @since Method available since Release 3.0.0 */ function assertObjectNotHasAttribute($attributeName, $object, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertObjectNotHasAttribute', - func_get_args() + 'PHPUnit_Framework_Assert::assertObjectNotHasAttribute', + func_get_args() ); } /** * Asserts that a string matches a given regular expression. * - * @param string $pattern - * @param string $string - * @param string $message + * @param string $pattern + * @param string $string + * @param string $message */ function assertRegExp($pattern, $string, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertRegExp', - func_get_args() + 'PHPUnit_Framework_Assert::assertRegExp', + func_get_args() ); } @@ -1300,15 +1245,15 @@ function assertRegExp($pattern, $string, $message = '') * Used on objects, it asserts that two variables reference * the same object. * - * @param mixed $expected - * @param mixed $actual - * @param string $message + * @param mixed $expected + * @param mixed $actual + * @param string $message */ function assertSame($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertSame', - func_get_args() + 'PHPUnit_Framework_Assert::assertSame', + func_get_args() ); } @@ -1318,47 +1263,121 @@ function assertSame($expected, $actual, $message = '') * * @param array|Countable|Traversable $expected * @param array|Countable|Traversable $actual - * @param string $message + * @param string $message */ function assertSameSize($expected, $actual, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertSameSize', - func_get_args() + 'PHPUnit_Framework_Assert::assertSameSize', + func_get_args() ); } /** - * Asserts that a string ends not with a given prefix. + * Assert the presence, absence, or count of elements in a document matching + * the CSS $selector, regardless of the contents of those elements. * - * @param string $suffix - * @param string $string - * @param string $message + * The first argument, $selector, is the CSS selector used to match + * the elements in the $actual document. + * + * The second argument, $count, can be either boolean or numeric. + * When boolean, it asserts for presence of elements matching the selector + * (true) or absence of elements (false). + * When numeric, it asserts the count of elements. + * + * assertSelectCount("#binder", true, $xml); // any? + * assertSelectCount(".binder", 3, $xml); // exactly 3? + * + * @param array $selector + * @param integer $count + * @param mixed $actual + * @param string $message + * @param boolean $isHtml + * @since Method available since Release 3.3.0 + * @author Mike Naberezny + * @author Derek DeVries + */ +function assertSelectCount($selector, $count, $actual, $message = '', $isHtml = true) +{ + return call_user_func_array( + 'PHPUnit_Framework_Assert::assertSelectCount', + func_get_args() + ); +} + +/** + * assertSelectEquals("#binder .name", "Chuck", true, $xml); // any? + * assertSelectEquals("#binder .name", "Chuck", false, $xml); // none? + * + * @param array $selector + * @param string $content + * @param integer $count + * @param mixed $actual + * @param string $message + * @param boolean $isHtml + * @since Method available since Release 3.3.0 + * @author Mike Naberezny + * @author Derek DeVries + */ +function assertSelectEquals($selector, $content, $count, $actual, $message = '', $isHtml = true) +{ + return call_user_func_array( + 'PHPUnit_Framework_Assert::assertSelectEquals', + func_get_args() + ); +} + +/** + * assertSelectRegExp("#binder .name", "/Mike|Derek/", true, $xml); // any? + * assertSelectRegExp("#binder .name", "/Mike|Derek/", 3, $xml);// 3? + * + * @param array $selector + * @param string $pattern + * @param integer $count + * @param mixed $actual + * @param string $message + * @param boolean $isHtml + * @since Method available since Release 3.3.0 + * @author Mike Naberezny + * @author Derek DeVries + */ +function assertSelectRegExp($selector, $pattern, $count, $actual, $message = '', $isHtml = true) +{ + return call_user_func_array( + 'PHPUnit_Framework_Assert::assertSelectRegExp', + func_get_args() + ); +} + +/** + * Asserts that a string ends not with a given prefix. * + * @param string $suffix + * @param string $string + * @param string $message * @since Method available since Release 3.4.0 */ function assertStringEndsNotWith($suffix, $string, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertStringEndsNotWith', - func_get_args() + 'PHPUnit_Framework_Assert::assertStringEndsNotWith', + func_get_args() ); } /** * Asserts that a string ends with a given prefix. * - * @param string $suffix - * @param string $string - * @param string $message - * + * @param string $suffix + * @param string $string + * @param string $message * @since Method available since Release 3.4.0 */ function assertStringEndsWith($suffix, $string, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertStringEndsWith', - func_get_args() + 'PHPUnit_Framework_Assert::assertStringEndsWith', + func_get_args() ); } @@ -1366,53 +1385,50 @@ function assertStringEndsWith($suffix, $string, $message = '') * Asserts that the contents of a string is equal * to the contents of a file. * - * @param string $expectedFile - * @param string $actualString - * @param string $message - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param string $expectedFile + * @param string $actualString + * @param string $message + * @param boolean $canonicalize + * @param boolean $ignoreCase * @since Method available since Release 3.3.0 */ function assertStringEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertStringEqualsFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertStringEqualsFile', + func_get_args() ); } /** * Asserts that a string matches a given format string. * - * @param string $format - * @param string $string - * @param string $message - * + * @param string $format + * @param string $string + * @param string $message * @since Method available since Release 3.5.0 */ function assertStringMatchesFormat($format, $string, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertStringMatchesFormat', - func_get_args() + 'PHPUnit_Framework_Assert::assertStringMatchesFormat', + func_get_args() ); } /** * Asserts that a string matches a given format file. * - * @param string $formatFile - * @param string $string - * @param string $message - * + * @param string $formatFile + * @param string $string + * @param string $message * @since Method available since Release 3.5.0 */ function assertStringMatchesFormatFile($formatFile, $string, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertStringMatchesFormatFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertStringMatchesFormatFile', + func_get_args() ); } @@ -1420,87 +1436,227 @@ function assertStringMatchesFormatFile($formatFile, $string, $message = '') * Asserts that the contents of a string is not equal * to the contents of a file. * - * @param string $expectedFile - * @param string $actualString - * @param string $message - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param string $expectedFile + * @param string $actualString + * @param string $message + * @param boolean $canonicalize + * @param boolean $ignoreCase * @since Method available since Release 3.3.0 */ function assertStringNotEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertStringNotEqualsFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertStringNotEqualsFile', + func_get_args() ); } /** * Asserts that a string does not match a given format string. * - * @param string $format - * @param string $string - * @param string $message - * + * @param string $format + * @param string $string + * @param string $message * @since Method available since Release 3.5.0 */ function assertStringNotMatchesFormat($format, $string, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertStringNotMatchesFormat', - func_get_args() + 'PHPUnit_Framework_Assert::assertStringNotMatchesFormat', + func_get_args() ); } /** * Asserts that a string does not match a given format string. * - * @param string $formatFile - * @param string $string - * @param string $message - * + * @param string $formatFile + * @param string $string + * @param string $message * @since Method available since Release 3.5.0 */ function assertStringNotMatchesFormatFile($formatFile, $string, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertStringNotMatchesFormatFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertStringNotMatchesFormatFile', + func_get_args() ); } /** * Asserts that a string starts not with a given prefix. * - * @param string $prefix - * @param string $string - * @param string $message - * + * @param string $prefix + * @param string $string + * @param string $message * @since Method available since Release 3.4.0 */ function assertStringStartsNotWith($prefix, $string, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertStringStartsNotWith', - func_get_args() + 'PHPUnit_Framework_Assert::assertStringStartsNotWith', + func_get_args() ); } /** * Asserts that a string starts with a given prefix. * - * @param string $prefix - * @param string $string - * @param string $message - * + * @param string $prefix + * @param string $string + * @param string $message * @since Method available since Release 3.4.0 */ function assertStringStartsWith($prefix, $string, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertStringStartsWith', - func_get_args() + 'PHPUnit_Framework_Assert::assertStringStartsWith', + func_get_args() + ); +} + +/** + * Evaluate an HTML or XML string and assert its structure and/or contents. + * + * The first argument ($matcher) is an associative array that specifies the + * match criteria for the assertion: + * + * - `id` : the node with the given id attribute must match the + * corresponding value. + * - `tag` : the node type must match the corresponding value. + * - `attributes` : a hash. The node's attributes must match the + * corresponding values in the hash. + * - `content` : The text content must match the given value. + * - `parent` : a hash. The node's parent must match the + * corresponding hash. + * - `child`: a hash. At least one of the node's immediate children + * must meet the criteria described by the hash. + * - `ancestor` : a hash. At least one of the node's ancestors must + * meet the criteria described by the hash. + * - `descendant` : a hash. At least one of the node's descendants must + * meet the criteria described by the hash. + * - `children` : a hash, for counting children of a node. + * Accepts the keys: + *- `count`: a number which must equal the number of children + * that match + *- `less_than`: the number of matching children must be greater + * than this number + *- `greater_than` : the number of matching children must be less than + * this number + *- `only` : another hash consisting of the keys to use to match + * on the children, and only matching children will be + * counted + * + * + * // Matcher that asserts that there is an element with an id="my_id". + * $matcher = array('id' => 'my_id'); + * + * // Matcher that asserts that there is a "span" tag. + * $matcher = array('tag' => 'span'); + * + * // Matcher that asserts that there is a "span" tag with the content + * // "Hello World". + * $matcher = array('tag' => 'span', 'content' => 'Hello World'); + * + * // Matcher that asserts that there is a "span" tag with content matching + * // the regular expression pattern. + * $matcher = array('tag' => 'span', 'content' => 'regexp:/Try P(HP|ython)/'); + * + * // Matcher that asserts that there is a "span" with an "list" class + * // attribute. + * $matcher = array( + * 'tag'=> 'span', + * 'attributes' => array('class' => 'list') + * ); + * + * // Matcher that asserts that there is a "span" inside of a "div". + * $matcher = array( + * 'tag'=> 'span', + * 'parent' => array('tag' => 'div') + * ); + * + * // Matcher that asserts that there is a "span" somewhere inside a + * // "table". + * $matcher = array( + * 'tag' => 'span', + * 'ancestor' => array('tag' => 'table') + * ); + * + * // Matcher that asserts that there is a "span" with at least one "em" + * // child. + * $matcher = array( + * 'tag' => 'span', + * 'child' => array('tag' => 'em') + * ); + * + * // Matcher that asserts that there is a "span" containing a (possibly + * // nested) "strong" tag. + * $matcher = array( + * 'tag'=> 'span', + * 'descendant' => array('tag' => 'strong') + * ); + * + * // Matcher that asserts that there is a "span" containing 5-10 "em" tags + * // as immediate children. + * $matcher = array( + * 'tag' => 'span', + * 'children' => array( + * 'less_than'=> 11, + * 'greater_than' => 4, + * 'only' => array('tag' => 'em') + * ) + * ); + * + * // Matcher that asserts that there is a "div", with an "ul" ancestor and + * // a "li" parent (with class="enum"), and containing a "span" descendant + * // that contains an element with id="my_test" and the text "Hello World". + * $matcher = array( + * 'tag'=> 'div', + * 'ancestor' => array('tag' => 'ul'), + * 'parent' => array( + * 'tag'=> 'li', + * 'attributes' => array('class' => 'enum') + * ), + * 'descendant' => array( + * 'tag' => 'span', + * 'child' => array( + * 'id' => 'my_test', + * 'content' => 'Hello World' + * ) + * ) + * ); + * + * // Use assertTag() to apply a $matcher to a piece of $html. + * $this->assertTag($matcher, $html); + * + * // Use assertTag() to apply a $matcher to a piece of $xml. + * $this->assertTag($matcher, $xml, '', false); + * + * + * The second argument ($actual) is a string containing either HTML or + * XML text to be tested. + * + * The third argument ($message) is an optional message that will be + * used if the assertion fails. + * + * The fourth argument ($html) is an optional flag specifying whether + * to load the $actual string into a DOMDocument using the HTML or + * XML load strategy. It is true by default, which assumes the HTML + * load strategy. In many cases, this will be acceptable for XML as well. + * + * @param array $matcher + * @param string $actual + * @param string $message + * @param boolean $isHtml + * @since Method available since Release 3.3.0 + * @author Mike Naberezny + * @author Derek DeVries + */ +function assertTag($matcher, $actual, $message = '', $isHtml = true) +{ + return call_user_func_array( + 'PHPUnit_Framework_Assert::assertTag', + func_get_args() ); } @@ -1508,185 +1664,173 @@ function assertStringStartsWith($prefix, $string, $message = '') * Evaluates a PHPUnit_Framework_Constraint matcher object. * * @param mixed$value - * @param PHPUnit_Framework_Constraint $constraint - * @param string $message - * + * @param PHPUnit_Framework_Constraint $constraint + * @param string $message * @since Method available since Release 3.0.0 */ function assertThat($value, PHPUnit_Framework_Constraint $constraint, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertThat', - func_get_args() + 'PHPUnit_Framework_Assert::assertThat', + func_get_args() ); } /** * Asserts that a condition is true. * - * @param bool $condition - * @param string $message - * + * @param boolean $condition + * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */ function assertTrue($condition, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertTrue', - func_get_args() + 'PHPUnit_Framework_Assert::assertTrue', + func_get_args() ); } /** * Asserts that two XML files are equal. * - * @param string $expectedFile - * @param string $actualFile - * @param string $message - * + * @param string $expectedFile + * @param string $actualFile + * @param string $message * @since Method available since Release 3.1.0 */ function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertXmlFileEqualsXmlFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertXmlFileEqualsXmlFile', + func_get_args() ); } /** * Asserts that two XML files are not equal. * - * @param string $expectedFile - * @param string $actualFile - * @param string $message - * + * @param string $expectedFile + * @param string $actualFile + * @param string $message * @since Method available since Release 3.1.0 */ function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertXmlFileNotEqualsXmlFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertXmlFileNotEqualsXmlFile', + func_get_args() ); } /** * Asserts that two XML documents are equal. * - * @param string $expectedFile - * @param string $actualXml - * @param string $message - * + * @param string $expectedFile + * @param string $actualXml + * @param string $message * @since Method available since Release 3.3.0 */ function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertXmlStringEqualsXmlFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertXmlStringEqualsXmlFile', + func_get_args() ); } /** * Asserts that two XML documents are equal. * - * @param string $expectedXml - * @param string $actualXml - * @param string $message - * + * @param string $expectedXml + * @param string $actualXml + * @param string $message * @since Method available since Release 3.1.0 */ function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertXmlStringEqualsXmlString', - func_get_args() + 'PHPUnit_Framework_Assert::assertXmlStringEqualsXmlString', + func_get_args() ); } /** * Asserts that two XML documents are not equal. * - * @param string $expectedFile - * @param string $actualXml - * @param string $message - * + * @param string $expectedFile + * @param string $actualXml + * @param string $message * @since Method available since Release 3.3.0 */ function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertXmlStringNotEqualsXmlFile', - func_get_args() + 'PHPUnit_Framework_Assert::assertXmlStringNotEqualsXmlFile', + func_get_args() ); } /** * Asserts that two XML documents are not equal. * - * @param string $expectedXml - * @param string $actualXml - * @param string $message - * + * @param string $expectedXml + * @param string $actualXml + * @param string $message * @since Method available since Release 3.1.0 */ function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message = '') { return call_user_func_array( - 'PHPUnit_Framework_Assert::assertXmlStringNotEqualsXmlString', - func_get_args() + 'PHPUnit_Framework_Assert::assertXmlStringNotEqualsXmlString', + func_get_args() ); } /** - * Returns a matcher that matches when the method is executed - * at the given $index. - * - * @param int $index + * Returns a matcher that matches when the method it is evaluated for + * is invoked at the given $index. * + * @param integer $index * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex - * * @since Method available since Release 3.0.0 */ function at($index) { return call_user_func_array( - 'PHPUnit_Framework_TestCase::at', - func_get_args() + 'PHPUnit_Framework_TestCase::at', + func_get_args() ); } /** - * Returns a matcher that matches when the method is executed at least once. + * Returns a matcher that matches when the method it is evaluated for + * is executed at least once. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce - * * @since Method available since Release 3.0.0 */ function atLeastOnce() { return call_user_func_array( - 'PHPUnit_Framework_TestCase::atLeastOnce', - func_get_args() + 'PHPUnit_Framework_TestCase::atLeastOnce', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_Attribute matcher object. * - * @param PHPUnit_Framework_Constraint $constraint - * @param string $attributeName - * + * @param PHPUnit_Framework_Constraint $constraint + * @param string $attributeName * @return PHPUnit_Framework_Constraint_Attribute - * * @since Method available since Release 3.1.0 */ function attribute(PHPUnit_Framework_Constraint $constraint, $attributeName) { return call_user_func_array( - 'PHPUnit_Framework_Assert::attribute', - func_get_args() + 'PHPUnit_Framework_Assert::attribute', + func_get_args() ); } @@ -1695,22 +1839,20 @@ function attribute(PHPUnit_Framework_Constraint $constraint, $attributeName) * that is wrapped in a PHPUnit_Framework_Constraint_Attribute matcher * object. * - * @param string $attributeName - * @param mixed $value - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param string $attributeName + * @param mixed $value + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase * @return PHPUnit_Framework_Constraint_Attribute - * * @since Method available since Release 3.1.0 */ -function attributeEqualTo($attributeName, $value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) +function attributeEqualTo($attributeName, $value, $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::attributeEqualTo', - func_get_args() + 'PHPUnit_Framework_Assert::attributeEqualTo', + func_get_args() ); } @@ -1718,31 +1860,28 @@ function attributeEqualTo($attributeName, $value, $delta = 0.0, $maxDepth = 10, * Returns a PHPUnit_Framework_Constraint_Callback matcher object. * * @param callable $callback - * * @return PHPUnit_Framework_Constraint_Callback */ function callback($callback) { return call_user_func_array( - 'PHPUnit_Framework_Assert::callback', - func_get_args() + 'PHPUnit_Framework_Assert::callback', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_ClassHasAttribute matcher object. * - * @param string $attributeName - * + * @param string $attributeName * @return PHPUnit_Framework_Constraint_ClassHasAttribute - * * @since Method available since Release 3.1.0 */ function classHasAttribute($attributeName) { return call_user_func_array( - 'PHPUnit_Framework_Assert::classHasAttribute', - func_get_args() + 'PHPUnit_Framework_Assert::classHasAttribute', + func_get_args() ); } @@ -1750,17 +1889,15 @@ function classHasAttribute($attributeName) * Returns a PHPUnit_Framework_Constraint_ClassHasStaticAttribute matcher * object. * - * @param string $attributeName - * + * @param string $attributeName * @return PHPUnit_Framework_Constraint_ClassHasStaticAttribute - * * @since Method available since Release 3.1.0 */ function classHasStaticAttribute($attributeName) { return call_user_func_array( - 'PHPUnit_Framework_Assert::classHasStaticAttribute', - func_get_args() + 'PHPUnit_Framework_Assert::classHasStaticAttribute', + func_get_args() ); } @@ -1768,19 +1905,17 @@ function classHasStaticAttribute($attributeName) * Returns a PHPUnit_Framework_Constraint_TraversableContains matcher * object. * - * @param mixed $value - * @param bool $checkForObjectIdentity - * @param bool $checkForNonObjectIdentity - * + * @param mixed $value + * @param boolean $checkForObjectIdentity + * @param boolean $checkForNonObjectIdentity * @return PHPUnit_Framework_Constraint_TraversableContains - * * @since Method available since Release 3.0.0 */ function contains($value, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::contains', - func_get_args() + 'PHPUnit_Framework_Assert::contains', + func_get_args() ); } @@ -1788,17 +1923,15 @@ function contains($value, $checkForObjectIdentity = true, $checkForNonObjectIden * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher * object. * - * @param string $type - * + * @param string $type * @return PHPUnit_Framework_Constraint_TraversableContainsOnly - * * @since Method available since Release 3.1.4 */ function containsOnly($type) { return call_user_func_array( - 'PHPUnit_Framework_Assert::containsOnly', - func_get_args() + 'PHPUnit_Framework_Assert::containsOnly', + func_get_args() ); } @@ -1807,53 +1940,48 @@ function containsOnly($type) * object. * * @param string $classname - * * @return PHPUnit_Framework_Constraint_TraversableContainsOnly */ function containsOnlyInstancesOf($classname) { return call_user_func_array( - 'PHPUnit_Framework_Assert::containsOnlyInstancesOf', - func_get_args() + 'PHPUnit_Framework_Assert::containsOnlyInstancesOf', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsEqual matcher object. * - * @param mixed $value - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param mixed $value + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase * @return PHPUnit_Framework_Constraint_IsEqual - * * @since Method available since Release 3.0.0 */ -function equalTo($value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) +function equalTo($value, $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( - 'PHPUnit_Framework_Assert::equalTo', - func_get_args() + 'PHPUnit_Framework_Assert::equalTo', + func_get_args() ); } /** - * Returns a matcher that matches when the method is executed - * exactly $count times. - * - * @param int $count + * Returns a matcher that matches when the method it is evaluated for + * is executed exactly $count times. * + * @param integer $count * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount - * * @since Method available since Release 3.0.0 */ function exactly($count) { return call_user_func_array( - 'PHPUnit_Framework_TestCase::exactly', - func_get_args() + 'PHPUnit_Framework_TestCase::exactly', + func_get_args() ); } @@ -1861,31 +1989,28 @@ function exactly($count) * Returns a PHPUnit_Framework_Constraint_FileExists matcher object. * * @return PHPUnit_Framework_Constraint_FileExists - * * @since Method available since Release 3.0.0 */ function fileExists() { return call_user_func_array( - 'PHPUnit_Framework_Assert::fileExists', - func_get_args() + 'PHPUnit_Framework_Assert::fileExists', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_GreaterThan matcher object. * - * @param mixed $value - * + * @param mixed $value * @return PHPUnit_Framework_Constraint_GreaterThan - * * @since Method available since Release 3.0.0 */ function greaterThan($value) { return call_user_func_array( - 'PHPUnit_Framework_Assert::greaterThan', - func_get_args() + 'PHPUnit_Framework_Assert::greaterThan', + func_get_args() ); } @@ -1894,34 +2019,30 @@ function greaterThan($value) * a PHPUnit_Framework_Constraint_IsEqual and a * PHPUnit_Framework_Constraint_GreaterThan matcher object. * - * @param mixed $value - * + * @param mixed $value * @return PHPUnit_Framework_Constraint_Or - * * @since Method available since Release 3.1.0 */ function greaterThanOrEqual($value) { return call_user_func_array( - 'PHPUnit_Framework_Assert::greaterThanOrEqual', - func_get_args() + 'PHPUnit_Framework_Assert::greaterThanOrEqual', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsIdentical matcher object. * - * @param mixed $value - * + * @param mixed $value * @return PHPUnit_Framework_Constraint_IsIdentical - * * @since Method available since Release 3.0.0 */ function identicalTo($value) { return call_user_func_array( - 'PHPUnit_Framework_Assert::identicalTo', - func_get_args() + 'PHPUnit_Framework_Assert::identicalTo', + func_get_args() ); } @@ -1929,14 +2050,13 @@ function identicalTo($value) * Returns a PHPUnit_Framework_Constraint_IsEmpty matcher object. * * @return PHPUnit_Framework_Constraint_IsEmpty - * * @since Method available since Release 3.5.0 */ function isEmpty() { return call_user_func_array( - 'PHPUnit_Framework_Assert::isEmpty', - func_get_args() + 'PHPUnit_Framework_Assert::isEmpty', + func_get_args() ); } @@ -1944,31 +2064,28 @@ function isEmpty() * Returns a PHPUnit_Framework_Constraint_IsFalse matcher object. * * @return PHPUnit_Framework_Constraint_IsFalse - * * @since Method available since Release 3.3.0 */ function isFalse() { return call_user_func_array( - 'PHPUnit_Framework_Assert::isFalse', - func_get_args() + 'PHPUnit_Framework_Assert::isFalse', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsInstanceOf matcher object. * - * @param string $className - * + * @param string $className * @return PHPUnit_Framework_Constraint_IsInstanceOf - * * @since Method available since Release 3.0.0 */ function isInstanceOf($className) { return call_user_func_array( - 'PHPUnit_Framework_Assert::isInstanceOf', - func_get_args() + 'PHPUnit_Framework_Assert::isInstanceOf', + func_get_args() ); } @@ -1976,14 +2093,13 @@ function isInstanceOf($className) * Returns a PHPUnit_Framework_Constraint_IsJson matcher object. * * @return PHPUnit_Framework_Constraint_IsJson - * * @since Method available since Release 3.7.20 */ function isJson() { return call_user_func_array( - 'PHPUnit_Framework_Assert::isJson', - func_get_args() + 'PHPUnit_Framework_Assert::isJson', + func_get_args() ); } @@ -1991,14 +2107,13 @@ function isJson() * Returns a PHPUnit_Framework_Constraint_IsNull matcher object. * * @return PHPUnit_Framework_Constraint_IsNull - * * @since Method available since Release 3.3.0 */ function isNull() { return call_user_func_array( - 'PHPUnit_Framework_Assert::isNull', - func_get_args() + 'PHPUnit_Framework_Assert::isNull', + func_get_args() ); } @@ -2006,48 +2121,43 @@ function isNull() * Returns a PHPUnit_Framework_Constraint_IsTrue matcher object. * * @return PHPUnit_Framework_Constraint_IsTrue - * * @since Method available since Release 3.3.0 */ function isTrue() { return call_user_func_array( - 'PHPUnit_Framework_Assert::isTrue', - func_get_args() + 'PHPUnit_Framework_Assert::isTrue', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsType matcher object. * - * @param string $type - * + * @param string $type * @return PHPUnit_Framework_Constraint_IsType - * * @since Method available since Release 3.0.0 */ function isType($type) { return call_user_func_array( - 'PHPUnit_Framework_Assert::isType', - func_get_args() + 'PHPUnit_Framework_Assert::isType', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_LessThan matcher object. * - * @param mixed $value - * + * @param mixed $value * @return PHPUnit_Framework_Constraint_LessThan - * * @since Method available since Release 3.0.0 */ function lessThan($value) { return call_user_func_array( - 'PHPUnit_Framework_Assert::lessThan', - func_get_args() + 'PHPUnit_Framework_Assert::lessThan', + func_get_args() ); } @@ -2056,17 +2166,15 @@ function lessThan($value) * a PHPUnit_Framework_Constraint_IsEqual and a * PHPUnit_Framework_Constraint_LessThan matcher object. * - * @param mixed $value - * + * @param mixed $value * @return PHPUnit_Framework_Constraint_Or - * * @since Method available since Release 3.1.0 */ function lessThanOrEqual($value) { return call_user_func_array( - 'PHPUnit_Framework_Assert::lessThanOrEqual', - func_get_args() + 'PHPUnit_Framework_Assert::lessThanOrEqual', + func_get_args() ); } @@ -2074,31 +2182,28 @@ function lessThanOrEqual($value) * Returns a PHPUnit_Framework_Constraint_And matcher object. * * @return PHPUnit_Framework_Constraint_And - * * @since Method available since Release 3.0.0 */ function logicalAnd() { return call_user_func_array( - 'PHPUnit_Framework_Assert::logicalAnd', - func_get_args() + 'PHPUnit_Framework_Assert::logicalAnd', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_Not matcher object. * - * @param PHPUnit_Framework_Constraint $constraint - * + * @param PHPUnit_Framework_Constraint $constraint * @return PHPUnit_Framework_Constraint_Not - * * @since Method available since Release 3.0.0 */ function logicalNot(PHPUnit_Framework_Constraint $constraint) { return call_user_func_array( - 'PHPUnit_Framework_Assert::logicalNot', - func_get_args() + 'PHPUnit_Framework_Assert::logicalNot', + func_get_args() ); } @@ -2106,14 +2211,13 @@ function logicalNot(PHPUnit_Framework_Constraint $constraint) * Returns a PHPUnit_Framework_Constraint_Or matcher object. * * @return PHPUnit_Framework_Constraint_Or - * * @since Method available since Release 3.0.0 */ function logicalOr() { return call_user_func_array( - 'PHPUnit_Framework_Assert::logicalOr', - func_get_args() + 'PHPUnit_Framework_Assert::logicalOr', + func_get_args() ); } @@ -2121,140 +2225,131 @@ function logicalOr() * Returns a PHPUnit_Framework_Constraint_Xor matcher object. * * @return PHPUnit_Framework_Constraint_Xor - * * @since Method available since Release 3.0.0 */ function logicalXor() { return call_user_func_array( - 'PHPUnit_Framework_Assert::logicalXor', - func_get_args() + 'PHPUnit_Framework_Assert::logicalXor', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_StringMatches matcher object. * - * @param string $string - * + * @param string $string * @return PHPUnit_Framework_Constraint_StringMatches - * * @since Method available since Release 3.5.0 */ function matches($string) { return call_user_func_array( - 'PHPUnit_Framework_Assert::matches', - func_get_args() + 'PHPUnit_Framework_Assert::matches', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_PCREMatch matcher object. * - * @param string $pattern - * + * @param string $pattern * @return PHPUnit_Framework_Constraint_PCREMatch - * * @since Method available since Release 3.0.0 */ function matchesRegularExpression($pattern) { return call_user_func_array( - 'PHPUnit_Framework_Assert::matchesRegularExpression', - func_get_args() + 'PHPUnit_Framework_Assert::matchesRegularExpression', + func_get_args() ); } /** - * Returns a matcher that matches when the method is never executed. + * Returns a matcher that matches when the method it is evaluated for + * is never executed. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount - * * @since Method available since Release 3.0.0 */ function never() { return call_user_func_array( - 'PHPUnit_Framework_TestCase::never', - func_get_args() + 'PHPUnit_Framework_TestCase::never', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_ObjectHasAttribute matcher object. * - * @param string $attributeName - * + * @param string $attributeName * @return PHPUnit_Framework_Constraint_ObjectHasAttribute - * * @since Method available since Release 3.0.0 */ function objectHasAttribute($attributeName) { return call_user_func_array( - 'PHPUnit_Framework_Assert::objectHasAttribute', - func_get_args() + 'PHPUnit_Framework_Assert::objectHasAttribute', + func_get_args() ); } /** - * @param mixed $value, ... - * + * @param mixed $value, ... * @return PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls - * * @since Method available since Release 3.0.0 */ function onConsecutiveCalls() { return call_user_func_array( - 'PHPUnit_Framework_TestCase::onConsecutiveCalls', - func_get_args() + 'PHPUnit_Framework_TestCase::onConsecutiveCalls', + func_get_args() ); } /** - * Returns a matcher that matches when the method is executed exactly once. + * Returns a matcher that matches when the method it is evaluated for + * is executed exactly once. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount - * * @since Method available since Release 3.0.0 */ function once() { return call_user_func_array( - 'PHPUnit_Framework_TestCase::once', - func_get_args() + 'PHPUnit_Framework_TestCase::once', + func_get_args() ); } /** - * @param int $argumentIndex * - * @return PHPUnit_Framework_MockObject_Stub_ReturnArgument * + * @param integer $argumentIndex + * @return PHPUnit_Framework_MockObject_Stub_ReturnArgument * @since Method available since Release 3.3.0 */ function returnArgument($argumentIndex) { return call_user_func_array( - 'PHPUnit_Framework_TestCase::returnArgument', - func_get_args() + 'PHPUnit_Framework_TestCase::returnArgument', + func_get_args() ); } /** - * @param mixed $callback * - * @return PHPUnit_Framework_MockObject_Stub_ReturnCallback * + * @param mixed $callback + * @return PHPUnit_Framework_MockObject_Stub_ReturnCallback * @since Method available since Release 3.3.0 */ function returnCallback($callback) { return call_user_func_array( - 'PHPUnit_Framework_TestCase::returnCallback', - func_get_args() + 'PHPUnit_Framework_TestCase::returnCallback', + func_get_args() ); } @@ -2264,110 +2359,103 @@ function returnCallback($callback) * This method is useful when mocking a fluent interface. * * @return PHPUnit_Framework_MockObject_Stub_ReturnSelf - * * @since Method available since Release 3.6.0 */ function returnSelf() { return call_user_func_array( - 'PHPUnit_Framework_TestCase::returnSelf', - func_get_args() + 'PHPUnit_Framework_TestCase::returnSelf', + func_get_args() ); } /** - * @param mixed $value * - * @return PHPUnit_Framework_MockObject_Stub_Return * + * @param mixed $value + * @return PHPUnit_Framework_MockObject_Stub_Return * @since Method available since Release 3.0.0 */ function returnValue($value) { return call_user_func_array( - 'PHPUnit_Framework_TestCase::returnValue', - func_get_args() + 'PHPUnit_Framework_TestCase::returnValue', + func_get_args() ); } /** - * @param array $valueMap * - * @return PHPUnit_Framework_MockObject_Stub_ReturnValueMap * + * @param array $valueMap + * @return PHPUnit_Framework_MockObject_Stub_ReturnValueMap * @since Method available since Release 3.6.0 */ function returnValueMap(array $valueMap) { return call_user_func_array( - 'PHPUnit_Framework_TestCase::returnValueMap', - func_get_args() + 'PHPUnit_Framework_TestCase::returnValueMap', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_StringContains matcher object. * - * @param string $string - * @param bool $case - * + * @param string $string + * @param boolean $case * @return PHPUnit_Framework_Constraint_StringContains - * * @since Method available since Release 3.0.0 */ function stringContains($string, $case = true) { return call_user_func_array( - 'PHPUnit_Framework_Assert::stringContains', - func_get_args() + 'PHPUnit_Framework_Assert::stringContains', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_StringEndsWith matcher object. * - * @param mixed $suffix - * + * @param mixed $suffix * @return PHPUnit_Framework_Constraint_StringEndsWith - * * @since Method available since Release 3.4.0 */ function stringEndsWith($suffix) { return call_user_func_array( - 'PHPUnit_Framework_Assert::stringEndsWith', - func_get_args() + 'PHPUnit_Framework_Assert::stringEndsWith', + func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_StringStartsWith matcher object. * - * @param mixed $prefix - * + * @param mixed $prefix * @return PHPUnit_Framework_Constraint_StringStartsWith - * * @since Method available since Release 3.4.0 */ function stringStartsWith($prefix) { return call_user_func_array( - 'PHPUnit_Framework_Assert::stringStartsWith', - func_get_args() + 'PHPUnit_Framework_Assert::stringStartsWith', + func_get_args() ); } /** - * @param Exception $exception * - * @return PHPUnit_Framework_MockObject_Stub_Exception * + * @param Exception $exception + * @return PHPUnit_Framework_MockObject_Stub_Exception * @since Method available since Release 3.1.0 */ function throwException(Exception $exception) { return call_user_func_array( - 'PHPUnit_Framework_TestCase::throwException', - func_get_args() + 'PHPUnit_Framework_TestCase::throwException', + func_get_args() ); } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/AssertionFailedError.php b/tests/vendor/phpunit/phpunit/src/Framework/AssertionFailedError.php index b554e6c4..27ca6c92 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/AssertionFailedError.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/AssertionFailedError.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * Thrown when an assertion failed. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Framework_AssertionFailedError extends PHPUnit_Framework_Exception implements PHPUnit_Framework_SelfDescribing { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/BaseTestListener.php b/tests/vendor/phpunit/phpunit/src/Framework/BaseTestListener.php index c6e5d773..c787d6d1 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/BaseTestListener.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/BaseTestListener.php @@ -1,55 +1,78 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Giorgio Sironi + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** * An empty Listener that can be extended to implement TestListener * with just a few lines of code. - * * @see PHPUnit_Framework_TestListener for documentation on the API methods. - * @since Class available since Release 4.0.0 + * + * @package PHPUnit + * @subpackage Framework + * @author Giorgio Sironi + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ abstract class PHPUnit_Framework_BaseTestListener implements PHPUnit_Framework_TestListener { - public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) - { - } + public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) {} - public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) - { - } + public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) {} - public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) - { - } + public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) {} - public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) - { - } + public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) {} - public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) - { - } + public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) {} - public function startTestSuite(PHPUnit_Framework_TestSuite $suite) - { - } + public function startTestSuite(PHPUnit_Framework_TestSuite $suite) {} - public function endTestSuite(PHPUnit_Framework_TestSuite $suite) - { - } + public function endTestSuite(PHPUnit_Framework_TestSuite $suite) {} - public function startTest(PHPUnit_Framework_Test $test) - { - } + public function startTest(PHPUnit_Framework_Test $test) {} - public function endTest(PHPUnit_Framework_Test $test, $time) - { - } + public function endTest(PHPUnit_Framework_Test $test, $time) {} } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/CodeCoverageException.php b/tests/vendor/phpunit/phpunit/src/Framework/CodeCoverageException.php index b75edd7a..eee14645 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/CodeCoverageException.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/CodeCoverageException.php @@ -1,15 +1,56 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ class PHPUnit_Framework_CodeCoverageException extends PHPUnit_Framework_Exception { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator.php new file mode 100644 index 00000000..a4fde881 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator.php @@ -0,0 +1,106 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +use SebastianBergmann\Exporter\Exporter; + +/** + * Abstract base class for comparators which compare values for equality. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +abstract class PHPUnit_Framework_Comparator +{ + /** + * @var PHPUnit_Framework_ComparatorFactory + */ + protected $factory; + + protected $exporter; + + public function __construct() + { + $this->exporter = new Exporter; + } + + /** + * @param PHPUnit_Framework_ComparatorFactory $factory + */ + public function setFactory(PHPUnit_Framework_ComparatorFactory $factory) + { + $this->factory = $factory; + } + + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + abstract public function accepts($expected, $actual); + + /** + * Asserts that two values are equal. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @param float $delta The allowed numerical distance between two values to + * consider them equal + * @param bool $canonicalize If set to true, arrays are sorted before + * comparison + * @param bool $ignoreCase If set to true, upper- and lowercasing is + * ignored when comparing string values + * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison + * fails. Contains information about the + * specific errors that lead to the failure. + */ + abstract public function assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false); +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Array.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Array.php new file mode 100644 index 00000000..8b67a000 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Array.php @@ -0,0 +1,175 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Compares arrays for equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +class PHPUnit_Framework_Comparator_Array extends PHPUnit_Framework_Comparator +{ + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + public function accepts($expected, $actual) + { + return is_array($expected) && is_array($actual); + } + + /** + * Asserts that two values are equal. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @param float $delta The allowed numerical distance between two values to + * consider them equal + * @param bool $canonicalize If set to true, arrays are sorted before + * comparison + * @param bool $ignoreCase If set to true, upper- and lowercasing is + * ignored when comparing string values + * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison + * fails. Contains information about the + * specific errors that lead to the failure. + */ + public function assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false, array &$processed = array()) + { + if ($canonicalize) { + sort($expected); + sort($actual); + } + + $remaining = $actual; + $expString = $actString = "Array (\n"; + $equal = true; + + foreach ($expected as $key => $value) { + unset($remaining[$key]); + + if (!array_key_exists($key, $actual)) { + $expString .= sprintf( + " %s => %s\n", + + $this->exporter->export($key), + $this->exporter->shortenedExport($value) + ); + $equal = false; + continue; + } + + try { + $this->factory->getComparatorFor($value, $actual[$key])->assertEquals($value, $actual[$key], $delta, $canonicalize, $ignoreCase, $processed); + $expString .= sprintf( + " %s => %s\n", + + $this->exporter->export($key), + $this->exporter->shortenedExport($value) + ); + $actString .= sprintf( + " %s => %s\n", + + $this->exporter->export($key), + $this->exporter->shortenedExport($actual[$key]) + ); + } catch (PHPUnit_Framework_ComparisonFailure $e) { + $expString .= sprintf( + " %s => %s\n", + + $this->exporter->export($key), + $e->getExpectedAsString() + ? $this->indent($e->getExpectedAsString()) + : $this->exporter->shortenedExport($e->getExpected()) + ); + $actString .= sprintf( + " %s => %s\n", + + $this->exporter->export($key), + $e->getActualAsString() + ? $this->indent($e->getActualAsString()) + : $this->exporter->shortenedExport($e->getActual()) + ); + $equal = false; + } + } + + foreach ($remaining as $key => $value) { + $actString .= sprintf( + " %s => %s\n", + + $this->exporter->export($key), + $this->exporter->shortenedExport($value) + ); + $equal = false; + } + + $expString .= ')'; + $actString .= ')'; + + if (!$equal) { + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + $expString, + $actString, + false, + 'Failed asserting that two arrays are equal.' + ); + } + } + + protected function indent($lines) + { + return trim(str_replace("\n", "\n ", $lines)); + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/DOMNode.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/DOMNode.php new file mode 100644 index 00000000..a7a23c2d --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/DOMNode.php @@ -0,0 +1,136 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Compares DOMNodes instances for equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Bernhard Schussek + * @author Arne Blankerts + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + */ +class PHPUnit_Framework_Comparator_DOMNode extends PHPUnit_Framework_Comparator_Object +{ + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + public function accepts($expected, $actual) + { + return $expected instanceof DOMNode && $actual instanceof DOMNode; + } + + /** + * Asserts that two values are equal. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @param float $delta The allowed numerical distance between two values to + * consider them equal + * @param bool $canonicalize If set to true, arrays are sorted before + * comparison + * @param bool $ignoreCase If set to true, upper- and lowercasing is + * ignored when comparing string values + * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison + * fails. Contains information about the + * specific errors that lead to the failure. + */ + public function assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false) + { + $expectedXML = $expected->C14N(); + $actualXML = $actual->C14N(); + if ($ignoreCase === true) { + $expectedXML = strtolower($expectedXML); + $actualXML = strtolower($actualXML); + } + if ($expectedXML !== $actualXML) { + if ($expected instanceof DOMDocument) { + $type = 'documents'; + } else { + $type = 'nodes'; + } + + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + $this->domToText($expected), + $this->domToText($actual), + false, + sprintf('Failed asserting that two DOM %s are equal.', $type) + ); + } + } + + /** + * Returns the normalized, whitespace-cleaned, and indented textual + * representation of a DOMNode. + * + * @param DOMNode $node + * @return string + */ + protected function domToText(DOMNode $node) + { + if ($node instanceof DOMDocument) { + $document = $node; + } else { + $document = $node->ownerDocument; + } + + $document->formatOutput = true; + $document->normalizeDocument(); + + if ($node instanceof DOMDocument) { + return $node->saveXML(); + } + + return $document->saveXML($node); + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/DateTime.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/DateTime.php new file mode 100644 index 00000000..5fcb5877 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/DateTime.php @@ -0,0 +1,120 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Jeff Welch + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 + */ + +/** + * Compares DateTime instances for equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Jeff Welch + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 + */ +class PHPUnit_Framework_Comparator_DateTime extends PHPUnit_Framework_Comparator_Object +{ + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + public function accepts($expected, $actual) + { + return $expected instanceof DateTime && $actual instanceof DateTime; + } + + /** + * Asserts that two values are equal. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @param float $delta The allowed numerical distance between two values to + * consider them equal + * @param bool $canonicalize If set to true, arrays are sorted before + * comparison + * @param bool $ignoreCase If set to true, upper- and lowercasing is + * ignored when comparing string values + * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison + * fails. Contains information about the + * specific errors that lead to the failure. + */ + public function assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false) + { + $delta = new DateInterval(sprintf('PT%sS', abs($delta))); + + $expectedLower = clone $expected; + $expectedUpper = clone $expected; + + if ($actual < $expectedLower->sub($delta) || + $actual > $expectedUpper->add($delta)) { + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + $this->dateTimeToString($expected), + $this->dateTimeToString($actual), + false, + 'Failed asserting that two DateTime objects are equal.' + ); + } + } + + /** + * Returns an ISO 8601 formatted string representation of a datetime or + * 'Invalid DateTime object' if the provided DateTime was not properly + * initialized. + * + * @param DateTime $datetime + * @return string + */ + protected function dateTimeToString(DateTime $datetime) + { + $string = $datetime->format(DateTime::ISO8601); + + return $string ? $string : 'Invalid DateTime object'; + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Double.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Double.php new file mode 100644 index 00000000..9f88997f --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Double.php @@ -0,0 +1,101 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Compares doubles for equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +class PHPUnit_Framework_Comparator_Double extends PHPUnit_Framework_Comparator_Numeric +{ + /** + * Smallest value available in PHP. + * + * @var float + */ + const EPSILON = 0.0000000001; + + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + public function accepts($expected, $actual) + { + return (is_double($expected) || is_double($actual)) && is_numeric($expected) && is_numeric($actual); + } + + /** + * Asserts that two values are equal. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @param float $delta The allowed numerical distance between two values to + * consider them equal + * @param bool $canonicalize If set to true, arrays are sorted before + * comparison + * @param bool $ignoreCase If set to true, upper- and lowercasing is + * ignored when comparing string values + * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison + * fails. Contains information about the + * specific errors that lead to the failure. + */ + public function assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false) + { + if ($delta == 0) { + $delta = self::EPSILON; + } + + parent::assertEquals($expected, $actual, $delta, $canonicalize, $ignoreCase); + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Exception.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Exception.php new file mode 100644 index 00000000..b9068513 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Exception.php @@ -0,0 +1,92 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Compares Exception instances for equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +class PHPUnit_Framework_Comparator_Exception extends PHPUnit_Framework_Comparator_Object +{ + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + public function accepts($expected, $actual) + { + return $expected instanceof Exception && $actual instanceof Exception; + } + + /** + * Converts an object to an array containing all of its private, protected + * and public properties. + * + * @param object $object + * @return array + */ + protected function toArray($object) + { + $array = parent::toArray($object); + + unset( + $array['file'], + $array['line'], + $array['trace'], + $array['string'], // some internal property of Exception + $array['xdebug_message'] // some internal property added by XDebug + ); + + return $array; + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/MockObject.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/MockObject.php new file mode 100644 index 00000000..19933e32 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/MockObject.php @@ -0,0 +1,86 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Compares PHPUnit_Framework_MockObject_MockObject instances for equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +class PHPUnit_Framework_Comparator_MockObject extends PHPUnit_Framework_Comparator_Object +{ + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + public function accepts($expected, $actual) + { + return $expected instanceof PHPUnit_Framework_MockObject_MockObject && $actual instanceof PHPUnit_Framework_MockObject_MockObject; + } + + /** + * Converts an object to an array containing all of its private, protected + * and public properties. + * + * @param object $object + * @return array + */ + protected function toArray($object) + { + $array = parent::toArray($object); + + unset($array['__phpunit_invocationMocker']); + + return $array; + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Numeric.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Numeric.php new file mode 100644 index 00000000..d8698d4a --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Numeric.php @@ -0,0 +1,115 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Compares numerical values for equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Bernhard Schussek + * @author Alexander + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +class PHPUnit_Framework_Comparator_Numeric extends PHPUnit_Framework_Comparator_Scalar +{ + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + public function accepts($expected, $actual) + { + // all numerical values, but not if one of them is a double + // or both of them are strings + return is_numeric($expected) && is_numeric($actual) && + !(is_double($expected) || is_double($actual)) && + !(is_string($expected) && is_string($actual)); + } + + /** + * Asserts that two values are equal. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @param float $delta The allowed numerical distance between two values to + * consider them equal + * @param bool $canonicalize If set to true, arrays are sorted before + * comparison + * @param bool $ignoreCase If set to true, upper- and lowercasing is + * ignored when comparing string values + * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison + * fails. Contains information about the + * specific errors that lead to the failure. + */ + public function assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false) + { + if (is_infinite($actual) && is_infinite($expected)) { + return; + } + + if ((is_infinite($actual) XOR is_infinite($expected)) || + (is_nan($actual) OR is_nan($expected)) || + abs($actual - $expected) > $delta) { + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + '', + '', + false, + sprintf( + 'Failed asserting that %s matches expected %s.', + + $this->exporter->export($actual), + $this->exporter->export($expected) + ) + ); + } + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Object.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Object.php new file mode 100644 index 00000000..95b24482 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Object.php @@ -0,0 +1,150 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Compares objects for equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +class PHPUnit_Framework_Comparator_Object extends PHPUnit_Framework_Comparator_Array +{ + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + public function accepts($expected, $actual) + { + return is_object($expected) && is_object($actual); + } + + /** + * Asserts that two values are equal. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @param float $delta The allowed numerical distance between two values to + * consider them equal + * @param bool $canonicalize If set to true, arrays are sorted before + * comparison + * @param bool $ignoreCase If set to true, upper- and lowercasing is + * ignored when comparing string values + * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison + * fails. Contains information about the + * specific errors that lead to the failure. + */ + public function assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false, array &$processed = array()) + { + if (get_class($actual) !== get_class($expected)) { + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + $this->exporter->export($expected), + $this->exporter->export($actual), + false, + sprintf( + '%s is not instance of expected class "%s".', + + $this->exporter->export($actual), + get_class($expected) + ) + ); + } + + // don't compare twice to allow for cyclic dependencies + if (in_array(array($actual, $expected), $processed, true) || + in_array(array($expected, $actual), $processed, true)) { + return; + } + + $processed[] = array($actual, $expected); + + // don't compare objects if they are identical + // this helps to avoid the error "maximum function nesting level reached" + // CAUTION: this conditional clause is not tested + if ($actual !== $expected) { + try { + parent::assertEquals( + $this->toArray($expected), + $this->toArray($actual), + $delta, + $canonicalize, + $ignoreCase, + $processed + ); + } catch (PHPUnit_Framework_ComparisonFailure $e) { + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + // replace "Array" with "MyClass object" + substr_replace($e->getExpectedAsString(), get_class($expected) . ' Object', 0, 5), + substr_replace($e->getActualAsString(), get_class($actual) . ' Object', 0, 5), + false, + 'Failed asserting that two objects are equal.' + ); + } + } + } + + /** + * Converts an object to an array containing all of its private, protected + * and public properties. + * + * @param object $object + * @return array + */ + protected function toArray($object) + { + return $this->exporter->toArray($object); + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Resource.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Resource.php new file mode 100644 index 00000000..a6ee2f3d --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Resource.php @@ -0,0 +1,97 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Compares resources for equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +class PHPUnit_Framework_Comparator_Resource extends PHPUnit_Framework_Comparator +{ + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + public function accepts($expected, $actual) + { + return is_resource($expected) && is_resource($actual); + } + + /** + * Asserts that two values are equal. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @param float $delta The allowed numerical distance between two values to + * consider them equal + * @param bool $canonicalize If set to true, arrays are sorted before + * comparison + * @param bool $ignoreCase If set to true, upper- and lowercasing is + * ignored when comparing string values + * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison + * fails. Contains information about the + * specific errors that lead to the failure. + */ + public function assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false) + { + if ($actual != $expected) { + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + $this->exporter->export($expected), + $this->exporter->export($actual) + ); + } + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Scalar.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Scalar.php new file mode 100644 index 00000000..8cef1f4d --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Scalar.php @@ -0,0 +1,136 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Compares scalar or null values for equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +class PHPUnit_Framework_Comparator_Scalar extends PHPUnit_Framework_Comparator +{ + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + * @since Method available since Release 3.6.0 + */ + public function accepts($expected, $actual) + { + return ((is_scalar($expected) XOR null === $expected) && + (is_scalar($actual) XOR null === $actual)) + // allow comparison between strings and objects featuring __toString() + || (is_string($expected) && is_object($actual) && method_exists($actual, '__toString')) + || (is_object($expected) && method_exists($expected, '__toString') && is_string($actual)); + } + + /** + * Asserts that two values are equal. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @param float $delta The allowed numerical distance between two values to + * consider them equal + * @param bool $canonicalize If set to true, arrays are sorted before + * comparison + * @param bool $ignoreCase If set to true, upper- and lowercasing is + * ignored when comparing string values + * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison + * fails. Contains information about the + * specific errors that lead to the failure. + */ + public function assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false) + { + $expectedToCompare = $expected; + $actualToCompare = $actual; + + // always compare as strings to avoid strange behaviour + // otherwise 0 == 'Foobar' + if (is_string($expected) || is_string($actual)) { + $expectedToCompare = (string) $expectedToCompare; + $actualToCompare = (string) $actualToCompare; + + if ($ignoreCase) { + $expectedToCompare = strtolower($expectedToCompare); + $actualToCompare = strtolower($actualToCompare); + } + } + + if ($expectedToCompare != $actualToCompare) { + if (is_string($expected) && is_string($actual)) { + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + $this->exporter->export($expected), + $this->exporter->export($actual), + false, + 'Failed asserting that two strings are equal.' + ); + } + + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + // no diff is required + '', + '', + false, + sprintf( + 'Failed asserting that %s matches expected %s.', + + $this->exporter->export($actual), + $this->exporter->export($expected) + ) + ); + } + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/SplObjectStorage.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/SplObjectStorage.php new file mode 100644 index 00000000..b64c4b1f --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/SplObjectStorage.php @@ -0,0 +1,114 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Compares SplObjectStorage instances for equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +class PHPUnit_Framework_Comparator_SplObjectStorage extends PHPUnit_Framework_Comparator +{ + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + public function accepts($expected, $actual) + { + return $expected instanceof SplObjectStorage && $actual instanceof SplObjectStorage; + } + + /** + * Asserts that two values are equal. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @param float $delta The allowed numerical distance between two values to + * consider them equal + * @param bool $canonicalize If set to true, arrays are sorted before + * comparison + * @param bool $ignoreCase If set to true, upper- and lowercasing is + * ignored when comparing string values + * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison + * fails. Contains information about the + * specific errors that lead to the failure. + */ + public function assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false) + { + foreach ($actual as $object) { + if (!$expected->contains($object)) { + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + $this->exporter->export($expected), + $this->exporter->export($actual), + false, + 'Failed asserting that two objects are equal.' + ); + } + } + + foreach ($expected as $object) { + if (!$actual->contains($object)) { + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + $this->exporter->export($expected), + $this->exporter->export($actual), + false, + 'Failed asserting that two objects are equal.' + ); + } + } + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Type.php b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Type.php new file mode 100644 index 00000000..0652cf45 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/Comparator/Type.php @@ -0,0 +1,105 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Compares values for type equality. + * + * @package PHPUnit + * @subpackage Framework_Comparator + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +class PHPUnit_Framework_Comparator_Type extends PHPUnit_Framework_Comparator +{ + /** + * Returns whether the comparator can compare two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return boolean + */ + public function accepts($expected, $actual) + { + return true; + } + + /** + * Asserts that two values are equal. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @param float $delta The allowed numerical distance between two values to + * consider them equal + * @param bool $canonicalize If set to true, arrays are sorted before + * comparison + * @param bool $ignoreCase If set to true, upper- and lowercasing is + * ignored when comparing string values + * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison + * fails. Contains information about the + * specific errors that lead to the failure. + */ + public function assertEquals($expected, $actual, $delta = 0, $canonicalize = false, $ignoreCase = false) + { + if (gettype($expected) != gettype($actual)) { + throw new PHPUnit_Framework_ComparisonFailure( + $expected, + $actual, + // we don't need a diff + '', + '', + false, + sprintf( + '%s does not match expected type "%s".', + + $this->exporter->shortenedExport($actual), + gettype($expected) + ) + ); + } + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/ComparatorFactory.php b/tests/vendor/phpunit/phpunit/src/Framework/ComparatorFactory.php new file mode 100644 index 00000000..086a7f71 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/ComparatorFactory.php @@ -0,0 +1,157 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 + */ + +/** + * Factory for comparators which compare values for equality. + * + * @package PHPUnit + * @subpackage Framework + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 + */ +class PHPUnit_Framework_ComparatorFactory +{ + /** + * @var array + */ + protected $comparators = array(); + + /** + * @var PHPUnit_Framework_ComparatorFactory + */ + private static $defaultInstance = null; + + /** + * Constructs a new factory. + */ + public function __construct() + { + $this->register(new PHPUnit_Framework_Comparator_Type); + $this->register(new PHPUnit_Framework_Comparator_Scalar); + $this->register(new PHPUnit_Framework_Comparator_Numeric); + $this->register(new PHPUnit_Framework_Comparator_Double); + $this->register(new PHPUnit_Framework_Comparator_Array); + $this->register(new PHPUnit_Framework_Comparator_Resource); + $this->register(new PHPUnit_Framework_Comparator_Object); + $this->register(new PHPUnit_Framework_Comparator_Exception); + $this->register(new PHPUnit_Framework_Comparator_SplObjectStorage); + $this->register(new PHPUnit_Framework_Comparator_DOMNode); + $this->register(new PHPUnit_Framework_Comparator_MockObject); + $this->register(new PHPUnit_Framework_Comparator_DateTime); + } + + /** + * Returns the default instance. + * + * @return PHPUnit_Framework_ComparatorFactory + */ + public static function getDefaultInstance() + { + if (self::$defaultInstance === null) { + self::$defaultInstance = new PHPUnit_Framework_ComparatorFactory; + } + + return self::$defaultInstance; + } + + /** + * Returns the correct comparator for comparing two values. + * + * @param mixed $expected The first value to compare + * @param mixed $actual The second value to compare + * @return PHPUnit_Framework_Comparator + * @throws PHPUnit_Framework_Exception + */ + public function getComparatorFor($expected, $actual) + { + foreach ($this->comparators as $comparator) { + if ($comparator->accepts($expected, $actual)) { + return $comparator; + } + } + + throw new PHPUnit_Framework_Exception( + sprintf( + 'No comparator is registered for comparing the types "%s" and "%s"', + gettype($expected), gettype($actual) + ) + ); + } + + /** + * Registers a new comparator. + * + * This comparator will be returned by getInstance() if its accept() method + * returns true for the compared values. It has higher priority than the + * existing comparators, meaning that its accept() method will be tested + * before those of the other comparators. + * + * @param PHPUnit_Framework_Comparator $comparator The registered comparator + */ + public function register(PHPUnit_Framework_Comparator $comparator) + { + array_unshift($this->comparators, $comparator); + $comparator->setFactory($this); + } + + /** + * Unregisters a comparator. + * + * This comparator will no longer be returned by getInstance(). + * + * @param PHPUnit_Framework_Comparator $comparator The unregistered comparator + */ + public function unregister(PHPUnit_Framework_Comparator $comparator) + { + foreach ($this->comparators as $key => $_comparator) { + if ($comparator === $_comparator) { + unset($this->comparators[$key]); + } + } + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/ComparisonFailure.php b/tests/vendor/phpunit/phpunit/src/Framework/ComparisonFailure.php new file mode 100644 index 00000000..e20860df --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Framework/ComparisonFailure.php @@ -0,0 +1,172 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 + */ + +use SebastianBergmann\Diff\Differ; + +/** + * Thrown when an assertion for string equality failed. + * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 + */ +class PHPUnit_Framework_ComparisonFailure extends PHPUnit_Framework_AssertionFailedError +{ + /** + * Expected value of the retrieval which does not match $actual. + * @var mixed + */ + protected $expected; + + /** + * Actually retrieved value which does not match $expected. + * @var mixed + */ + protected $actual; + + /** + * The string representation of the expected value + * @var string + */ + protected $expectedAsString; + + /** + * The string representation of the actual value + * @var string + */ + protected $actualAsString; + + /** + * @var boolean + */ + protected $identical; + + /** + * Optional message which is placed in front of the first line + * returned by toString(). + * @var string + */ + protected $message; + + /** + * Initialises with the expected value and the actual value. + * + * @param mixed $expected Expected value retrieved. + * @param mixed $actual Actual value retrieved. + * @param string $expectedAsString + * @param string $actualAsString + * @param boolean $identical + * @param string $message A string which is prefixed on all returned lines + * in the difference output. + */ + public function __construct($expected, $actual, $expectedAsString, $actualAsString, $identical = false, $message = '') + { + $this->expected = $expected; + $this->actual = $actual; + $this->expectedAsString = $expectedAsString; + $this->actualAsString = $actualAsString; + $this->message = $message; + } + + /** + * @return mixed + */ + public function getActual() + { + return $this->actual; + } + + /** + * @return mixed + */ + public function getExpected() + { + return $this->expected; + } + + /** + * @return string + */ + public function getActualAsString() + { + return $this->actualAsString; + } + + /** + * @return string + */ + public function getExpectedAsString() + { + return $this->expectedAsString; + } + + /** + * @return string + */ + public function getDiff() + { + if (!$this->actualAsString && !$this->expectedAsString) { + return ''; + } + + $differ = new Differ("--- Expected\n+++ Actual\n"); + + return $differ->diff($this->expectedAsString, $this->actualAsString); + } + + /** + * @return string + */ + public function toString() + { + return $this->message . $this->getDiff(); + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint.php index 43f8b2b6..e74544f1 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ use SebastianBergmann\Exporter\Exporter; @@ -13,6 +49,13 @@ /** * Abstract base class for constraints. which are placed upon any value. * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ * @since Interface available since Release 3.0.0 */ abstract class PHPUnit_Framework_Constraint implements Countable, PHPUnit_Framework_SelfDescribing @@ -34,12 +77,10 @@ public function __construct() * a boolean value instead: true in case of success, false in case of a * failure. * - * @param mixed $other Value or object to evaluate. - * @param string $description Additional information about the test - * @param bool $returnResult Whether to return a result or throw an exception - * + * @param mixed $other Value or object to evaluate. + * @param string $description Additional information about the test + * @param bool $returnResult Whether to return a result or throw an exception * @return mixed - * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) @@ -65,8 +106,7 @@ public function evaluate($other, $description = '', $returnResult = false) * * This method can be overridden to implement the evaluation algorithm. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -77,8 +117,7 @@ protected function matches($other) /** * Counts the number of constraint elements. * - * @return int - * + * @return integer * @since Method available since Release 3.4.0 */ public function count() @@ -89,21 +128,19 @@ public function count() /** * Throws an exception for the given compared value and test description * - * @param mixed $other Evaluated value or object. - * @param string $description Additional information about the test - * @param SebastianBergmann\Comparator\ComparisonFailure $comparisonFailure - * + * @param mixed $other Evaluated value or object. + * @param string $description Additional information about the test + * @param PHPUnit_Framework_ComparisonFailure $comparisonFailure * @throws PHPUnit_Framework_ExpectationFailedException */ - protected function fail($other, $description, SebastianBergmann\Comparator\ComparisonFailure $comparisonFailure = null) + protected function fail($other, $description, PHPUnit_Framework_ComparisonFailure $comparisonFailure = null) { $failureDescription = sprintf( - 'Failed asserting that %s.', - $this->failureDescription($other) + 'Failed asserting that %s.', + $this->failureDescription($other) ); $additionalFailureDescription = $this->additionalFailureDescription($other); - if ($additionalFailureDescription) { $failureDescription .= "\n" . $additionalFailureDescription; } @@ -113,8 +150,8 @@ protected function fail($other, $description, SebastianBergmann\Comparator\Compa } throw new PHPUnit_Framework_ExpectationFailedException( - $failureDescription, - $comparisonFailure + $failureDescription, + $comparisonFailure ); } @@ -124,8 +161,7 @@ protected function fail($other, $description, SebastianBergmann\Comparator\Compa * The function can be overridden to provide additional failure * information like a diff * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function additionalFailureDescription($other) @@ -142,8 +178,7 @@ protected function additionalFailureDescription($other) * To provide additional failure information additionalFailureDescription * can be used. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/And.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/And.php index 6d87df94..28ecc958 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/And.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/And.php @@ -1,24 +1,67 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Logical AND. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_And extends PHPUnit_Framework_Constraint { /** * @var PHPUnit_Framework_Constraint[] */ - protected $constraints = []; + protected $constraints = array(); /** * @var PHPUnit_Framework_Constraint @@ -26,19 +69,18 @@ class PHPUnit_Framework_Constraint_And extends PHPUnit_Framework_Constraint protected $lastConstraint = null; /** - * @param PHPUnit_Framework_Constraint[] $constraints - * + * @param PHPUnit_Framework_Constraint[] $constraints * @throws PHPUnit_Framework_Exception */ public function setConstraints(array $constraints) { - $this->constraints = []; + $this->constraints = array(); foreach ($constraints as $constraint) { if (!($constraint instanceof PHPUnit_Framework_Constraint)) { throw new PHPUnit_Framework_Exception( - 'All parameters to ' . __CLASS__ . - ' must be a constraint object.' + 'All parameters to ' . __CLASS__ . + ' must be a constraint object.' ); } @@ -56,17 +98,15 @@ public function setConstraints(array $constraints) * a boolean value instead: true in case of success, false in case of a * failure. * - * @param mixed $other Value or object to evaluate. - * @param string $description Additional information about the test - * @param bool $returnResult Whether to return a result or throw an exception - * + * @param mixed $other Value or object to evaluate. + * @param string $description Additional information about the test + * @param bool $returnResult Whether to return a result or throw an exception * @return mixed - * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { - $success = true; + $success = true; $constraint = null; foreach ($this->constraints as $constraint) { @@ -108,8 +148,7 @@ public function toString() /** * Counts the number of constraint elements. * - * @return int - * + * @return integer * @since Method available since Release 3.4.0 */ public function count() diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php index f208b709..56b5b3b3 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** @@ -16,17 +52,24 @@ * * The array key is passed in the constructor. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_ArrayHasKey extends PHPUnit_Framework_Constraint { /** - * @var int|string + * @var integer|string */ protected $key; /** - * @param int|string $key + * @param integer|string $key */ public function __construct($key) { @@ -38,8 +81,7 @@ public function __construct($key) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -71,8 +113,7 @@ public function toString() * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php deleted file mode 100644 index c3cb0950..00000000 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php +++ /dev/null @@ -1,85 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Constraint that asserts that the array it is evaluated for has a specified subset. - * - * Uses array_replace_recursive() to check if a key value subset is part of the - * subject array. - * - * @since Class available since Release 4.4.0 - */ -class PHPUnit_Framework_Constraint_ArraySubset extends PHPUnit_Framework_Constraint -{ - /** - * @var array|ArrayAccess - */ - protected $subset; - - /** - * @var bool - */ - protected $strict; - - /** - * @param array|ArrayAccess $subset - * @param bool $strict Check for object identity - */ - public function __construct($subset, $strict = false) - { - parent::__construct(); - $this->strict = $strict; - $this->subset = $subset; - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * @param array|ArrayAccess $other Array or ArrayAccess object to evaluate. - * - * @return bool - */ - protected function matches($other) - { - $patched = array_replace_recursive($other, $this->subset); - - if ($this->strict) { - return $other === $patched; - } else { - return $other == $patched; - } - } - - /** - * Returns a string representation of the constraint. - * - * @return string - */ - public function toString() - { - return 'has the subset ' . $this->exporter->export($this->subset); - } - - /** - * Returns the description of the failure - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @param mixed $other Evaluated value or object. - * - * @return string - */ - protected function failureDescription($other) - { - return 'an array ' . $this->toString(); - } -} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php index 5a0c458e..822ed188 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php @@ -1,16 +1,62 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.1.0 */ /** - * @since Class available since Release 3.1.0 + * + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.1.0 */ + class PHPUnit_Framework_Constraint_Attribute extends PHPUnit_Framework_Constraint_Composite { /** @@ -39,23 +85,20 @@ public function __construct(PHPUnit_Framework_Constraint $constraint, $attribute * a boolean value instead: true in case of success, false in case of a * failure. * - * @param mixed $other Value or object to evaluate. - * @param string $description Additional information about the test - * @param bool $returnResult Whether to return a result or throw an exception - * + * @param mixed $other Value or object to evaluate. + * @param string $description Additional information about the test + * @param bool $returnResult Whether to return a result or throw an exception * @return mixed - * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { return parent::evaluate( - PHPUnit_Framework_Assert::readAttribute( - $other, - $this->attributeName - ), - $description, - $returnResult + PHPUnit_Framework_Assert::readAttribute( + $other, $this->attributeName + ), + $description, + $returnResult ); } @@ -76,8 +119,7 @@ public function toString() * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php index df60d68e..e0f49760 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php @@ -1,31 +1,71 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ */ /** * Constraint that evaluates against a specified closure. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Timon Rapp + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ */ class PHPUnit_Framework_Constraint_Callback extends PHPUnit_Framework_Constraint { private $callback; /** - * @param callable $callback - * + * @param callable $callback * @throws PHPUnit_Framework_Exception */ public function __construct($callback) { if (!is_callable($callback)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 1, - 'callable' + 1, 'callable' ); } @@ -38,8 +78,7 @@ public function __construct($callback) * Evaluates the constraint for parameter $value. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -56,4 +95,22 @@ public function toString() { return 'is accepted by specified callback'; } + + private function callbackToString($callback) + { + if (!is_array($callback)) { + return $callback; + } + if (empty($callback)) { + return "empty array"; + } + if (!isset($callback[0]) || !isset($callback[1])) { + return "array without indexes 0 and 1 set"; + } + if (is_object($callback[0])) { + $callback[0] = get_class($callback[0]); + } + + return $callback[0] . '::' . $callback[1]; + } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php index 97315c96..5f387f56 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.1.0 */ /** @@ -14,7 +50,14 @@ * * The attribute name is passed in the constructor. * - * @since Class available since Release 3.1.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.1.0 */ class PHPUnit_Framework_Constraint_ClassHasAttribute extends PHPUnit_Framework_Constraint { @@ -36,8 +79,7 @@ public function __construct($attributeName) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -55,8 +97,9 @@ protected function matches($other) public function toString() { return sprintf( - 'has attribute "%s"', - $this->attributeName + 'has attribute "%s"', + + $this->attributeName ); } @@ -66,17 +109,17 @@ public function toString() * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) { return sprintf( - '%sclass "%s" %s', - is_object($other) ? 'object of ' : '', - is_object($other) ? get_class($other) : $other, - $this->toString() + '%sclass "%s" %s', + + is_object($other) ? 'object of ' : '', + is_object($other) ? get_class($other) : $other, + $this->toString() ); } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php index 7bc29f17..5aa0f894 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.1.0 */ /** @@ -14,7 +50,14 @@ * * The attribute name is passed in the constructor. * - * @since Class available since Release 3.1.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.1.0 */ class PHPUnit_Framework_Constraint_ClassHasStaticAttribute extends PHPUnit_Framework_Constraint_ClassHasAttribute { @@ -22,8 +65,7 @@ class PHPUnit_Framework_Constraint_ClassHasStaticAttribute extends PHPUnit_Frame * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -43,14 +85,14 @@ protected function matches($other) * Returns a string representation of the constraint. * * @return string - * * @since Method available since Release 3.3.0 */ public function toString() { return sprintf( - 'has static attribute "%s"', - $this->attributeName + 'has static attribute "%s"', + + $this->attributeName ); } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php index 680b832a..d0aaa37a 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php @@ -1,16 +1,60 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 */ /** - * @since Class available since Release 3.1.0 + * + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 */ + abstract class PHPUnit_Framework_Constraint_Composite extends PHPUnit_Framework_Constraint { /** @@ -20,6 +64,7 @@ abstract class PHPUnit_Framework_Constraint_Composite extends PHPUnit_Framework_ /** * @param PHPUnit_Framework_Constraint $innerConstraint + * @param string $attributeName */ public function __construct(PHPUnit_Framework_Constraint $innerConstraint) { @@ -37,21 +82,19 @@ public function __construct(PHPUnit_Framework_Constraint $innerConstraint) * a boolean value instead: true in case of success, false in case of a * failure. * - * @param mixed $other Value or object to evaluate. - * @param string $description Additional information about the test - * @param bool $returnResult Whether to return a result or throw an exception - * + * @param mixed $other Value or object to evaluate. + * @param string $description Additional information about the test + * @param bool $returnResult Whether to return a result or throw an exception * @return mixed - * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { try { return $this->innerConstraint->evaluate( - $other, - $description, - $returnResult + $other, + $description, + $returnResult ); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->fail($other, $description); @@ -61,7 +104,7 @@ public function evaluate($other, $description = '', $returnResult = false) /** * Counts the number of constraint elements. * - * @return int + * @return integer */ public function count() { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php index ee370ea5..943c3cb7 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php @@ -1,25 +1,70 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 */ /** - * @since Class available since Release 3.6.0 + * + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 */ class PHPUnit_Framework_Constraint_Count extends PHPUnit_Framework_Constraint { /** - * @var int + * @var integer */ protected $expectedCount = 0; /** - * @param int $expected + * @param integer $expected */ public function __construct($expected) { @@ -31,9 +76,8 @@ public function __construct($expected) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other - * - * @return bool + * @param mixed $other + * @return boolean */ protected function matches($other) { @@ -41,29 +85,30 @@ protected function matches($other) } /** - * @param mixed $other - * - * @return bool + * @param mixed $other + * @return boolean */ protected function getCountOf($other) { if ($other instanceof Countable || is_array($other)) { return count($other); - } elseif ($other instanceof Traversable) { + } + + else if ($other instanceof Traversable) { if ($other instanceof IteratorAggregate) { $iterator = $other->getIterator(); } else { $iterator = $other; } - $key = $iterator->key(); + $key = $iterator->key(); $count = iterator_count($iterator); // manually rewind $iterator to previous key, since iterator_count // moves pointer if ($key !== null) { $iterator->rewind(); - while ($iterator->valid() && $key !== $iterator->key()) { + while ($key !== $iterator->key()) { $iterator->next(); } } @@ -78,16 +123,16 @@ protected function getCountOf($other) * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) { return sprintf( - 'actual size %d matches expected size %d', - $this->getCountOf($other), - $this->expectedCount + 'actual size %d matches expected size %d', + + $this->getCountOf($other), + $this->expectedCount ); } @@ -96,9 +141,6 @@ protected function failureDescription($other) */ public function toString() { - return sprintf( - 'count matches %d', - $this->expectedCount - ); + return 'count matches '; } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php index c05f1725..dc6efdef 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php @@ -1,15 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.6 */ /** - * @since Class available since Release 3.6.6 + * + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.6 */ class PHPUnit_Framework_Constraint_Exception extends PHPUnit_Framework_Constraint { @@ -31,8 +74,7 @@ public function __construct($className) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -46,8 +88,7 @@ protected function matches($other) * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) @@ -60,16 +101,18 @@ protected function failureDescription($other) } return sprintf( - 'exception of type "%s" matches expected exception "%s"%s', - get_class($other), - $this->className, - $message + 'exception of type "%s" matches expected exception "%s"%s', + + get_class($other), + $this->className, + $message ); } return sprintf( - 'exception of type "%s" is thrown', - $this->className + 'exception of type "%s" is thrown', + + $this->className ); } @@ -81,8 +124,9 @@ protected function failureDescription($other) public function toString() { return sprintf( - 'exception of type "%s"', - $this->className + 'exception of type "%s"', + + $this->className ); } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php index 8f402fca..8a4e7cc0 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php @@ -1,25 +1,68 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.6 */ /** - * @since Class available since Release 3.6.6 + * + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.6 */ class PHPUnit_Framework_Constraint_ExceptionCode extends PHPUnit_Framework_Constraint { /** - * @var int + * @var integer */ protected $expectedCode; /** - * @param int $expected + * @param integer $expected */ public function __construct($expected) { @@ -31,9 +74,8 @@ public function __construct($expected) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param Exception $other - * - * @return bool + * @param Exception $other + * @return boolean */ protected function matches($other) { @@ -46,16 +88,15 @@ protected function matches($other) * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) { return sprintf( - '%s is equal to expected exception code %s', - $this->exporter->export($other->getCode()), - $this->exporter->export($this->expectedCode) + '%s is equal to expected exception code %s', + $this->exporter->export($other->getCode()), + $this->exporter->export($this->expectedCode) ); } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php index c9632e9b..407a5f60 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php @@ -1,20 +1,63 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.6 */ /** - * @since Class available since Release 3.6.6 + * + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.6 */ class PHPUnit_Framework_Constraint_ExceptionMessage extends PHPUnit_Framework_Constraint { /** - * @var int + * @var integer */ protected $expectedMessage; @@ -31,9 +74,8 @@ public function __construct($expected) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param Exception $other - * - * @return bool + * @param Exception $other + * @return boolean */ protected function matches($other) { @@ -46,16 +88,15 @@ protected function matches($other) * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) { return sprintf( - "exception message '%s' contains '%s'", - $other->getMessage(), - $this->expectedMessage + "exception message '%s' contains '%s'", + $other->getMessage(), + $this->expectedMessage ); } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php deleted file mode 100644 index 7f2283ac..00000000 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * @since Class available since Release 4.3.0 - */ -class PHPUnit_Framework_Constraint_ExceptionMessageRegExp extends PHPUnit_Framework_Constraint -{ - /** - * @var int - */ - protected $expectedMessageRegExp; - - /** - * @param string $expected - */ - public function __construct($expected) - { - parent::__construct(); - $this->expectedMessageRegExp = $expected; - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * @param Exception $other - * - * @return bool - */ - protected function matches($other) - { - $match = PHPUnit_Util_Regex::pregMatchSafe($this->expectedMessageRegExp, $other->getMessage()); - - if (false === $match) { - throw new PHPUnit_Framework_Exception( - "Invalid expected exception message regex given: '{$this->expectedMessageRegExp}'" - ); - } - - return 1 === $match; - } - - /** - * Returns the description of the failure - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @param mixed $other Evaluated value or object. - * - * @return string - */ - protected function failureDescription($other) - { - return sprintf( - "exception message '%s' matches '%s'", - $other->getMessage(), - $this->expectedMessageRegExp - ); - } - - /** - * @return string - */ - public function toString() - { - return 'exception message matches '; - } -} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php index 25643bd2..4e43e13d 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** @@ -13,7 +49,14 @@ * * The file path to check is passed as $other in evaluate(). * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_FileExists extends PHPUnit_Framework_Constraint { @@ -21,8 +64,7 @@ class PHPUnit_Framework_Constraint_FileExists extends PHPUnit_Framework_Constrai * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -36,15 +78,15 @@ protected function matches($other) * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) { return sprintf( - 'file "%s" exists', - $other + 'file "%s" exists', + + $other ); } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php index b67eae41..628bf0b3 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php @@ -1,18 +1,61 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Constraint that asserts that the value it is evaluated for is greater * than a given value. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_GreaterThan extends PHPUnit_Framework_Constraint { @@ -34,8 +77,7 @@ public function __construct($value) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php index bfaa201d..c7a65e64 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php @@ -1,17 +1,60 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Constraint that accepts any input value. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_IsAnything extends PHPUnit_Framework_Constraint { @@ -25,12 +68,10 @@ class PHPUnit_Framework_Constraint_IsAnything extends PHPUnit_Framework_Constrai * a boolean value instead: true in case of success, false in case of a * failure. * - * @param mixed $other Value or object to evaluate. - * @param string $description Additional information about the test - * @param bool $returnResult Whether to return a result or throw an exception - * + * @param mixed $other Value or object to evaluate. + * @param string $description Additional information about the test + * @param bool $returnResult Whether to return a result or throw an exception * @return mixed - * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) @@ -51,8 +92,7 @@ public function toString() /** * Counts the number of constraint elements. * - * @return int - * + * @return integer * @since Method available since Release 3.5.0 */ public function count() diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php index e4906691..cbd9b860 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php @@ -1,17 +1,60 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.5.0 */ /** * Constraint that checks whether a variable is empty(). * - * @since Class available since Release 3.5.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.5.0 */ class PHPUnit_Framework_Constraint_IsEmpty extends PHPUnit_Framework_Constraint { @@ -19,8 +62,7 @@ class PHPUnit_Framework_Constraint_IsEmpty extends PHPUnit_Framework_Constraint * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -48,8 +90,7 @@ public function toString() * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) @@ -57,10 +98,11 @@ protected function failureDescription($other) $type = gettype($other); return sprintf( - '%s %s %s', - $type[0] == 'a' || $type[0] == 'o' ? 'an' : 'a', - $type, - $this->toString() + '%s %s %s', + + $type[0] == 'a' || $type[0] == 'o' ? 'an' : 'a', + $type, + $this->toString() ); } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php index da5348d2..f941506d 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php @@ -1,11 +1,48 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Kore Nordmann + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** @@ -17,7 +54,15 @@ * * The expected value is passed in the constructor. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Kore Nordmann + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_IsEqual extends PHPUnit_Framework_Constraint { @@ -29,38 +74,37 @@ class PHPUnit_Framework_Constraint_IsEqual extends PHPUnit_Framework_Constraint /** * @var float */ - protected $delta = 0.0; + protected $delta = 0; /** - * @var int + * @var integer */ protected $maxDepth = 10; /** - * @var bool + * @var boolean */ protected $canonicalize = false; /** - * @var bool + * @var boolean */ protected $ignoreCase = false; /** - * @var SebastianBergmann\Comparator\ComparisonFailure + * @var PHPUnit_Framework_ComparisonFailure */ protected $lastFailure; /** - * @param mixed $value - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase - * + * @param mixed $value + * @param float $delta + * @param integer $maxDepth + * @param boolean $canonicalize + * @param boolean $ignoreCase * @throws PHPUnit_Framework_Exception */ - public function __construct($value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) + public function __construct($value, $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { parent::__construct(); @@ -97,46 +141,36 @@ public function __construct($value, $delta = 0.0, $maxDepth = 10, $canonicalize * a boolean value instead: true in case of success, false in case of a * failure. * - * @param mixed $other Value or object to evaluate. - * @param string $description Additional information about the test - * @param bool $returnResult Whether to return a result or throw an exception - * + * @param mixed $other Value or object to evaluate. + * @param string $description Additional information about the test + * @param bool $returnResult Whether to return a result or throw an exception * @return mixed - * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { - // If $this->value and $other are identical, they are also equal. - // This is the most common path and will allow us to skip - // initialization of all the comparators. - if ($this->value === $other) { - return true; - } - - $comparatorFactory = SebastianBergmann\Comparator\Factory::getInstance(); + $comparatorFactory = PHPUnit_Framework_ComparatorFactory::getDefaultInstance(); try { $comparator = $comparatorFactory->getComparatorFor( - $this->value, - $other + $other, $this->value ); $comparator->assertEquals( - $this->value, - $other, - $this->delta, - $this->canonicalize, - $this->ignoreCase + $this->value, + $other, + $this->delta, + $this->canonicalize, + $this->ignoreCase ); - } catch (SebastianBergmann\Comparator\ComparisonFailure $f) { + } catch (PHPUnit_Framework_ComparisonFailure $f) { if ($returnResult) { return false; } throw new PHPUnit_Framework_ExpectationFailedException( - trim($description . "\n" . $f->getMessage()), - $f + trim($description . "\n" . $f->getMessage()), + $f ); } @@ -157,22 +191,25 @@ public function toString() return 'is equal to '; } else { return sprintf( - 'is equal to ', - $this->value + 'is equal to ', + + $this->value ); } } else { if ($this->delta != 0) { $delta = sprintf( - ' with delta <%F>', - $this->delta + ' with delta <%F>', + + $this->delta ); } return sprintf( - 'is equal to %s%s', - $this->exporter->export($this->value), - $delta + 'is equal to %s%s', + + $this->exporter->export($this->value), + $delta ); } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php index d476b097..bd76c452 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php @@ -1,17 +1,60 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.3.0 */ /** * Constraint that accepts false. * - * @since Class available since Release 3.3.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.3.0 */ class PHPUnit_Framework_Constraint_IsFalse extends PHPUnit_Framework_Constraint { @@ -19,8 +62,7 @@ class PHPUnit_Framework_Constraint_IsFalse extends PHPUnit_Framework_Constraint * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsFinite.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsFinite.php deleted file mode 100644 index 4d861330..00000000 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsFinite.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Constraint that accepts finite. - * - * @since Class available since Release 4.8.0 - */ -class PHPUnit_Framework_Constraint_IsFinite extends PHPUnit_Framework_Constraint -{ - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * @param mixed $other Value or object to evaluate. - * - * @return bool - */ - protected function matches($other) - { - return is_finite($other); - } - - /** - * Returns a string representation of the constraint. - * - * @return string - */ - public function toString() - { - return 'is finite'; - } -} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php index 9d8b5a15..49542901 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** @@ -19,7 +55,14 @@ * * The expected value is passed in the constructor. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_IsIdentical extends PHPUnit_Framework_Constraint { @@ -52,12 +95,10 @@ public function __construct($value) * a boolean value instead: true in case of success, false in case of a * failure. * - * @param mixed $other Value or object to evaluate. - * @param string $description Additional information about the test - * @param bool $returnResult Whether to return a result or throw an exception - * + * @param mixed $other Value or object to evaluate. + * @param string $description Additional information about the test + * @param bool $returnResult Whether to return a result or throw an exception * @return mixed - * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) @@ -79,11 +120,11 @@ public function evaluate($other, $description = '', $returnResult = false) // if both values are strings, make sure a diff is generated if (is_string($this->value) && is_string($other)) { - $f = new SebastianBergmann\Comparator\ComparisonFailure( - $this->value, - $other, - $this->value, - $other + $f = new PHPUnit_Framework_ComparisonFailure( + $this->value, + $other, + $this->value, + $other ); } @@ -97,8 +138,7 @@ public function evaluate($other, $description = '', $returnResult = false) * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php deleted file mode 100644 index 6ee2646a..00000000 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Constraint that accepts infinite. - * - * @since Class available since Release 4.8.0 - */ -class PHPUnit_Framework_Constraint_IsInfinite extends PHPUnit_Framework_Constraint -{ - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * @param mixed $other Value or object to evaluate. - * - * @return bool - */ - protected function matches($other) - { - return is_infinite($other); - } - - /** - * Returns a string representation of the constraint. - * - * @return string - */ - public function toString() - { - return 'is infinite'; - } -} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php index 69a7a786..d288338c 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** @@ -14,7 +50,14 @@ * * The expected class name is passed in the constructor. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_IsInstanceOf extends PHPUnit_Framework_Constraint { @@ -36,8 +79,7 @@ public function __construct($className) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -51,17 +93,16 @@ protected function matches($other) * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) { return sprintf( - '%s is an instance of %s "%s"', - $this->exporter->shortenedExport($other), - $this->getType(), - $this->className + '%s is an instance of %s "%s"', + $this->exporter->shortenedExport($other), + $this->getType(), + $this->className ); } @@ -73,9 +114,9 @@ protected function failureDescription($other) public function toString() { return sprintf( - 'is instance of %s "%s"', - $this->getType(), - $this->className + 'is instance of %s "%s"', + $this->getType(), + $this->className ); } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php index db85f1db..f5f25ed3 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.7.20 */ /** * Constraint that asserts that a string is valid JSON. * - * @since Class available since Release 3.7.20 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.7.20 */ class PHPUnit_Framework_Constraint_IsJson extends PHPUnit_Framework_Constraint { @@ -19,16 +60,11 @@ class PHPUnit_Framework_Constraint_IsJson extends PHPUnit_Framework_Constraint * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) { - if ($other === '') { - return false; - } - json_decode($other); if (json_last_error()) { return false; @@ -43,25 +79,21 @@ protected function matches($other) * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) { - if ($other === '') { - return 'an empty string is valid JSON'; - } - json_decode($other); $error = PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider::determineJsonError( - json_last_error() + json_last_error() ); return sprintf( - '%s is valid JSON (%s)', - $this->exporter->shortenedExport($other), - $error + '%s is valid JSON (%s)', + + $this->exporter->shortenedExport($other), + $error ); } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsNan.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsNan.php deleted file mode 100644 index 07194431..00000000 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsNan.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Constraint that accepts nan. - * - * @since Class available since Release 4.8.0 - */ -class PHPUnit_Framework_Constraint_IsNan extends PHPUnit_Framework_Constraint -{ - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * @param mixed $other Value or object to evaluate. - * - * @return bool - */ - protected function matches($other) - { - return is_nan($other); - } - - /** - * Returns a string representation of the constraint. - * - * @return string - */ - public function toString() - { - return 'is nan'; - } -} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php index d3b23a6e..06654f74 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php @@ -1,17 +1,60 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.3.0 */ /** * Constraint that accepts null. * - * @since Class available since Release 3.3.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.3.0 */ class PHPUnit_Framework_Constraint_IsNull extends PHPUnit_Framework_Constraint { @@ -19,8 +62,7 @@ class PHPUnit_Framework_Constraint_IsNull extends PHPUnit_Framework_Constraint * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php index 6acddbbb..c00e60e9 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php @@ -1,17 +1,60 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.3.0 */ /** * Constraint that accepts true. * - * @since Class available since Release 3.3.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.3.0 */ class PHPUnit_Framework_Constraint_IsTrue extends PHPUnit_Framework_Constraint { @@ -19,8 +62,7 @@ class PHPUnit_Framework_Constraint_IsTrue extends PHPUnit_Framework_Constraint * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php index 974328e3..3f6f4d0b 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** @@ -14,7 +50,14 @@ * * The expected value is passed in the constructor. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_IsType extends PHPUnit_Framework_Constraint { @@ -22,7 +65,7 @@ class PHPUnit_Framework_Constraint_IsType extends PHPUnit_Framework_Constraint const TYPE_BOOL = 'bool'; const TYPE_FLOAT = 'float'; const TYPE_INT = 'int'; - const TYPE_NULL = 'null'; + const TYPE_null = 'null'; const TYPE_NUMERIC = 'numeric'; const TYPE_OBJECT = 'object'; const TYPE_RESOURCE = 'resource'; @@ -33,23 +76,21 @@ class PHPUnit_Framework_Constraint_IsType extends PHPUnit_Framework_Constraint /** * @var array */ - protected $types = [ - 'array' => true, - 'boolean' => true, - 'bool' => true, - 'double' => true, - 'float' => true, - 'integer' => true, - 'int' => true, - 'null' => true, - 'numeric' => true, - 'object' => true, - 'real' => true, - 'resource' => true, - 'string' => true, - 'scalar' => true, - 'callable' => true - ]; + protected $types = array( + 'array' => true, + 'boolean' => true, + 'bool' => true, + 'float' => true, + 'integer' => true, + 'int' => true, + 'null' => true, + 'numeric' => true, + 'object' => true, + 'resource' => true, + 'string' => true, + 'scalar' => true, + 'callable' => true + ); /** * @var string @@ -57,8 +98,7 @@ class PHPUnit_Framework_Constraint_IsType extends PHPUnit_Framework_Constraint protected $type; /** - * @param string $type - * + * @param string $type * @throws PHPUnit_Framework_Exception */ public function __construct($type) @@ -67,11 +107,11 @@ public function __construct($type) if (!isset($this->types[$type])) { throw new PHPUnit_Framework_Exception( - sprintf( - 'Type specified for PHPUnit_Framework_Constraint_IsType <%s> ' . - 'is not a valid type.', - $type - ) + sprintf( + 'Type specified for PHPUnit_Framework_Constraint_IsType <%s> ' . + 'is not a valid type.', + $type + ) ); } @@ -82,49 +122,57 @@ public function __construct($type) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) { switch ($this->type) { - case 'numeric': + case 'numeric': { return is_numeric($other); + } case 'integer': - case 'int': + case 'int': { return is_integer($other); + } - case 'double': - case 'float': - case 'real': + case 'float': { return is_float($other); + } - case 'string': + case 'string': { return is_string($other); + } case 'boolean': - case 'bool': + case 'bool': { return is_bool($other); + } - case 'null': + case 'null': { return is_null($other); + } - case 'array': + case 'array': { return is_array($other); + } - case 'object': + case 'object': { return is_object($other); + } - case 'resource': - return is_resource($other) || is_string(@get_resource_type($other)); + case 'resource': { + return is_resource($other); + } - case 'scalar': + case 'scalar': { return is_scalar($other); + } - case 'callable': + case 'callable': { return is_callable($other); + } } } @@ -136,8 +184,9 @@ protected function matches($other) public function toString() { return sprintf( - 'is of type "%s"', - $this->type + 'is of type "%s"', + + $this->type ); } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php index 700abe38..d9e7eedc 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Bastian Feder + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause + * @link http://www.phpunit.de/ + * @since File available since Release 3.7.0 */ /** * Asserts whether or not two JSON objects are equal. * - * @since Class available since Release 3.7.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Bastian Feder + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause + * @link http://www.phpunit.de/ + * @since Class available since Release 3.7.0 */ class PHPUnit_Framework_Constraint_JsonMatches extends PHPUnit_Framework_Constraint { @@ -37,8 +78,7 @@ public function __construct($value) * * This method can be overridden to implement the evaluation algorithm. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php index 0d062774..8606fc6f 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php @@ -1,26 +1,65 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Bastian Feder + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause + * @link http://www.phpunit.de/ + * @since File available since Release 3.7.0 */ /** * Provides human readable messages for each JSON error. * - * @since Class available since Release 3.7.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Bastian Feder + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause + * @link http://www.phpunit.de/ + * @since Class available since Release 3.7.0 */ class PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider { /** * Translates JSON error to a human readable string. * - * @param string $error - * @param string $prefix - * + * @param string $error * @return string */ public static function determineJsonError($error, $prefix = '') @@ -46,8 +85,7 @@ public static function determineJsonError($error, $prefix = '') /** * Translates a given type to a human readable message prefix. * - * @param string $type - * + * @param string $type * @return string */ public static function translateTypeToPrefix($type) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php index 0160ec35..a47a91ce 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php @@ -1,18 +1,61 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Constraint that asserts that the value it is evaluated for is less than * a given value. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_LessThan extends PHPUnit_Framework_Constraint { @@ -34,8 +77,7 @@ public function __construct($value) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Not.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Not.php index 953292fc..d34ca786 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Not.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Not.php @@ -1,18 +1,62 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Logical NOT. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ + class PHPUnit_Framework_Constraint_Not extends PHPUnit_Framework_Constraint { /** @@ -35,14 +79,13 @@ public function __construct($constraint) } /** - * @param string $string - * + * @param string $string * @return string */ public static function negate($string) { return str_replace( - [ + array( 'contains ', 'exists', 'has ', @@ -53,8 +96,8 @@ public static function negate($string) 'ends with ', 'reference ', 'not not ' - ], - [ + ), + array( 'does not contain ', 'does not exist', 'does not have ', @@ -65,8 +108,8 @@ public static function negate($string) 'ends not with ', 'don\'t reference ', 'not ' - ], - $string + ), + $string ); } @@ -80,12 +123,10 @@ public static function negate($string) * a boolean value instead: true in case of success, false in case of a * failure. * - * @param mixed $other Value or object to evaluate. - * @param string $description Additional information about the test - * @param bool $returnResult Whether to return a result or throw an exception - * + * @param mixed $other Value or object to evaluate. + * @param string $description Additional information about the test + * @param bool $returnResult Whether to return a result or throw an exception * @return mixed - * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) @@ -107,8 +148,7 @@ public function evaluate($other, $description = '', $returnResult = false) * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) @@ -116,13 +156,16 @@ protected function failureDescription($other) switch (get_class($this->constraint)) { case 'PHPUnit_Framework_Constraint_And': case 'PHPUnit_Framework_Constraint_Not': - case 'PHPUnit_Framework_Constraint_Or': + case 'PHPUnit_Framework_Constraint_Or': { return 'not( ' . $this->constraint->failureDescription($other) . ' )'; + } + break; - default: + default: { return self::negate( - $this->constraint->failureDescription($other) + $this->constraint->failureDescription($other) ); + } } } @@ -136,21 +179,23 @@ public function toString() switch (get_class($this->constraint)) { case 'PHPUnit_Framework_Constraint_And': case 'PHPUnit_Framework_Constraint_Not': - case 'PHPUnit_Framework_Constraint_Or': + case 'PHPUnit_Framework_Constraint_Or': { return 'not( ' . $this->constraint->toString() . ' )'; + } + break; - default: + default: { return self::negate( - $this->constraint->toString() + $this->constraint->toString() ); + } } } /** * Counts the number of constraint elements. * - * @return int - * + * @return integer * @since Method available since Release 3.4.0 */ public function count() diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php index 700fbf48..46fab024 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** @@ -14,7 +50,14 @@ * * The attribute name is passed in the constructor. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_ObjectHasAttribute extends PHPUnit_Framework_Constraint_ClassHasAttribute { @@ -22,8 +65,7 @@ class PHPUnit_Framework_Constraint_ObjectHasAttribute extends PHPUnit_Framework_ * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Or.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Or.php index 5c818876..9d879223 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Or.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Or.php @@ -1,36 +1,79 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Logical OR. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_Or extends PHPUnit_Framework_Constraint { /** * @var PHPUnit_Framework_Constraint[] */ - protected $constraints = []; + protected $constraints = array(); /** * @param PHPUnit_Framework_Constraint[] $constraints */ public function setConstraints(array $constraints) { - $this->constraints = []; + $this->constraints = array(); foreach ($constraints as $constraint) { if (!($constraint instanceof PHPUnit_Framework_Constraint)) { $constraint = new PHPUnit_Framework_Constraint_IsEqual( - $constraint + $constraint ); } @@ -48,17 +91,15 @@ public function setConstraints(array $constraints) * a boolean value instead: true in case of success, false in case of a * failure. * - * @param mixed $other Value or object to evaluate. - * @param string $description Additional information about the test - * @param bool $returnResult Whether to return a result or throw an exception - * + * @param mixed $other Value or object to evaluate. + * @param string $description Additional information about the test + * @param bool $returnResult Whether to return a result or throw an exception * @return mixed - * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { - $success = false; + $success = false; $constraint = null; foreach ($this->constraints as $constraint) { @@ -100,8 +141,7 @@ public function toString() /** * Counts the number of constraint elements. * - * @return int - * + * @return integer * @since Method available since Release 3.4.0 */ public function count() diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php index fe1acc25..ee778712 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** @@ -17,7 +53,14 @@ * * The pattern string passed in the constructor. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_PCREMatch extends PHPUnit_Framework_Constraint { @@ -39,8 +82,7 @@ public function __construct($pattern) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -56,8 +98,9 @@ protected function matches($other) public function toString() { return sprintf( - 'matches PCRE pattern "%s"', - $this->pattern + 'matches PCRE pattern "%s"', + + $this->pattern ); } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php index e372c1a3..f0a478ae 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php @@ -1,25 +1,70 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 */ /** - * @since Class available since Release 3.6.0 + * + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 */ class PHPUnit_Framework_Constraint_SameSize extends PHPUnit_Framework_Constraint_Count { /** - * @var int + * @var integer */ protected $expectedCount; /** - * @param int $expected + * @param integer $expected */ public function __construct($expected) { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php index ee02bf4e..bf628a16 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** @@ -17,7 +53,14 @@ * * The sub-string is passed in the constructor. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_StringContains extends PHPUnit_Framework_Constraint { @@ -27,13 +70,13 @@ class PHPUnit_Framework_Constraint_StringContains extends PHPUnit_Framework_Cons protected $string; /** - * @var bool + * @var boolean */ protected $ignoreCase; /** - * @param string $string - * @param bool $ignoreCase + * @param string $string + * @param boolean $ignoreCase */ public function __construct($string, $ignoreCase = false) { @@ -47,8 +90,7 @@ public function __construct($string, $ignoreCase = false) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -74,8 +116,9 @@ public function toString() } return sprintf( - 'contains "%s"', - $string + 'contains "%s"', + + $string ); } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php index ebeb9217..5a77f8ac 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php @@ -1,18 +1,61 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.4.0 */ /** * Constraint that asserts that the string it is evaluated for ends with a given * suffix. * - * @since Class available since Release 3.4.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.4.0 */ class PHPUnit_Framework_Constraint_StringEndsWith extends PHPUnit_Framework_Constraint { @@ -34,8 +77,7 @@ public function __construct($suffix) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringMatches.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringMatches.php index 53fb9770..234cd36d 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringMatches.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringMatches.php @@ -1,11 +1,47 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.5.0 */ use SebastianBergmann\Diff\Differ; @@ -13,7 +49,14 @@ /** * ... * - * @since Class available since Release 3.5.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.5.0 */ class PHPUnit_Framework_Constraint_StringMatches extends PHPUnit_Framework_Constraint_PCREMatch { @@ -38,7 +81,7 @@ public function __construct($string) protected function failureDescription($other) { - return 'format description matches text'; + return "format description matches text"; } protected function additionalFailureDescription($other) @@ -56,8 +99,8 @@ protected function additionalFailureDescription($other) } } - $this->string = implode("\n", $from); - $other = implode("\n", $to); + $this->string = join("\n", $from); + $other = join("\n", $to); $differ = new Differ("--- Expected\n+++ Actual\n"); @@ -67,7 +110,7 @@ protected function additionalFailureDescription($other) protected function createPatternFromFormat($string) { $string = str_replace( - [ + array( '%e', '%s', '%S', @@ -79,8 +122,8 @@ protected function createPatternFromFormat($string) '%x', '%f', '%c' - ], - [ + ), + array( '\\' . DIRECTORY_SEPARATOR, '[^\r\n]+', '[^\r\n]*', @@ -92,10 +135,11 @@ protected function createPatternFromFormat($string) '[0-9a-fA-F]+', '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?', '.' - ], - preg_quote($string, '/') + ), + preg_quote($string, '/') ); return '/^' . $string . '$/s'; } + } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php index 9aee0116..20276c48 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php @@ -1,18 +1,61 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.4.0 */ /** * Constraint that asserts that the string it is evaluated for begins with a * given prefix. * - * @since Class available since Release 3.4.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.4.0 */ class PHPUnit_Framework_Constraint_StringStartsWith extends PHPUnit_Framework_Constraint { @@ -34,8 +77,7 @@ public function __construct($prefix) * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php index c7072f30..cb74e1d2 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php @@ -1,28 +1,71 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Constraint that asserts that the Traversable it is applied to contains * a given value. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_TraversableContains extends PHPUnit_Framework_Constraint { /** - * @var bool + * @var boolean */ protected $checkForObjectIdentity; /** - * @var bool + * @var boolean */ protected $checkForNonObjectIdentity; @@ -32,10 +75,9 @@ class PHPUnit_Framework_Constraint_TraversableContains extends PHPUnit_Framework protected $value; /** - * @param mixed $value - * @param bool $checkForObjectIdentity - * @param bool $checkForNonObjectIdentity - * + * @param mixed $value + * @param boolean $checkForObjectIdentity + * @param boolean $checkForNonObjectIdentity * @throws PHPUnit_Framework_Exception */ public function __construct($value, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) @@ -59,8 +101,7 @@ public function __construct($value, $checkForObjectIdentity = true, $checkForNon * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * - * @param mixed $other Value or object to evaluate. - * + * @param mixed $other Value or object to evaluate. * @return bool */ protected function matches($other) @@ -112,16 +153,16 @@ public function toString() * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * - * @param mixed $other Evaluated value or object. - * + * @param mixed $other Evaluated value or object. * @return string */ protected function failureDescription($other) { return sprintf( - '%s %s', - is_array($other) ? 'an array' : 'a traversable', - $this->toString() + '%s %s', + + is_array($other) ? 'an array' : 'a traversable', + $this->toString() ); } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php index 1397b033..1116cf78 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php @@ -1,18 +1,61 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.1.4 */ /** * Constraint that asserts that the Traversable it is applied to contains * only values of a given type. * - * @since Class available since Release 3.1.4 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.1.4 */ class PHPUnit_Framework_Constraint_TraversableContainsOnly extends PHPUnit_Framework_Constraint { @@ -27,8 +70,8 @@ class PHPUnit_Framework_Constraint_TraversableContainsOnly extends PHPUnit_Frame protected $type; /** - * @param string $type - * @param bool $isNativeType + * @param string $type + * @param boolean $isNativeType */ public function __construct($type, $isNativeType = true) { @@ -38,7 +81,7 @@ public function __construct($type, $isNativeType = true) $this->constraint = new PHPUnit_Framework_Constraint_IsType($type); } else { $this->constraint = new PHPUnit_Framework_Constraint_IsInstanceOf( - $type + $type ); } @@ -55,12 +98,10 @@ public function __construct($type, $isNativeType = true) * a boolean value instead: true in case of success, false in case of a * failure. * - * @param mixed $other Value or object to evaluate. - * @param string $description Additional information about the test - * @param bool $returnResult Whether to return a result or throw an exception - * + * @param mixed $other Value or object to evaluate. + * @param string $description Additional information about the test + * @param bool $returnResult Whether to return a result or throw an exception * @return mixed - * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php index eb0ce265..18762159 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php @@ -1,36 +1,79 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Logical XOR. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework_Constraint + * @author Sebastian Bergmann + * @author Bernhard Schussek + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_Constraint_Xor extends PHPUnit_Framework_Constraint { /** * @var PHPUnit_Framework_Constraint[] */ - protected $constraints = []; + protected $constraints = array(); /** * @param PHPUnit_Framework_Constraint[] $constraints */ public function setConstraints(array $constraints) { - $this->constraints = []; + $this->constraints = array(); foreach ($constraints as $constraint) { if (!($constraint instanceof PHPUnit_Framework_Constraint)) { $constraint = new PHPUnit_Framework_Constraint_IsEqual( - $constraint + $constraint ); } @@ -48,17 +91,15 @@ public function setConstraints(array $constraints) * a boolean value instead: true in case of success, false in case of a * failure. * - * @param mixed $other Value or object to evaluate. - * @param string $description Additional information about the test - * @param bool $returnResult Whether to return a result or throw an exception - * + * @param mixed $other Value or object to evaluate. + * @param string $description Additional information about the test + * @param bool $returnResult Whether to return a result or throw an exception * @return mixed - * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { - $success = true; + $success = true; $lastResult = null; $constraint = null; @@ -105,8 +146,7 @@ public function toString() /** * Counts the number of constraint elements. * - * @return int - * + * @return integer * @since Method available since Release 3.4.0 */ public function count() diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Error.php b/tests/vendor/phpunit/phpunit/src/Framework/Error.php index 9e793fdd..65ced265 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Error.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Error.php @@ -1,27 +1,68 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.2.0 */ /** * Wrapper for PHP errors. * - * @since Class available since Release 2.2.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.2.0 */ -class PHPUnit_Framework_Error extends PHPUnit_Framework_Exception +class PHPUnit_Framework_Error extends Exception { /** * Constructor. * * @param string $message - * @param int $code + * @param integer $code * @param string $file - * @param int $line + * @param integer $line * @param Exception $previous */ public function __construct($message, $code, $file, $line, Exception $previous = null) diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php b/tests/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php index 2ab5598a..30ebe0d7 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php @@ -1,11 +1,46 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework_Error + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.3.0 */ /** @@ -16,7 +51,13 @@ * PHPUnit_Framework_Error_Deprecated::$enabled = false; *
* - * @since Class available since Release 3.3.0 + * @package PHPUnit + * @subpackage Framework_Error + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.3.0 */ class PHPUnit_Framework_Error_Deprecated extends PHPUnit_Framework_Error { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Error/Notice.php b/tests/vendor/phpunit/phpunit/src/Framework/Error/Notice.php index 477ad932..3ea05099 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Error/Notice.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Error/Notice.php @@ -1,11 +1,46 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework_Error + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.3.0 */ /** @@ -16,7 +51,13 @@ * PHPUnit_Framework_Error_Notice::$enabled = false; *
* - * @since Class available since Release 3.3.0 + * @package PHPUnit + * @subpackage Framework_Error + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.3.0 */ class PHPUnit_Framework_Error_Notice extends PHPUnit_Framework_Error { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Error/Warning.php b/tests/vendor/phpunit/phpunit/src/Framework/Error/Warning.php index 9240bcb7..569ae5fc 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Error/Warning.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Error/Warning.php @@ -1,11 +1,46 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework_Error + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.3.0 */ /** @@ -16,7 +51,13 @@ * PHPUnit_Framework_Error_Warning::$enabled = false; * * - * @since Class available since Release 3.3.0 + * @package PHPUnit + * @subpackage Framework_Error + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.3.0 */ class PHPUnit_Framework_Error_Warning extends PHPUnit_Framework_Error { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Exception.php b/tests/vendor/phpunit/phpunit/src/Framework/Exception.php index 715c55e4..832b3a19 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Exception.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Exception.php @@ -1,77 +1,57 @@ + * Copyright (c) 2001-2014, Sebastian Bergmann . + * All rights reserved. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Base class for all PHPUnit Framework exceptions. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * Ensures that exceptions thrown during a test run do not leave stray - * references behind. + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * Every Exception contains a stack trace. Each stack frame contains the 'args' - * of the called function. The function arguments can contain references to - * instantiated objects. The references prevent the objects from being - * destructed (until test results are eventually printed), so memory cannot be - * freed up. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * With enabled process isolation, test results are serialized in the child - * process and unserialized in the parent process. The stack trace of Exceptions - * may contain objects that cannot be serialized or unserialized (e.g., PDO - * connections). Unserializing user-space objects from the child process into - * the parent would break the intended encapsulation of process isolation. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * @see http://fabien.potencier.org/article/9/php-serialization-stack-traces-and-exceptions - * @since Class available since Release 3.4.0 + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.4.0 + */ + +/** + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.4.0 */ class PHPUnit_Framework_Exception extends RuntimeException implements PHPUnit_Exception { - /** - * @var array - */ - protected $serializableTrace; - - public function __construct($message = '', $code = 0, Exception $previous = null) - { - parent::__construct($message, $code, $previous); - - $this->serializableTrace = $this->getTrace(); - foreach ($this->serializableTrace as $i => $call) { - unset($this->serializableTrace[$i]['args']); - } - } - - /** - * Returns the serializable trace (without 'args'). - * - * @return array - */ - public function getSerializableTrace() - { - return $this->serializableTrace; - } - - /** - * @return string - */ - public function __toString() - { - $string = PHPUnit_Framework_TestFailure::exceptionToString($this); - - if ($trace = PHPUnit_Util_Filter::getFilteredStacktrace($this)) { - $string .= "\n" . $trace; - } - - return $string; - } - - public function __sleep() - { - return array_keys(get_object_vars($this)); - } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php b/tests/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php deleted file mode 100644 index fa3e9ee1..00000000 --- a/tests/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php +++ /dev/null @@ -1,91 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Wraps Exceptions thrown by code under test. - * - * Re-instantiates Exceptions thrown by user-space code to retain their original - * class names, properties, and stack traces (but without arguments). - * - * Unlike PHPUnit_Framework_Exception, the complete stack of previous Exceptions - * is processed. - * - * @since Class available since Release 4.3.0 - */ -class PHPUnit_Framework_ExceptionWrapper extends PHPUnit_Framework_Exception -{ - /** - * @var string - */ - protected $classname; - - /** - * @var PHPUnit_Framework_ExceptionWrapper|null - */ - protected $previous; - - /** - * @param Throwable|Exception $e - */ - public function __construct($e) - { - // PDOException::getCode() is a string. - // @see http://php.net/manual/en/class.pdoexception.php#95812 - parent::__construct($e->getMessage(), (int) $e->getCode()); - - $this->classname = get_class($e); - $this->file = $e->getFile(); - $this->line = $e->getLine(); - - $this->serializableTrace = $e->getTrace(); - - foreach ($this->serializableTrace as $i => $call) { - unset($this->serializableTrace[$i]['args']); - } - - if ($e->getPrevious()) { - $this->previous = new self($e->getPrevious()); - } - } - - /** - * @return string - */ - public function getClassname() - { - return $this->classname; - } - - /** - * @return PHPUnit_Framework_ExceptionWrapper - */ - public function getPreviousWrapped() - { - return $this->previous; - } - - /** - * @return string - */ - public function __toString() - { - $string = PHPUnit_Framework_TestFailure::exceptionToString($this); - - if ($trace = PHPUnit_Util_Filter::getFilteredStacktrace($this)) { - $string .= "\n" . $trace; - } - - if ($this->previous) { - $string .= "\nCaused by\n" . $this->previous; - } - - return $string; - } -} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/ExpectationFailedException.php b/tests/vendor/phpunit/phpunit/src/Framework/ExpectationFailedException.php index 60229a90..99a3d1f0 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/ExpectationFailedException.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/ExpectationFailedException.php @@ -1,30 +1,71 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Exception for expectations which failed their check. * * The exception contains the error message and optionally a - * SebastianBergmann\Comparator\ComparisonFailure which is used to + * PHPUnit_Framework_ComparisonFailure which is used to * generate diff output of the failed expectations. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_ExpectationFailedException extends PHPUnit_Framework_AssertionFailedError { /** - * @var SebastianBergmann\Comparator\ComparisonFailure + * @var PHPUnit_Framework_ComparisonFailure */ protected $comparisonFailure; - public function __construct($message, SebastianBergmann\Comparator\ComparisonFailure $comparisonFailure = null, Exception $previous = null) + public function __construct($message, PHPUnit_Framework_ComparisonFailure $comparisonFailure = null, Exception $previous = null) { $this->comparisonFailure = $comparisonFailure; @@ -32,7 +73,7 @@ public function __construct($message, SebastianBergmann\Comparator\ComparisonFai } /** - * @return SebastianBergmann\Comparator\ComparisonFailure + * @return PHPUnit_Framework_ComparisonFailure */ public function getComparisonFailure() { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php b/tests/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php index 5735c4f7..ed92f8a2 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * A marker interface for marking any exception/error as result of an unit * test as incomplete implementation or currently not implemented. * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ * @since Interface available since Release 2.0.0 */ interface PHPUnit_Framework_IncompleteTest diff --git a/tests/vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php b/tests/vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php deleted file mode 100644 index b2f393e3..00000000 --- a/tests/vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * An incomplete test case - * - * @since Class available since Release 4.3.0 - */ -class PHPUnit_Framework_IncompleteTestCase extends PHPUnit_Framework_TestCase -{ - /** - * @var string - */ - protected $message = ''; - - /** - * @var bool - */ - protected $backupGlobals = false; - - /** - * @var bool - */ - protected $backupStaticAttributes = false; - - /** - * @var bool - */ - protected $runTestInSeparateProcess = false; - - /** - * @var bool - */ - protected $useErrorHandler = false; - - /** - * @var bool - */ - protected $useOutputBuffering = false; - - /** - * @param string $className - * @param string $methodName - * @param string $message - */ - public function __construct($className, $methodName, $message = '') - { - $this->message = $message; - parent::__construct($className . '::' . $methodName); - } - - /** - * @throws PHPUnit_Framework_Exception - */ - protected function runTest() - { - $this->markTestIncomplete($this->message); - } - - /** - * @return string - */ - public function getMessage() - { - return $this->message; - } - - /** - * Returns a string representation of the test case. - * - * @return string - */ - public function toString() - { - return $this->getName(); - } -} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/IncompleteTestError.php b/tests/vendor/phpunit/phpunit/src/Framework/IncompleteTestError.php index 03ffd2f8..838b9858 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/IncompleteTestError.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/IncompleteTestError.php @@ -1,18 +1,59 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of an incomplete test. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Framework_IncompleteTestError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_IncompleteTest { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php b/tests/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php index a363ce1d..3babf2de 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php @@ -1,18 +1,59 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a test that is skipped because of an invalid @covers annotation. * - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ class PHPUnit_Framework_InvalidCoversTargetError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_SkippedTest { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php b/tests/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php index 324c76d3..86ee3557 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php @@ -1,15 +1,56 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ class PHPUnit_Framework_InvalidCoversTargetException extends PHPUnit_Framework_CodeCoverageException { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/OutputError.php b/tests/vendor/phpunit/phpunit/src/Framework/OutputError.php index c3f5dcc7..e198887b 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/OutputError.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/OutputError.php @@ -1,18 +1,59 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a test that printed output. * - * @since Class available since Release 3.6.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 */ class PHPUnit_Framework_OutputError extends PHPUnit_Framework_AssertionFailedError { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/RiskyTest.php b/tests/vendor/phpunit/phpunit/src/Framework/RiskyTest.php index 9d98b5f4..c1538e02 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/RiskyTest.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/RiskyTest.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** * A marker interface for marking any exception/error as result of an unit * test as risky. * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ * @since Interface available since Release 4.0.0 */ interface PHPUnit_Framework_RiskyTest diff --git a/tests/vendor/phpunit/phpunit/src/Framework/RiskyTestError.php b/tests/vendor/phpunit/phpunit/src/Framework/RiskyTestError.php index 781a50cb..0d96ba44 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/RiskyTestError.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/RiskyTestError.php @@ -1,18 +1,59 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a risky test. * - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ class PHPUnit_Framework_RiskyTestError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_RiskyTest { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php b/tests/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php index efc3c479..033ae85a 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php @@ -1,16 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Interface for classes that can return a description of itself. * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ * @since Interface available since Release 3.0.0 */ interface PHPUnit_Framework_SelfDescribing diff --git a/tests/vendor/phpunit/phpunit/src/Framework/SkippedTest.php b/tests/vendor/phpunit/phpunit/src/Framework/SkippedTest.php index 51910a91..fa75648e 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/SkippedTest.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/SkippedTest.php @@ -1,16 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * A marker interface for marking a unit test as being skipped. * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ * @since Interface available since Release 3.0.0 */ interface PHPUnit_Framework_SkippedTest diff --git a/tests/vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php b/tests/vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php deleted file mode 100644 index 8a841dfd..00000000 --- a/tests/vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * A skipped test case - * - * @since Class available since Release 4.3.0 - */ -class PHPUnit_Framework_SkippedTestCase extends PHPUnit_Framework_TestCase -{ - /** - * @var string - */ - protected $message = ''; - - /** - * @var bool - */ - protected $backupGlobals = false; - - /** - * @var bool - */ - protected $backupStaticAttributes = false; - - /** - * @var bool - */ - protected $runTestInSeparateProcess = false; - - /** - * @var bool - */ - protected $useErrorHandler = false; - - /** - * @var bool - */ - protected $useOutputBuffering = false; - - /** - * @param string $message - */ - public function __construct($className, $methodName, $message = '') - { - $this->message = $message; - parent::__construct($className . '::' . $methodName); - } - - /** - * @throws PHPUnit_Framework_Exception - */ - protected function runTest() - { - $this->markTestSkipped($this->message); - } - - /** - * @return string - */ - public function getMessage() - { - return $this->message; - } - - /** - * Returns a string representation of the test case. - * - * @return string - */ - public function toString() - { - return $this->getName(); - } -} diff --git a/tests/vendor/phpunit/phpunit/src/Framework/SkippedTestError.php b/tests/vendor/phpunit/phpunit/src/Framework/SkippedTestError.php index d8df860a..1f75c7bd 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/SkippedTestError.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/SkippedTestError.php @@ -1,18 +1,59 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a skipped test. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Framework_SkippedTestError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_SkippedTest { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php b/tests/vendor/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php index a57620bc..7e8added 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php @@ -1,18 +1,59 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.1.0 */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a skipped test suite. * - * @since Class available since Release 3.1.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.1.0 */ class PHPUnit_Framework_SkippedTestSuiteError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_SkippedTest { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/SyntheticError.php b/tests/vendor/phpunit/phpunit/src/Framework/SyntheticError.php index 7d6d7b4a..0bf01521 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/SyntheticError.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/SyntheticError.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.5.0 */ /** * Creates a synthetic failed assertion. * - * @since Class available since Release 3.5.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.5.0 */ class PHPUnit_Framework_SyntheticError extends PHPUnit_Framework_AssertionFailedError { @@ -25,7 +66,7 @@ class PHPUnit_Framework_SyntheticError extends PHPUnit_Framework_AssertionFailed /** * The synthetic line number. * - * @var int + * @var integer */ protected $syntheticLine = 0; @@ -34,16 +75,16 @@ class PHPUnit_Framework_SyntheticError extends PHPUnit_Framework_AssertionFailed * * @var array */ - protected $syntheticTrace = []; + protected $syntheticTrace = array(); /** * Constructor. * - * @param string $message - * @param int $code - * @param string $file - * @param int $line - * @param array $trace + * @param string $message + * @param integer $code + * @param string $file + * @param integer $line + * @param array $trace */ public function __construct($message, $code, $file, $line, $trace) { @@ -63,7 +104,7 @@ public function getSyntheticFile() } /** - * @return int + * @return integer */ public function getSyntheticLine() { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Test.php b/tests/vendor/phpunit/phpunit/src/Framework/Test.php index 0b68b3d1..e68314d8 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Test.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Test.php @@ -1,16 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * A Test can be run and collect its results. * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ * @since Interface available since Release 2.0.0 */ interface PHPUnit_Framework_Test extends Countable @@ -18,8 +59,7 @@ interface PHPUnit_Framework_Test extends Countable /** * Runs a test and collects its result in a TestResult instance. * - * @param PHPUnit_Framework_TestResult $result - * + * @param PHPUnit_Framework_TestResult $result * @return PHPUnit_Framework_TestResult */ public function run(PHPUnit_Framework_TestResult $result = null); diff --git a/tests/vendor/phpunit/phpunit/src/Framework/TestCase.php b/tests/vendor/phpunit/phpunit/src/Framework/TestCase.php old mode 100644 new mode 100755 index 3fddd128..288d5610 --- a/tests/vendor/phpunit/phpunit/src/Framework/TestCase.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/TestCase.php @@ -1,22 +1,48 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ -use SebastianBergmann\GlobalState\Snapshot; -use SebastianBergmann\GlobalState\Restorer; -use SebastianBergmann\GlobalState\Blacklist; -use SebastianBergmann\Diff\Differ; -use SebastianBergmann\Exporter\Exporter; -use Prophecy\Exception\Prediction\PredictionException; -use Prophecy\Prophet; -use DeepCopy\DeepCopy; - /** * A TestCase defines the fixture to run multiple tests. * @@ -61,7 +87,13 @@ * ?> * * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing { @@ -70,33 +102,33 @@ abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert imple * Overwrite this attribute in a child class of TestCase. * Setting this attribute in setUp() has no effect! * - * @var bool + * @var boolean */ protected $backupGlobals = null; /** * @var array */ - protected $backupGlobalsBlacklist = []; + protected $backupGlobalsBlacklist = array(); /** * Enable or disable the backup and restoration of static attributes. * Overwrite this attribute in a child class of TestCase. * Setting this attribute in setUp() has no effect! * - * @var bool + * @var boolean */ protected $backupStaticAttributes = null; /** * @var array */ - protected $backupStaticAttributesBlacklist = []; + protected $backupStaticAttributesBlacklist = array(); /** * Whether or not this test is to be run in a separate PHP process. * - * @var bool + * @var boolean */ protected $runTestInSeparateProcess = null; @@ -104,21 +136,21 @@ abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert imple * Whether or not this test should preserve the global state when * running in a separate PHP process. * - * @var bool + * @var boolean */ protected $preserveGlobalState = true; /** * Whether or not this test is running in a separate PHP process. * - * @var bool + * @var boolean */ private $inIsolation = false; /** * @var array */ - private $data = []; + private $data = array(); /** * @var string @@ -126,7 +158,7 @@ abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert imple private $dataName = ''; /** - * @var bool + * @var boolean */ private $useErrorHandler = null; @@ -145,18 +177,24 @@ abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert imple private $expectedExceptionMessage = ''; /** - * The regex pattern to validate the expected Exception message. + * The code of the expected Exception. * - * @var string + * @var integer */ - private $expectedExceptionMessageRegExp = ''; + private $expectedExceptionCode; /** - * The code of the expected Exception. + * The required preconditions for a test. * - * @var int + * @var array */ - private $expectedExceptionCode; + private $required = array( + 'PHP' => null, + 'PHPUnit' => null, + 'OS' => null, + 'functions' => array(), + 'extensions' => array() + ); /** * The name of the test case. @@ -168,35 +206,35 @@ abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert imple /** * @var array */ - private $dependencies = []; + private $dependencies = array(); /** * @var array */ - private $dependencyInput = []; + private $dependencyInput = array(); /** * @var array */ - private $iniSettings = []; + private $iniSettings = array(); /** * @var array */ - private $locale = []; + private $locale = array(); /** * @var array */ - private $mockObjects = []; + private $mockObjects = array(); /** * @var array */ - private $mockObjectGenerator = null; + private $mockObjectGenerator; /** - * @var int + * @var integer */ private $status; @@ -206,7 +244,7 @@ abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert imple private $statusMessage = ''; /** - * @var int + * @var integer */ private $numAssertions = 0; @@ -235,35 +273,30 @@ abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert imple */ private $outputExpectedString = null; - /** - * @var mixed - */ - private $outputCallback = false; - /** * @var bool */ - private $outputBufferingActive = false; + private $hasPerformedExpectationsOnOutput = false; /** - * @var int + * @var mixed */ - private $outputBufferingLevel; + private $outputCallback = false; /** - * @var SebastianBergmann\GlobalState\Snapshot + * @var boolean */ - private $snapshot; + private $outputBufferingActive = false; /** - * @var Prophecy\Prophet + * @var array */ - private $prophet; + private $beforeMethods = array('setUp'); /** - * @var bool + * @var array */ - private $beStrictAboutChangesToGlobalState = false; + private $afterMethods = array('tearDown'); /** * Constructs a test case with the given name. @@ -272,7 +305,7 @@ abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert imple * @param array $data * @param string $dataName */ - public function __construct($name = null, array $data = [], $dataName = '') + public function __construct($name = null, array $data = array(), $dataName = '') { if ($name !== null) { $this->setName($name); @@ -280,6 +313,7 @@ public function __construct($name = null, array $data = [], $dataName = '') $this->data = $data; $this->dataName = $dataName; + $this->mockObjectGenerator = new PHPUnit_Framework_MockObject_Generator; } /** @@ -292,9 +326,10 @@ public function toString() $class = new ReflectionClass($this); $buffer = sprintf( - '%s::%s', - $class->name, - $this->getName(false) + '%s::%s', + + $class->name, + $this->getName(false) ); return $buffer . $this->getDataSetAsString(); @@ -303,7 +338,7 @@ public function toString() /** * Counts the number of test cases executed by run(TestResult result). * - * @return int + * @return integer */ public function count() { @@ -314,22 +349,19 @@ public function count() * Returns the annotations for this test. * * @return array - * * @since Method available since Release 3.4.0 */ public function getAnnotations() { return PHPUnit_Util_Test::parseTestMethodAnnotations( - get_class($this), - $this->name + get_class($this), $this->name ); } /** * Gets the name of a TestCase. * - * @param bool $withDataSet - * + * @param boolean $withDataSet * @return string */ public function getName($withDataSet = true) @@ -344,21 +376,18 @@ public function getName($withDataSet = true) /** * Returns the size of the test. * - * @return int - * + * @return integer * @since Method available since Release 3.6.0 */ public function getSize() { return PHPUnit_Util_Test::getSize( - get_class($this), - $this->getName(false) + get_class($this), $this->getName(false) ); } /** * @return string - * * @since Method available since Release 3.6.0 */ public function getActualOutput() @@ -371,8 +400,7 @@ public function getActualOutput() } /** - * @return bool - * + * @return boolean * @since Method available since Release 3.6.0 */ public function hasOutput() @@ -381,7 +409,9 @@ public function hasOutput() return false; } - if ($this->hasExpectationOnOutput()) { + if ($this->outputExpectedString !== null || + $this->outputExpectedRegex !== null || + $this->hasPerformedExpectationsOnOutput) { return false; } @@ -389,10 +419,8 @@ public function hasOutput() } /** - * @param string $expectedRegex - * + * @param string $expectedRegex * @since Method available since Release 3.6.0 - * * @throws PHPUnit_Framework_Exception */ public function expectOutputRegex($expectedRegex) @@ -408,7 +436,6 @@ public function expectOutputRegex($expectedRegex) /** * @param string $expectedString - * * @since Method available since Release 3.6.0 */ public function expectOutputString($expectedString) @@ -424,28 +451,15 @@ public function expectOutputString($expectedString) /** * @return bool - * * @since Method available since Release 3.6.5 - * @deprecated */ public function hasPerformedExpectationsOnOutput() { - return $this->hasExpectationOnOutput(); - } - - /** - * @return bool - * - * @since Method available since Release 4.3.3 - */ - public function hasExpectationOnOutput() - { - return is_string($this->outputExpectedString) || is_string($this->outputExpectedRegex); + return $this->hasPerformedExpectationsOnOutput; } /** * @return string - * * @since Method available since Release 3.2.0 */ public function getExpectedException() @@ -454,10 +468,9 @@ public function getExpectedException() } /** - * @param mixed $exceptionName - * @param string $exceptionMessage - * @param int $exceptionCode - * + * @param mixed $exceptionName + * @param string $exceptionMessage + * @param integer $exceptionCode * @since Method available since Release 3.2.0 */ public function setExpectedException($exceptionName, $exceptionMessage = '', $exceptionCode = null) @@ -467,20 +480,6 @@ public function setExpectedException($exceptionName, $exceptionMessage = '', $ex $this->expectedExceptionCode = $exceptionCode; } - /** - * @param mixed $exceptionName - * @param string $exceptionMessageRegExp - * @param int $exceptionCode - * - * @since Method available since Release 4.3.0 - */ - public function setExpectedExceptionRegExp($exceptionName, $exceptionMessageRegExp = '', $exceptionCode = null) - { - $this->expectedException = $exceptionName; - $this->expectedExceptionMessageRegExp = $exceptionMessageRegExp; - $this->expectedExceptionCode = $exceptionCode; - } - /** * @since Method available since Release 3.4.0 */ @@ -488,32 +487,22 @@ protected function setExpectedExceptionFromAnnotation() { try { $expectedException = PHPUnit_Util_Test::getExpectedException( - get_class($this), - $this->name + get_class($this), $this->name ); if ($expectedException !== false) { $this->setExpectedException( - $expectedException['class'], - $expectedException['message'], - $expectedException['code'] + $expectedException['class'], + $expectedException['message'], + $expectedException['code'] ); - - if (!empty($expectedException['message_regex'])) { - $this->setExpectedExceptionRegExp( - $expectedException['class'], - $expectedException['message_regex'], - $expectedException['code'] - ); - } } } catch (ReflectionException $e) { } } /** - * @param bool $useErrorHandler - * + * @param boolean $useErrorHandler * @since Method available since Release 3.4.0 */ public function setUseErrorHandler($useErrorHandler) @@ -528,8 +517,7 @@ protected function setUseErrorHandlerFromAnnotation() { try { $useErrorHandler = PHPUnit_Util_Test::getErrorHandlerSettings( - get_class($this), - $this->name + get_class($this), $this->name ); if ($useErrorHandler !== null) { @@ -539,30 +527,105 @@ protected function setUseErrorHandlerFromAnnotation() } } + /** + * @since Method available since Release 3.6.0 + */ + protected function setRequirementsFromAnnotation() + { + try { + $requirements = PHPUnit_Util_Test::getRequirements( + get_class($this), $this->name + ); + + if (isset($requirements['PHP'])) { + $this->required['PHP'] = $requirements['PHP']; + } + + if (isset($requirements['PHPUnit'])) { + $this->required['PHPUnit'] = $requirements['PHPUnit']; + } + + if (isset($requirements['OS'])) { + $this->required['OS'] = $requirements['OS']; + } + + if (isset($requirements['extensions'])) { + $this->required['extensions'] = $requirements['extensions']; + } + + if (isset($requirements['functions'])) { + $this->required['functions'] = $requirements['functions']; + } + } catch (ReflectionException $e) { + } + } + /** * @since Method available since Release 3.6.0 */ protected function checkRequirements() { - if (!$this->name || !method_exists($this, $this->name)) { - return; + $this->setRequirementsFromAnnotation(); + + $missingRequirements = array(); + + if ($this->required['PHP'] && + version_compare(PHP_VERSION, $this->required['PHP'], '<')) { + $missingRequirements[] = sprintf( + 'PHP %s (or later) is required.', + $this->required['PHP'] + ); } - $missingRequirements = PHPUnit_Util_Test::getMissingRequirements( - get_class($this), - $this->name - ); + $phpunitVersion = PHPUnit_Runner_Version::id(); + if ($this->required['PHPUnit'] && + version_compare($phpunitVersion, $this->required['PHPUnit'], '<')) { + $missingRequirements[] = sprintf( + 'PHPUnit %s (or later) is required.', + $this->required['PHPUnit'] + ); + } - if (!empty($missingRequirements)) { - $this->markTestSkipped(implode(PHP_EOL, $missingRequirements)); + if ($this->required['OS'] && + !preg_match($this->required['OS'], PHP_OS)) { + $missingRequirements[] = sprintf( + 'Operating system matching %s is required.', + $this->required['OS'] + ); + } + + foreach ($this->required['functions'] as $requiredFunction) { + if (!function_exists($requiredFunction)) { + $missingRequirements[] = sprintf( + 'Function %s is required.', + $requiredFunction + ); + } + } + + foreach ($this->required['extensions'] as $requiredExtension) { + if (!extension_loaded($requiredExtension)) { + $missingRequirements[] = sprintf( + 'Extension %s is required.', + $requiredExtension + ); + } + } + + if ($missingRequirements) { + $this->markTestSkipped( + implode( + PHP_EOL, + $missingRequirements + ) + ); } } /** * Returns the status of this test. * - * @return int - * + * @return integer * @since Method available since Release 3.1.0 */ public function getStatus() @@ -574,7 +637,6 @@ public function getStatus() * Returns the status message of this test. * * @return string - * * @since Method available since Release 3.3.0 */ public function getStatusMessage() @@ -585,8 +647,7 @@ public function getStatusMessage() /** * Returns whether or not this test has failed. * - * @return bool - * + * @return boolean * @since Method available since Release 3.0.0 */ public function hasFailed() @@ -601,10 +662,8 @@ public function hasFailed() * Runs the test case and collects the results in a TestResult object. * If no TestResult object is passed a new one will be created. * - * @param PHPUnit_Framework_TestResult $result - * + * @param PHPUnit_Framework_TestResult $result * @return PHPUnit_Framework_TestResult - * * @throws PHPUnit_Framework_Exception */ public function run(PHPUnit_Framework_TestResult $result = null) @@ -634,7 +693,7 @@ public function run(PHPUnit_Framework_TestResult $result = null) $class = new ReflectionClass($this); $template = new Text_Template( - __DIR__ . '/../Util/PHP/Template/TestCaseMethod.tpl' + __DIR__ . '/../Util/PHP/Template/TestCaseMethod.tpl' ); if ($this->preserveGlobalState) { @@ -644,21 +703,15 @@ public function run(PHPUnit_Framework_TestResult $result = null) $iniSettings = PHPUnit_Util_GlobalState::getIniSettingsAsString(); } else { $constants = ''; - if (!empty($GLOBALS['__PHPUNIT_BOOTSTRAP'])) { - $globals = '$GLOBALS[\'__PHPUNIT_BOOTSTRAP\'] = ' . var_export($GLOBALS['__PHPUNIT_BOOTSTRAP'], true) . ";\n"; - } else { - $globals = ''; - } + $globals = ''; $includedFiles = ''; $iniSettings = ''; } - $coverage = $result->getCollectCodeCoverageInformation() ? 'true' : 'false'; - $isStrictAboutTestsThatDoNotTestAnything = $result->isStrictAboutTestsThatDoNotTestAnything() ? 'true' : 'false'; - $isStrictAboutOutputDuringTests = $result->isStrictAboutOutputDuringTests() ? 'true' : 'false'; - $enforcesTimeLimit = $result->enforcesTimeLimit() ? 'true' : 'false'; - $isStrictAboutTodoAnnotatedTests = $result->isStrictAboutTodoAnnotatedTests() ? 'true' : 'false'; - $isStrictAboutResourceUsageDuringSmallTests = $result->isStrictAboutResourceUsageDuringSmallTests() ? 'true' : 'false'; + $coverage = $result->getCollectCodeCoverageInformation() ? 'true' : 'false'; + $isStrictAboutTestsThatDoNotTestAnything = $result->isStrictAboutTestsThatDoNotTestAnything() ? 'true' : 'false'; + $isStrictAboutOutputDuringTests = $result->isStrictAboutOutputDuringTests() ? 'true' : 'false'; + $isStrictAboutTestSize = $result->isStrictAboutTestSize() ? 'true' : 'false'; if (defined('PHPUNIT_COMPOSER_INSTALL')) { $composerAutoload = var_export(PHPUNIT_COMPOSER_INSTALL, true); @@ -672,51 +725,35 @@ public function run(PHPUnit_Framework_TestResult $result = null) $phar = '\'\''; } - if ($result->getCodeCoverage()) { - $codeCoverageFilter = $result->getCodeCoverage()->filter(); - } else { - $codeCoverageFilter = null; - } - - $data = var_export(serialize($this->data), true); - $dataName = var_export($this->dataName, true); - $dependencyInput = var_export(serialize($this->dependencyInput), true); - $includePath = var_export(get_include_path(), true); - $codeCoverageFilter = var_export(serialize($codeCoverageFilter), true); + $data = var_export(serialize($this->data), true); + $dependencyInput = var_export(serialize($this->dependencyInput), true); + $includePath = var_export(get_include_path(), true); // must do these fixes because TestCaseMethod.tpl has unserialize('{data}') in it, and we can't break BC // the lines above used to use addcslashes() rather than var_export(), which breaks null byte escape sequences - $data = "'." . $data . ".'"; - $dataName = "'.(" . $dataName . ").'"; - $dependencyInput = "'." . $dependencyInput . ".'"; - $includePath = "'." . $includePath . ".'"; - $codeCoverageFilter = "'." . $codeCoverageFilter . ".'"; - - $configurationFilePath = (isset($GLOBALS['__PHPUNIT_CONFIGURATION_FILE']) ? $GLOBALS['__PHPUNIT_CONFIGURATION_FILE'] : ''); + $data = "'." . $data . ".'"; + $dependencyInput = "'." . $dependencyInput . ".'"; + $includePath = "'." . $includePath . ".'"; $template->setVar( - [ - 'composerAutoload' => $composerAutoload, - 'phar' => $phar, - 'filename' => $class->getFileName(), - 'className' => $class->getName(), - 'methodName' => $this->name, - 'collectCodeCoverageInformation' => $coverage, - 'data' => $data, - 'dataName' => $dataName, - 'dependencyInput' => $dependencyInput, - 'constants' => $constants, - 'globals' => $globals, - 'include_path' => $includePath, - 'included_files' => $includedFiles, - 'iniSettings' => $iniSettings, - 'isStrictAboutTestsThatDoNotTestAnything' => $isStrictAboutTestsThatDoNotTestAnything, - 'isStrictAboutOutputDuringTests' => $isStrictAboutOutputDuringTests, - 'enforcesTimeLimit' => $enforcesTimeLimit, - 'isStrictAboutTodoAnnotatedTests' => $isStrictAboutTodoAnnotatedTests, - 'isStrictAboutResourceUsageDuringSmallTests' => $isStrictAboutResourceUsageDuringSmallTests, - 'codeCoverageFilter' => $codeCoverageFilter, - 'configurationFilePath' => $configurationFilePath - ] + array( + 'composerAutoload' => $composerAutoload, + 'phar' => $phar, + 'filename' => $class->getFileName(), + 'className' => $class->getName(), + 'methodName' => $this->name, + 'collectCodeCoverageInformation' => $coverage, + 'data' => $data, + 'dataName' => $this->dataName, + 'dependencyInput' => $dependencyInput, + 'constants' => $constants, + 'globals' => $globals, + 'include_path' => $includePath, + 'included_files' => $includedFiles, + 'iniSettings' => $iniSettings, + 'isStrictAboutTestsThatDoNotTestAnything' => $isStrictAboutTestsThatDoNotTestAnything, + 'isStrictAboutOutputDuringTests' => $isStrictAboutOutputDuringTests, + 'isStrictAboutTestSize' => $isStrictAboutTestSize + ) ); $this->prepareTemplate($template); @@ -743,27 +780,43 @@ public function runBare() { $this->numAssertions = 0; - $this->snapshotGlobalState(); - $this->startOutputBuffering(); + // Backup the $GLOBALS array and static attributes. + if ($this->runTestInSeparateProcess !== true && + $this->inIsolation !== true) { + if ($this->backupGlobals === null || + $this->backupGlobals === true) { + PHPUnit_Util_GlobalState::backupGlobals( + $this->backupGlobalsBlacklist + ); + } + + if ($this->backupStaticAttributes === true) { + PHPUnit_Util_GlobalState::backupStaticAttributes( + $this->backupStaticAttributesBlacklist + ); + } + } + + // Start output buffering. + ob_start(); + $this->outputBufferingActive = true; + + // Clean up stat cache. clearstatcache(); - $currentWorkingDirectory = getcwd(); - $hookMethods = PHPUnit_Util_Test::getHookMethods(get_class($this)); + // Backup the cwd + $currentWorkingDirectory = getcwd(); try { - $hasMetRequirements = false; $this->checkRequirements(); - $hasMetRequirements = true; if ($this->inIsolation) { - foreach ($hookMethods['beforeClass'] as $method) { - $this->$method(); - } + $this->setUpBeforeClass(); } $this->setExpectedExceptionFromAnnotation(); - foreach ($hookMethods['before'] as $method) { + foreach ($this->beforeMethods as $method) { $this->$method(); } @@ -771,7 +824,6 @@ public function runBare() $this->testResult = $this->runTest(); $this->verifyMockObjects(); $this->assertPostConditions(); - $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_PASSED; } catch (PHPUnit_Framework_IncompleteTest $e) { $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE; @@ -782,41 +834,23 @@ public function runBare() } catch (PHPUnit_Framework_AssertionFailedError $e) { $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE; $this->statusMessage = $e->getMessage(); - } catch (PredictionException $e) { - $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE; - $this->statusMessage = $e->getMessage(); - } catch (Throwable $_e) { - $e = $_e; - } catch (Exception $_e) { - $e = $_e; - } - - if (isset($_e)) { + } catch (Exception $e) { $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_ERROR; - $this->statusMessage = $_e->getMessage(); + $this->statusMessage = $e->getMessage(); } // Clean up the mock objects. - $this->mockObjects = []; - $this->prophet = null; + $this->mockObjects = array(); // Tear down the fixture. An exception raised in tearDown() will be // caught and passed on when no exception was raised before. try { - if ($hasMetRequirements) { - foreach ($hookMethods['after'] as $method) { - $this->$method(); - } - - if ($this->inIsolation) { - foreach ($hookMethods['afterClass'] as $method) { - $this->$method(); - } - } + foreach ($this->afterMethods as $method) { + $this->$method(); } - } catch (Throwable $_e) { - if (!isset($e)) { - $e = $_e; + + if ($this->inIsolation) { + $this->tearDownAfterClass(); } } catch (Exception $_e) { if (!isset($e)) { @@ -824,28 +858,47 @@ public function runBare() } } - try { - $this->stopOutputBuffering(); - } catch (PHPUnit_Framework_RiskyTestError $_e) { - if (!isset($e)) { - $e = $_e; - } + // Stop output buffering. + if ($this->outputCallback === false) { + $this->output = ob_get_contents(); + } else { + $this->output = call_user_func_array( + $this->outputCallback, array(ob_get_contents()) + ); } + ob_end_clean(); + $this->outputBufferingActive = false; + + // Clean up stat cache. clearstatcache(); + // Restore the cwd if it was changed by the test if ($currentWorkingDirectory != getcwd()) { chdir($currentWorkingDirectory); } - $this->restoreGlobalState(); + // Restore the $GLOBALS array and static attributes. + if ($this->runTestInSeparateProcess !== true && + $this->inIsolation !== true) { + if ($this->backupGlobals === null || + $this->backupGlobals === true) { + PHPUnit_Util_GlobalState::restoreGlobals( + $this->backupGlobalsBlacklist + ); + } + + if ($this->backupStaticAttributes === true) { + PHPUnit_Util_GlobalState::restoreStaticAttributes(); + } + } // Clean up INI settings. foreach ($this->iniSettings as $varName => $oldValue) { ini_set($varName, $oldValue); } - $this->iniSettings = []; + $this->iniSettings = array(); // Clean up locale settings. foreach ($this->locale as $category => $locale) { @@ -856,12 +909,14 @@ public function runBare() if (!isset($e)) { try { if ($this->outputExpectedRegex !== null) { + $this->hasPerformedExpectationsOnOutput = true; $this->assertRegExp($this->outputExpectedRegex, $this->output); + $this->outputExpectedRegex = null; } elseif ($this->outputExpectedString !== null) { + $this->hasPerformedExpectationsOnOutput = true; $this->assertEquals($this->outputExpectedString, $this->output); + $this->outputExpectedString = null; } - } catch (Throwable $_e) { - $e = $_e; } catch (Exception $_e) { $e = $_e; } @@ -869,10 +924,6 @@ public function runBare() // Workaround for missing "finally". if (isset($e)) { - if ($e instanceof PredictionException) { - $e = new PHPUnit_Framework_AssertionFailedError($e->getMessage()); - } - $this->onNotSuccessfulTest($e); } } @@ -881,7 +932,6 @@ public function runBare() * Override to run the test and assert its state. * * @return mixed - * * @throws Exception|PHPUnit_Framework_Exception * @throws PHPUnit_Framework_Exception */ @@ -889,7 +939,7 @@ protected function runTest() { if ($this->name === null) { throw new PHPUnit_Framework_Exception( - 'PHPUnit_Framework_TestCase::$name must not be null.' + 'PHPUnit_Framework_TestCase::$name must not be null.' ); } @@ -900,19 +950,11 @@ protected function runTest() $this->fail($e->getMessage()); } - $testArguments = array_merge($this->data, $this->dependencyInput); - - $this->registerMockObjectsFromTestArguments($testArguments); - try { - $testResult = $method->invokeArgs($this, $testArguments); - } catch (Throwable $_e) { - $e = $_e; - } catch (Exception $_e) { - $e = $_e; - } - - if (isset($e)) { + $testResult = $method->invokeArgs( + $this, array_merge($this->data, $this->dependencyInput) + ); + } catch (Exception $e) { $checkException = false; if (is_string($this->expectedException)) { @@ -932,38 +974,28 @@ protected function runTest() if ($checkException) { $this->assertThat( - $e, - new PHPUnit_Framework_Constraint_Exception( - $this->expectedException - ) + $e, + new PHPUnit_Framework_Constraint_Exception( + $this->expectedException + ) ); if (is_string($this->expectedExceptionMessage) && !empty($this->expectedExceptionMessage)) { $this->assertThat( - $e, - new PHPUnit_Framework_Constraint_ExceptionMessage( - $this->expectedExceptionMessage - ) - ); - } - - if (is_string($this->expectedExceptionMessageRegExp) && - !empty($this->expectedExceptionMessageRegExp)) { - $this->assertThat( - $e, - new PHPUnit_Framework_Constraint_ExceptionMessageRegExp( - $this->expectedExceptionMessageRegExp - ) + $e, + new PHPUnit_Framework_Constraint_ExceptionMessage( + $this->expectedExceptionMessage + ) ); } if ($this->expectedExceptionCode !== null) { $this->assertThat( - $e, - new PHPUnit_Framework_Constraint_ExceptionCode( - $this->expectedExceptionCode - ) + $e, + new PHPUnit_Framework_Constraint_ExceptionCode( + $this->expectedExceptionCode + ) ); } @@ -975,10 +1007,10 @@ protected function runTest() if ($this->expectedException !== null) { $this->assertThat( - null, - new PHPUnit_Framework_Constraint_Exception( - $this->expectedException - ) + null, + new PHPUnit_Framework_Constraint_Exception( + $this->expectedException + ) ); } @@ -997,31 +1029,7 @@ protected function verifyMockObjects() $this->numAssertions++; } - $mockObject->__phpunit_verify( - $this->shouldInvocationMockerBeReset($mockObject) - ); - } - - if ($this->prophet !== null) { - try { - $this->prophet->checkPredictions(); - } catch (Throwable $t) { - /* Intentionally left empty */ - } catch (Exception $e) { - /* Intentionally left empty */ - } - - foreach ($this->prophet->getProphecies() as $objectProphecy) { - foreach ($objectProphecy->getMethodProphecies() as $methodProphecies) { - foreach ($methodProphecies as $methodProphecy) { - $this->numAssertions += count($methodProphecy->getCheckedPredictions()); - } - } - } - - if (isset($e)) { - throw $e; - } + $mockObject->__phpunit_verify(); } } @@ -1039,7 +1047,6 @@ public function setName($name) * Sets the dependencies of a TestCase. * * @param array $dependencies - * * @since Method available since Release 3.4.0 */ public function setDependencies(array $dependencies) @@ -1050,8 +1057,7 @@ public function setDependencies(array $dependencies) /** * Returns true if the tests has dependencies * - * @return bool - * + * @return boolean * @since Method available since Release 4.0.0 */ public function hasDependencies() @@ -1063,7 +1069,6 @@ public function hasDependencies() * Sets * * @param array $dependencyInput - * * @since Method available since Release 3.4.0 */ public function setDependencyInput(array $dependencyInput) @@ -1071,21 +1076,10 @@ public function setDependencyInput(array $dependencyInput) $this->dependencyInput = $dependencyInput; } - /** - * @param bool $beStrictAboutChangesToGlobalState - * - * @since Method available since Release 4.6.0 - */ - public function setbeStrictAboutChangesToGlobalState($beStrictAboutChangesToGlobalState) - { - $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; - } - /** * Calling this method in setUp() has no effect! * - * @param bool $backupGlobals - * + * @param boolean $backupGlobals * @since Method available since Release 3.3.0 */ public function setBackupGlobals($backupGlobals) @@ -1098,8 +1092,7 @@ public function setBackupGlobals($backupGlobals) /** * Calling this method in setUp() has no effect! * - * @param bool $backupStaticAttributes - * + * @param boolean $backupStaticAttributes * @since Method available since Release 3.4.0 */ public function setBackupStaticAttributes($backupStaticAttributes) @@ -1111,10 +1104,8 @@ public function setBackupStaticAttributes($backupStaticAttributes) } /** - * @param bool $runTestInSeparateProcess - * + * @param boolean $runTestInSeparateProcess * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.4.0 */ public function setRunTestInSeparateProcess($runTestInSeparateProcess) @@ -1129,10 +1120,8 @@ public function setRunTestInSeparateProcess($runTestInSeparateProcess) } /** - * @param bool $preserveGlobalState - * + * @param boolean $preserveGlobalState * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.4.0 */ public function setPreserveGlobalState($preserveGlobalState) @@ -1145,10 +1134,8 @@ public function setPreserveGlobalState($preserveGlobalState) } /** - * @param bool $inIsolation - * + * @param boolean $inIsolation * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.4.0 */ public function setInIsolation($inIsolation) @@ -1160,19 +1147,8 @@ public function setInIsolation($inIsolation) } } - /** - * @return bool - * - * @since Method available since Release 4.3.0 - */ - public function isInIsolation() - { - return $this->inIsolation; - } - /** * @return mixed - * * @since Method available since Release 3.4.0 */ public function getResult() @@ -1182,7 +1158,6 @@ public function getResult() /** * @param mixed $result - * * @since Method available since Release 3.4.0 */ public function setResult($result) @@ -1191,10 +1166,8 @@ public function setResult($result) } /** - * @param callable $callback - * + * @param callable $callback * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.6.0 */ public function setOutputCallback($callback) @@ -1208,7 +1181,6 @@ public function setOutputCallback($callback) /** * @return PHPUnit_Framework_TestResult - * * @since Method available since Release 3.5.7 */ public function getTestResultObject() @@ -1218,7 +1190,6 @@ public function getTestResultObject() /** * @param PHPUnit_Framework_TestResult $result - * * @since Method available since Release 3.6.0 */ public function setTestResultObject(PHPUnit_Framework_TestResult $result) @@ -1231,11 +1202,9 @@ public function setTestResultObject(PHPUnit_Framework_TestResult $result) * resets the modified php.ini setting to its original value after the * test is run. * - * @param string $varName - * @param string $newValue - * + * @param string $varName + * @param string $newValue * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.0.0 */ protected function iniSet($varName, $newValue) @@ -1250,11 +1219,11 @@ protected function iniSet($varName, $newValue) $this->iniSettings[$varName] = $currentValue; } else { throw new PHPUnit_Framework_Exception( - sprintf( - 'INI setting "%s" could not be set to "%s".', - $varName, - $newValue - ) + sprintf( + 'INI setting "%s" could not be set to "%s".', + $varName, + $newValue + ) ); } } @@ -1263,11 +1232,9 @@ protected function iniSet($varName, $newValue) * This method is a wrapper for the setlocale() function that automatically * resets the locale to its original value after the test is run. * - * @param int $category - * @param string $locale - * + * @param integer $category + * @param string $locale * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.1.0 */ protected function setLocale() @@ -1281,9 +1248,9 @@ protected function setLocale() $category = $args[0]; $locale = $args[1]; - $categories = [ - LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME - ]; + $categories = array( + LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME + ); if (defined('LC_MESSAGES')) { $categories[] = LC_MESSAGES; @@ -1299,13 +1266,13 @@ protected function setLocale() $this->locale[$category] = setlocale($category, null); - $result = call_user_func_array('setlocale', $args); + $result = call_user_func_array( 'setlocale', $args ); if ($result === false) { throw new PHPUnit_Framework_Exception( - 'The locale functionality is not implemented on your platform, ' . - 'the specified locale does not exist or the category name is ' . - 'invalid.' + 'The locale functionality is not implemented on your platform, ' . + 'the specified locale does not exist or the category name is ' . + 'invalid.' ); } } @@ -1313,37 +1280,34 @@ protected function setLocale() /** * Returns a mock object for the specified class. * - * @param string $originalClassName Name of the class to mock. - * @param array|null $methods When provided, only methods whose names are in the array - * are replaced with a configurable test double. The behavior - * of the other methods is not changed. - * Providing null means that no methods will be replaced. - * @param array $arguments Parameters to pass to the original class' constructor. - * @param string $mockClassName Class name for the generated test double class. - * @param bool $callOriginalConstructor Can be used to disable the call to the original class' constructor. - * @param bool $callOriginalClone Can be used to disable the call to the original class' clone constructor. - * @param bool $callAutoload Can be used to disable __autoload() during the generation of the test double class. - * @param bool $cloneArguments - * @param bool $callOriginalMethods - * + * @param string $originalClassName Name of the class to mock. + * @param array|null $methods When provided, only methods whose names are in the array + * are replaced with a configurable test double. The behavior + * of the other methods is not changed. + * Providing null means that no methods will be replaced. + * @param array $arguments Parameters to pass to the original class' constructor. + * @param string $mockClassName Class name for the generated test double class. + * @param boolean $callOriginalConstructor Can be used to disable the call to the original class' constructor. + * @param boolean $callOriginalClone Can be used to disable the call to the original class' clone constructor. + * @param boolean $callAutoload Can be used to disable __autoload() during the generation of the test double class. + * @param boolean $cloneArguments + * @param boolean $callOriginalMethods * @return PHPUnit_Framework_MockObject_MockObject - * * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.0.0 */ - public function getMock($originalClassName, $methods = [], array $arguments = [], $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false, $callOriginalMethods = false) - { - $mockObject = $this->getMockObjectGenerator()->getMock( - $originalClassName, - $methods, - $arguments, - $mockClassName, - $callOriginalConstructor, - $callOriginalClone, - $callAutoload, - $cloneArguments, - $callOriginalMethods + public function getMock($originalClassName, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false, $callOriginalMethods = false) + { + $mockObject = $this->mockObjectGenerator->getMock( + $originalClassName, + $methods, + $arguments, + $mockClassName, + $callOriginalConstructor, + $callOriginalClone, + $callAutoload, + $cloneArguments, + $callOriginalMethods ); $this->mockObjects[] = $mockObject; @@ -1351,67 +1315,46 @@ public function getMock($originalClassName, $methods = [], array $arguments = [] return $mockObject; } - /** - * Returns a mock object for the specified class. - * - * @param string $originalClassName - * - * @return PHPUnit_Framework_MockObject_MockObject - * - * @throws PHPUnit_Framework_Exception - * - * @since Method available since Release 5.0.0 - */ - public function getMockWithoutInvokingTheOriginalConstructor($originalClassName) - { - return $this->getMockBuilder($originalClassName) - ->disableOriginalConstructor() - ->getMock(); - } - /** * Returns a builder object to create mock objects using a fluent interface. * - * @param string $className - * + * @param string $className * @return PHPUnit_Framework_MockObject_MockBuilder - * * @since Method available since Release 3.5.0 */ public function getMockBuilder($className) { - return new PHPUnit_Framework_MockObject_MockBuilder($this, $className); + return new PHPUnit_Framework_MockObject_MockBuilder( + $this, $className + ); } /** * Mocks the specified class and returns the name of the mocked class. * - * @param string $originalClassName - * @param array $methods - * @param array $arguments - * @param string $mockClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param bool $cloneArguments - * + * @param string $originalClassName + * @param array $methods + * @param array $arguments + * @param string $mockClassName + * @param boolean $callOriginalConstructor + * @param boolean $callOriginalClone + * @param boolean $callAutoload + * @param boolean $cloneArguments * @return string - * * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.5.0 */ - protected function getMockClass($originalClassName, $methods = [], array $arguments = [], $mockClassName = '', $callOriginalConstructor = false, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false) + protected function getMockClass($originalClassName, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = false, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false) { $mock = $this->getMock( - $originalClassName, - $methods, - $arguments, - $mockClassName, - $callOriginalConstructor, - $callOriginalClone, - $callAutoload, - $cloneArguments + $originalClassName, + $methods, + $arguments, + $mockClassName, + $callOriginalConstructor, + $callOriginalClone, + $callAutoload, + $cloneArguments ); return get_class($mock); @@ -1419,35 +1362,32 @@ protected function getMockClass($originalClassName, $methods = [], array $argume /** * Returns a mock object for the specified abstract class with all abstract - * methods of the class mocked. Concrete methods are not mocked by default. - * To mock concrete methods, use the 7th parameter ($mockedMethods). - * - * @param string $originalClassName - * @param array $arguments - * @param string $mockClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param array $mockedMethods - * @param bool $cloneArguments - * + * methods of the class mocked. Concrete methods to mock can be specified with + * the last parameter + * + * @param string $originalClassName + * @param array $arguments + * @param string $mockClassName + * @param boolean $callOriginalConstructor + * @param boolean $callOriginalClone + * @param boolean $callAutoload + * @param array $mockedMethods + * @param boolean $cloneArguments * @return PHPUnit_Framework_MockObject_MockObject - * * @since Method available since Release 3.4.0 - * * @throws PHPUnit_Framework_Exception */ - public function getMockForAbstractClass($originalClassName, array $arguments = [], $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = [], $cloneArguments = false) - { - $mockObject = $this->getMockObjectGenerator()->getMockForAbstractClass( - $originalClassName, - $arguments, - $mockClassName, - $callOriginalConstructor, - $callOriginalClone, - $callAutoload, - $mockedMethods, - $cloneArguments + public function getMockForAbstractClass($originalClassName, array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = array(), $cloneArguments = false) + { + $mockObject = $this->mockObjectGenerator->getMockForAbstractClass( + $originalClassName, + $arguments, + $mockClassName, + $callOriginalConstructor, + $callOriginalClone, + $callAutoload, + $mockedMethods, + $cloneArguments ); $this->mockObjects[] = $mockObject; @@ -1458,42 +1398,39 @@ public function getMockForAbstractClass($originalClassName, array $arguments = [ /** * Returns a mock object based on the given WSDL file. * - * @param string $wsdlFile - * @param string $originalClassName - * @param string $mockClassName - * @param array $methods - * @param bool $callOriginalConstructor - * @param array $options An array of options passed to SOAPClient::_construct - * + * @param string $wsdlFile + * @param string $originalClassName + * @param string $mockClassName + * @param array $methods + * @param boolean $callOriginalConstructor + * @param array $options An array of options passed to SOAPClient::_construct * @return PHPUnit_Framework_MockObject_MockObject - * * @since Method available since Release 3.4.0 */ - protected function getMockFromWsdl($wsdlFile, $originalClassName = '', $mockClassName = '', array $methods = [], $callOriginalConstructor = true, array $options = []) + protected function getMockFromWsdl($wsdlFile, $originalClassName = '', $mockClassName = '', array $methods = array(), $callOriginalConstructor = true, array $options = array()) { if ($originalClassName === '') { - $originalClassName = str_replace('.wsdl', '', basename($wsdlFile)); + $originalClassName = str_replace( + '.wsdl', '', basename($wsdlFile) + ); } if (!class_exists($originalClassName)) { - eval( - $this->getMockObjectGenerator()->generateClassFromWsdl( - $wsdlFile, - $originalClassName, - $methods, - $options + eval( + $this->mockObjectGenerator->generateClassFromWsdl( + $wsdlFile, $originalClassName, $methods, $options ) - ); + ); } return $this->getMock( - $originalClassName, - $methods, - ['', $options], - $mockClassName, - $callOriginalConstructor, - false, - false + $originalClassName, + $methods, + array('', $options), + $mockClassName, + $callOriginalConstructor, + false, + false ); } @@ -1502,32 +1439,29 @@ protected function getMockFromWsdl($wsdlFile, $originalClassName = '', $mockClas * of the trait mocked. Concrete methods to mock can be specified with the * `$mockedMethods` parameter. * - * @param string $traitName - * @param array $arguments - * @param string $mockClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param array $mockedMethods - * @param bool $cloneArguments - * + * @param string $traitName + * @param array $arguments + * @param string $mockClassName + * @param boolean $callOriginalConstructor + * @param boolean $callOriginalClone + * @param boolean $callAutoload + * @param array $mockedMethods + * @param boolean $cloneArguments * @return PHPUnit_Framework_MockObject_MockObject - * * @since Method available since Release 4.0.0 - * * @throws PHPUnit_Framework_Exception */ - public function getMockForTrait($traitName, array $arguments = [], $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = [], $cloneArguments = false) - { - $mockObject = $this->getMockObjectGenerator()->getMockForTrait( - $traitName, - $arguments, - $mockClassName, - $callOriginalConstructor, - $callOriginalClone, - $callAutoload, - $mockedMethods, - $cloneArguments + public function getMockForTrait($traitName, array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = array(), $cloneArguments = false) + { + $mockObject = $this->mockObjectGenerator->getMockForTrait( + $traitName, + $arguments, + $mockClassName, + $callOriginalConstructor, + $callOriginalClone, + $callAutoload, + $mockedMethods, + $cloneArguments ); $this->mockObjects[] = $mockObject; @@ -1538,52 +1472,34 @@ public function getMockForTrait($traitName, array $arguments = [], $mockClassNam /** * Returns an object for the specified trait. * - * @param string $traitName - * @param array $arguments - * @param string $traitClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param bool $cloneArguments - * + * @param string $traitName + * @param array $arguments + * @param string $traitClassName + * @param boolean $callOriginalConstructor + * @param boolean $callOriginalClone + * @param boolean $callAutoload + * @param boolean $cloneArguments * @return object - * * @since Method available since Release 3.6.0 - * * @throws PHPUnit_Framework_Exception */ - protected function getObjectForTrait($traitName, array $arguments = [], $traitClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false) + protected function getObjectForTrait($traitName, array $arguments = array(), $traitClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false) { - return $this->getMockObjectGenerator()->getObjectForTrait( - $traitName, - $arguments, - $traitClassName, - $callOriginalConstructor, - $callOriginalClone, - $callAutoload, - $cloneArguments + return $this->mockObjectGenerator->getObjectForTrait( + $traitName, + $arguments, + $traitClassName, + $callOriginalConstructor, + $callOriginalClone, + $callAutoload, + $cloneArguments ); } - /** - * @param string|null $classOrInterface - * - * @return \Prophecy\Prophecy\ObjectProphecy - * - * @throws \LogicException - * - * @since Method available since Release 4.5.0 - */ - protected function prophesize($classOrInterface = null) - { - return $this->getProphet()->prophesize($classOrInterface); - } - /** * Adds a value to the assertion counter. * - * @param int $count - * + * @param integer $count * @since Method available since Release 3.3.3 */ public function addToAssertionCount($count) @@ -1594,8 +1510,7 @@ public function addToAssertionCount($count) /** * Returns the number of assertions performed by this test. * - * @return int - * + * @return integer * @since Method available since Release 3.3.0 */ public function getNumAssertions() @@ -1604,11 +1519,10 @@ public function getNumAssertions() } /** - * Returns a matcher that matches when the method is executed - * zero or more times. + * Returns a matcher that matches when the method it is evaluated for + * is executed zero or more times. * * @return PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount - * * @since Method available since Release 3.0.0 */ public static function any() @@ -1617,10 +1531,10 @@ public static function any() } /** - * Returns a matcher that matches when the method is never executed. + * Returns a matcher that matches when the method it is evaluated for + * is never executed. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount - * * @since Method available since Release 3.0.0 */ public static function never() @@ -1629,27 +1543,10 @@ public static function never() } /** - * Returns a matcher that matches when the method is executed - * at least N times. - * - * @param int $requiredInvocations - * - * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount - * - * @since Method available since Release 4.2.0 - */ - public static function atLeast($requiredInvocations) - { - return new PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount( - $requiredInvocations - ); - } - - /** - * Returns a matcher that matches when the method is executed at least once. + * Returns a matcher that matches when the method it is evaluated for + * is executed at least once. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce - * * @since Method available since Release 3.0.0 */ public static function atLeastOnce() @@ -1658,10 +1555,10 @@ public static function atLeastOnce() } /** - * Returns a matcher that matches when the method is executed exactly once. + * Returns a matcher that matches when the method it is evaluated for + * is executed exactly once. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount - * * @since Method available since Release 3.0.0 */ public static function once() @@ -1670,13 +1567,11 @@ public static function once() } /** - * Returns a matcher that matches when the method is executed - * exactly $count times. - * - * @param int $count + * Returns a matcher that matches when the method it is evaluated for + * is executed exactly $count times. * + * @param integer $count * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount - * * @since Method available since Release 3.0.0 */ public static function exactly($count) @@ -1685,30 +1580,11 @@ public static function exactly($count) } /** - * Returns a matcher that matches when the method is executed - * at most N times. - * - * @param int $allowedInvocations - * - * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount - * - * @since Method available since Release 4.2.0 - */ - public static function atMost($allowedInvocations) - { - return new PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount( - $allowedInvocations - ); - } - - /** - * Returns a matcher that matches when the method is executed - * at the given index. - * - * @param int $index + * Returns a matcher that matches when the method it is evaluated for + * is invoked at the given $index. * + * @param integer $index * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex - * * @since Method available since Release 3.0.0 */ public static function at($index) @@ -1717,10 +1593,10 @@ public static function at($index) } /** - * @param mixed $value * - * @return PHPUnit_Framework_MockObject_Stub_Return * + * @param mixed $value + * @return PHPUnit_Framework_MockObject_Stub_Return * @since Method available since Release 3.0.0 */ public static function returnValue($value) @@ -1729,10 +1605,10 @@ public static function returnValue($value) } /** - * @param array $valueMap * - * @return PHPUnit_Framework_MockObject_Stub_ReturnValueMap * + * @param array $valueMap + * @return PHPUnit_Framework_MockObject_Stub_ReturnValueMap * @since Method available since Release 3.6.0 */ public static function returnValueMap(array $valueMap) @@ -1741,24 +1617,24 @@ public static function returnValueMap(array $valueMap) } /** - * @param int $argumentIndex * - * @return PHPUnit_Framework_MockObject_Stub_ReturnArgument * + * @param integer $argumentIndex + * @return PHPUnit_Framework_MockObject_Stub_ReturnArgument * @since Method available since Release 3.3.0 */ public static function returnArgument($argumentIndex) { return new PHPUnit_Framework_MockObject_Stub_ReturnArgument( - $argumentIndex + $argumentIndex ); } /** - * @param mixed $callback * - * @return PHPUnit_Framework_MockObject_Stub_ReturnCallback * + * @param mixed $callback + * @return PHPUnit_Framework_MockObject_Stub_ReturnCallback * @since Method available since Release 3.3.0 */ public static function returnCallback($callback) @@ -1772,7 +1648,6 @@ public static function returnCallback($callback) * This method is useful when mocking a fluent interface. * * @return PHPUnit_Framework_MockObject_Stub_ReturnSelf - * * @since Method available since Release 3.6.0 */ public static function returnSelf() @@ -1781,10 +1656,10 @@ public static function returnSelf() } /** - * @param Exception $exception * - * @return PHPUnit_Framework_MockObject_Stub_Exception * + * @param Exception $exception + * @return PHPUnit_Framework_MockObject_Stub_Exception * @since Method available since Release 3.1.0 */ public static function throwException(Exception $exception) @@ -1793,10 +1668,8 @@ public static function throwException(Exception $exception) } /** - * @param mixed $value, ... - * + * @param mixed $value, ... * @return PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls - * * @since Method available since Release 3.0.0 */ public static function onConsecutiveCalls() @@ -1806,13 +1679,55 @@ public static function onConsecutiveCalls() return new PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls($args); } + /** + * @param mixed $data + * @return string + * @since Method available since Release 3.2.1 + */ + protected function dataToString($data) + { + $result = array(); + + set_error_handler(function ($errno, $errstr, $errfile, $errline) { + throw new ErrorException($errstr, $errno, $errno, $errfile, $errline); + }, E_WARNING); + + foreach ($data as $key => $_data) { + try { + // Detect array-recursions by using count + // http://php.net/manual/en/function.count.php + $iRecursiveCheck = count($_data, COUNT_RECURSIVE); + + if (is_array($_data)) { + $result[] = 'array(' . $this->dataToString($_data) . ')'; + } elseif (is_object($_data)) { + $object = new ReflectionObject($_data); + + if ($object->hasMethod('__toString')) { + $result[] = (string) $_data; + } else { + $result[] = get_class($_data); + } + } elseif (is_resource($_data)) { + $result[] = ''; + } else { + $result[] = var_export($_data, true); + } + } catch (ErrorException $e) { + $result[] = '*RECURSION*'; + } + } + + restore_error_handler(); + + return join(', ', $result); + } + /** * Gets the data set description of a TestCase. * - * @param bool $includeData - * + * @param boolean $includeData * @return string - * * @since Method available since Release 3.3.0 */ protected function getDataSetAsString($includeData = true) @@ -1826,10 +1741,8 @@ protected function getDataSetAsString($includeData = true) $buffer .= sprintf(' with data set "%s"', $this->dataName); } - $exporter = new Exporter; - if ($includeData) { - $buffer .= sprintf(' (%s)', $exporter->shortenedRecursiveExport($this->data)); + $buffer .= sprintf(' (%s)', $this->dataToString($this->data)); } } @@ -1868,60 +1781,40 @@ protected function handleDependencies() $passedKeys = array_flip(array_unique($passedKeys)); foreach ($this->dependencies as $dependency) { - $clone = false; - - if (strpos($dependency, 'clone ') === 0) { - $clone = true; - $dependency = substr($dependency, strlen('clone ')); - } elseif (strpos($dependency, '!clone ') === 0) { - $clone = false; - $dependency = substr($dependency, strlen('!clone ')); - } - if (strpos($dependency, '::') === false) { $dependency = $className . '::' . $dependency; } if (!isset($passedKeys[$dependency])) { $this->result->addError( - $this, - new PHPUnit_Framework_SkippedTestError( - sprintf( - 'This test depends on "%s" to pass.', - $dependency - ) - ), - 0 + $this, + new PHPUnit_Framework_SkippedTestError( + sprintf( + 'This test depends on "%s" to pass.', $dependency + ) + ), + 0 ); return false; } if (isset($passed[$dependency])) { - if ($passed[$dependency]['size'] != PHPUnit_Util_Test::UNKNOWN && - $this->getSize() != PHPUnit_Util_Test::UNKNOWN && - $passed[$dependency]['size'] > $this->getSize()) { + if ($passed[$dependency]['size'] > $this->getSize()) { $this->result->addError( - $this, - new PHPUnit_Framework_SkippedTestError( - 'This test depends on a test that is larger than itself.' - ), - 0 + $this, + new PHPUnit_Framework_SkippedTestError( + 'This test depends on a test that is larger than itself.' + ), + 0 ); return false; } - if ($clone) { - $deepCopy = new DeepCopy; - $deepCopy->skipUncloneable(false); - - $this->dependencyInput[$dependency] = $deepCopy->copy($passed[$dependency]['result']); - } else { - $this->dependencyInput[$dependency] = $passed[$dependency]['result']; - } + $this->dependencyInput[] = $passed[$dependency]['result']; } else { - $this->dependencyInput[$dependency] = null; + $this->dependencyInput[] = null; } } } @@ -1941,6 +1834,7 @@ public static function setUpBeforeClass() /** * Sets up the fixture, for example, open a network connection. * This method is called before a test is executed. + * */ protected function setUp() { @@ -1990,31 +1884,19 @@ public static function tearDownAfterClass() /** * This method is called when a test method did not execute successfully. * - * @param Exception|Throwable $e - * + * @param Exception $e * @since Method available since Release 3.4.0 - * - * @throws Exception|Throwable + * @throws Exception */ - protected function onNotSuccessfulTest($e) + protected function onNotSuccessfulTest(Exception $e) { - $expected = PHP_MAJOR_VERSION >= 7 ? 'Throwable' : 'Exception'; - - if ($e instanceof $expected) { - throw $e; - } - - throw PHPUnit_Util_InvalidArgumentHelper::factory( - 1, - 'Throwable or Exception' - ); + throw $e; } /** * Performs custom preparations on the process isolation template. * * @param Text_Template $template - * * @since Method available since Release 3.4.0 */ protected function prepareTemplate(Text_Template $template) @@ -2022,275 +1904,20 @@ protected function prepareTemplate(Text_Template $template) } /** - * Get the mock object generator, creating it if it doesn't exist. - * - * @return PHPUnit_Framework_MockObject_Generator - */ - protected function getMockObjectGenerator() - { - if (null === $this->mockObjectGenerator) { - $this->mockObjectGenerator = new PHPUnit_Framework_MockObject_Generator; - } - - return $this->mockObjectGenerator; - } - - /** - * @since Method available since Release 4.2.0 - */ - private function startOutputBuffering() - { - while (!defined('PHPUNIT_TESTSUITE') && ob_get_level() > 0) { - ob_end_clean(); - } - - ob_start(); - - $this->outputBufferingActive = true; - $this->outputBufferingLevel = ob_get_level(); - } - - /** - * @since Method available since Release 4.2.0 + * @internal + * @param string */ - private function stopOutputBuffering() - { - if (ob_get_level() != $this->outputBufferingLevel) { - while (ob_get_level() > 0) { - ob_end_clean(); - } - - throw new PHPUnit_Framework_RiskyTestError( - 'Test code or tested code did not (only) close its own output buffers' - ); - } - - $output = ob_get_contents(); - - if ($this->outputCallback === false) { - $this->output = $output; - } else { - $this->output = call_user_func_array( - $this->outputCallback, - [$output] - ); - } - - ob_end_clean(); - - $this->outputBufferingActive = false; - $this->outputBufferingLevel = ob_get_level(); - } - - private function snapshotGlobalState() - { - $backupGlobals = $this->backupGlobals === null || $this->backupGlobals === true; - - if ($this->runTestInSeparateProcess || $this->inIsolation || - (!$backupGlobals && !$this->backupStaticAttributes)) { - return; - } - - $this->snapshot = $this->createGlobalStateSnapshot($backupGlobals); - } - - private function restoreGlobalState() + public function hookBeforeMethod($name) { - if (!$this->snapshot instanceof Snapshot) { - return; - } - - $backupGlobals = $this->backupGlobals === null || $this->backupGlobals === true; - - if ($this->beStrictAboutChangesToGlobalState) { - try { - $this->compareGlobalStateSnapshots( - $this->snapshot, - $this->createGlobalStateSnapshot($backupGlobals) - ); - } - - catch (PHPUnit_Framework_RiskyTestError $rte) { - // Intentionally left empty - } - } - - $restorer = new Restorer; - - if ($backupGlobals) { - $restorer->restoreGlobalVariables($this->snapshot); - } - - if ($this->backupStaticAttributes) { - $restorer->restoreStaticAttributes($this->snapshot); - } - - $this->snapshot = null; - - if (isset($rte)) { - throw $rte; - } + $this->beforeMethods[] = $name; } /** - * @param bool $backupGlobals - * - * @return Snapshot + * @internal + * @param string */ - private function createGlobalStateSnapshot($backupGlobals) + public function hookAfterMethod($name) { - $blacklist = new Blacklist; - - foreach ($this->backupGlobalsBlacklist as $globalVariable) { - $blacklist->addGlobalVariable($globalVariable); - } - - if (!defined('PHPUNIT_TESTSUITE')) { - $blacklist->addClassNamePrefix('PHPUnit'); - $blacklist->addClassNamePrefix('File_Iterator'); - $blacklist->addClassNamePrefix('PHP_CodeCoverage'); - $blacklist->addClassNamePrefix('PHP_Invoker'); - $blacklist->addClassNamePrefix('PHP_Timer'); - $blacklist->addClassNamePrefix('PHP_Token'); - $blacklist->addClassNamePrefix('Symfony'); - $blacklist->addClassNamePrefix('Text_Template'); - $blacklist->addClassNamePrefix('Doctrine\Instantiator'); - - foreach ($this->backupStaticAttributesBlacklist as $class => $attributes) { - foreach ($attributes as $attribute) { - $blacklist->addStaticAttribute($class, $attribute); - } - } - } - - return new Snapshot( - $blacklist, - $backupGlobals, - $this->backupStaticAttributes, - false, - false, - false, - false, - false, - false, - false - ); - } - - /** - * @param Snapshot $before - * @param Snapshot $after - * - * @throws PHPUnit_Framework_RiskyTestError - */ - private function compareGlobalStateSnapshots(Snapshot $before, Snapshot $after) - { - $backupGlobals = $this->backupGlobals === null || $this->backupGlobals === true; - - if ($backupGlobals) { - $this->compareGlobalStateSnapshotPart( - $before->globalVariables(), - $after->globalVariables(), - "--- Global variables before the test\n+++ Global variables after the test\n" - ); - - $this->compareGlobalStateSnapshotPart( - $before->superGlobalVariables(), - $after->superGlobalVariables(), - "--- Super-global variables before the test\n+++ Super-global variables after the test\n" - ); - } - - if ($this->backupStaticAttributes) { - $this->compareGlobalStateSnapshotPart( - $before->staticAttributes(), - $after->staticAttributes(), - "--- Static attributes before the test\n+++ Static attributes after the test\n" - ); - } - } - - /** - * @param array $before - * @param array $after - * @param string $header - * - * @throws PHPUnit_Framework_RiskyTestError - */ - private function compareGlobalStateSnapshotPart(array $before, array $after, $header) - { - if ($before != $after) { - $differ = new Differ($header); - $exporter = new Exporter; - - $diff = $differ->diff( - $exporter->export($before), - $exporter->export($after) - ); - - throw new PHPUnit_Framework_RiskyTestError( - $diff - ); - } - } - - /** - * @return Prophecy\Prophet - * - * @since Method available since Release 4.5.0 - */ - private function getProphet() - { - if ($this->prophet === null) { - $this->prophet = new Prophet; - } - - return $this->prophet; - } - - /** - * @param PHPUnit_Framework_MockObject_MockObject $mock - * - * @return bool - * - * @since Method available since Release 5.0.0 - */ - private function shouldInvocationMockerBeReset(PHPUnit_Framework_MockObject_MockObject $mock) - { - if ($this->testResult === $mock) { - return false; - } - - if (is_array($this->testResult)) { - foreach ($this->testResult as $testResult) { - if ($testResult === $mock) { - return false; - } - } - } - - foreach ($this->dependencyInput as $dependencyInput) { - if ($dependencyInput === $mock) { - return false; - } - } - - return true; - } - - /** - * @param array $testArguments - * - * @since Method available since Release 5.0.0 - */ - private function registerMockObjectsFromTestArguments(array $testArguments) - { - foreach ($testArguments as $testArgument) { - if ($testArgument instanceof PHPUnit_Framework_MockObject_MockObject) { - $this->mockObjects[] = $testArgument; - } elseif (is_array($testArgument)) { - $this->registerMockObjectsFromTestArguments($testArgument); - } - } + $this->afterMethods[] = $name; } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/TestFailure.php b/tests/vendor/phpunit/phpunit/src/Framework/TestFailure.php index ef3d9cbd..777b7307 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/TestFailure.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/TestFailure.php @@ -1,32 +1,68 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * A TestFailure collects a failed test together with the caught exception. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Framework_TestFailure { /** - * @var string - */ - private $testName; - - /** - * @var PHPUnit_Framework_Test|null + * @var PHPUnit_Framework_Test */ protected $failedTest; /** - * @var Exception + * @var Exception */ protected $thrownException; @@ -38,14 +74,7 @@ class PHPUnit_Framework_TestFailure */ public function __construct(PHPUnit_Framework_Test $failedTest, Exception $thrownException) { - if ($failedTest instanceof PHPUnit_Framework_SelfDescribing) { - $this->testName = $failedTest->toString(); - } else { - $this->testName = get_class($failedTest); - } - if (!$failedTest instanceof PHPUnit_Framework_TestCase || !$failedTest->isInIsolation()) { - $this->failedTest = $failedTest; - } + $this->failedTest = $failedTest; $this->thrownException = $thrownException; } @@ -57,9 +86,10 @@ public function __construct(PHPUnit_Framework_Test $failedTest, Exception $throw public function toString() { return sprintf( - '%s: %s', - $this->testName, - $this->thrownException->getMessage() + '%s: %s', + + $this->failedTest->toString(), + $this->thrownException->getMessage() ); } @@ -67,7 +97,6 @@ public function toString() * Returns a description for the thrown exception. * * @return string - * * @since Method available since Release 3.4.0 */ public function getExceptionAsString() @@ -78,10 +107,8 @@ public function getExceptionAsString() /** * Returns a description for an exception. * - * @param Exception $e - * + * @param Exception $e * @return string - * * @since Method available since Release 3.2.0 */ public static function exceptionToString(Exception $e) @@ -90,7 +117,7 @@ public static function exceptionToString(Exception $e) $buffer = $e->toString(); if ($e instanceof PHPUnit_Framework_ExpectationFailedException && $e->getComparisonFailure()) { - $buffer = $buffer . $e->getComparisonFailure()->getDiff(); + $buffer = $buffer . "\n" . $e->getComparisonFailure()->getDiff(); } if (!empty($buffer)) { @@ -98,8 +125,6 @@ public static function exceptionToString(Exception $e) } } elseif ($e instanceof PHPUnit_Framework_Error) { $buffer = $e->getMessage() . "\n"; - } elseif ($e instanceof PHPUnit_Framework_ExceptionWrapper) { - $buffer = $e->getClassname() . ': ' . $e->getMessage() . "\n"; } else { $buffer = get_class($e) . ': ' . $e->getMessage() . "\n"; } @@ -108,26 +133,9 @@ public static function exceptionToString(Exception $e) } /** - * Returns the name of the failing test (including data set, if any). - * - * @return string - * - * @since Method available since Release 4.3.0 - */ - public function getTestName() - { - return $this->testName; - } - - /** - * Returns the failing test. - * - * Note: The test object is not set when the test is executed in process - * isolation. - * - * @see PHPUnit_Framework_Exception + * Gets the failed test. * - * @return PHPUnit_Framework_Test|null + * @return PHPUnit_Framework_Test */ public function failedTest() { @@ -158,7 +166,7 @@ public function exceptionMessage() * Returns true if the thrown exception * is of type AssertionFailedError. * - * @return bool + * @return boolean */ public function isFailure() { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/TestListener.php b/tests/vendor/phpunit/phpunit/src/Framework/TestListener.php index 6baab555..8a4a604b 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/TestListener.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/TestListener.php @@ -1,16 +1,57 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * A Listener for test progress. * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ * @since Interface available since Release 2.0.0 */ interface PHPUnit_Framework_TestListener @@ -48,7 +89,6 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 4.0.0 */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time); @@ -59,7 +99,6 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time); * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 3.0.0 */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time); @@ -68,7 +107,6 @@ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time * A test suite started. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite); @@ -77,7 +115,6 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite); * A test suite ended. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite); diff --git a/tests/vendor/phpunit/phpunit/src/Framework/TestResult.php b/tests/vendor/phpunit/phpunit/src/Framework/TestResult.php index 43f00bf2..a186d2a3 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/TestResult.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/TestResult.php @@ -1,59 +1,105 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ -use SebastianBergmann\ResourceOperations\ResourceOperations; +use SebastianBergmann\Environment\Runtime; /** * A TestResult collects the results of executing a test case. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Framework_TestResult implements Countable { /** * @var array */ - protected $passed = []; + protected $passed = array(); /** * @var array */ - protected $errors = []; + protected $errors = array(); /** * @var array */ - protected $failures = []; + protected $deprecatedFeatures = array(); /** * @var array */ - protected $notImplemented = []; + protected $failures = array(); /** * @var array */ - protected $risky = []; + protected $notImplemented = array(); /** * @var array */ - protected $skipped = []; + protected $risky = array(); /** * @var array */ - protected $listeners = []; + protected $skipped = array(); /** - * @var int + * @var array + */ + protected $listeners = array(); + + /** + * @var integer */ protected $runTests = 0; @@ -75,84 +121,74 @@ class PHPUnit_Framework_TestResult implements Countable protected $codeCoverage; /** - * @var bool + * @var boolean */ protected $convertErrorsToExceptions = true; /** - * @var bool + * @var boolean */ protected $stop = false; /** - * @var bool + * @var boolean */ protected $stopOnError = false; /** - * @var bool + * @var boolean */ protected $stopOnFailure = false; /** - * @var bool + * @var boolean */ protected $beStrictAboutTestsThatDoNotTestAnything = false; /** - * @var bool + * @var boolean */ protected $beStrictAboutOutputDuringTests = false; /** - * @var bool + * @var boolean */ - protected $beStrictAboutTodoAnnotatedTests = false; + protected $beStrictAboutTestSize = false; /** - * @var bool + * @var boolean */ - protected $beStrictAboutResourceUsageDuringSmallTests = false; - - /** - * @var bool - */ - protected $enforceTimeLimit = false; - - /** - * @var int - */ - protected $timeoutForSmallTests = 1; + protected $stopOnRisky = false; /** - * @var int + * @var boolean */ - protected $timeoutForMediumTests = 10; + protected $stopOnIncomplete = false; /** - * @var int + * @var boolean */ - protected $timeoutForLargeTests = 60; + protected $stopOnSkipped = false; /** - * @var bool + * @var boolean */ - protected $stopOnRisky = false; + protected $lastTestFailed = false; /** - * @var bool + * @var integer */ - protected $stopOnIncomplete = false; + protected $timeoutForSmallTests = 1; /** - * @var bool + * @var integer */ - protected $stopOnSkipped = false; + protected $timeoutForMediumTests = 10; /** - * @var bool + * @var integer */ - protected $lastTestFailed = false; + protected $timeoutForLargeTests = 60; /** * Registers a TestListener. @@ -202,15 +238,21 @@ public function flushListeners() public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { if ($e instanceof PHPUnit_Framework_RiskyTest) { - $this->risky[] = new PHPUnit_Framework_TestFailure($test, $e); - $notifyMethod = 'addRiskyTest'; + $this->risky[] = new PHPUnit_Framework_TestFailure( + $test, $e + ); + + $notifyMethod = 'addRiskyTest'; if ($this->stopOnRisky) { $this->stop(); } } elseif ($e instanceof PHPUnit_Framework_IncompleteTest) { - $this->notImplemented[] = new PHPUnit_Framework_TestFailure($test, $e); - $notifyMethod = 'addIncompleteTest'; + $this->notImplemented[] = new PHPUnit_Framework_TestFailure( + $test, $e + ); + + $notifyMethod = 'addIncompleteTest'; if ($this->stopOnIncomplete) { $this->stop(); @@ -249,17 +291,22 @@ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) */ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { - if ($e instanceof PHPUnit_Framework_RiskyTest || - $e instanceof PHPUnit_Framework_OutputError) { - $this->risky[] = new PHPUnit_Framework_TestFailure($test, $e); - $notifyMethod = 'addRiskyTest'; + if ($e instanceof PHPUnit_Framework_RiskyTest) { + $this->risky[] = new PHPUnit_Framework_TestFailure( + $test, $e + ); + + $notifyMethod = 'addRiskyTest'; if ($this->stopOnRisky) { $this->stop(); } } elseif ($e instanceof PHPUnit_Framework_IncompleteTest) { - $this->notImplemented[] = new PHPUnit_Framework_TestFailure($test, $e); - $notifyMethod = 'addIncompleteTest'; + $this->notImplemented[] = new PHPUnit_Framework_TestFailure( + $test, $e + ); + + $notifyMethod = 'addIncompleteTest'; if ($this->stopOnIncomplete) { $this->stop(); @@ -288,11 +335,20 @@ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_Asser $this->time += $time; } + /** + * Adds a deprecated feature notice to the list of deprecated features used during run + * + * @param PHPUnit_Util_DeprecatedFeature $deprecatedFeature + */ + public function addDeprecatedFeature(PHPUnit_Util_DeprecatedFeature $deprecatedFeature) + { + $this->deprecatedFeatures[] = $deprecatedFeature; + } + /** * Informs the result that a testsuite will be started. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) @@ -310,7 +366,6 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) * Informs the result that a testsuite was completed. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) @@ -349,15 +404,14 @@ public function endTest(PHPUnit_Framework_Test $test, $time) if (!$this->lastTestFailed && $test instanceof PHPUnit_Framework_TestCase) { $class = get_class($test); - $key = $class . '::' . $test->getName(); + $key = $class . '::' . $test->getName(); - $this->passed[$key] = [ - 'result' => $test->getResult(), - 'size' => PHPUnit_Util_Test::getSize( - $class, - $test->getName(false) - ) - ]; + $this->passed[$key] = array( + 'result' => $test->getResult(), + 'size' => PHPUnit_Util_Test::getSize( + $class, $test->getName(false) + ) + ); $this->time += $time; } @@ -366,8 +420,7 @@ public function endTest(PHPUnit_Framework_Test $test, $time) /** * Returns true if no risky test occurred. * - * @return bool - * + * @return boolean * @since Method available since Release 4.0.0 */ public function allHarmless() @@ -378,8 +431,7 @@ public function allHarmless() /** * Gets the number of risky tests. * - * @return int - * + * @return integer * @since Method available since Release 4.0.0 */ public function riskyCount() @@ -390,7 +442,7 @@ public function riskyCount() /** * Returns true if no incomplete test occurred. * - * @return bool + * @return boolean */ public function allCompletelyImplemented() { @@ -400,7 +452,7 @@ public function allCompletelyImplemented() /** * Gets the number of incomplete tests. * - * @return int + * @return integer */ public function notImplementedCount() { @@ -411,7 +463,6 @@ public function notImplementedCount() * Returns an Enumeration for the risky tests. * * @return array - * * @since Method available since Release 4.0.0 */ public function risky() @@ -432,8 +483,7 @@ public function notImplemented() /** * Returns true if no test has been skipped. * - * @return bool - * + * @return boolean * @since Method available since Release 3.0.0 */ public function noneSkipped() @@ -444,8 +494,7 @@ public function noneSkipped() /** * Gets the number of skipped tests. * - * @return int - * + * @return integer * @since Method available since Release 3.0.0 */ public function skippedCount() @@ -457,7 +506,6 @@ public function skippedCount() * Returns an Enumeration for the skipped tests. * * @return array - * * @since Method available since Release 3.0.0 */ public function skipped() @@ -468,7 +516,7 @@ public function skipped() /** * Gets the number of detected errors. * - * @return int + * @return integer */ public function errorCount() { @@ -485,10 +533,32 @@ public function errors() return $this->errors; } + /** + * Returns an Enumeration for the deprecated features used. + * + * @return array + * @since Method available since Release 3.5.7 + */ + public function deprecatedFeatures() + { + return $this->deprecatedFeatures; + } + + /** + * Returns an Enumeration for the deprecated features used. + * + * @return array + * @since Method available since Release 3.5.7 + */ + public function deprecatedFeaturesCount() + { + return count($this->deprecatedFeatures); + } + /** * Gets the number of detected failures. * - * @return int + * @return integer */ public function failureCount() { @@ -509,7 +579,6 @@ public function failures() * Returns the names of the tests that have passed. * * @return array - * * @since Method available since Release 3.4.0 */ public function passed() @@ -521,7 +590,6 @@ public function passed() * Returns the (top) test suite. * * @return PHPUnit_Framework_TestSuite - * * @since Method available since Release 3.0.0 */ public function topTestSuite() @@ -532,8 +600,7 @@ public function topTestSuite() /** * Returns whether code coverage information should be collected. * - * @return bool If code coverage should be collected - * + * @return boolean If code coverage should be collected * @since Method available since Release 3.2.0 */ public function getCollectCodeCoverageInformation() @@ -562,8 +629,8 @@ public function run(PHPUnit_Framework_Test $test) if ($this->convertErrorsToExceptions) { $oldErrorHandler = set_error_handler( - ['PHPUnit_Util_ErrorHandler', 'handleError'], - E_ALL | E_STRICT + array('PHPUnit_Util_ErrorHandler', 'handleError'), + E_ALL | E_STRICT ); if ($oldErrorHandler === null) { @@ -573,46 +640,54 @@ public function run(PHPUnit_Framework_Test $test) } } - $collectCodeCoverage = $this->codeCoverage !== null && - !$test instanceof PHPUnit_Extensions_SeleniumTestCase && - !$test instanceof PHPUnit_Framework_Warning; + $runtime = new Runtime; + + $canCollectCodeCoverage = $runtime->canCollectCodeCoverage(); + $collectCodeCoverage = $canCollectCodeCoverage && + $this->codeCoverage !== null && + !$test instanceof PHPUnit_Extensions_SeleniumTestCase && + !$test instanceof PHPUnit_Framework_Warning; if ($collectCodeCoverage) { - $this->codeCoverage->start($test); - } + // We need to blacklist test source files when no whitelist is used. + if (!$this->codeCoverage->filter()->hasWhitelist()) { + $classes = $this->getHierarchy(get_class($test), true); - $monitorFunctions = $this->beStrictAboutResourceUsageDuringSmallTests && - !$test instanceof PHPUnit_Framework_Warning && - $test->getSize() == PHPUnit_Util_Test::SMALL && - function_exists('xdebug_start_function_monitor'); + foreach ($classes as $class) { + $this->codeCoverage->filter()->addFileToBlacklist( + $class->getFileName() + ); + } + } - if ($monitorFunctions) { - xdebug_start_function_monitor(ResourceOperations::getFunctions()); + $this->codeCoverage->start($test); } PHP_Timer::start(); try { if (!$test instanceof PHPUnit_Framework_Warning && - $test->getSize() != PHPUnit_Util_Test::UNKNOWN && - $this->enforceTimeLimit && + $this->beStrictAboutTestSize && extension_loaded('pcntl') && class_exists('PHP_Invoker')) { switch ($test->getSize()) { - case PHPUnit_Util_Test::SMALL: + case PHPUnit_Util_Test::SMALL: { $_timeout = $this->timeoutForSmallTests; - break; + } + break; - case PHPUnit_Util_Test::MEDIUM: + case PHPUnit_Util_Test::MEDIUM: { $_timeout = $this->timeoutForMediumTests; - break; + } + break; - case PHPUnit_Util_Test::LARGE: + case PHPUnit_Util_Test::LARGE: { $_timeout = $this->timeoutForLargeTests; - break; + } + break; } $invoker = new PHP_Invoker; - $invoker->invoke([$test, 'runBare'], [], $_timeout); + $invoker->invoke(array($test, 'runBare'), array(), $_timeout); } else { $test->runBare(); } @@ -626,42 +701,13 @@ function_exists('xdebug_start_function_monitor'); } elseif ($e instanceof PHPUnit_Framework_SkippedTestError) { $skipped = true; } - } catch (PHPUnit_Framework_Exception $e) { - $error = true; - } catch (Throwable $e) { - $e = new PHPUnit_Framework_ExceptionWrapper($e); - $error = true; } catch (Exception $e) { - $e = new PHPUnit_Framework_ExceptionWrapper($e); $error = true; } $time = PHP_Timer::stop(); $test->addToAssertionCount(PHPUnit_Framework_Assert::getCount()); - if ($monitorFunctions) { - $blacklist = new PHPUnit_Util_Blacklist; - $functions = xdebug_get_monitored_functions(); - xdebug_stop_function_monitor(); - - foreach ($functions as $function) { - if (!$blacklist->isBlacklisted($function['filename'])) { - $this->addFailure( - $test, - new PHPUnit_Framework_RiskyTestError( - sprintf( - '%s() used in %s:%s', - $function['function'], - $function['filename'], - $function['lineno'] - ) - ), - $time - ); - } - } - } - if ($this->beStrictAboutTestsThatDoNotTestAnything && $test->getNumAssertions() == 0) { $risky = true; @@ -669,43 +715,39 @@ function_exists('xdebug_start_function_monitor'); if ($collectCodeCoverage) { $append = !$risky && !$incomplete && !$skipped; - $linesToBeCovered = []; - $linesToBeUsed = []; + $linesToBeCovered = array(); + $linesToBeUsed = array(); if ($append && $test instanceof PHPUnit_Framework_TestCase) { $linesToBeCovered = PHPUnit_Util_Test::getLinesToBeCovered( - get_class($test), - $test->getName(false) + get_class($test), $test->getName() ); $linesToBeUsed = PHPUnit_Util_Test::getLinesToBeUsed( - get_class($test), - $test->getName(false) + get_class($test), $test->getName() ); } try { $this->codeCoverage->stop( - $append, - $linesToBeCovered, - $linesToBeUsed + $append, $linesToBeCovered, $linesToBeUsed ); - } catch (PHP_CodeCoverage_UnintentionallyCoveredCodeException $cce) { + } catch (PHP_CodeCoverage_Exception_UnintentionallyCoveredCode $cce) { $this->addFailure( - $test, - new PHPUnit_Framework_UnintentionallyCoveredCodeError( - 'This test executed code that is not listed as code to be covered or used:' . - PHP_EOL . $cce->getMessage() - ), - $time + $test, + new PHPUnit_Framework_UnintentionallyCoveredCodeError( + 'This test executed code that is not listed as code to be covered or used:' . + PHP_EOL . $cce->getMessage() + ), + $time ); } catch (PHPUnit_Framework_InvalidCoversTargetException $cce) { $this->addFailure( - $test, - new PHPUnit_Framework_InvalidCoversTargetError( - $cce->getMessage() - ), - $time + $test, + new PHPUnit_Framework_InvalidCoversTargetError( + $cce->getMessage() + ), + $time ); } catch (PHP_CodeCoverage_Exception $cce) { $error = true; @@ -727,35 +769,23 @@ function_exists('xdebug_start_function_monitor'); } elseif ($this->beStrictAboutTestsThatDoNotTestAnything && $test->getNumAssertions() == 0) { $this->addFailure( - $test, - new PHPUnit_Framework_RiskyTestError( - 'This test did not perform any assertions' - ), - $time + $test, + new PHPUnit_Framework_RiskyTestError( + 'This test did not perform any assertions' + ), + $time ); } elseif ($this->beStrictAboutOutputDuringTests && $test->hasOutput()) { $this->addFailure( - $test, - new PHPUnit_Framework_OutputError( - sprintf( - 'This test printed output: %s', - $test->getActualOutput() - ) - ), - $time + $test, + new PHPUnit_Framework_OutputError( + sprintf( + 'This test printed output: %s', + $test->getActualOutput() + ) + ), + $time ); - } elseif ($this->beStrictAboutTodoAnnotatedTests && $test instanceof PHPUnit_Framework_TestCase) { - $annotations = $test->getAnnotations(); - - if (isset($annotations['method']['todo'])) { - $this->addFailure( - $test, - new PHPUnit_Framework_RiskyTestError( - 'Test method is annotated with @todo' - ), - $time - ); - } } $this->endTest($test, $time); @@ -764,7 +794,7 @@ function_exists('xdebug_start_function_monitor'); /** * Gets the number of run tests. * - * @return int + * @return integer */ public function count() { @@ -774,7 +804,7 @@ public function count() /** * Checks whether the test run should stop. * - * @return bool + * @return boolean */ public function shouldStop() { @@ -783,6 +813,7 @@ public function shouldStop() /** * Marks that the test run should stop. + * */ public function stop() { @@ -793,7 +824,6 @@ public function stop() * Returns the PHP_CodeCoverage object. * * @return PHP_CodeCoverage - * * @since Method available since Release 3.5.0 */ public function getCodeCoverage() @@ -802,11 +832,10 @@ public function getCodeCoverage() } /** - * Sets the PHP_CodeCoverage object. - * - * @param PHP_CodeCoverage $codeCoverage + * Returns the PHP_CodeCoverage object. * - * @since Method available since Release 3.6.0 + * @return PHP_CodeCoverage + * @since Method available since Release 3.6.0 */ public function setCodeCoverage(PHP_CodeCoverage $codeCoverage) { @@ -816,10 +845,8 @@ public function setCodeCoverage(PHP_CodeCoverage $codeCoverage) /** * Enables or disables the error-to-exception conversion. * - * @param bool $flag - * + * @param boolean $flag * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.2.14 */ public function convertErrorsToExceptions($flag) @@ -834,8 +861,7 @@ public function convertErrorsToExceptions($flag) /** * Returns the error-to-exception conversion setting. * - * @return bool - * + * @return boolean * @since Method available since Release 3.4.0 */ public function getConvertErrorsToExceptions() @@ -846,10 +872,8 @@ public function getConvertErrorsToExceptions() /** * Enables or disables the stopping when an error occurs. * - * @param bool $flag - * + * @param boolean $flag * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.5.0 */ public function stopOnError($flag) @@ -864,10 +888,8 @@ public function stopOnError($flag) /** * Enables or disables the stopping when a failure occurs. * - * @param bool $flag - * + * @param boolean $flag * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.1.0 */ public function stopOnFailure($flag) @@ -880,10 +902,8 @@ public function stopOnFailure($flag) } /** - * @param bool $flag - * + * @param boolean $flag * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 4.0.0 */ public function beStrictAboutTestsThatDoNotTestAnything($flag) @@ -896,8 +916,7 @@ public function beStrictAboutTestsThatDoNotTestAnything($flag) } /** - * @return bool - * + * @return boolean * @since Method available since Release 4.0.0 */ public function isStrictAboutTestsThatDoNotTestAnything() @@ -906,10 +925,8 @@ public function isStrictAboutTestsThatDoNotTestAnything() } /** - * @param bool $flag - * + * @param boolean $flag * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 4.0.0 */ public function beStrictAboutOutputDuringTests($flag) @@ -922,8 +939,7 @@ public function beStrictAboutOutputDuringTests($flag) } /** - * @return bool - * + * @return boolean * @since Method available since Release 4.0.0 */ public function isStrictAboutOutputDuringTests() @@ -932,90 +948,33 @@ public function isStrictAboutOutputDuringTests() } /** - * @param bool $flag - * - * @throws PHPUnit_Framework_Exception - * - * @since Method available since Release 5.0.0 - */ - public function beStrictAboutResourceUsageDuringSmallTests($flag) - { - if (!is_bool($flag)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); - } - - $this->beStrictAboutResourceUsageDuringSmallTests = $flag; - } - - /** - * @return bool - * - * @since Method available since Release 5.0.0 - */ - public function isStrictAboutResourceUsageDuringSmallTests() - { - return $this->beStrictAboutResourceUsageDuringSmallTests; - } - - /** - * @param bool $flag - * + * @param boolean $flag * @throws PHPUnit_Framework_Exception - * - * @since Method available since Release 5.0.0 - */ - public function enforceTimeLimit($flag) - { - if (!is_bool($flag)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); - } - - $this->enforceTimeLimit = $flag; - } - - /** - * @return bool - * - * @since Method available since Release 5.0.0 - */ - public function enforcesTimeLimit() - { - return $this->enforceTimeLimit; - } - - /** - * @param bool $flag - * - * @throws PHPUnit_Framework_Exception - * - * @since Method available since Release 4.2.0 + * @since Method available since Release 4.0.0 */ - public function beStrictAboutTodoAnnotatedTests($flag) + public function beStrictAboutTestSize($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } - $this->beStrictAboutTodoAnnotatedTests = $flag; + $this->beStrictAboutTestSize = $flag; } /** - * @return bool - * - * @since Method available since Release 4.2.0 + * @return boolean + * @since Method available since Release 4.0.0 */ - public function isStrictAboutTodoAnnotatedTests() + public function isStrictAboutTestSize() { - return $this->beStrictAboutTodoAnnotatedTests; + return $this->beStrictAboutTestSize; } /** * Enables or disables the stopping for risky tests. * - * @param bool $flag - * + * @param boolean $flag * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 4.0.0 */ public function stopOnRisky($flag) @@ -1030,10 +989,8 @@ public function stopOnRisky($flag) /** * Enables or disables the stopping for incomplete tests. * - * @param bool $flag - * + * @param boolean $flag * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.5.0 */ public function stopOnIncomplete($flag) @@ -1048,10 +1005,8 @@ public function stopOnIncomplete($flag) /** * Enables or disables the stopping for skipped tests. * - * @param bool $flag - * + * @param boolean $flag * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.1.0 */ public function stopOnSkipped($flag) @@ -1076,7 +1031,7 @@ public function time() /** * Returns whether the entire test was successful or not. * - * @return bool + * @return boolean */ public function wasSuccessful() { @@ -1086,10 +1041,8 @@ public function wasSuccessful() /** * Sets the timeout for small tests. * - * @param int $timeout - * + * @param integer $timeout * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.6.0 */ public function setTimeoutForSmallTests($timeout) @@ -1104,10 +1057,8 @@ public function setTimeoutForSmallTests($timeout) /** * Sets the timeout for medium tests. * - * @param int $timeout - * + * @param integer $timeout * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.6.0 */ public function setTimeoutForMediumTests($timeout) @@ -1122,10 +1073,8 @@ public function setTimeoutForMediumTests($timeout) /** * Sets the timeout for large tests. * - * @param int $timeout - * + * @param integer $timeout * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.6.0 */ public function setTimeoutForLargeTests($timeout) @@ -1140,17 +1089,16 @@ public function setTimeoutForLargeTests($timeout) /** * Returns the class hierarchy for a given class. * - * @param string $className - * @param bool $asReflectionObjects - * + * @param string $className + * @param boolean $asReflectionObjects * @return array */ protected function getHierarchy($className, $asReflectionObjects = false) { if ($asReflectionObjects) { - $classes = [new ReflectionClass($className)]; + $classes = array(new ReflectionClass($className)); } else { - $classes = [$className]; + $classes = array($className); } $done = false; @@ -1158,10 +1106,10 @@ protected function getHierarchy($className, $asReflectionObjects = false) while (!$done) { if ($asReflectionObjects) { $class = new ReflectionClass( - $classes[count($classes) - 1]->getName() + $classes[count($classes)-1]->getName() ); } else { - $class = new ReflectionClass($classes[count($classes) - 1]); + $class = new ReflectionClass($classes[count($classes)-1]); } $parent = $class->getParentClass(); diff --git a/tests/vendor/phpunit/phpunit/src/Framework/TestSuite.php b/tests/vendor/phpunit/phpunit/src/Framework/TestSuite.php index ece127d7..8f70d5fa 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/TestSuite.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/TestSuite.php @@ -1,11 +1,46 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** @@ -36,83 +71,89 @@ * This constructor creates a suite with all the methods starting with * "test" that take no arguments. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Framework_TestSuite implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing, IteratorAggregate { - /** - * Last count of tests in this suite. - * - * @var int|null - */ - private $cachedNumTests; - /** * Enable or disable the backup and restoration of the $GLOBALS array. * - * @var bool + * @var boolean */ protected $backupGlobals = null; /** * Enable or disable the backup and restoration of static attributes. * - * @var bool + * @var boolean */ protected $backupStaticAttributes = null; - /** - * @var bool - */ - private $beStrictAboutChangesToGlobalState = null; - - /** - * @var bool - */ protected $runTestInSeparateProcess = false; /** * The name of the test suite. * - * @var string + * @var string */ protected $name = ''; /** * The test groups of the test suite. * - * @var array + * @var array */ - protected $groups = []; + protected $groups = array(); /** * The tests in the test suite. * - * @var array + * @var array */ - protected $tests = []; + protected $tests = array(); /** * The number of tests in the test suite. * - * @var int + * @var integer */ protected $numTests = -1; /** - * @var bool + * @var boolean */ protected $testCase = false; + /** + * @var PHPUnit_Runner_Filter_Factory + */ + private $iteratorFilter = null; + /** * @var array */ - protected $foundClasses = []; + private $beforeClassMethods = array(); /** - * @var PHPUnit_Runner_Filter_Factory + * @var array */ - private $iteratorFilter = null; + private $beforeMethods = array(); + + /** + * @var array + */ + private $afterClassMethods = array(); + + /** + * @var array + */ + private $afterMethods = array(); /** * Constructs a new TestSuite: @@ -131,9 +172,8 @@ class PHPUnit_Framework_TestSuite implements PHPUnit_Framework_Test, PHPUnit_Fra * name of an existing class) or constructs an empty TestSuite * with the given name. * - * @param mixed $theClass - * @param string $name - * + * @param mixed $theClass + * @param string $name * @throws PHPUnit_Framework_Exception */ public function __construct($theClass = '', $name = '') @@ -165,7 +205,7 @@ class_exists($theClass, false)) { if (!$theClass->isSubclassOf('PHPUnit_Framework_TestCase')) { throw new PHPUnit_Framework_Exception( - 'Class "' . $theClass->name . '" does not extend PHPUnit_Framework_TestCase.' + 'Class "' . $theClass->name . '" does not extend PHPUnit_Framework_TestCase.' ); } @@ -180,29 +220,48 @@ class_exists($theClass, false)) { if ($constructor !== null && !$constructor->isPublic()) { $this->addTest( - self::warning( - sprintf( - 'Class "%s" has no public constructor.', - $theClass->getName() - ) + self::warning( + sprintf( + 'Class "%s" has no public constructor.', + + $theClass->getName() ) + ) ); return; } foreach ($theClass->getMethods() as $method) { + $this->addBeforeClassMethod($theClass, $method); + $this->addBeforeMethod($theClass, $method); $this->addTestMethod($theClass, $method); + $this->addAfterMethod($theClass, $method); + $this->addAfterClassMethod($theClass, $method); + } + + foreach ($this->tests as $test) { + foreach ($this->beforeMethods as $method) { + if (method_exists($test, 'hookBeforeMethod')) { + $test->hookBeforeMethod($method); + } + } + foreach ($this->afterMethods as $method) { + if (method_exists($test, 'hookAfterMethod')) { + $test->hookAfterMethod($method); + } + } } if (empty($this->tests)) { $this->addTest( - self::warning( - sprintf( - 'No tests found in class "%s".', - $theClass->getName() - ) + self::warning( + sprintf( + 'No tests found in class "%s".', + + $theClass->getName() ) + ) ); } @@ -225,7 +284,7 @@ public function toString() * @param PHPUnit_Framework_Test $test * @param array $groups */ - public function addTest(PHPUnit_Framework_Test $test, $groups = []) + public function addTest(PHPUnit_Framework_Test $test, $groups = array()) { $class = new ReflectionClass($test); @@ -233,18 +292,18 @@ public function addTest(PHPUnit_Framework_Test $test, $groups = []) $this->tests[] = $test; $this->numTests = -1; - if ($test instanceof self && + if ($test instanceof PHPUnit_Framework_TestSuite && empty($groups)) { $groups = $test->getGroups(); } if (empty($groups)) { - $groups = ['default']; + $groups = array('__nogroup__'); } foreach ($groups as $group) { if (!isset($this->groups[$group])) { - $this->groups[$group] = [$test]; + $this->groups[$group] = array($test); } else { $this->groups[$group][] = $test; } @@ -255,8 +314,7 @@ public function addTest(PHPUnit_Framework_Test $test, $groups = []) /** * Adds the tests from the given class to the suite. * - * @param mixed $testClass - * + * @param mixed $testClass * @throws PHPUnit_Framework_Exception */ public function addTestSuite($testClass) @@ -267,12 +325,11 @@ public function addTestSuite($testClass) if (!is_object($testClass)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 1, - 'class name or object' + 1, 'class name or object' ); } - if ($testClass instanceof self) { + if ($testClass instanceof PHPUnit_Framework_TestSuite) { $this->addTest($testClass); } elseif ($testClass instanceof ReflectionClass) { $suiteMethod = false; @@ -280,12 +337,12 @@ public function addTestSuite($testClass) if (!$testClass->isAbstract()) { if ($testClass->hasMethod(PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME)) { $method = $testClass->getMethod( - PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME + PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME ); if ($method->isStatic()) { $this->addTest( - $method->invoke(null, $testClass->getName()) + $method->invoke(null, $testClass->getName()) ); $suiteMethod = true; @@ -294,7 +351,7 @@ public function addTestSuite($testClass) } if (!$suiteMethod && !$testClass->isAbstract()) { - $this->addTest(new self($testClass)); + $this->addTest(new PHPUnit_Framework_TestSuite($testClass)); } } else { throw new PHPUnit_Framework_Exception; @@ -309,13 +366,15 @@ public function addTestSuite($testClass) * added, a PHPUnit_Framework_Warning will be created instead, * leaving the current test run untouched. * - * @param string $filename - * + * @param string $filename + * @param array $phptOptions Array with ini settings for the php instance + * run, key being the name if the setting, + * value the ini value. * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 2.3.0 + * @author Stefano F. Rausch */ - public function addTestFile($filename) + public function addTestFile($filename, $phptOptions = array()) { if (!is_string($filename)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); @@ -323,43 +382,23 @@ public function addTestFile($filename) if (file_exists($filename) && substr($filename, -5) == '.phpt') { $this->addTest( - new PHPUnit_Extensions_PhptTestCase($filename) + new PHPUnit_Extensions_PhptTestCase($filename, $phptOptions) ); return; } - // The given file may contain further stub classes in addition to the - // test class itself. Figure out the actual test class. $classes = get_declared_classes(); $filename = PHPUnit_Util_Fileloader::checkAndLoad($filename); - $newClasses = array_diff(get_declared_classes(), $classes); - - // The diff is empty in case a parent class (with test methods) is added - // AFTER a child class that inherited from it. To account for that case, - // cumulate all discovered classes, so the parent class may be found in - // a later invocation. - if ($newClasses) { - // On the assumption that test classes are defined first in files, - // process discovered classes in approximate LIFO order, so as to - // avoid unnecessary reflection. - $this->foundClasses = array_merge($newClasses, $this->foundClasses); - } - - // The test class's name must match the filename, either in full, or as - // a PEAR/PSR-0 prefixed shortname ('NameSpace_ShortName'), or as a - // PSR-1 local shortname ('NameSpace\ShortName'). The comparison must be - // anchored to prevent false-positive matches (e.g., 'OtherShortName'). - $shortname = basename($filename, '.php'); - $shortnameRegEx = '/(?:^|_|\\\\)' . preg_quote($shortname, '/') . '$/'; + $newClasses = array_values(array_diff(get_declared_classes(), $classes)); + $baseName = str_replace('.php', '', basename($filename)); - foreach ($this->foundClasses as $i => $className) { - if (preg_match($shortnameRegEx, $className)) { + foreach ($newClasses as $className) { + if (substr($className, 0 - strlen($baseName)) == $baseName) { $class = new ReflectionClass($className); if ($class->getFileName() == $filename) { - $newClasses = [$className]; - unset($this->foundClasses[$i]); + $newClasses = array($className); break; } } @@ -371,7 +410,7 @@ public function addTestFile($filename) if (!$class->isAbstract()) { if ($class->hasMethod(PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME)) { $method = $class->getMethod( - PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME + PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME ); if ($method->isStatic()) { @@ -389,10 +428,8 @@ public function addTestFile($filename) /** * Wrapper for addTestFile() that adds multiple test files. * - * @param array|Iterator $filenames - * + * @param array|Iterator $filenames * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 2.3.0 */ public function addTestFiles($filenames) @@ -400,8 +437,7 @@ public function addTestFiles($filenames) if (!(is_array($filenames) || (is_object($filenames) && $filenames instanceof Iterator))) { throw PHPUnit_Util_InvalidArgumentHelper::factory( - 1, - 'array or iterator' + 1, 'array or iterator' ); } @@ -413,31 +449,23 @@ public function addTestFiles($filenames) /** * Counts the number of test cases that will be run by this test. * - * @param bool $preferCache Indicates if cache is preferred. - * - * @return int + * @return integer */ - public function count($preferCache = false) + public function count() { - if ($preferCache && $this->cachedNumTests != null) { - $numTests = $this->cachedNumTests; - } else { - $numTests = 0; - foreach ($this as $test) { - $numTests += count($test); - } - $this->cachedNumTests = $numTests; + $numTests = 0; + + foreach ($this as $test) { + $numTests += count($test); } return $numTests; } /** - * @param ReflectionClass $theClass - * @param string $name - * + * @param ReflectionClass $theClass + * @param string $name * @return PHPUnit_Framework_Test - * * @throws PHPUnit_Framework_Exception */ public static function createTest(ReflectionClass $theClass, $name) @@ -446,24 +474,19 @@ public static function createTest(ReflectionClass $theClass, $name) if (!$theClass->isInstantiable()) { return self::warning( - sprintf('Cannot instantiate class "%s".', $className) + sprintf('Cannot instantiate class "%s".', $className) ); } - $backupSettings = PHPUnit_Util_Test::getBackupSettings( - $className, - $name - ); - - $preserveGlobalState = PHPUnit_Util_Test::getPreserveGlobalStateSettings( - $className, - $name - ); - + $backupSettings = PHPUnit_Util_Test::getBackupSettings( + $className, $name + ); + $preserveGlobalState = PHPUnit_Util_Test::getPreserveGlobalStateSettings( + $className, $name + ); $runTestInSeparateProcess = PHPUnit_Util_Test::getProcessIsolationSettings( - $className, - $name - ); + $className, $name + ); $constructor = $theClass->getConstructor(); @@ -473,18 +496,19 @@ public static function createTest(ReflectionClass $theClass, $name) // TestCase() or TestCase($name) if (count($parameters) < 2) { $test = new $className; - } // TestCase($name, $data) + } + + // TestCase($name, $data) else { try { $data = PHPUnit_Util_Test::getProvidedData( - $className, - $name + $className, $name ); - } catch (PHPUnit_Framework_IncompleteTestError $e) { + } catch (Exception $e) { $message = sprintf( - 'Test for %s::%s marked incomplete by data provider', - $className, - $name + 'The data provider specified for %s::%s is invalid.', + $className, + $name ); $_message = $e->getMessage(); @@ -493,63 +517,27 @@ public static function createTest(ReflectionClass $theClass, $name) $message .= "\n" . $_message; } - $data = self::incompleteTest($className, $name, $message); - } catch (PHPUnit_Framework_SkippedTestError $e) { - $message = sprintf( - 'Test for %s::%s skipped by data provider', - $className, - $name - ); - - $_message = $e->getMessage(); - - if (!empty($_message)) { - $message .= "\n" . $_message; - } - - $data = self::skipTest($className, $name, $message); - } catch (Throwable $_t) { - $t = $_t; - } catch (Exception $_t) { - $t = $_t; - } - - if (isset($t)) { - $message = sprintf( - 'The data provider specified for %s::%s is invalid.', - $className, - $name - ); - - $_message = $t->getMessage(); - - if (!empty($_message)) { - $message .= "\n" . $_message; - } - $data = self::warning($message); } // Test method with @dataProvider. if (isset($data)) { $test = new PHPUnit_Framework_TestSuite_DataProvider( - $className . '::' . $name + $className . '::' . $name ); if (empty($data)) { $data = self::warning( - sprintf( - 'No tests found in suite "%s".', - $test->getName() - ) + sprintf( + 'No tests found in suite "%s".', + $test->getName() + ) ); } $groups = PHPUnit_Util_Test::getGroups($className, $name); - if ($data instanceof PHPUnit_Framework_Warning || - $data instanceof PHPUnit_Framework_SkippedTestCase || - $data instanceof PHPUnit_Framework_IncompleteTestCase) { + if ($data instanceof PHPUnit_Framework_Warning) { $test->addTest($data, $groups); } else { foreach ($data as $_dataName => $_data) { @@ -565,13 +553,13 @@ public static function createTest(ReflectionClass $theClass, $name) if ($backupSettings['backupGlobals'] !== null) { $_test->setBackupGlobals( - $backupSettings['backupGlobals'] + $backupSettings['backupGlobals'] ); } if ($backupSettings['backupStaticAttributes'] !== null) { $_test->setBackupStaticAttributes( - $backupSettings['backupStaticAttributes'] + $backupSettings['backupStaticAttributes'] ); } @@ -605,7 +593,7 @@ public static function createTest(ReflectionClass $theClass, $name) if ($backupSettings['backupStaticAttributes'] !== null) { $test->setBackupStaticAttributes( - $backupSettings['backupStaticAttributes'] + $backupSettings['backupStaticAttributes'] ); } } @@ -637,7 +625,6 @@ public function getName() * Returns the test groups of the suite. * * @return array - * * @since Method available since Release 3.2.0 */ public function getGroups() @@ -654,7 +641,6 @@ public function getGroupDetails() * Set tests groups of the test case * * @param array $groups - * * @since Method available since Release 4.0.0 */ public function setGroupDetails(array $groups) @@ -665,9 +651,13 @@ public function setGroupDetails(array $groups) /** * Runs the tests and collects their result in a TestResult. * - * @param PHPUnit_Framework_TestResult $result - * + * @param PHPUnit_Framework_TestResult $result + * @param mixed $filter + * @param array $groups + * @param array $excludeGroups + * @param boolean $processIsolation * @return PHPUnit_Framework_TestResult + * @throws PHPUnit_Framework_Exception */ public function run(PHPUnit_Framework_TestResult $result = null) { @@ -679,55 +669,40 @@ public function run(PHPUnit_Framework_TestResult $result = null) return $result; } - $hookMethods = PHPUnit_Util_Test::getHookMethods($this->name); - $result->startTestSuite($this); try { $this->setUp(); - foreach ($hookMethods['beforeClass'] as $beforeClassMethod) { - if ($this->testCase === true && - class_exists($this->name, false) && - method_exists($this->name, $beforeClassMethod)) { - if ($missingRequirements = PHPUnit_Util_Test::getMissingRequirements($this->name, $beforeClassMethod)) { - $this->markTestSuiteSkipped(implode(PHP_EOL, $missingRequirements)); - } + if ($this->testCase && + // Some extensions use test names that are not classes; + // The method_exists() triggers an autoload call that causes issues with die()ing autoloaders. + class_exists($this->name, false) && + method_exists($this->name, 'setUpBeforeClass')) { + call_user_func(array($this->name, 'setUpBeforeClass')); + } - call_user_func([$this->name, $beforeClassMethod]); + if (class_exists($this->name, false)) { + $class = $this->name; + foreach ($this->beforeClassMethods as $method) { + $class::$method(); } } } catch (PHPUnit_Framework_SkippedTestSuiteError $e) { $numTests = count($this); for ($i = 0; $i < $numTests; $i++) { - $result->startTest($this); $result->addFailure($this, $e, 0); - $result->endTest($this, 0); } - $this->tearDown(); - $result->endTestSuite($this); - return $result; - } catch (Throwable $_t) { - $t = $_t; - } catch (Exception $_t) { - $t = $_t; - } - - if (isset($t)) { + } catch (Exception $e) { $numTests = count($this); for ($i = 0; $i < $numTests; $i++) { - $result->startTest($this); - $result->addError($this, $t, 0); - $result->endTest($this, 0); + $result->addError($this, $e, 0); } - $this->tearDown(); - $result->endTestSuite($this); - return $result; } @@ -737,19 +712,28 @@ class_exists($this->name, false) && } if ($test instanceof PHPUnit_Framework_TestCase || - $test instanceof self) { - $test->setbeStrictAboutChangesToGlobalState($this->beStrictAboutChangesToGlobalState); + $test instanceof PHPUnit_Framework_TestSuite) { $test->setBackupGlobals($this->backupGlobals); $test->setBackupStaticAttributes($this->backupStaticAttributes); $test->setRunTestInSeparateProcess($this->runTestInSeparateProcess); } + $test->run($result); } - foreach ($hookMethods['afterClass'] as $afterClassMethod) { - if ($this->testCase === true && class_exists($this->name, false) && method_exists($this->name, $afterClassMethod)) { - call_user_func([$this->name, $afterClassMethod]); + if ($this->testCase && + // Some extensions use test names that are not classes; + // The method_exists() triggers an autoload call that causes issues with die()ing autoloaders. + class_exists($this->name, false) && + method_exists($this->name, 'tearDownAfterClass')) { + call_user_func(array($this->name, 'tearDownAfterClass')); + } + + if (class_exists($this->name, false)) { + $class = $this->name; + foreach ($this->afterClassMethods as $method) { + $class::$method(); } } @@ -761,10 +745,8 @@ class_exists($this->name, false) && } /** - * @param bool $runTestInSeparateProcess - * - * @throws PHPUnit_Framework_Exception - * + * @param boolean $runTestInSeparateProcess + * @throws InvalidArgumentException * @since Method available since Release 3.7.0 */ public function setRunTestInSeparateProcess($runTestInSeparateProcess) @@ -780,7 +762,6 @@ public function setRunTestInSeparateProcess($runTestInSeparateProcess) * Runs a test. * * @deprecated - * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_TestResult $result */ @@ -802,8 +783,7 @@ public function setName($name) /** * Returns the test at the given index. * - * @param int - * + * @param integer * @return PHPUnit_Framework_Test */ public function testAt($index) @@ -829,7 +809,6 @@ public function tests() * Set tests of the test suite * * @param array $tests - * * @since Method available since Release 4.0.0 */ public function setTests(array $tests) @@ -840,10 +819,8 @@ public function setTests(array $tests) /** * Mark the test suite as skipped. * - * @param string $message - * + * @param string $message * @throws PHPUnit_Framework_SkippedTestSuiteError - * * @since Method available since Release 3.0.0 */ public function markTestSuiteSkipped($message = '') @@ -857,9 +834,8 @@ public function markTestSuiteSkipped($message = '') */ protected function addTestMethod(ReflectionClass $class, ReflectionMethod $method) { - if (!$this->isTestMethod($method)) { + if (!$this->isTestMethod($method)) return; - } $name = $method->getName(); @@ -870,9 +846,9 @@ protected function addTestMethod(ReflectionClass $class, ReflectionMethod $metho 'Test method "%s" in test class "%s" is not public.', $name, $class->getName() + ) ) - ) - ); + ); return; } @@ -883,19 +859,83 @@ protected function addTestMethod(ReflectionClass $class, ReflectionMethod $metho $test instanceof PHPUnit_Framework_TestSuite_DataProvider) { $test->setDependencies( PHPUnit_Util_Test::getDependencies($class->getName(), $name) + ); + } + + $this->addTest($test, PHPUnit_Util_Test::getGroups( + $class->getName(), $name) ); } - $this->addTest( - $test, - PHPUnit_Util_Test::getGroups($class->getName(), $name) - ); + /** + * @param ReflectionClass $class + * @param ReflectionMethod $method + */ + protected function addBeforeClassMethod(ReflectionClass $class, ReflectionMethod $method) + { + $name = $method->getName(); + + if ($this->isBeforeClassMethod($method)) { + $this->ensureIsStatic($method); + $this->beforeClassMethods[] = $name; + } } /** + * @param ReflectionClass $class + * @param ReflectionMethod $method + */ + protected function addBeforeMethod(ReflectionClass $class, ReflectionMethod $method) + { + $name = $method->getName(); + + if ($this->isBeforeMethod($method)) { + $this->beforeMethods[] = $name; + } + } + + /** + * @param ReflectionClass $class + * @param ReflectionMethod $method + */ + protected function addAfterClassMethod(ReflectionClass $class, ReflectionMethod $method) + { + $name = $method->getName(); + + if ($this->isAfterClassMethod($method)) { + $this->ensureIsStatic($method); + $this->afterClassMethods[] = $name; + } + } + + /** + * @param ReflectionClass $class * @param ReflectionMethod $method - * - * @return bool + */ + protected function addAfterMethod(ReflectionClass $class, ReflectionMethod $method) + { + $name = $method->getName(); + + if ($this->isAfterMethod($method)) { + $this->afterMethods[] = $name; + } + } + + private function ensureIsStatic(ReflectionMethod $method) + { + if (!$method->isStatic()) { + throw new PHPUnit_Framework_Exception(sprintf( + '%s::%s() must be static.', + + $method->getDeclaringClass()->getName(), + $method->getName() + )); + } + } + + /** + * @param ReflectionMethod $method + * @return boolean */ public static function isTestMethod(ReflectionMethod $method) { @@ -912,58 +952,52 @@ public static function isTestMethod(ReflectionMethod $method) } /** - * @param string $message - * - * @return PHPUnit_Framework_Warning + * @param ReflectionMethod $method + * @return boolean */ - protected static function warning($message) + public static function isBeforeClassMethod(ReflectionMethod $method) { - return new PHPUnit_Framework_Warning($message); + return strpos($method->getDocComment(), '@beforeClass') !== false; } /** - * @param string $class - * @param string $methodName - * @param string $message - * - * @return PHPUnit_Framework_SkippedTestCase - * - * @since Method available since Release 4.3.0 + * @param ReflectionMethod $method + * @return boolean */ - protected static function skipTest($class, $methodName, $message) + public static function isBeforeMethod(ReflectionMethod $method) { - return new PHPUnit_Framework_SkippedTestCase($class, $methodName, $message); + return preg_match('/@before\b/', $method->getDocComment()); } /** - * @param string $class - * @param string $methodName - * @param string $message - * - * @return PHPUnit_Framework_IncompleteTestCase - * - * @since Method available since Release 4.3.0 + * @param ReflectionMethod $method + * @return boolean */ - protected static function incompleteTest($class, $methodName, $message) + public static function isAfterClassMethod(ReflectionMethod $method) { - return new PHPUnit_Framework_IncompleteTestCase($class, $methodName, $message); + return strpos($method->getDocComment(), '@afterClass') !== false; } /** - * @param bool $beStrictAboutChangesToGlobalState - * - * @since Method available since Release 4.6.0 + * @param ReflectionMethod $method + * @return boolean */ - public function setbeStrictAboutChangesToGlobalState($beStrictAboutChangesToGlobalState) + public static function isAfterMethod(ReflectionMethod $method) { - if (is_null($this->beStrictAboutChangesToGlobalState) && is_bool($beStrictAboutChangesToGlobalState)) { - $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; - } + return preg_match('/@after\b/', $method->getDocComment()); } /** - * @param bool $backupGlobals - * + * @param string $message + * @return PHPUnit_Framework_Warning + */ + protected static function warning($message) + { + return new PHPUnit_Framework_Warning($message); + } + + /** + * @param boolean $backupGlobals * @since Method available since Release 3.3.0 */ public function setBackupGlobals($backupGlobals) @@ -974,8 +1008,7 @@ public function setBackupGlobals($backupGlobals) } /** - * @param bool $backupStaticAttributes - * + * @param boolean $backupStaticAttributes * @since Method available since Release 3.4.0 */ public function setBackupStaticAttributes($backupStaticAttributes) @@ -990,7 +1023,6 @@ public function setBackupStaticAttributes($backupStaticAttributes) * Returns an iterator for this test suite. * * @return RecursiveIteratorIterator - * * @since Method available since Release 3.1.0 */ public function getIterator() @@ -1008,7 +1040,7 @@ public function injectFilter(PHPUnit_Runner_Filter_Factory $filter) { $this->iteratorFilter = $filter; foreach ($this as $test) { - if ($test instanceof self) { + if ($test instanceof PHPUnit_Framework_TestSuite) { $test->injectFilter($filter); } } diff --git a/tests/vendor/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php b/tests/vendor/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php index 61062035..a8e28a94 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php @@ -1,15 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework_TestSuite + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.4.0 */ /** - * @since Class available since Release 3.4.0 + * + * + * @package PHPUnit + * @subpackage Framework_TestSuite + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.4.0 */ class PHPUnit_Framework_TestSuite_DataProvider extends PHPUnit_Framework_TestSuite { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php b/tests/vendor/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php index b24c041a..6e0954d5 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php @@ -1,18 +1,59 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a test test that unintentionally covers code. * - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ class PHPUnit_Framework_UnintentionallyCoveredCodeError extends PHPUnit_Framework_RiskyTestError { diff --git a/tests/vendor/phpunit/phpunit/src/Framework/Warning.php b/tests/vendor/phpunit/phpunit/src/Framework/Warning.php index 8c7cef60..0fcb9316 100644 --- a/tests/vendor/phpunit/phpunit/src/Framework/Warning.php +++ b/tests/vendor/phpunit/phpunit/src/Framework/Warning.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * A warning. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Framework + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Framework_Warning extends PHPUnit_Framework_TestCase { @@ -21,22 +62,22 @@ class PHPUnit_Framework_Warning extends PHPUnit_Framework_TestCase protected $message = ''; /** - * @var bool + * @var boolean */ protected $backupGlobals = false; /** - * @var bool + * @var boolean */ protected $backupStaticAttributes = false; /** - * @var bool + * @var boolean */ protected $runTestInSeparateProcess = false; /** - * @var bool + * @var boolean */ protected $useErrorHandler = false; @@ -59,7 +100,6 @@ protected function runTest() /** * @return string - * * @since Method available since Release 3.0.0 */ public function getMessage() @@ -71,7 +111,6 @@ public function getMessage() * Returns a string representation of the test case. * * @return string - * * @since Method available since Release 3.4.0 */ public function toString() diff --git a/tests/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php b/tests/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php index 15805dc7..d92b200f 100644 --- a/tests/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php +++ b/tests/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * Base class for all test runners. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ abstract class PHPUnit_Runner_BaseTestRunner { @@ -38,10 +79,9 @@ public function getLoader() * This is a template method, subclasses override * the runFailed() and clearStatus() methods. * - * @param string $suiteClassName - * @param string $suiteClassFile - * @param mixed $suffixes - * + * @param string $suiteClassName + * @param string $suiteClassFile + * @param mixed $suffixes * @return PHPUnit_Framework_Test */ public function getTest($suiteClassName, $suiteClassFile = '', $suffixes = '') @@ -50,8 +90,7 @@ public function getTest($suiteClassName, $suiteClassFile = '', $suffixes = '') !is_file($suiteClassName . '.php') && empty($suiteClassFile)) { $facade = new File_Iterator_Facade; $files = $facade->getFilesAsArray( - $suiteClassName, - $suffixes + $suiteClassName, $suffixes ); $suite = new PHPUnit_Framework_TestSuite($suiteClassName); @@ -62,13 +101,12 @@ public function getTest($suiteClassName, $suiteClassFile = '', $suffixes = '') try { $testClass = $this->loadSuiteClass( - $suiteClassName, - $suiteClassFile + $suiteClassName, $suiteClassFile ); } catch (PHPUnit_Framework_Exception $e) { $this->runFailed($e->getMessage()); - return; + return null; } try { @@ -76,23 +114,24 @@ public function getTest($suiteClassName, $suiteClassFile = '', $suffixes = '') if (!$suiteMethod->isStatic()) { $this->runFailed( - 'suite() method must be static.' + 'suite() method must be static.' ); - return; + return null; } try { $test = $suiteMethod->invoke(null, $testClass->getName()); } catch (ReflectionException $e) { $this->runFailed( - sprintf( - "Failed to invoke suite() method.\n%s", - $e->getMessage() - ) + sprintf( + "Failed to invoke suite() method.\n%s", + + $e->getMessage() + ) ); - return; + return null; } } catch (ReflectionException $e) { try { @@ -111,20 +150,24 @@ public function getTest($suiteClassName, $suiteClassFile = '', $suffixes = '') /** * Returns the loaded ReflectionClass for a suite name. * - * @param string $suiteClassName - * @param string $suiteClassFile - * + * @param string $suiteClassName + * @param string $suiteClassFile * @return ReflectionClass */ protected function loadSuiteClass($suiteClassName, $suiteClassFile = '') { $loader = $this->getLoader(); - return $loader->load($suiteClassName, $suiteClassFile); + if ($loader instanceof PHPUnit_Runner_StandardTestSuiteLoader) { + return $loader->load($suiteClassName, $suiteClassFile); + } else { + return $loader->load($suiteClassName, $suiteClassFile); + } } /** * Clears the status message. + * */ protected function clearStatus() { diff --git a/tests/vendor/phpunit/phpunit/src/Runner/Exception.php b/tests/vendor/phpunit/phpunit/src/Runner/Exception.php index 4b239afe..bce04aec 100644 --- a/tests/vendor/phpunit/phpunit/src/Runner/Exception.php +++ b/tests/vendor/phpunit/phpunit/src/Runner/Exception.php @@ -1,15 +1,56 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ class PHPUnit_Runner_Exception extends RuntimeException implements PHPUnit_Exception { diff --git a/tests/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php b/tests/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php index 11c74277..0b2abf1f 100644 --- a/tests/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php +++ b/tests/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php @@ -1,22 +1,63 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ class PHPUnit_Runner_Filter_Factory { /** * @var array */ - private $filters = []; + private $filters = array(); /** * @param ReflectionClass $filter @@ -26,14 +67,14 @@ public function addFilter(ReflectionClass $filter, $args) { if (!$filter->isSubclassOf('RecursiveFilterIterator')) { throw new InvalidArgumentException( - sprintf( - 'Class "%s" does not extend RecursiveFilterIterator', - $filter->name - ) + sprintf( + 'Class "%s" does not extend RecursiveFilterIterator', + $filter->name + ) ); } - $this->filters[] = [$filter, $args]; + $this->filters[] = array($filter, $args); } /** @@ -43,7 +84,7 @@ public function factory(Iterator $iterator, PHPUnit_Framework_TestSuite $suite) { foreach ($this->filters as $filter) { list($class, $args) = $filter; - $iterator = $class->newInstance($iterator, $args, $suite); + $iterator = $class->newInstance($iterator, $args, $suite); } return $iterator; diff --git a/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group.php b/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group.php index 3d21964d..ee097ce7 100644 --- a/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group.php +++ b/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group.php @@ -1,22 +1,63 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ abstract class PHPUnit_Runner_Filter_GroupFilterIterator extends RecursiveFilterIterator { /** * @var array */ - protected $groupTests = []; + protected $groupTests = array(); /** * @param RecursiveIterator $iterator @@ -30,10 +71,8 @@ public function __construct(RecursiveIterator $iterator, array $groups, PHPUnit_ foreach ($suite->getGroupDetails() as $group => $tests) { if (in_array($group, $groups)) { $testHashes = array_map( - function ($test) { - return spl_object_hash($test); - }, - $tests + function ($test) { return spl_object_hash($test); }, + $tests ); $this->groupTests = array_merge($this->groupTests, $testHashes); @@ -42,7 +81,7 @@ function ($test) { } /** - * @return bool + * @return boolean */ public function accept() { diff --git a/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php b/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php index 9fe4b690..e2a22d06 100644 --- a/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php +++ b/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php @@ -1,15 +1,56 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ class PHPUnit_Runner_Filter_Group_Exclude extends PHPUnit_Runner_Filter_GroupFilterIterator { diff --git a/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group/Include.php b/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group/Include.php index 49d2506e..ce8cd826 100644 --- a/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group/Include.php +++ b/tests/vendor/phpunit/phpunit/src/Runner/Filter/Group/Include.php @@ -1,15 +1,56 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ class PHPUnit_Runner_Filter_Group_Include extends PHPUnit_Runner_Filter_GroupFilterIterator { diff --git a/tests/vendor/phpunit/phpunit/src/Runner/Filter/Test.php b/tests/vendor/phpunit/phpunit/src/Runner/Filter/Test.php index cbd28b37..106b8a98 100644 --- a/tests/vendor/phpunit/phpunit/src/Runner/Filter/Test.php +++ b/tests/vendor/phpunit/phpunit/src/Runner/Filter/Test.php @@ -1,15 +1,56 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ class PHPUnit_Runner_Filter_Test extends RecursiveFilterIterator { @@ -19,11 +60,11 @@ class PHPUnit_Runner_Filter_Test extends RecursiveFilterIterator protected $filter = null; /** - * @var int + * @var integer */ protected $filterMin; /** - * @var int + * @var integer */ protected $filterMax; @@ -42,43 +83,45 @@ public function __construct(RecursiveIterator $iterator, $filter) */ protected function setFilter($filter) { - if (PHPUnit_Util_Regex::pregMatchSafe($filter, '') === false) { + if ($filter[0] != substr($filter, -1) || + preg_match('/^[a-zA-Z0-9_]/', $filter)) { + // Handles: // * testAssertEqualsSucceeds#4 // * testAssertEqualsSucceeds#4-8 if (preg_match('/^(.*?)#(\d+)(?:-(\d+))?$/', $filter, $matches)) { if (isset($matches[3]) && $matches[2] < $matches[3]) { $filter = sprintf( - '%s.*with data set #(\d+)$', - $matches[1] + '%s.*with data set #(\d+)$', + $matches[1] ); $this->filterMin = $matches[2]; $this->filterMax = $matches[3]; } else { $filter = sprintf( - '%s.*with data set #%s$', - $matches[1], - $matches[2] + '%s.*with data set #%s$', + $matches[1], + $matches[2] ); } - } // Handles: + } + + // Handles: // * testDetermineJsonError@JSON_ERROR_NONE // * testDetermineJsonError@JSON.* elseif (preg_match('/^(.*?)@(.+)$/', $filter, $matches)) { $filter = sprintf( - '%s.*with data set "%s"$', - $matches[1], - $matches[2] + '%s.*with data set "%s"$', + $matches[1], + $matches[2] ); } // Escape delimiters in regular expression. Do NOT use preg_quote, // to keep magic characters. $filter = sprintf('/%s/', str_replace( - '/', - '\\/', - $filter + '/', '\\/', $filter )); } @@ -86,7 +129,7 @@ protected function setFilter($filter) } /** - * @return bool + * @return boolean */ public function accept() { @@ -99,7 +142,7 @@ public function accept() $tmp = PHPUnit_Util_Test::describe($test, false); if ($tmp[0] != '') { - $name = implode('::', $tmp); + $name = join('::', $tmp); } else { $name = $tmp[1]; } @@ -107,7 +150,7 @@ public function accept() $accepted = preg_match($this->filter, $name, $matches); if ($accepted && isset($this->filterMax)) { - $set = end($matches); + $set = end($matches); $accepted = $set >= $this->filterMin && $set <= $this->filterMax; } diff --git a/tests/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php b/tests/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php index 3338a73c..9de65a8c 100644 --- a/tests/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php +++ b/tests/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php @@ -1,26 +1,65 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * The standard test suite loader. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Runner_StandardTestSuiteLoader implements PHPUnit_Runner_TestSuiteLoader { /** - * @param string $suiteClassName - * @param string $suiteClassFile - * + * @param string $suiteClassName + * @param string $suiteClassFile * @return ReflectionClass - * * @throws PHPUnit_Framework_Exception */ public function load($suiteClassName, $suiteClassFile = '') @@ -29,7 +68,7 @@ public function load($suiteClassName, $suiteClassFile = '') if (empty($suiteClassFile)) { $suiteClassFile = PHPUnit_Util_Filesystem::classNameToFilename( - $suiteClassName + $suiteClassName ); } @@ -39,7 +78,7 @@ public function load($suiteClassName, $suiteClassFile = '') $filename = PHPUnit_Util_Fileloader::checkAndLoad($suiteClassFile); $loadedClasses = array_values( - array_diff(get_declared_classes(), $loadedClasses) + array_diff(get_declared_classes(), $loadedClasses) ); } @@ -98,17 +137,17 @@ public function load($suiteClassName, $suiteClassFile = '') } throw new PHPUnit_Framework_Exception( - sprintf( - "Class '%s' could not be found in '%s'.", - $suiteClassName, - $suiteClassFile - ) + sprintf( + "Class '%s' could not be found in '%s'.", + + $suiteClassName, + $suiteClassFile + ) ); } /** - * @param ReflectionClass $aClass - * + * @param ReflectionClass $aClass * @return ReflectionClass */ public function reload(ReflectionClass $aClass) diff --git a/tests/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php b/tests/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php index 3eea6e09..37001c6f 100644 --- a/tests/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php +++ b/tests/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php @@ -1,31 +1,70 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * An interface to define how a test suite should be loaded. * + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ * @since Interface available since Release 2.0.0 */ interface PHPUnit_Runner_TestSuiteLoader { /** - * @param string $suiteClassName - * @param string $suiteClassFile - * + * @param string $suiteClassName + * @param string $suiteClassFile * @return ReflectionClass */ public function load($suiteClassName, $suiteClassFile = ''); /** - * @param ReflectionClass $aClass - * + * @param ReflectionClass $aClass * @return ReflectionClass */ public function reload(ReflectionClass $aClass); diff --git a/tests/vendor/phpunit/phpunit/src/Runner/Version.php b/tests/vendor/phpunit/phpunit/src/Runner/Version.php index 1feaf88f..465c6827 100644 --- a/tests/vendor/phpunit/phpunit/src/Runner/Version.php +++ b/tests/vendor/phpunit/phpunit/src/Runner/Version.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * This class defines the current version of PHPUnit. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Runner + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Runner_Version { @@ -30,34 +71,23 @@ public static function id() } if (self::$version === null) { - $version = new SebastianBergmann\Version('5.0.8', dirname(dirname(__DIR__))); + $version = new SebastianBergmann\Version('4.0.0', __DIR__); self::$version = $version->getVersion(); } return self::$version; } - /** - * @return string - * - * @since Method available since Release 4.8.13 - */ - public static function series() - { - return implode('.', array_slice(explode('.', self::id()), 0, 2)); - } - /** * @return string */ public static function getVersionString() { - return 'PHPUnit ' . self::id() . ' by Sebastian Bergmann and contributors.'; + return 'PHPUnit ' . self::id() . ' by Sebastian Bergmann.'; } /** * @return string - * * @since Method available since Release 4.0.0 */ public static function getReleaseChannel() diff --git a/tests/vendor/phpunit/phpunit/src/TextUI/Command.php b/tests/vendor/phpunit/phpunit/src/TextUI/Command.php index 3aca19ff..1ea3ef6b 100644 --- a/tests/vendor/phpunit/phpunit/src/TextUI/Command.php +++ b/tests/vendor/phpunit/phpunit/src/TextUI/Command.php @@ -1,102 +1,129 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage TextUI + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * A TestRunner for the Command Line Interface (CLI) * PHP SAPI Module. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage TextUI + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_TextUI_Command { /** * @var array */ - protected $arguments = [ - 'listGroups' => false, - 'loader' => null, - 'useDefaultConfiguration' => true - ]; + protected $arguments = array( + 'listGroups' => false, + 'loader' => null, + 'useDefaultConfiguration' => true + ); /** * @var array */ - protected $options = []; + protected $options = array(); /** * @var array */ - protected $longOptions = [ - 'atleast-version=' => null, - 'bootstrap=' => null, - 'colors==' => null, - 'columns=' => null, - 'configuration=' => null, - 'coverage-clover=' => null, - 'coverage-crap4j=' => null, - 'coverage-html=' => null, - 'coverage-php=' => null, - 'coverage-text==' => null, - 'coverage-xml=' => null, - 'debug' => null, - 'disallow-test-output' => null, - 'disallow-resource-usage' => null, - 'disallow-todo-tests' => null, - 'enforce-time-limit' => null, - 'exclude-group=' => null, - 'filter=' => null, - 'group=' => null, - 'help' => null, - 'include-path=' => null, - 'list-groups' => null, - 'loader=' => null, - 'log-json=' => null, - 'log-junit=' => null, - 'log-tap=' => null, - 'log-teamcity=' => null, - 'no-configuration' => null, - 'no-coverage' => null, - 'no-globals-backup' => null, - 'printer=' => null, - 'process-isolation' => null, - 'repeat=' => null, - 'report-useless-tests' => null, - 'reverse-list' => null, - 'static-backup' => null, - 'stderr' => null, - 'stop-on-error' => null, - 'stop-on-failure' => null, - 'stop-on-incomplete' => null, - 'stop-on-risky' => null, - 'stop-on-skipped' => null, - 'strict-coverage' => null, - 'strict-global-state' => null, - 'tap' => null, - 'teamcity' => null, - 'testdox' => null, - 'testdox-html=' => null, - 'testdox-text=' => null, - 'test-suffix=' => null, - 'testsuite=' => null, - 'verbose' => null, - 'version' => null, - 'whitelist=' => null - ]; + protected $longOptions = array( + 'colors' => null, + 'bootstrap=' => null, + 'configuration=' => null, + 'coverage-clover=' => null, + 'coverage-crap4j=' => null, + 'coverage-html=' => null, + 'coverage-php=' => null, + 'coverage-text==' => null, + 'coverage-xml=' => null, + 'debug' => null, + 'exclude-group=' => null, + 'filter=' => null, + 'testsuite=' => null, + 'group=' => null, + 'help' => null, + 'include-path=' => null, + 'list-groups' => null, + 'loader=' => null, + 'log-json=' => null, + 'log-junit=' => null, + 'log-tap=' => null, + 'process-isolation' => null, + 'repeat=' => null, + 'stderr' => null, + 'stop-on-error' => null, + 'stop-on-failure' => null, + 'stop-on-incomplete' => null, + 'stop-on-risky' => null, + 'stop-on-skipped' => null, + 'report-useless-tests' => null, + 'strict-coverage' => null, + 'disallow-test-output' => null, + 'enforce-time-limit' => null, + 'strict' => null, + 'tap' => null, + 'testdox' => null, + 'testdox-html=' => null, + 'testdox-text=' => null, + 'test-suffix=' => null, + 'no-configuration' => null, + 'no-globals-backup' => null, + 'printer=' => null, + 'static-backup' => null, + 'verbose' => null, + 'version' => null + ); /** - * @var bool - */ - private $versionStringPrinted = false; - - /** - * @param bool $exit + * @param boolean $exit */ public static function main($exit = true) { @@ -106,10 +133,8 @@ public static function main($exit = true) } /** - * @param array $argv - * @param bool $exit - * - * @return int + * @param array $argv + * @param boolean $exit */ public function run(array $argv, $exit = true) { @@ -122,14 +147,14 @@ public function run(array $argv, $exit = true) $suite = $this->arguments['test']; } else { $suite = $runner->getTest( - $this->arguments['test'], - $this->arguments['testFile'], - $this->arguments['testSuffixes'] + $this->arguments['test'], + $this->arguments['testFile'], + $this->arguments['testSuffixes'] ); } if ($this->arguments['listGroups']) { - $this->printVersionString(); + PHPUnit_TextUI_TestRunner::printVersionString(); print "Available test group(s):\n"; @@ -175,7 +200,6 @@ public function run(array $argv, $exit = true) * Create a TestRunner, override in subclasses. * * @return PHPUnit_TextUI_TestRunner - * * @since Method available since Release 3.6.0 */ protected function createRunner() @@ -231,77 +255,74 @@ protected function createRunner() protected function handleArguments(array $argv) { if (defined('__PHPUNIT_PHAR__')) { - $this->longOptions['check-version'] = null; - $this->longOptions['selfupdate'] = null; - $this->longOptions['self-update'] = null; - $this->longOptions['selfupgrade'] = null; - $this->longOptions['self-upgrade'] = null; + $this->longOptions['self-update'] = null; } try { $this->options = PHPUnit_Util_Getopt::getopt( - $argv, - 'd:c:hv', - array_keys($this->longOptions) + $argv, + 'd:c:hv', + array_keys($this->longOptions) ); } catch (PHPUnit_Framework_Exception $e) { - $this->showError($e->getMessage()); + PHPUnit_TextUI_TestRunner::showError($e->getMessage()); } foreach ($this->options[0] as $option) { switch ($option[0]) { - case '--colors': - $this->arguments['colors'] = $option[1] ?: PHPUnit_TextUI_ResultPrinter::COLOR_AUTO; - break; + case '--colors': { + $this->arguments['colors'] = true; + } + break; - case '--bootstrap': + case '--bootstrap': { $this->arguments['bootstrap'] = $option[1]; - break; - - case '--columns': - if (is_numeric($option[1])) { - $this->arguments['columns'] = (int) $option[1]; - } elseif ($option[1] == 'max') { - $this->arguments['columns'] = 'max'; - } - break; + } + break; case 'c': - case '--configuration': + case '--configuration': { $this->arguments['configuration'] = $option[1]; - break; + } + break; - case '--coverage-clover': + case '--coverage-clover': { $this->arguments['coverageClover'] = $option[1]; - break; + } + break; - case '--coverage-crap4j': + case '--coverage-crap4j': { $this->arguments['coverageCrap4J'] = $option[1]; - break; + } + break; - case '--coverage-html': + case '--coverage-html': { $this->arguments['coverageHtml'] = $option[1]; - break; + } + break; - case '--coverage-php': + case '--coverage-php': { $this->arguments['coveragePHP'] = $option[1]; - break; + } + break; - case '--coverage-text': + case '--coverage-text': { if ($option[1] === null) { $option[1] = 'php://stdout'; } - $this->arguments['coverageText'] = $option[1]; + $this->arguments['coverageText'] = $option[1]; $this->arguments['coverageTextShowUncoveredFiles'] = false; - $this->arguments['coverageTextShowOnlySummary'] = false; - break; + $this->arguments['coverageTextShowOnlySummary'] = false; + } + break; - case '--coverage-xml': + case '--coverage-xml': { $this->arguments['coverageXml'] = $option[1]; - break; + } + break; - case 'd': + case 'd': { $ini = explode('=', $option[1]); if (isset($ini[0])) { @@ -311,212 +332,206 @@ protected function handleArguments(array $argv) ini_set($ini[0], true); } } - break; + } + break; - case '--debug': + case '--debug': { $this->arguments['debug'] = true; - break; + } + break; case 'h': - case '--help': + case '--help': { $this->showHelp(); exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); - break; + } + break; - case '--filter': + case '--filter': { $this->arguments['filter'] = $option[1]; - break; + } + break; - case '--testsuite': + case '--testsuite': { $this->arguments['testsuite'] = $option[1]; - break; + } + break; - case '--group': + case '--group': { $this->arguments['groups'] = explode(',', $option[1]); - break; + } + break; - case '--exclude-group': + case '--exclude-group': { $this->arguments['excludeGroups'] = explode( - ',', - $option[1] + ',', $option[1] ); - break; + } + break; - case '--test-suffix': + case '--test-suffix': { $this->arguments['testSuffixes'] = explode( - ',', - $option[1] + ',', $option[1] ); - break; + } + break; - case '--include-path': + case '--include-path': { $includePath = $option[1]; - break; + } + break; - case '--list-groups': + case '--list-groups': { $this->arguments['listGroups'] = true; - break; + } + break; - case '--printer': + case '--printer': { $this->arguments['printer'] = $option[1]; - break; + } + break; - case '--loader': + case '--loader': { $this->arguments['loader'] = $option[1]; - break; + } + break; - case '--log-json': + case '--log-json': { $this->arguments['jsonLogfile'] = $option[1]; - break; + } + break; - case '--log-junit': + case '--log-junit': { $this->arguments['junitLogfile'] = $option[1]; - break; + } + break; - case '--log-tap': + case '--log-tap': { $this->arguments['tapLogfile'] = $option[1]; - break; - - case '--log-teamcity': - $this->arguments['teamcityLogfile'] = $option[1]; - break; + } + break; - case '--process-isolation': + case '--process-isolation': { $this->arguments['processIsolation'] = true; - break; + } + break; - case '--repeat': + case '--repeat': { $this->arguments['repeat'] = (int) $option[1]; - break; + } + break; - case '--stderr': + case '--stderr': { $this->arguments['stderr'] = true; - break; + } + break; - case '--stop-on-error': + case '--stop-on-error': { $this->arguments['stopOnError'] = true; - break; + } + break; - case '--stop-on-failure': + case '--stop-on-failure': { $this->arguments['stopOnFailure'] = true; - break; + } + break; - case '--stop-on-incomplete': + case '--stop-on-incomplete': { $this->arguments['stopOnIncomplete'] = true; - break; + } + break; - case '--stop-on-risky': + case '--stop-on-risky': { $this->arguments['stopOnRisky'] = true; - break; + } + break; - case '--stop-on-skipped': + case '--stop-on-skipped': { $this->arguments['stopOnSkipped'] = true; - break; - - case '--tap': - $this->arguments['printer'] = 'PHPUnit_Util_Log_TAP'; - break; + } + break; - case '--teamcity': - $this->arguments['printer'] = 'PHPUnit_Util_Log_TeamCity'; - break; + case '--tap': { + $this->arguments['printer'] = new PHPUnit_Util_Log_TAP; + } + break; - case '--testdox': - $this->arguments['printer'] = 'PHPUnit_Util_TestDox_ResultPrinter_Text'; - break; + case '--testdox': { + $this->arguments['printer'] = new PHPUnit_Util_TestDox_ResultPrinter_Text; + } + break; - case '--testdox-html': + case '--testdox-html': { $this->arguments['testdoxHTMLFile'] = $option[1]; - break; + } + break; - case '--testdox-text': + case '--testdox-text': { $this->arguments['testdoxTextFile'] = $option[1]; - break; + } + break; - case '--no-configuration': + case '--no-configuration': { $this->arguments['useDefaultConfiguration'] = false; - break; - - case '--no-coverage': - $this->arguments['noCoverage'] = true; - break; + } + break; - case '--no-globals-backup': + case '--no-globals-backup': { $this->arguments['backupGlobals'] = false; - break; + } + break; - case '--static-backup': + case '--static-backup': { $this->arguments['backupStaticAttributes'] = true; - break; + } + break; case 'v': - case '--verbose': + case '--verbose': { $this->arguments['verbose'] = true; - break; - - case '--atleast-version': - exit(version_compare(PHPUnit_Runner_Version::id(), $option[1], '>=') - ? PHPUnit_TextUI_TestRunner::SUCCESS_EXIT - : PHPUnit_TextUI_TestRunner::FAILURE_EXIT - ); - break; + } + break; - case '--version': - $this->printVersionString(); + case '--version': { + PHPUnit_TextUI_TestRunner::printVersionString(); exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); - break; + } + break; - case '--report-useless-tests': + case 'report-useless-tests': { $this->arguments['reportUselessTests'] = true; - break; + } + break; - case '--strict-coverage': + case 'strict-coverage': { $this->arguments['strictCoverage'] = true; - break; - - case '--strict-global-state': - $this->arguments['beStrictAboutChangesToGlobalState'] = true; - break; + } + break; - case '--disallow-test-output': + case 'disallow-test-output': { $this->arguments['disallowTestOutput'] = true; - break; - - case '--disallow-resource-usage': - $this->arguments['beStrictAboutResourceUsageDuringSmallTests'] = true; - break; + } + break; - case '--enforce-time-limit': + case 'enforce-time-limit': { $this->arguments['enforceTimeLimit'] = true; - break; - - case '--disallow-todo-tests': - $this->arguments['disallowTodoAnnotatedTests'] = true; - break; - - case '--reverse-list': - $this->arguments['reverseList'] = true; - break; + } + break; - case '--check-version': - $this->handleVersionCheck(); - break; + case '--strict': { + $this->arguments['reportUselessTests'] = true; + $this->arguments['strictCoverage'] = true; + $this->arguments['disallowTestOutput'] = true; + $this->arguments['enforceTimeLimit'] = true; + } + break; - case '--selfupdate': - case '--self-update': + case '--self-update': { $this->handleSelfUpdate(); - break; - - case '--selfupgrade': - case '--self-upgrade': - $this->handleSelfUpdate(true); - break; - - case '--whitelist': - $this->arguments['whitelist'] = $option[1]; - break; + } + break; - default: + default: { $optionName = str_replace('--', '', $option[0]); if (isset($this->longOptions[$optionName])) { @@ -525,15 +540,17 @@ protected function handleArguments(array $argv) $handler = $this->longOptions[$optionName . '=']; } - if (isset($handler) && is_callable([$this, $handler])) { + if (isset($handler) && is_callable(array($this, $handler))) { $this->$handler($option[1]); } + } } } $this->handleCustomTestSuite(); if (!isset($this->arguments['test'])) { + if (isset($this->options[1][0])) { $this->arguments['test'] = $this->options[1][0]; } @@ -553,40 +570,50 @@ protected function handleArguments(array $argv) } if (!isset($this->arguments['testSuffixes'])) { - $this->arguments['testSuffixes'] = ['Test.php', '.phpt']; + $this->arguments['testSuffixes'] = array('Test.php', '.phpt'); } if (isset($includePath)) { ini_set( - 'include_path', - $includePath . PATH_SEPARATOR . ini_get('include_path') + 'include_path', + $includePath . PATH_SEPARATOR . ini_get('include_path') ); } + if (isset($this->arguments['bootstrap'])) { + $this->handleBootstrap($this->arguments['bootstrap']); + } + + if (isset($this->arguments['printer']) && + is_string($this->arguments['printer'])) { + $this->arguments['printer'] = $this->handlePrinter($this->arguments['printer']); + } + if ($this->arguments['loader'] !== null) { $this->arguments['loader'] = $this->handleLoader($this->arguments['loader']); } if (isset($this->arguments['configuration']) && is_dir($this->arguments['configuration'])) { - $configurationFile = $this->arguments['configuration'] . '/phpunit.xml'; + $configurationFile = $this->arguments['configuration'] . + '/phpunit.xml'; if (file_exists($configurationFile)) { $this->arguments['configuration'] = realpath( - $configurationFile + $configurationFile ); } elseif (file_exists($configurationFile . '.dist')) { $this->arguments['configuration'] = realpath( - $configurationFile . '.dist' + $configurationFile . '.dist' ); } } elseif (!isset($this->arguments['configuration']) && - $this->arguments['useDefaultConfiguration']) { + $this->arguments['useDefaultConfiguration']) { if (file_exists('phpunit.xml')) { $this->arguments['configuration'] = realpath('phpunit.xml'); } elseif (file_exists('phpunit.xml.dist')) { $this->arguments['configuration'] = realpath( - 'phpunit.xml.dist' + 'phpunit.xml.dist' ); } } @@ -594,66 +621,52 @@ protected function handleArguments(array $argv) if (isset($this->arguments['configuration'])) { try { $configuration = PHPUnit_Util_Configuration::getInstance( - $this->arguments['configuration'] + $this->arguments['configuration'] ); - } catch (Throwable $e) { - print $e->getMessage() . "\n"; - exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT); } catch (Exception $e) { print $e->getMessage() . "\n"; exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT); } - $phpunitConfiguration = $configuration->getPHPUnitConfiguration(); + $phpunit = $configuration->getPHPUnitConfiguration(); $configuration->handlePHPConfiguration(); - /* - * Issue #1216 - */ - if (isset($this->arguments['bootstrap'])) { - $this->handleBootstrap($this->arguments['bootstrap']); - } elseif (isset($phpunitConfiguration['bootstrap'])) { - $this->handleBootstrap($phpunitConfiguration['bootstrap']); - } - - /* - * Issue #657 - */ - if (isset($phpunitConfiguration['stderr']) && ! isset($this->arguments['stderr'])) { - $this->arguments['stderr'] = $phpunitConfiguration['stderr']; + if (!isset($this->arguments['bootstrap']) && isset($phpunit['bootstrap'])) { + $this->handleBootstrap($phpunit['bootstrap']); } - if (isset($phpunitConfiguration['columns']) && ! isset($this->arguments['columns'])) { - $this->arguments['columns'] = $phpunitConfiguration['columns']; - } - - if (!isset($this->arguments['printer']) && isset($phpunitConfiguration['printerClass'])) { - if (isset($phpunitConfiguration['printerFile'])) { - $file = $phpunitConfiguration['printerFile']; + if (isset($phpunit['printerClass'])) { + if (isset($phpunit['printerFile'])) { + $file = $phpunit['printerFile']; } else { $file = ''; } $this->arguments['printer'] = $this->handlePrinter( - $phpunitConfiguration['printerClass'], - $file + $phpunit['printerClass'], $file ); } - if (isset($phpunitConfiguration['testSuiteLoaderClass'])) { - if (isset($phpunitConfiguration['testSuiteLoaderFile'])) { - $file = $phpunitConfiguration['testSuiteLoaderFile']; + if (isset($phpunit['testSuiteLoaderClass'])) { + if (isset($phpunit['testSuiteLoaderFile'])) { + $file = $phpunit['testSuiteLoaderFile']; } else { $file = ''; } $this->arguments['loader'] = $this->handleLoader( - $phpunitConfiguration['testSuiteLoaderClass'], - $file + $phpunit['testSuiteLoaderClass'], $file ); } + $browsers = $configuration->getSeleniumBrowserConfiguration(); + + if (!empty($browsers) && + class_exists('PHPUnit_Extensions_SeleniumTestCase')) { + PHPUnit_Extensions_SeleniumTestCase::$browsers = $browsers; + } + if (!isset($this->arguments['test'])) { $testSuite = $configuration->getTestSuiteConfiguration(isset($this->arguments['testsuite']) ? $this->arguments['testsuite'] : null); @@ -661,13 +674,6 @@ protected function handleArguments(array $argv) $this->arguments['test'] = $testSuite; } } - } elseif (isset($this->arguments['bootstrap'])) { - $this->handleBootstrap($this->arguments['bootstrap']); - } - - if (isset($this->arguments['printer']) && - is_string($this->arguments['printer'])) { - $this->arguments['printer'] = $this->handlePrinter($this->arguments['printer']); } if (isset($this->arguments['test']) && is_string($this->arguments['test']) && substr($this->arguments['test'], -5, 5) == '.phpt') { @@ -687,9 +693,8 @@ protected function handleArguments(array $argv) /** * Handles the loading of the PHPUnit_Runner_TestSuiteLoader implementation. * - * @param string $loaderClass - * @param string $loaderFile - * + * @param string $loaderClass + * @param string $loaderFile * @return PHPUnit_Runner_TestSuiteLoader */ protected function handleLoader($loaderClass, $loaderFile = '') @@ -697,7 +702,7 @@ protected function handleLoader($loaderClass, $loaderFile = '') if (!class_exists($loaderClass, false)) { if ($loaderFile == '') { $loaderFile = PHPUnit_Util_Filesystem::classNameToFilename( - $loaderClass + $loaderClass ); } @@ -713,28 +718,28 @@ protected function handleLoader($loaderClass, $loaderFile = '') if ($class->implementsInterface('PHPUnit_Runner_TestSuiteLoader') && $class->isInstantiable()) { - return $class->newInstance(); + $loader = $class->newInstance(); } } - if ($loaderClass == 'PHPUnit_Runner_StandardTestSuiteLoader') { - return; - } - - $this->showError( - sprintf( + if (!isset($loader)) { + PHPUnit_TextUI_TestRunner::showError( + sprintf( 'Could not use "%s" as loader.', + $loaderClass - ) - ); + ) + ); + } + + return $loader; } /** * Handles the loading of the PHPUnit_Util_Printer implementation. * - * @param string $printerClass - * @param string $printerFile - * + * @param string $printerClass + * @param string $printerFile * @return PHPUnit_Util_Printer */ protected function handlePrinter($printerClass, $printerFile = '') @@ -742,7 +747,7 @@ protected function handlePrinter($printerClass, $printerFile = '') if (!class_exists($printerClass, false)) { if ($printerFile == '') { $printerFile = PHPUnit_Util_Filesystem::classNameToFilename( - $printerClass + $printerClass ); } @@ -763,18 +768,21 @@ protected function handlePrinter($printerClass, $printerFile = '') return $printerClass; } - $outputStream = isset($this->arguments['stderr']) ? 'php://stderr' : null; - - return $class->newInstance($outputStream); + $printer = $class->newInstance(); } } - $this->showError( - sprintf( + if (!isset($printer)) { + PHPUnit_TextUI_TestRunner::showError( + sprintf( 'Could not use "%s" as printer.', + $printerClass - ) - ); + ) + ); + } + + return $printer; } /** @@ -787,47 +795,29 @@ protected function handleBootstrap($filename) try { PHPUnit_Util_Fileloader::checkAndLoad($filename); } catch (PHPUnit_Framework_Exception $e) { - $this->showError($e->getMessage()); + PHPUnit_TextUI_TestRunner::showError($e->getMessage()); } } /** * @since Method available since Release 4.0.0 */ - protected function handleSelfUpdate($upgrade = false) + protected function handleSelfUpdate() { - $this->printVersionString(); - - $localFilename = realpath($_SERVER['argv'][0]); - - if (!is_writable($localFilename)) { - print 'No write permission to update ' . $localFilename . "\n"; - exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT); - } + PHPUnit_TextUI_TestRunner::printVersionString(); if (!extension_loaded('openssl')) { print "The OpenSSL extension is not loaded.\n"; exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT); } - if (!$upgrade) { - $remoteFilename = sprintf( - 'https://phar.phpunit.de/phpunit-%s.phar', - file_get_contents( - sprintf( - 'https://phar.phpunit.de/latest-version-of/phpunit-%s', - PHPUnit_Runner_Version::series() - ) - ) - ); - } else { - $remoteFilename = sprintf( - 'https://phar.phpunit.de/phpunit%s.phar', - PHPUnit_Runner_Version::getReleaseChannel() - ); - } + $remoteFilename = sprintf( + 'https://phar.phpunit.de/phpunit%s.phar', + PHPUnit_Runner_Version::getReleaseChannel() + ); - $tempFilename = tempnam(sys_get_temp_dir(), 'phpunit') . '.phar'; + $localFilename = $_SERVER['argv'][0]; + $tempFilename = basename($localFilename, '.phar') . '-temp.phar'; // Workaround for https://bugs.php.net/bug.php?id=65538 $caFile = dirname($tempFilename) . '/ca.pem'; @@ -835,21 +825,22 @@ protected function handleSelfUpdate($upgrade = false) print 'Updating the PHPUnit PHAR ... '; - $options = [ - 'ssl' => [ - 'allow_self_signed' => false, - 'cafile' => $caFile, - 'verify_peer' => true - ] - ]; - file_put_contents( - $tempFilename, - file_get_contents( - $remoteFilename, - false, - stream_context_create($options) + $tempFilename, + file_get_contents( + $remoteFilename, + false, + stream_context_create( + array( + 'ssl' => array( + 'CN_match' => 'phar.phpunit.de', + 'allow_self_signed' => false, + 'cafile' => $caFile, + 'verify_peer' => true + ) + ) ) + ) ); chmod($tempFilename, 0777 & ~umask()); @@ -859,49 +850,23 @@ protected function handleSelfUpdate($upgrade = false) unset($phar); rename($tempFilename, $localFilename); unlink($caFile); - } catch (Throwable $_e) { - $e = $_e; - } catch (Exception $_e) { - $e = $_e; - } - - if (isset($e)) { + } catch (Exception $e) { unlink($caFile); unlink($tempFilename); print " done\n\n" . $e->getMessage() . "\n"; - exit(2); + exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT); } print " done\n"; exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } - /** - * @since Method available since Release 4.8.0 - */ - protected function handleVersionCheck() - { - $this->printVersionString(); - - $latestVersion = file_get_contents('https://phar.phpunit.de/latest-version-of/phpunit'); - $isOutdated = version_compare($latestVersion, PHPUnit_Runner_Version::id(), '>'); - - if ($isOutdated) { - print "You are not using the latest version of PHPUnit.\n"; - print 'Use "phpunit --self-upgrade" to install PHPUnit ' . $latestVersion . "\n"; - } else { - print "You are using the latest version of PHPUnit.\n"; - } - - exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); - } - /** * Show the help message. */ protected function showHelp() { - $this->printVersionString(); + PHPUnit_TextUI_TestRunner::printVersionString(); print << Generate code coverage report in text format. Default: Standard output. --coverage-xml Generate code coverage report in PHPUnit XML format. - --whitelist Whitelist for code coverage analysis. Logging Options: --log-junit Log test execution in JUnit XML format to file. --log-tap Log test execution in TAP format to file. - --log-teamcity Log test execution in TeamCity format to file. --log-json Log test execution in JSON format. --testdox-html Write agile documentation in HTML format to file. --testdox-text Write agile documentation in Text format to file. - --reverse-list Print defects in reverse order Test Selection Options: @@ -942,19 +904,15 @@ protected function showHelp() --report-useless-tests Be strict about tests that do not test anything. --strict-coverage Be strict about unintentionally covered code. - --strict-global-state Be strict about changes to global state --disallow-test-output Be strict about output during tests. - --disallow-resource-usage Be strict about resource usage during small tests. --enforce-time-limit Enforce time limit based on test size. - --disallow-todo-tests Disallow @todo-annotated tests. + --strict Run tests in strict mode (enables all of the above). --process-isolation Run each test in a separate PHP process. --no-globals-backup Do not backup and restore \$GLOBALS for each test. --static-backup Backup and restore static attributes for each test. - --colors= Use colors in output ("never", "auto" or "always"). - --columns Number of columns to use for progress output. - --columns max Use maximum number of columns for progress output. + --colors Use colors in output. --stderr Write to STDERR instead of STDOUT. --stop-on-error Stop execution upon first error. --stop-on-failure Stop execution upon first error or failure. @@ -967,16 +925,14 @@ protected function showHelp() --loader TestSuiteLoader implementation to use. --repeat Runs the test(s) repeatedly. --tap Report test execution progress in TAP format. - --teamcity Report test execution progress in TeamCity format. --testdox Report test execution progress in TestDox format. - --printer TestListener implementation to use. + --printer TestSuiteListener implementation to use. Configuration Options: --bootstrap A "bootstrap" PHP file that is run before the tests. -c|--configuration Read configuration from XML file. --no-configuration Ignore default configuration file (phpunit.xml). - --no-coverage Ignore code coverage configuration. --include-path Prepend PHP's include_path with given path(s). -d key[=value] Sets a php.ini value. @@ -984,14 +940,11 @@ protected function showHelp() -h|--help Prints this usage information. --version Prints the version and exits. - --atleast-version Checks that version is greater than min and exits. EOT; if (defined('__PHPUNIT_PHAR__')) { - print "\n --check-version Check whether PHPUnit is the latest version."; - print "\n --self-update Update PHPUnit to the latest version within the same\n release series.\n"; - print "\n --self-upgrade Upgrade PHPUnit to the latest version.\n"; + print "\n --self-update Update PHPUnit to the latest version.\n"; } } @@ -1001,26 +954,4 @@ protected function showHelp() protected function handleCustomTestSuite() { } - - private function printVersionString() - { - if ($this->versionStringPrinted) { - return; - } - - print PHPUnit_Runner_Version::getVersionString() . "\n\n"; - - $this->versionStringPrinted = true; - } - - /** - */ - private function showError($message) - { - $this->printVersionString(); - - print $message . "\n"; - - exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT); - } } diff --git a/tests/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php b/tests/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php index caf534fc..3a316c19 100644 --- a/tests/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php +++ b/tests/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php @@ -1,19 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage TextUI + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ -use SebastianBergmann\Environment\Console; - /** * Prints the result of a TextUI TestRunner run. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage TextUI + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_TextUI_ResultPrinter extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener { @@ -22,153 +61,101 @@ class PHPUnit_TextUI_ResultPrinter extends PHPUnit_Util_Printer implements PHPUn const EVENT_TESTSUITE_START = 2; const EVENT_TESTSUITE_END = 3; - const COLOR_NEVER = 'never'; - const COLOR_AUTO = 'auto'; - const COLOR_ALWAYS = 'always'; - const COLOR_DEFAULT = self::COLOR_NEVER; - /** * @var array */ - private static $ansiCodes = [ + private static $ansiCodes = array( 'bold' => 1, 'fg-black' => 30, 'fg-red' => 31, - 'fg-green' => 32, 'fg-yellow' => 33, - 'fg-blue' => 34, - 'fg-magenta' => 35, 'fg-cyan' => 36, 'fg-white' => 37, - 'bg-black' => 40, 'bg-red' => 41, 'bg-green' => 42, - 'bg-yellow' => 43, - 'bg-blue' => 44, - 'bg-magenta' => 45, - 'bg-cyan' => 46, - 'bg-white' => 47 - ]; + 'bg-yellow' => 43 + ); /** - * @var int + * @var integer */ protected $column = 0; /** - * @var int + * @var integer */ protected $maxColumn; /** - * @var bool + * @var boolean */ protected $lastTestFailed = false; /** - * @var int + * @var integer */ protected $numAssertions = 0; /** - * @var int + * @var integer */ protected $numTests = -1; /** - * @var int + * @var integer */ protected $numTestsRun = 0; /** - * @var int + * @var integer */ protected $numTestsWidth; /** - * @var bool + * @var boolean */ protected $colors = false; /** - * @var bool + * @var boolean */ protected $debug = false; /** - * @var bool + * @var boolean */ protected $verbose = false; - /** - * @var int - */ - private $numberOfColumns; - - /** - * @var bool - */ - private $reverse = false; - /** * Constructor. * - * @param mixed $out - * @param bool $verbose - * @param string $colors - * @param bool $debug - * @param int|string $numberOfColumns - * @param bool $reverse - * + * @param mixed $out + * @param boolean $verbose + * @param boolean $colors + * @param boolean $debug * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.0.0 */ - public function __construct($out = null, $verbose = false, $colors = self::COLOR_DEFAULT, $debug = false, $numberOfColumns = 80, $reverse = false) + public function __construct($out = null, $verbose = false, $colors = false, $debug = false) { parent::__construct($out); - if (!is_bool($verbose)) { + if (is_bool($verbose)) { + $this->verbose = $verbose; + } else { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'boolean'); } - $availableColors = [self::COLOR_NEVER, self::COLOR_AUTO, self::COLOR_ALWAYS]; - - if (!in_array($colors, $availableColors)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory( - 3, - vsprintf('value from "%s", "%s" or "%s"', $availableColors) - ); - } - - if (!is_bool($debug)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory(4, 'boolean'); - } - - if (!is_int($numberOfColumns) && $numberOfColumns != 'max') { - throw PHPUnit_Util_InvalidArgumentHelper::factory(5, 'integer or "max"'); - } - - if (!is_bool($reverse)) { - throw PHPUnit_Util_InvalidArgumentHelper::factory(6, 'boolean'); - } - - $console = new Console; - $maxNumberOfColumns = $console->getNumberOfColumns(); - - if ($numberOfColumns == 'max' || $numberOfColumns > $maxNumberOfColumns) { - $numberOfColumns = $maxNumberOfColumns; + if (is_bool($colors)) { + $this->colors = $colors; + } else { + throw PHPUnit_Util_InvalidArgumentHelper::factory(3, 'boolean'); } - $this->numberOfColumns = $numberOfColumns; - $this->verbose = $verbose; - $this->debug = $debug; - $this->reverse = $reverse; - - if ($colors === self::COLOR_AUTO && $console->hasColorSupport()) { - $this->colors = true; + if (is_bool($debug)) { + $this->debug = $debug; } else { - $this->colors = (self::COLOR_ALWAYS === $colors); + throw PHPUnit_Util_InvalidArgumentHelper::factory(4, 'boolean'); } } @@ -190,6 +177,15 @@ public function printResult(PHPUnit_Framework_TestResult $result) $this->printFailures($result); if ($this->verbose) { + if ($printSeparator && $result->deprecatedFeaturesCount() > 0) { + $this->write("\n--\n\n"); + } + + $printSeparator = $printSeparator || + $result->deprecatedFeaturesCount() > 0; + + $this->printDeprecated($result); + if ($printSeparator && $result->riskyCount() > 0) { $this->write("\n--\n\n"); } @@ -231,21 +227,18 @@ protected function printDefects(array $defects, $type) } $this->write( - sprintf( - "There %s %d %s%s:\n", - ($count == 1) ? 'was' : 'were', - $count, - $type, - ($count == 1) ? '' : 's' - ) + sprintf( + "There %s %d %s%s:\n", + + ($count == 1) ? 'was' : 'were', + $count, + $type, + ($count == 1) ? '' : 's' + ) ); $i = 1; - if ($this->reverse) { - $defects = array_reverse($defects); - } - foreach ($defects as $defect) { $this->printDefect($defect, $i++); } @@ -253,7 +246,7 @@ protected function printDefects(array $defects, $type) /** * @param PHPUnit_Framework_TestFailure $defect - * @param int $count + * @param integer $count */ protected function printDefect(PHPUnit_Framework_TestFailure $defect, $count) { @@ -263,16 +256,25 @@ protected function printDefect(PHPUnit_Framework_TestFailure $defect, $count) /** * @param PHPUnit_Framework_TestFailure $defect - * @param int $count + * @param integer $count */ protected function printDefectHeader(PHPUnit_Framework_TestFailure $defect, $count) { + $failedTest = $defect->failedTest(); + + if ($failedTest instanceof PHPUnit_Framework_SelfDescribing) { + $testName = $failedTest->toString(); + } else { + $testName = get_class($failedTest); + } + $this->write( - sprintf( - "\n%d) %s\n", - $count, - $defect->getTestName() - ) + sprintf( + "\n%d) %s\n", + + $count, + $testName + ) ); } @@ -281,11 +283,26 @@ protected function printDefectHeader(PHPUnit_Framework_TestFailure $defect, $cou */ protected function printDefectTrace(PHPUnit_Framework_TestFailure $defect) { - $e = $defect->thrownException(); - $this->write((string) $e); + $this->write($defect->getExceptionAsString()); + + $trace = PHPUnit_Util_Filter::getFilteredStacktrace( + $defect->thrownException() + ); + + if (!empty($trace)) { + $this->write("\n" . $trace); + } + + $e = $defect->thrownException()->getPrevious(); + + while ($e) { + $this->write( + "\nCaused by\n" . + PHPUnit_Framework_TestFailure::exceptionToString($e). "\n" . + PHPUnit_Util_Filter::getFilteredStacktrace($e) + ); - while ($e = $e->getPrevious()) { - $this->write("\nCaused by\n" . $e); + $e = $e->getPrevious(); } } @@ -315,7 +332,6 @@ protected function printIncompletes(PHPUnit_Framework_TestResult $result) /** * @param PHPUnit_Framework_TestResult $result - * * @since Method available since Release 4.0.0 */ protected function printRisky(PHPUnit_Framework_TestResult $result) @@ -325,7 +341,6 @@ protected function printRisky(PHPUnit_Framework_TestResult $result) /** * @param PHPUnit_Framework_TestResult $result - * * @since Method available since Release 3.0.0 */ protected function printSkipped(PHPUnit_Framework_TestResult $result) @@ -333,6 +348,44 @@ protected function printSkipped(PHPUnit_Framework_TestResult $result) $this->printDefects($result->skipped(), 'skipped test'); } + /** + * @param PHPUnit_Framework_TestResult $result + * @since Method available since Release 4.0.0 + */ + protected function printDeprecated(PHPUnit_Framework_TestResult $result) + { + $deprecatedFeatures = $result->deprecatedFeatures(); + $count = count($deprecatedFeatures); + + if ($count == 0) { + return; + } + + $this->write( + sprintf( + "There %s %d tests that use%s deprecated features:\n", + + ($count == 1) ? 'was' : 'were', + $count, + ($count != 1) ? '' : 's' + ) + ); + + $i = 1; + + foreach ($result->deprecatedFeatures() as $deprecatedFeature) { + $this->write( + sprintf( + "\n%d) %s\n\n%s\n", + + $i++, + $deprecatedFeature->getMessage(), + $deprecatedFeature->getSource() + ) + ); + } + } + protected function printHeader() { $this->write("\n\n" . PHP_Timer::resourceUsage() . "\n\n"); @@ -345,53 +398,106 @@ protected function printFooter(PHPUnit_Framework_TestResult $result) { if (count($result) === 0) { $this->writeWithColor( - 'fg-black, bg-yellow', - 'No tests executed!' + 'fg-black, bg-yellow', + 'No tests executed!' ); } elseif ($result->wasSuccessful() && $result->allHarmless() && $result->allCompletelyImplemented() && $result->noneSkipped()) { + + $this->writeWithColor( + 'fg-black, bg-green', + sprintf( + 'OK (%d test%s, %d assertion%s)', + + count($result), + (count($result) == 1) ? '' : 's', + $this->numAssertions, + ($this->numAssertions == 1) ? '' : 's' + ) + ); + } elseif ((!$result->allCompletelyImplemented() || + !$result->allHarmless() || + !$result->noneSkipped()) && + $result->wasSuccessful()) { $this->writeWithColor( - 'fg-black, bg-green', - sprintf( - 'OK (%d test%s, %d assertion%s)', - count($result), - (count($result) == 1) ? '' : 's', - $this->numAssertions, - ($this->numAssertions == 1) ? '' : 's' + 'fg-black, bg-yellow', + sprintf( + "%sOK, but incomplete, skipped, or risky tests!\n" . + 'Tests: %d, Assertions: %d%s%s%s.', + + $this->verbose ? "\n" : '', + count($result), + $this->numAssertions, + $this->getCountString( + $result->notImplementedCount(), 'Incomplete' + ), + $this->getCountString( + $result->skippedCount(), 'Skipped' + ), + $this->getCountString( + $result->riskyCount(), 'Risky' ) + ) ); } else { - if ($result->wasSuccessful()) { - $color = 'fg-black, bg-yellow'; - - if ($this->verbose) { - $this->write("\n"); - } - - $this->writeWithColor( - $color, - 'OK, but incomplete, skipped, or risky tests!' - ); - } else { - $color = 'fg-white, bg-red'; - - $this->write("\n"); - $this->writeWithColor($color, 'FAILURES!'); - } + $this->writeWithColor( + 'fg-white, bg-red', + sprintf( + "\nFAILURES!\n" . + 'Tests: %d, Assertions: %s%s%s%s%s.', + + count($result), + $this->numAssertions, + $this->getCountString($result->failureCount(), 'Failures'), + $this->getCountString($result->errorCount(), 'Errors'), + $this->getCountString( + $result->notImplementedCount(), 'Incomplete' + ), + $this->getCountString($result->skippedCount(), 'Skipped') + ) + ); + } + + if (!$this->verbose && + $result->deprecatedFeaturesCount() > 0) { + $this->write("\n"); + + $this->writeWithColor( + 'fg-white, bg-red', + sprintf( + "Warning: Deprecated PHPUnit features are being used %s times!\n" . + 'Use --verbose for more information.', - $this->writeCountString(count($result), 'Tests', $color, true); - $this->writeCountString($this->numAssertions, 'Assertions', $color, true); - $this->writeCountString($result->errorCount(), 'Errors', $color); - $this->writeCountString($result->failureCount(), 'Failures', $color); - $this->writeCountString($result->skippedCount(), 'Skipped', $color); - $this->writeCountString($result->notImplementedCount(), 'Incomplete', $color); - $this->writeCountString($result->riskyCount(), 'Risky', $color); - $this->writeWithColor($color, '.', true); + $result->deprecatedFeaturesCount() + ) + ); } } + /** + * @param integer $count + * @param string $name + * @return string + * @since Method available since Release 3.0.0 + */ + protected function getCountString($count, $name) + { + $string = ''; + + if ($count > 0) { + $string = sprintf( + ', %s: %d', + + $name, + $count + ); + } + + return $string; + } + /** */ public function printWaitPrompt() @@ -444,7 +550,6 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 4.0.0 */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) @@ -459,7 +564,6 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 3.0.0 */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) @@ -472,7 +576,6 @@ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time * A testsuite started. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) @@ -480,7 +583,7 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) if ($this->numTests == -1) { $this->numTests = count($suite); $this->numTestsWidth = strlen((string) $this->numTests); - $this->maxColumn = $this->numberOfColumns - strlen(' / (XXX%)') - (2 * $this->numTestsWidth); + $this->maxColumn = 69 - (2 * $this->numTestsWidth); } } @@ -488,7 +591,6 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) * A testsuite ended. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) @@ -504,10 +606,9 @@ public function startTest(PHPUnit_Framework_Test $test) { if ($this->debug) { $this->write( - sprintf( - "\nStarting test '%s'.\n", - PHPUnit_Util_Test::describe($test) - ) + sprintf( + "\nStarting test '%s'.\n", PHPUnit_Util_Test::describe($test) + ) ); } } @@ -533,7 +634,7 @@ public function endTest(PHPUnit_Framework_Test $test, $time) $this->lastTestFailed = false; if ($test instanceof PHPUnit_Framework_TestCase) { - if (!$test->hasExpectationOnOutput()) { + if (!$test->hasPerformedExpectationsOnOutput()) { $this->write($test->getActualOutput()); } } @@ -548,26 +649,19 @@ protected function writeProgress($progress) $this->column++; $this->numTestsRun++; - if ($this->column == $this->maxColumn - || $this->numTestsRun == $this->numTests - ) { - if ($this->numTestsRun == $this->numTests) { - $this->write(str_repeat(' ', $this->maxColumn - $this->column)); - } - + if ($this->column == $this->maxColumn) { $this->write( - sprintf( - ' %' . $this->numTestsWidth . 'd / %' . - $this->numTestsWidth . 'd (%3s%%)', - $this->numTestsRun, - $this->numTests, - floor(($this->numTestsRun / $this->numTests) * 100) - ) + sprintf( + ' %' . $this->numTestsWidth . 'd / %' . + $this->numTestsWidth . 'd (%3s%%)', + + $this->numTestsRun, + $this->numTests, + floor(($this->numTestsRun / $this->numTests) * 100) + ) ); - if ($this->column == $this->maxColumn) { - $this->writeNewLine(); - } + $this->writeNewLine(); } } @@ -581,11 +675,9 @@ protected function writeNewLine() * Formats a buffer with a specified ANSI color sequence if colors are * enabled. * - * @param string $color - * @param string $buffer - * + * @param string $color + * @param string $buffer * @return string - * * @since Method available since Release 4.0.0 */ protected function formatWithColor($color, $buffer) @@ -594,19 +686,17 @@ protected function formatWithColor($color, $buffer) return $buffer; } - $codes = array_map('trim', explode(',', $color)); - $lines = explode("\n", $buffer); + $codes = array_map('trim', explode(',', $color)); + $lines = explode("\n", $buffer); $padding = max(array_map('strlen', $lines)); - $styles = []; + $styles = array(); foreach ($codes as $code) { $styles[] = self::$ansiCodes[$code]; } - $style = sprintf("\x1b[%sm", implode(';', $styles)); - $styledLines = []; - + $styledLines = array(); foreach ($lines as $line) { $styledLines[] = $style . str_pad($line, $padding) . "\x1b[0m"; } @@ -619,17 +709,12 @@ protected function formatWithColor($color, $buffer) * * @param string $color * @param string $buffer - * @param bool $lf - * * @since Method available since Release 4.0.0 */ - protected function writeWithColor($color, $buffer, $lf = true) + protected function writeWithColor($color, $buffer) { - $this->write($this->formatWithColor($color, $buffer)); - - if ($lf) { - $this->write("\n"); - } + $buffer = $this->formatWithColor($color, $buffer); + $this->write($buffer . "\n"); } /** @@ -637,7 +722,6 @@ protected function writeWithColor($color, $buffer, $lf = true) * * @param string $color * @param string $buffer - * * @since Method available since Release 4.0.0 */ protected function writeProgressWithColor($color, $buffer) @@ -645,32 +729,4 @@ protected function writeProgressWithColor($color, $buffer) $buffer = $this->formatWithColor($color, $buffer); $this->writeProgress($buffer); } - - /** - * @param int $count - * @param string $name - * @param string $color - * @param bool $always - * - * @since Method available since Release 4.6.5 - */ - private function writeCountString($count, $name, $color, $always = false) - { - static $first = true; - - if ($always || $count > 0) { - $this->writeWithColor( - $color, - sprintf( - '%s%s: %d', - !$first ? ', ' : '', - $name, - $count - ), - false - ); - - $first = false; - } - } } diff --git a/tests/vendor/phpunit/phpunit/src/TextUI/TestRunner.php b/tests/vendor/phpunit/phpunit/src/TextUI/TestRunner.php index 50495ee4..198b8e39 100644 --- a/tests/vendor/phpunit/phpunit/src/TextUI/TestRunner.php +++ b/tests/vendor/phpunit/phpunit/src/TextUI/TestRunner.php @@ -1,11 +1,46 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage TextUI + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ use SebastianBergmann\Environment\Runtime; @@ -14,7 +49,13 @@ * A TestRunner for the Command Line Interface (CLI) * PHP SAPI Module. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage TextUI + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_TextUI_TestRunner extends PHPUnit_Runner_BaseTestRunner { @@ -38,24 +79,23 @@ class PHPUnit_TextUI_TestRunner extends PHPUnit_Runner_BaseTestRunner protected $printer = null; /** - * @var bool + * @var boolean */ protected static $versionStringPrinted = false; /** - * @var Runtime + * @var array */ - private $runtime; + private $missingExtensions = array(); /** - * @var bool + * @var boolean */ - private $messagePrinted = false; + private $canCollectCodeCoverage; /** * @param PHPUnit_Runner_TestSuiteLoader $loader * @param PHP_CodeCoverage_Filter $filter - * * @since Method available since Release 3.4.0 */ public function __construct(PHPUnit_Runner_TestSuiteLoader $loader = null, PHP_CodeCoverage_Filter $filter = null) @@ -66,33 +106,32 @@ public function __construct(PHPUnit_Runner_TestSuiteLoader $loader = null, PHP_C $this->codeCoverageFilter = $filter; $this->loader = $loader; - $this->runtime = new Runtime; + + $runtime = new Runtime; + $this->canCollectCodeCoverage = $runtime->canCollectCodeCoverage(); } /** - * @param PHPUnit_Framework_Test|ReflectionClass $test - * @param array $arguments - * - * @return PHPUnit_Framework_TestResult - * + * @param mixed $test + * @param array $arguments * @throws PHPUnit_Framework_Exception */ - public static function run($test, array $arguments = []) + public static function run($test, array $arguments = array()) { if ($test instanceof ReflectionClass) { $test = new PHPUnit_Framework_TestSuite($test); } if ($test instanceof PHPUnit_Framework_Test) { - $aTestRunner = new self; + $aTestRunner = new PHPUnit_TextUI_TestRunner; return $aTestRunner->doRun( - $test, - $arguments + $test, + $arguments ); } else { throw new PHPUnit_Framework_Exception( - 'No test case or test suite found.' + 'No test case or test suite found.' ); } } @@ -139,17 +178,12 @@ private function processSuiteFilters(PHPUnit_Framework_TestSuite $suite, array $ } /** - * @param PHPUnit_Framework_Test $suite - * @param array $arguments - * + * @param PHPUnit_Framework_Test $suite + * @param array $arguments * @return PHPUnit_Framework_TestResult */ - public function doRun(PHPUnit_Framework_Test $suite, array $arguments = []) + public function doRun(PHPUnit_Framework_Test $suite, array $arguments = array()) { - if (isset($arguments['configuration'])) { - $GLOBALS['__PHPUNIT_CONFIGURATION_FILE'] = $arguments['configuration']; - } - $this->handleConfiguration($arguments); $this->processSuiteFilters($suite, $arguments); @@ -166,15 +200,11 @@ public function doRun(PHPUnit_Framework_Test $suite, array $arguments = []) $suite->setBackupStaticAttributes(true); } - if ($arguments['beStrictAboutChangesToGlobalState'] === true) { - $suite->setbeStrictAboutChangesToGlobalState(true); - } - if (is_integer($arguments['repeat'])) { $test = new PHPUnit_Extensions_RepeatedTest( - $suite, - $arguments['repeat'], - $arguments['processIsolation'] + $suite, + $arguments['repeat'], + $arguments['processIsolation'] ); $suite = new PHPUnit_Framework_TestSuite(); @@ -221,7 +251,6 @@ public function doRun(PHPUnit_Framework_Test $suite, array $arguments = []) $this->printer = $arguments['printer']; } else { $printerClass = 'PHPUnit_TextUI_ResultPrinter'; - if (isset($arguments['printer']) && is_string($arguments['printer']) && class_exists($arguments['printer'], false)) { @@ -233,41 +262,24 @@ class_exists($arguments['printer'], false)) { } $this->printer = new $printerClass( - isset($arguments['stderr']) ? 'php://stderr' : null, - $arguments['verbose'], - $arguments['colors'], - $arguments['debug'], - $arguments['columns'], - $arguments['reverseList'] + isset($arguments['stderr']) ? 'php://stderr' : null, + $arguments['verbose'], + $arguments['colors'], + $arguments['debug'] ); } } if (!$this->printer instanceof PHPUnit_Util_Log_TAP) { - $this->printer->write( - PHPUnit_Runner_Version::getVersionString() . "\n" - ); - - self::$versionStringPrinted = true; - - if ($arguments['verbose']) { - $runtime = $this->runtime->getNameWithVersion(); - - if ($this->runtime->hasXdebug()) { - $runtime .= sprintf( - ' with Xdebug %s', - phpversion('xdebug') - ); - } + $this->printVersionString(); - $this->writeMessage('Runtime', $runtime); - - if (isset($arguments['configuration'])) { - $this->writeMessage( - 'Configuration', - $arguments['configuration']->getFilename() - ); - } + if (isset($arguments['configuration'])) { + $this->printer->write( + sprintf( + "Configuration read from %s\n\n", + $arguments['configuration']->getFilename() + ) + ); } } @@ -277,102 +289,93 @@ class_exists($arguments['printer'], false)) { $result->addListener($this->printer); + if ($this->printer instanceof PHPUnit_TextUI_ResultPrinter) { + $result->addListener(new PHPUnit_Util_DeprecatedFeature_Logger); + } + if (isset($arguments['testdoxHTMLFile'])) { $result->addListener( - new PHPUnit_Util_TestDox_ResultPrinter_HTML( - $arguments['testdoxHTMLFile'] - ) + new PHPUnit_Util_TestDox_ResultPrinter_HTML( + $arguments['testdoxHTMLFile'] + ) ); } if (isset($arguments['testdoxTextFile'])) { $result->addListener( - new PHPUnit_Util_TestDox_ResultPrinter_Text( - $arguments['testdoxTextFile'] - ) + new PHPUnit_Util_TestDox_ResultPrinter_Text( + $arguments['testdoxTextFile'] + ) ); } $codeCoverageReports = 0; - if (isset($arguments['coverageClover'])) { - $codeCoverageReports++; - } - - if (isset($arguments['coverageCrap4J'])) { - $codeCoverageReports++; - } - - if (isset($arguments['coverageHtml'])) { - $codeCoverageReports++; - } - - if (isset($arguments['coveragePHP'])) { - $codeCoverageReports++; - } - - if (isset($arguments['coverageText'])) { - $codeCoverageReports++; - } - - if (isset($arguments['coverageXml'])) { - $codeCoverageReports++; - } + if (extension_loaded('tokenizer') && $this->canCollectCodeCoverage) { + if (isset($arguments['coverageClover'])) { + $codeCoverageReports++; + } - if (isset($arguments['noCoverage'])) { - $codeCoverageReports = 0; - } + if (isset($arguments['coverageCrap4J'])) { + $codeCoverageReports++; + } - if ($codeCoverageReports > 0) { - if (!$this->runtime->canCollectCodeCoverage()) { - $this->writeMessage('Error', 'No code coverage driver is available'); + if (isset($arguments['coverageHtml'])) { + $codeCoverageReports++; + } - $codeCoverageReports = 0; - } elseif (!isset($arguments['whitelist']) && !$this->codeCoverageFilter->hasWhitelist()) { - $this->writeMessage('Error', 'No whitelist configured, no code coverage will be generated'); + if (isset($arguments['coveragePHP'])) { + $codeCoverageReports++; + } - $codeCoverageReports = 0; + if (isset($arguments['coverageText'])) { + $codeCoverageReports++; } - } - if (!$this->printer instanceof PHPUnit_Util_Log_TAP) { - $this->printer->write("\n"); + if (isset($arguments['coverageXml'])) { + $codeCoverageReports++; + } + } else { + if (!extension_loaded('tokenizer')) { + $this->showExtensionNotLoadedMessage( + 'tokenizer', 'No code coverage will be generated.' + ); + } elseif (!extension_loaded('Xdebug')) { + $this->showExtensionNotLoadedMessage( + 'Xdebug', 'No code coverage will be generated.' + ); + } } if ($codeCoverageReports > 0) { $codeCoverage = new PHP_CodeCoverage( - null, - $this->codeCoverageFilter + null, $this->codeCoverageFilter ); $codeCoverage->setAddUncoveredFilesFromWhitelist( - $arguments['addUncoveredFilesFromWhitelist'] + $arguments['addUncoveredFilesFromWhitelist'] ); $codeCoverage->setCheckForUnintentionallyCoveredCode( - $arguments['strictCoverage'] + $arguments['strictCoverage'] ); $codeCoverage->setProcessUncoveredFilesFromWhitelist( - $arguments['processUncoveredFilesFromWhitelist'] + $arguments['processUncoveredFilesFromWhitelist'] ); if (isset($arguments['forceCoversAnnotation'])) { $codeCoverage->setForceCoversAnnotation( - $arguments['forceCoversAnnotation'] + $arguments['forceCoversAnnotation'] ); } if (isset($arguments['mapTestClassNameToCoveredClassName'])) { $codeCoverage->setMapTestClassNameToCoveredClassName( - $arguments['mapTestClassNameToCoveredClassName'] + $arguments['mapTestClassNameToCoveredClassName'] ); } - if (isset($arguments['whitelist'])) { - $this->codeCoverageFilter->addDirectoryToWhitelist($arguments['whitelist']); - } - $result->setCodeCoverage($codeCoverage); } @@ -384,36 +387,27 @@ class_exists($arguments['printer'], false)) { if (isset($arguments['jsonLogfile'])) { $result->addListener( - new PHPUnit_Util_Log_JSON($arguments['jsonLogfile']) + new PHPUnit_Util_Log_JSON($arguments['jsonLogfile']) ); } if (isset($arguments['tapLogfile'])) { $result->addListener( - new PHPUnit_Util_Log_TAP($arguments['tapLogfile']) - ); - } - - if (isset($arguments['teamcityLogfile'])) { - $result->addListener( - new PHPUnit_Util_Log_TeamCity($arguments['teamcityLogfile']) + new PHPUnit_Util_Log_TAP($arguments['tapLogfile']) ); } if (isset($arguments['junitLogfile'])) { $result->addListener( - new PHPUnit_Util_Log_JUnit( - $arguments['junitLogfile'], - $arguments['logIncompleteSkipped'] - ) + new PHPUnit_Util_Log_JUnit( + $arguments['junitLogfile'], $arguments['logIncompleteSkipped'] + ) ); } $result->beStrictAboutTestsThatDoNotTestAnything($arguments['reportUselessTests']); $result->beStrictAboutOutputDuringTests($arguments['disallowTestOutput']); - $result->beStrictAboutTodoAnnotatedTests($arguments['disallowTodoAnnotatedTests']); - $result->beStrictAboutResourceUsageDuringSmallTests($arguments['beStrictAboutResourceUsageDuringSmallTests']); - $result->enforceTimeLimit($arguments['enforceTimeLimit']); + $result->beStrictAboutTestSize($arguments['enforceTimeLimit']); $result->setTimeoutForSmallTests($arguments['timeoutForSmallTests']); $result->setTimeoutForMediumTests($arguments['timeoutForMediumTests']); $result->setTimeoutForLargeTests($arguments['timeoutForLargeTests']); @@ -434,7 +428,7 @@ class_exists($arguments['printer'], false)) { if (isset($codeCoverage)) { if (isset($arguments['coverageClover'])) { $this->printer->write( - "\nGenerating code coverage report in Clover XML format ..." + "\nGenerating code coverage report in Clover XML format ..." ); $writer = new PHP_CodeCoverage_Report_Clover; @@ -446,10 +440,10 @@ class_exists($arguments['printer'], false)) { if (isset($arguments['coverageCrap4J'])) { $this->printer->write( - "\nGenerating Crap4J report XML file ..." + "\nGenerating Crap4J report XML file ..." ); - $writer = new PHP_CodeCoverage_Report_Crap4j($arguments['crap4jThreshold']); + $writer = new PHP_CodeCoverage_Report_Crap4j; $writer->process($codeCoverage, $arguments['coverageCrap4J']); $this->printer->write(" done\n"); @@ -458,16 +452,16 @@ class_exists($arguments['printer'], false)) { if (isset($arguments['coverageHtml'])) { $this->printer->write( - "\nGenerating code coverage report in HTML format ..." + "\nGenerating code coverage report in HTML format ..." ); $writer = new PHP_CodeCoverage_Report_HTML( - $arguments['reportLowUpperBound'], - $arguments['reportHighLowerBound'], - sprintf( - ' and PHPUnit %s', - PHPUnit_Runner_Version::id() - ) + $arguments['reportLowUpperBound'], + $arguments['reportHighLowerBound'], + sprintf( + ' and PHPUnit %s', + PHPUnit_Runner_Version::id() + ) ); $writer->process($codeCoverage, $arguments['coverageHtml']); @@ -478,7 +472,7 @@ class_exists($arguments['printer'], false)) { if (isset($arguments['coveragePHP'])) { $this->printer->write( - "\nGenerating code coverage report in PHP format ..." + "\nGenerating code coverage report in PHP format ..." ); $writer = new PHP_CodeCoverage_Report_PHP; @@ -491,27 +485,27 @@ class_exists($arguments['printer'], false)) { if (isset($arguments['coverageText'])) { if ($arguments['coverageText'] == 'php://stdout') { $outputStream = $this->printer; - $colors = $arguments['colors'] && $arguments['colors'] != PHPUnit_TextUI_ResultPrinter::COLOR_NEVER; + $colors = (bool) $arguments['colors']; } else { $outputStream = new PHPUnit_Util_Printer($arguments['coverageText']); $colors = false; } $processor = new PHP_CodeCoverage_Report_Text( - $arguments['reportLowUpperBound'], - $arguments['reportHighLowerBound'], - $arguments['coverageTextShowUncoveredFiles'], - $arguments['coverageTextShowOnlySummary'] + $arguments['reportLowUpperBound'], + $arguments['reportHighLowerBound'], + $arguments['coverageTextShowUncoveredFiles'], + $arguments['coverageTextShowOnlySummary'] ); $outputStream->write( - $processor->process($codeCoverage, $colors) + $processor->process($codeCoverage, $colors) ); } if (isset($arguments['coverageXml'])) { $this->printer->write( - "\nGenerating code coverage report in PHPUnit XML format ..." + "\nGenerating code coverage report in PHPUnit XML format ..." ); $writer = new PHP_CodeCoverage_Report_XML; @@ -541,33 +535,28 @@ public function setPrinter(PHPUnit_TextUI_ResultPrinter $resultPrinter) */ protected function runFailed($message) { - $this->write($message . PHP_EOL); + self::printVersionString(); + self::write($message . PHP_EOL); exit(self::FAILURE_EXIT); } /** * @param string $buffer - * * @since Method available since Release 3.1.0 */ - protected function write($buffer) + protected static function write($buffer) { if (PHP_SAPI != 'cli') { $buffer = htmlspecialchars($buffer); } - if ($this->printer !== null) { - $this->printer->write($buffer); - } else { - print $buffer; - } + print $buffer; } /** * Returns the loader to be used. * * @return PHPUnit_Runner_TestSuiteLoader - * * @since Method available since Release 2.2.0 */ public function getLoader() @@ -579,9 +568,28 @@ public function getLoader() return $this->loader; } + /** + */ + public static function showError($message) + { + self::printVersionString(); + self::write($message . "\n"); + + exit(self::FAILURE_EXIT); + } + + /** + */ + public static function printVersionString() + { + if (!self::$versionStringPrinted) { + self::write(PHPUnit_Runner_Version::getVersionString() . "\n\n"); + self::$versionStringPrinted = true; + } + } + /** * @param array $arguments - * * @since Method available since Release 3.2.1 */ protected function handleConfiguration(array &$arguments) @@ -589,13 +597,13 @@ protected function handleConfiguration(array &$arguments) if (isset($arguments['configuration']) && !$arguments['configuration'] instanceof PHPUnit_Util_Configuration) { $arguments['configuration'] = PHPUnit_Util_Configuration::getInstance( - $arguments['configuration'] + $arguments['configuration'] ); } $arguments['debug'] = isset($arguments['debug']) ? $arguments['debug'] : false; $arguments['filter'] = isset($arguments['filter']) ? $arguments['filter'] : false; - $arguments['listeners'] = isset($arguments['listeners']) ? $arguments['listeners'] : []; + $arguments['listeners'] = isset($arguments['listeners']) ? $arguments['listeners'] : array(); if (isset($arguments['configuration'])) { $arguments['configuration']->handlePHPConfiguration(); @@ -612,11 +620,6 @@ protected function handleConfiguration(array &$arguments) $arguments['backupStaticAttributes'] = $phpunitConfiguration['backupStaticAttributes']; } - if (isset($phpunitConfiguration['beStrictAboutChangesToGlobalState']) && - !isset($arguments['beStrictAboutChangesToGlobalState'])) { - $arguments['beStrictAboutChangesToGlobalState'] = $phpunitConfiguration['beStrictAboutChangesToGlobalState']; - } - if (isset($phpunitConfiguration['bootstrap']) && !isset($arguments['bootstrap'])) { $arguments['bootstrap'] = $phpunitConfiguration['bootstrap']; @@ -652,31 +655,11 @@ protected function handleConfiguration(array &$arguments) $arguments['processIsolation'] = $phpunitConfiguration['processIsolation']; } - if (isset($phpunitConfiguration['stopOnError']) && - !isset($arguments['stopOnError'])) { - $arguments['stopOnError'] = $phpunitConfiguration['stopOnError']; - } - if (isset($phpunitConfiguration['stopOnFailure']) && !isset($arguments['stopOnFailure'])) { $arguments['stopOnFailure'] = $phpunitConfiguration['stopOnFailure']; } - if (isset($phpunitConfiguration['stopOnIncomplete']) && - !isset($arguments['stopOnIncomplete'])) { - $arguments['stopOnIncomplete'] = $phpunitConfiguration['stopOnIncomplete']; - } - - if (isset($phpunitConfiguration['stopOnRisky']) && - !isset($arguments['stopOnRisky'])) { - $arguments['stopOnRisky'] = $phpunitConfiguration['stopOnRisky']; - } - - if (isset($phpunitConfiguration['stopOnSkipped']) && - !isset($arguments['stopOnSkipped'])) { - $arguments['stopOnSkipped'] = $phpunitConfiguration['stopOnSkipped']; - } - if (isset($phpunitConfiguration['timeoutForSmallTests']) && !isset($arguments['timeoutForSmallTests'])) { $arguments['timeoutForSmallTests'] = $phpunitConfiguration['timeoutForSmallTests']; @@ -712,26 +695,11 @@ protected function handleConfiguration(array &$arguments) $arguments['enforceTimeLimit'] = $phpunitConfiguration['enforceTimeLimit']; } - if (isset($phpunitConfiguration['disallowTodoAnnotatedTests']) && - !isset($arguments['disallowTodoAnnotatedTests'])) { - $arguments['disallowTodoAnnotatedTests'] = $phpunitConfiguration['disallowTodoAnnotatedTests']; - } - - if (isset($phpunitConfiguration['beStrictAboutResourceUsageDuringSmallTests']) && - !isset($arguments['beStrictAboutResourceUsageDuringSmallTests'])) { - $arguments['beStrictAboutResourceUsageDuringSmallTests'] = $phpunitConfiguration['beStrictAboutResourceUsageDuringSmallTests']; - } - if (isset($phpunitConfiguration['verbose']) && !isset($arguments['verbose'])) { $arguments['verbose'] = $phpunitConfiguration['verbose']; } - if (isset($phpunitConfiguration['reverseDefectList']) && - !isset($arguments['reverseList'])) { - $arguments['reverseList'] = $phpunitConfiguration['reverseDefectList']; - } - if (isset($phpunitConfiguration['forceCoversAnnotation']) && !isset($arguments['forceCoversAnnotation'])) { $arguments['forceCoversAnnotation'] = $phpunitConfiguration['forceCoversAnnotation']; @@ -742,8 +710,7 @@ protected function handleConfiguration(array &$arguments) $arguments['mapTestClassNameToCoveredClassName'] = $phpunitConfiguration['mapTestClassNameToCoveredClassName']; } - $groupCliArgs = []; - + $groupCliArgs = array(); if (!empty($arguments['groups'])) { $groupCliArgs = $arguments['groups']; } @@ -771,11 +738,11 @@ protected function handleConfiguration(array &$arguments) $listener = new $listener['class']; } else { $listenerClass = new ReflectionClass( - $listener['class'] - ); + $listener['class'] + ); $listener = $listenerClass->newInstanceArgs( - $listener['arguments'] - ); + $listener['arguments'] + ); } if ($listener instanceof PHPUnit_Framework_TestListener) { @@ -794,11 +761,6 @@ protected function handleConfiguration(array &$arguments) if (isset($loggingConfiguration['coverage-crap4j']) && !isset($arguments['coverageCrap4J'])) { $arguments['coverageCrap4J'] = $loggingConfiguration['coverage-crap4j']; - - if (isset($loggingConfiguration['crap4jThreshold']) && - !isset($arguments['crap4jThreshold'])) { - $arguments['crap4jThreshold'] = $loggingConfiguration['crap4jThreshold']; - } } if (isset($loggingConfiguration['coverage-html']) && @@ -848,8 +810,7 @@ protected function handleConfiguration(array &$arguments) if (isset($loggingConfiguration['plain'])) { $arguments['listeners'][] = new PHPUnit_TextUI_ResultPrinter( - $loggingConfiguration['plain'], - true + $loggingConfiguration['plain'], true ); } @@ -858,11 +819,6 @@ protected function handleConfiguration(array &$arguments) $arguments['tapLogfile'] = $loggingConfiguration['tap']; } - if (isset($loggingConfiguration['teamcity']) && - !isset($arguments['teamcityLogfile'])) { - $arguments['teamcityLogfile'] = $loggingConfiguration['teamcity']; - } - if (isset($loggingConfiguration['junit']) && !isset($arguments['junitLogfile'])) { $arguments['junitLogfile'] = $loggingConfiguration['junit']; @@ -886,19 +842,37 @@ protected function handleConfiguration(array &$arguments) if ((isset($arguments['coverageClover']) || isset($arguments['coverageCrap4J']) || isset($arguments['coverageHtml']) || - isset($arguments['coveragePHP']) || - isset($arguments['coverageText']) || - isset($arguments['coverageXml'])) && - $this->runtime->canCollectCodeCoverage()) { - $filterConfiguration = $arguments['configuration']->getFilterConfiguration(); - $arguments['addUncoveredFilesFromWhitelist'] = $filterConfiguration['whitelist']['addUncoveredFilesFromWhitelist']; + isset($arguments['coveragePHP'])) || + isset($arguments['coverageText']) && + $this->canCollectCodeCoverage) { + + $filterConfiguration = $arguments['configuration']->getFilterConfiguration(); + $arguments['addUncoveredFilesFromWhitelist'] = $filterConfiguration['whitelist']['addUncoveredFilesFromWhitelist']; $arguments['processUncoveredFilesFromWhitelist'] = $filterConfiguration['whitelist']['processUncoveredFilesFromWhitelist']; + foreach ($filterConfiguration['blacklist']['include']['directory'] as $dir) { + $this->codeCoverageFilter->addDirectoryToBlacklist( + $dir['path'], $dir['suffix'], $dir['prefix'], $dir['group'] + ); + } + + foreach ($filterConfiguration['blacklist']['include']['file'] as $file) { + $this->codeCoverageFilter->addFileToBlacklist($file); + } + + foreach ($filterConfiguration['blacklist']['exclude']['directory'] as $dir) { + $this->codeCoverageFilter->removeDirectoryFromBlacklist( + $dir['path'], $dir['suffix'], $dir['prefix'], $dir['group'] + ); + } + + foreach ($filterConfiguration['blacklist']['exclude']['file'] as $file) { + $this->codeCoverageFilter->removeFileFromBlacklist($file); + } + foreach ($filterConfiguration['whitelist']['include']['directory'] as $dir) { $this->codeCoverageFilter->addDirectoryToWhitelist( - $dir['path'], - $dir['suffix'], - $dir['prefix'] + $dir['path'], $dir['suffix'], $dir['prefix'] ); } @@ -908,9 +882,7 @@ protected function handleConfiguration(array &$arguments) foreach ($filterConfiguration['whitelist']['exclude']['directory'] as $dir) { $this->codeCoverageFilter->removeDirectoryFromWhitelist( - $dir['path'], - $dir['suffix'], - $dir['prefix'] + $dir['path'], $dir['suffix'], $dir['prefix'] ); } @@ -920,63 +892,72 @@ protected function handleConfiguration(array &$arguments) } } - $arguments['addUncoveredFilesFromWhitelist'] = isset($arguments['addUncoveredFilesFromWhitelist']) ? $arguments['addUncoveredFilesFromWhitelist'] : true; - $arguments['processUncoveredFilesFromWhitelist'] = isset($arguments['processUncoveredFilesFromWhitelist']) ? $arguments['processUncoveredFilesFromWhitelist'] : false; - $arguments['backupGlobals'] = isset($arguments['backupGlobals']) ? $arguments['backupGlobals'] : null; - $arguments['backupStaticAttributes'] = isset($arguments['backupStaticAttributes']) ? $arguments['backupStaticAttributes'] : null; - $arguments['beStrictAboutChangesToGlobalState'] = isset($arguments['beStrictAboutChangesToGlobalState']) ? $arguments['beStrictAboutChangesToGlobalState'] : null; - $arguments['cacheTokens'] = isset($arguments['cacheTokens']) ? $arguments['cacheTokens'] : false; - $arguments['columns'] = isset($arguments['columns']) ? $arguments['columns'] : 80; - $arguments['colors'] = isset($arguments['colors']) ? $arguments['colors'] : PHPUnit_TextUI_ResultPrinter::COLOR_DEFAULT; - $arguments['convertErrorsToExceptions'] = isset($arguments['convertErrorsToExceptions']) ? $arguments['convertErrorsToExceptions'] : true; - $arguments['convertNoticesToExceptions'] = isset($arguments['convertNoticesToExceptions']) ? $arguments['convertNoticesToExceptions'] : true; - $arguments['convertWarningsToExceptions'] = isset($arguments['convertWarningsToExceptions']) ? $arguments['convertWarningsToExceptions'] : true; - $arguments['excludeGroups'] = isset($arguments['excludeGroups']) ? $arguments['excludeGroups'] : []; - $arguments['groups'] = isset($arguments['groups']) ? $arguments['groups'] : []; - $arguments['logIncompleteSkipped'] = isset($arguments['logIncompleteSkipped']) ? $arguments['logIncompleteSkipped'] : false; - $arguments['processIsolation'] = isset($arguments['processIsolation']) ? $arguments['processIsolation'] : false; - $arguments['repeat'] = isset($arguments['repeat']) ? $arguments['repeat'] : false; - $arguments['reportHighLowerBound'] = isset($arguments['reportHighLowerBound']) ? $arguments['reportHighLowerBound'] : 90; - $arguments['reportLowUpperBound'] = isset($arguments['reportLowUpperBound']) ? $arguments['reportLowUpperBound'] : 50; - $arguments['crap4jThreshold'] = isset($arguments['crap4jThreshold']) ? $arguments['crap4jThreshold'] : 30; - $arguments['stopOnError'] = isset($arguments['stopOnError']) ? $arguments['stopOnError'] : false; - $arguments['stopOnFailure'] = isset($arguments['stopOnFailure']) ? $arguments['stopOnFailure'] : false; - $arguments['stopOnIncomplete'] = isset($arguments['stopOnIncomplete']) ? $arguments['stopOnIncomplete'] : false; - $arguments['stopOnRisky'] = isset($arguments['stopOnRisky']) ? $arguments['stopOnRisky'] : false; - $arguments['stopOnSkipped'] = isset($arguments['stopOnSkipped']) ? $arguments['stopOnSkipped'] : false; - $arguments['timeoutForSmallTests'] = isset($arguments['timeoutForSmallTests']) ? $arguments['timeoutForSmallTests'] : 1; - $arguments['timeoutForMediumTests'] = isset($arguments['timeoutForMediumTests']) ? $arguments['timeoutForMediumTests'] : 10; - $arguments['timeoutForLargeTests'] = isset($arguments['timeoutForLargeTests']) ? $arguments['timeoutForLargeTests'] : 60; - $arguments['reportUselessTests'] = isset($arguments['reportUselessTests']) ? $arguments['reportUselessTests'] : false; - $arguments['strictCoverage'] = isset($arguments['strictCoverage']) ? $arguments['strictCoverage'] : false; - $arguments['disallowTestOutput'] = isset($arguments['disallowTestOutput']) ? $arguments['disallowTestOutput'] : false; - $arguments['enforceTimeLimit'] = isset($arguments['enforceTimeLimit']) ? $arguments['enforceTimeLimit'] : false; - $arguments['disallowTodoAnnotatedTests'] = isset($arguments['disallowTodoAnnotatedTests']) ? $arguments['disallowTodoAnnotatedTests'] : false; - $arguments['beStrictAboutResourceUsageDuringSmallTests'] = isset($arguments['beStrictAboutResourceUsageDuringSmallTests']) ? $arguments['beStrictAboutResourceUsageDuringSmallTests'] : false; - $arguments['reverseList'] = isset($arguments['reverseList']) ? $arguments['reverseList'] : false; - $arguments['verbose'] = isset($arguments['verbose']) ? $arguments['verbose'] : false; + $arguments['addUncoveredFilesFromWhitelist'] = isset($arguments['addUncoveredFilesFromWhitelist']) ? $arguments['addUncoveredFilesFromWhitelist'] : true; + $arguments['processUncoveredFilesFromWhitelist'] = isset($arguments['processUncoveredFilesFromWhitelist']) ? $arguments['processUncoveredFilesFromWhitelist'] : false; + $arguments['backupGlobals'] = isset($arguments['backupGlobals']) ? $arguments['backupGlobals'] : null; + $arguments['backupStaticAttributes'] = isset($arguments['backupStaticAttributes']) ? $arguments['backupStaticAttributes'] : null; + $arguments['cacheTokens'] = isset($arguments['cacheTokens']) ? $arguments['cacheTokens'] : false; + $arguments['colors'] = isset($arguments['colors']) ? $arguments['colors'] : false; + $arguments['convertErrorsToExceptions'] = isset($arguments['convertErrorsToExceptions']) ? $arguments['convertErrorsToExceptions'] : true; + $arguments['convertNoticesToExceptions'] = isset($arguments['convertNoticesToExceptions']) ? $arguments['convertNoticesToExceptions'] : true; + $arguments['convertWarningsToExceptions'] = isset($arguments['convertWarningsToExceptions']) ? $arguments['convertWarningsToExceptions'] : true; + $arguments['excludeGroups'] = isset($arguments['excludeGroups']) ? $arguments['excludeGroups'] : array(); + $arguments['groups'] = isset($arguments['groups']) ? $arguments['groups'] : array(); + $arguments['logIncompleteSkipped'] = isset($arguments['logIncompleteSkipped']) ? $arguments['logIncompleteSkipped'] : false; + $arguments['processIsolation'] = isset($arguments['processIsolation']) ? $arguments['processIsolation'] : false; + $arguments['repeat'] = isset($arguments['repeat']) ? $arguments['repeat'] : false; + $arguments['reportHighLowerBound'] = isset($arguments['reportHighLowerBound']) ? $arguments['reportHighLowerBound'] : 90; + $arguments['reportLowUpperBound'] = isset($arguments['reportLowUpperBound']) ? $arguments['reportLowUpperBound'] : 50; + $arguments['stopOnError'] = isset($arguments['stopOnError']) ? $arguments['stopOnError'] : false; + $arguments['stopOnFailure'] = isset($arguments['stopOnFailure']) ? $arguments['stopOnFailure'] : false; + $arguments['stopOnIncomplete'] = isset($arguments['stopOnIncomplete']) ? $arguments['stopOnIncomplete'] : false; + $arguments['stopOnRisky'] = isset($arguments['stopOnRisky']) ? $arguments['stopOnRisky'] : false; + $arguments['stopOnSkipped'] = isset($arguments['stopOnSkipped']) ? $arguments['stopOnSkipped'] : false; + $arguments['timeoutForSmallTests'] = isset($arguments['timeoutForSmallTests']) ? $arguments['timeoutForSmallTests'] : 1; + $arguments['timeoutForMediumTests'] = isset($arguments['timeoutForMediumTests']) ? $arguments['timeoutForMediumTests'] : 10; + $arguments['timeoutForLargeTests'] = isset($arguments['timeoutForLargeTests']) ? $arguments['timeoutForLargeTests'] : 60; + $arguments['reportUselessTests'] = isset($arguments['reportUselessTests']) ? $arguments['reportUselessTests'] : false; + $arguments['strictCoverage'] = isset($arguments['strictCoverage']) ? $arguments['strictCoverage'] : false; + $arguments['disallowTestOutput'] = isset($arguments['disallowTestOutput']) ? $arguments['disallowTestOutput'] : false; + $arguments['enforceTimeLimit'] = isset($arguments['enforceTimeLimit']) ? $arguments['enforceTimeLimit'] : false; + $arguments['verbose'] = isset($arguments['verbose']) ? $arguments['verbose'] : false; } /** - * @param string $type * @param string $message - * - * @since Method available since Release 5.0.0 + * @since Method available since Release 4.0.0 */ - private function writeMessage($type, $message) + private function showExtensionNotLoadedMessage($extension, $message = '') { - if (!$this->messagePrinted) { - $this->write("\n"); + if (isset($this->missingExtensions[$extension])) { + return; + } + + if (!empty($message)) { + $message = ' ' . $message; } - $this->write( - sprintf( - "%-15s%s\n", - $type . ':', - $message - ) + $this->showMessage( + 'The ' . $extension . ' extension is not loaded.' . $message . "\n" ); - $this->messagePrinted = true; + $this->missingExtensions[$extension] = true; + } + + /** + * Shows a message. + * + * @param string $message + * @param boolean $exit + * @since Method available since Release 4.0.0 + */ + private function showMessage($message, $exit = false) + { + $this->printVersionString(); + $this->write($message . "\n"); + + if ($exit) { + exit(self::EXCEPTION_EXIT); + } } } diff --git a/tests/vendor/phpunit/phpunit/src/Util/Blacklist.php b/tests/vendor/phpunit/phpunit/src/Util/Blacklist.php index 6be7c641..d8269cd3 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/Blacklist.php +++ b/tests/vendor/phpunit/phpunit/src/Util/Blacklist.php @@ -1,70 +1,69 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 4.0.0 */ /** * Utility class for blacklisting PHPUnit's own source code files. * - * @since Class available since Release 4.0.0 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 4.0.0 */ class PHPUnit_Util_Blacklist { - /** - * @var array - */ - public static $blacklistedClassNames = [ - 'File_Iterator' => 1, - 'PHP_CodeCoverage' => 1, - 'PHP_Invoker' => 1, - 'PHP_Timer' => 1, - 'PHP_Token' => 1, - 'PHPUnit_Framework_TestCase' => 2, - 'PHPUnit_Extensions_Database_TestCase' => 2, - 'PHPUnit_Framework_MockObject_Generator' => 2, - 'PHPUnit_Extensions_SeleniumTestCase' => 2, - 'Text_Template' => 1, - 'Symfony\Component\Yaml\Yaml' => 1, - 'SebastianBergmann\Diff\Diff' => 1, - 'SebastianBergmann\Environment\Runtime' => 1, - 'SebastianBergmann\Comparator\Comparator' => 1, - 'SebastianBergmann\Exporter\Exporter' => 1, - 'SebastianBergmann\GlobalState\Snapshot' => 1, - 'SebastianBergmann\RecursionContext\Context' => 1, - 'SebastianBergmann\Version' => 1, - 'Composer\Autoload\ClassLoader' => 1, - 'Doctrine\Instantiator\Instantiator' => 1, - 'phpDocumentor\Reflection\DocBlock' => 1, - 'Prophecy\Prophet' => 1, - 'DeepCopy\DeepCopy' => 1 - ]; - /** * @var array */ private static $directories; /** - * @return array - * - * @since Method available since Release 4.1.0 - */ - public function getBlacklistedDirectories() - { - $this->initialize(); - - return self::$directories; - } - - /** - * @param string $file - * - * @return bool + * @param string $file + * @return boolean */ public function isBlacklisted($file) { @@ -86,9 +85,28 @@ public function isBlacklisted($file) private function initialize() { if (self::$directories === null) { - self::$directories = []; + self::$directories = array(); + + $classes = array( + 'File_Iterator' => 1, + 'PHP_CodeCoverage' => 1, + 'PHP_Invoker' => 1, + 'PHP_Timer' => 1, + 'PHP_Token' => 1, + 'PHPUnit_Framework_TestCase' => 2, + 'PHPUnit_Extensions_Database_TestCase' => 2, + 'PHPUnit_Framework_MockObject_Generator' => 2, + 'PHPUnit_Extensions_SeleniumTestCase' => 2, + 'PHPUnit_Extensions_Story_TestCase' => 2, + 'Text_Template' => 1, + 'SebastianBergmann\Diff' => 1, + 'SebastianBergmann\Environment\Runtime' => 1, + 'SebastianBergmann\Exporter\Exporter' => 1, + 'SebastianBergmann\Version' => 1, + 'Composer\Autoload\ClassLoader' => 1 + ); - foreach (self::$blacklistedClassNames as $className => $parent) { + foreach ($classes as $className => $parent) { if (!class_exists($className)) { continue; } @@ -102,15 +120,6 @@ private function initialize() self::$directories[] = $directory; } - - // Hide process isolation workaround on Windows. - // @see PHPUnit_Util_PHP::factory() - // @see PHPUnit_Util_PHP_Windows::process() - if (DIRECTORY_SEPARATOR === '\\') { - // tempnam() prefix is limited to first 3 chars. - // @see http://php.net/manual/en/function.tempnam.php - self::$directories[] = sys_get_temp_dir() . '\\PHP'; - } - } + } } } diff --git a/tests/vendor/phpunit/phpunit/src/Util/Configuration.php b/tests/vendor/phpunit/phpunit/src/Util/Configuration.php index 93a5db42..c15b35ff 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/Configuration.php +++ b/tests/vendor/phpunit/phpunit/src/Util/Configuration.php @@ -1,11 +1,46 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.2.0 */ /** @@ -19,9 +54,7 @@ * backupStaticAttributes="false" * bootstrap="/path/to/bootstrap.php" * cacheTokens="false" - * columns="80" * colors="false" - * stderr="false" * convertErrorsToExceptions="true" * convertNoticesToExceptions="true" * convertWarningsToExceptions="true" @@ -35,18 +68,14 @@ * stopOnRisky="false" * stopOnSkipped="false" * testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader" - * beStrictAboutChangesToGlobalState="false" - * beStrictAboutOutputDuringTests="false" - * beStrictAboutResourceUsageDuringSmallTests="false" - * beStrictAboutTestsThatDoNotTestAnything="false" - * beStrictAboutTodoAnnotatedTests="false" - * checkForUnintentionallyCoveredCode="false" - * enforceTimeLimit="false" * timeoutForSmallTests="1" * timeoutForMediumTests="10" * timeoutForLargeTests="60" - * verbose="false" - * reverseDefectList="false"> + * beStrictAboutTestsThatDoNotTestAnything="false" + * beStrictAboutOutputDuringTests="false" + * beStrictAboutTestSize="false" + * checkForUnintentionallyCoveredCode="false" + * verbose="false"> * * * /path/to/files @@ -65,6 +94,14 @@ * * * + * + * /path/to/files + * /path/to/file + * + * /path/to/files + * /path/to/file + * + * * * /path/to/files @@ -98,14 +135,13 @@ * * * - * * * * - * * * * + * * * * @@ -121,14 +157,28 @@ * * * + * + * + * + * * * * - * @since Class available since Release 3.2.0 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.2.0 */ class PHPUnit_Util_Configuration { - private static $instances = []; + private static $instances = array(); protected $document; protected $xpath; @@ -142,7 +192,7 @@ class PHPUnit_Util_Configuration protected function __construct($filename) { $this->filename = $filename; - $this->document = PHPUnit_Util_XML::loadFile($filename, false, true, true); + $this->document = PHPUnit_Util_XML::loadFile($filename, false, true); $this->xpath = new DOMXPath($this->document); } @@ -156,10 +206,8 @@ final private function __clone() /** * Returns a PHPUnit configuration object. * - * @param string $filename - * + * @param string $filename * @return PHPUnit_Util_Configuration - * * @since Method available since Release 3.4.0 */ public static function getInstance($filename) @@ -168,15 +216,15 @@ public static function getInstance($filename) if ($realpath === false) { throw new PHPUnit_Framework_Exception( - sprintf( - 'Could not read "%s".', - $filename - ) + sprintf( + 'Could not read "%s".', + $filename + ) ); } if (!isset(self::$instances[$realpath])) { - self::$instances[$realpath] = new self($realpath); + self::$instances[$realpath] = new PHPUnit_Util_Configuration($realpath); } return self::$instances[$realpath]; @@ -186,7 +234,6 @@ public static function getInstance($filename) * Returns the realpath to the configuration file. * * @return string - * * @since Method available since Release 3.6.0 */ public function getFilename() @@ -198,7 +245,6 @@ public function getFilename() * Returns the configuration for SUT filtering. * * @return array - * * @since Method available since Release 3.2.1 */ public function getFilterConfiguration() @@ -211,67 +257,84 @@ public function getFilterConfiguration() if ($tmp->length == 1) { if ($tmp->item(0)->hasAttribute('addUncoveredFilesFromWhitelist')) { $addUncoveredFilesFromWhitelist = $this->getBoolean( - (string) $tmp->item(0)->getAttribute( - 'addUncoveredFilesFromWhitelist' - ), - true + (string) $tmp->item(0)->getAttribute( + 'addUncoveredFilesFromWhitelist' + ), + true ); } if ($tmp->item(0)->hasAttribute('processUncoveredFilesFromWhitelist')) { $processUncoveredFilesFromWhitelist = $this->getBoolean( - (string) $tmp->item(0)->getAttribute( - 'processUncoveredFilesFromWhitelist' - ), - false + (string) $tmp->item(0)->getAttribute( + 'processUncoveredFilesFromWhitelist' + ), + false ); } } - return [ - 'whitelist' => [ - 'addUncoveredFilesFromWhitelist' => $addUncoveredFilesFromWhitelist, + return array( + 'blacklist' => array( + 'include' => array( + 'directory' => $this->readFilterDirectories( + 'filter/blacklist/directory' + ), + 'file' => $this->readFilterFiles( + 'filter/blacklist/file' + ) + ), + 'exclude' => array( + 'directory' => $this->readFilterDirectories( + 'filter/blacklist/exclude/directory' + ), + 'file' => $this->readFilterFiles( + 'filter/blacklist/exclude/file' + ) + ) + ), + 'whitelist' => array( + 'addUncoveredFilesFromWhitelist' => $addUncoveredFilesFromWhitelist, 'processUncoveredFilesFromWhitelist' => $processUncoveredFilesFromWhitelist, - 'include' => [ + 'include' => array( 'directory' => $this->readFilterDirectories( - 'filter/whitelist/directory' + 'filter/whitelist/directory' ), 'file' => $this->readFilterFiles( - 'filter/whitelist/file' + 'filter/whitelist/file' ) - ], - 'exclude' => [ + ), + 'exclude' => array( 'directory' => $this->readFilterDirectories( - 'filter/whitelist/exclude/directory' + 'filter/whitelist/exclude/directory' ), 'file' => $this->readFilterFiles( - 'filter/whitelist/exclude/file' + 'filter/whitelist/exclude/file' ) - ] - ] - ]; + ) + ) + ); } /** * Returns the configuration for groups. * * @return array - * * @since Method available since Release 3.2.1 */ public function getGroupConfiguration() { - $groups = [ - 'include' => [], - 'exclude' => [] - ]; + $groups = array( + 'include' => array(), + 'exclude' => array() + ); foreach ($this->xpath->query('groups/include/group') as $group) { - $groups['include'][] = (string) $group->textContent; + $groups['include'][] = (string) $group->nodeValue; } foreach ($this->xpath->query('groups/exclude/group') as $group) { - $groups['exclude'][] = (string) $group->textContent; + $groups['exclude'][] = (string) $group->nodeValue; } return $groups; @@ -281,45 +344,43 @@ public function getGroupConfiguration() * Returns the configuration for listeners. * * @return array - * * @since Method available since Release 3.4.0 */ public function getListenerConfiguration() { - $result = []; + $result = array(); foreach ($this->xpath->query('listeners/listener') as $listener) { $class = (string) $listener->getAttribute('class'); $file = ''; - $arguments = []; + $arguments = array(); - if ($listener->getAttribute('file')) { + if ($listener->hasAttribute('file')) { $file = $this->toAbsolutePath( - (string) $listener->getAttribute('file'), - true + (string) $listener->getAttribute('file'), true ); } foreach ($listener->childNodes as $node) { - if ($node instanceof DOMElement && $node->tagName == 'arguments') { - foreach ($node->childNodes as $argument) { - if ($argument instanceof DOMElement) { - if ($argument->tagName == 'file' || + if ($node instanceof DOMElement && $node->tagName == 'arguments') { + foreach ($node->childNodes as $argument) { + if ($argument instanceof DOMElement) { + if ($argument->tagName == 'file' || $argument->tagName == 'directory') { - $arguments[] = $this->toAbsolutePath((string) $argument->textContent); - } else { - $arguments[] = PHPUnit_Util_XML::xmlToVariable($argument); - } + $arguments[] = $this->toAbsolutePath((string) $argument->nodeValue); + } else { + $arguments[] = PHPUnit_Util_XML::xmlToVariable($argument); } } } + } } - $result[] = [ + $result[] = array( 'class' => $class, 'file' => $file, 'arguments' => $arguments - ]; + ); } return $result; @@ -332,57 +393,41 @@ public function getListenerConfiguration() */ public function getLoggingConfiguration() { - $result = []; + $result = array(); foreach ($this->xpath->query('logging/log') as $log) { - $type = (string) $log->getAttribute('type'); - $target = (string) $log->getAttribute('target'); - - if (!$target) { - continue; - } + $type = (string) $log->getAttribute('type'); - $target = $this->toAbsolutePath($target); + $target = $this->toAbsolutePath( + (string) $log->getAttribute('target') + ); if ($type == 'coverage-html') { if ($log->hasAttribute('lowUpperBound')) { - $result['lowUpperBound'] = $this->getInteger( - (string) $log->getAttribute('lowUpperBound'), - 50 - ); + $result['lowUpperBound'] = (string) $log->getAttribute('lowUpperBound'); } if ($log->hasAttribute('highLowerBound')) { - $result['highLowerBound'] = $this->getInteger( - (string) $log->getAttribute('highLowerBound'), - 90 - ); - } - } elseif ($type == 'coverage-crap4j') { - if ($log->hasAttribute('threshold')) { - $result['crap4jThreshold'] = $this->getInteger( - (string) $log->getAttribute('threshold'), - 30 - ); + $result['highLowerBound'] = (string) $log->getAttribute('highLowerBound'); } } elseif ($type == 'junit') { if ($log->hasAttribute('logIncompleteSkipped')) { $result['logIncompleteSkipped'] = $this->getBoolean( - (string) $log->getAttribute('logIncompleteSkipped'), - false + (string) $log->getAttribute('logIncompleteSkipped'), + false ); } } elseif ($type == 'coverage-text') { if ($log->hasAttribute('showUncoveredFiles')) { $result['coverageTextShowUncoveredFiles'] = $this->getBoolean( - (string) $log->getAttribute('showUncoveredFiles'), - false + (string) $log->getAttribute('showUncoveredFiles'), + false ); } if ($log->hasAttribute('showOnlySummary')) { $result['coverageTextShowOnlySummary'] = $this->getBoolean( - (string) $log->getAttribute('showOnlySummary'), - false + (string) $log->getAttribute('showOnlySummary'), + false ); } } @@ -397,30 +442,28 @@ public function getLoggingConfiguration() * Returns the PHP configuration. * * @return array - * * @since Method available since Release 3.2.1 */ public function getPHPConfiguration() { - $result = [ - 'include_path' => [], - 'ini' => [], - 'const' => [], - 'var' => [], - 'env' => [], - 'post' => [], - 'get' => [], - 'cookie' => [], - 'server' => [], - 'files' => [], - 'request' => [] - ]; + $result = array( + 'include_path' => array(), + 'ini' => array(), + 'const' => array(), + 'var' => array(), + 'env' => array(), + 'post' => array(), + 'get' => array(), + 'cookie' => array(), + 'server' => array(), + 'files' => array(), + 'request' => array() + ); foreach ($this->xpath->query('php/includePath') as $includePath) { - $path = (string) $includePath->textContent; - if ($path) { - $result['include_path'][] = $this->toAbsolutePath($path); - } + $path = (string) $includePath->nodeValue; + + $result['include_path'][] = $this->toAbsolutePath($path); } foreach ($this->xpath->query('php/ini') as $ini) { @@ -437,7 +480,7 @@ public function getPHPConfiguration() $result['const'][$name] = $this->getBoolean($value, $value); } - foreach (['var', 'env', 'post', 'get', 'cookie', 'server', 'files', 'request'] as $array) { + foreach (array('var', 'env', 'post', 'get', 'cookie', 'server', 'files', 'request') as $array) { foreach ($this->xpath->query('php/' . $array) as $var) { $name = (string) $var->getAttribute('name'); $value = (string) $var->getAttribute('value'); @@ -460,10 +503,10 @@ public function handlePHPConfiguration() if (! empty($configuration['include_path'])) { ini_set( - 'include_path', - implode(PATH_SEPARATOR, $configuration['include_path']) . - PATH_SEPARATOR . - ini_get('include_path') + 'include_path', + implode(PATH_SEPARATOR, $configuration['include_path']) . + PATH_SEPARATOR . + ini_get('include_path') ); } @@ -481,13 +524,17 @@ public function handlePHPConfiguration() } } - foreach (['var', 'post', 'get', 'cookie', 'server', 'files', 'request'] as $array) { + foreach (array('var', 'env', 'post', 'get', 'cookie', 'server', 'files', 'request') as $array) { // See https://github.com/sebastianbergmann/phpunit/issues/277 switch ($array) { case 'var': $target = &$GLOBALS; break; + case 'env': + $target = &$_ENV; + break; + case 'server': $target = &$_SERVER; break; @@ -503,12 +550,7 @@ public function handlePHPConfiguration() } foreach ($configuration['env'] as $name => $value) { - if (false === getenv($name)) { - putenv("{$name}={$value}"); - } - if (!isset($_ENV[$name])) { - $_ENV[$name] = $value; - } + putenv("$name=$value"); } } @@ -516,253 +558,238 @@ public function handlePHPConfiguration() * Returns the PHPUnit configuration. * * @return array - * * @since Method available since Release 3.2.14 */ public function getPHPUnitConfiguration() { - $result = []; + $result = array(); $root = $this->document->documentElement; if ($root->hasAttribute('cacheTokens')) { $result['cacheTokens'] = $this->getBoolean( - (string) $root->getAttribute('cacheTokens'), - false + (string) $root->getAttribute('cacheTokens'), false ); } - if ($root->hasAttribute('columns')) { - $columns = (string) $root->getAttribute('columns'); - - if ($columns == 'max') { - $result['columns'] = 'max'; - } else { - $result['columns'] = $this->getInteger($columns, 80); - } - } - if ($root->hasAttribute('colors')) { - /* only allow boolean for compatibility with previous versions - 'always' only allowed from command line */ - if ($this->getBoolean($root->getAttribute('colors'), false)) { - $result['colors'] = PHPUnit_TextUI_ResultPrinter::COLOR_AUTO; - } else { - $result['colors'] = PHPUnit_TextUI_ResultPrinter::COLOR_NEVER; - } - } - - /* - * Issue #657 - */ - if ($root->hasAttribute('stderr')) { - $result['stderr'] = $this->getBoolean( - (string) $root->getAttribute('stderr'), - false + $result['colors'] = $this->getBoolean( + (string) $root->getAttribute('colors'), false ); } if ($root->hasAttribute('backupGlobals')) { $result['backupGlobals'] = $this->getBoolean( - (string) $root->getAttribute('backupGlobals'), - true + (string) $root->getAttribute('backupGlobals'), true ); } if ($root->hasAttribute('backupStaticAttributes')) { $result['backupStaticAttributes'] = $this->getBoolean( - (string) $root->getAttribute('backupStaticAttributes'), - false + (string) $root->getAttribute('backupStaticAttributes'), false ); } - if ($root->getAttribute('bootstrap')) { + if ($root->hasAttribute('bootstrap')) { $result['bootstrap'] = $this->toAbsolutePath( - (string) $root->getAttribute('bootstrap') + (string) $root->getAttribute('bootstrap') ); } if ($root->hasAttribute('convertErrorsToExceptions')) { $result['convertErrorsToExceptions'] = $this->getBoolean( - (string) $root->getAttribute('convertErrorsToExceptions'), - true + (string) $root->getAttribute('convertErrorsToExceptions'), true ); } if ($root->hasAttribute('convertNoticesToExceptions')) { $result['convertNoticesToExceptions'] = $this->getBoolean( - (string) $root->getAttribute('convertNoticesToExceptions'), - true + (string) $root->getAttribute('convertNoticesToExceptions'), true ); } if ($root->hasAttribute('convertWarningsToExceptions')) { $result['convertWarningsToExceptions'] = $this->getBoolean( - (string) $root->getAttribute('convertWarningsToExceptions'), - true + (string) $root->getAttribute('convertWarningsToExceptions'), true ); } if ($root->hasAttribute('forceCoversAnnotation')) { $result['forceCoversAnnotation'] = $this->getBoolean( - (string) $root->getAttribute('forceCoversAnnotation'), - false + (string) $root->getAttribute('forceCoversAnnotation'), false ); } if ($root->hasAttribute('mapTestClassNameToCoveredClassName')) { $result['mapTestClassNameToCoveredClassName'] = $this->getBoolean( - (string) $root->getAttribute('mapTestClassNameToCoveredClassName'), - false + (string) $root->getAttribute('mapTestClassNameToCoveredClassName'), + false ); } if ($root->hasAttribute('processIsolation')) { $result['processIsolation'] = $this->getBoolean( - (string) $root->getAttribute('processIsolation'), - false + (string) $root->getAttribute('processIsolation'), false ); } if ($root->hasAttribute('stopOnError')) { $result['stopOnError'] = $this->getBoolean( - (string) $root->getAttribute('stopOnError'), - false + (string) $root->getAttribute('stopOnError'), false ); } if ($root->hasAttribute('stopOnFailure')) { $result['stopOnFailure'] = $this->getBoolean( - (string) $root->getAttribute('stopOnFailure'), - false + (string) $root->getAttribute('stopOnFailure'), false ); } if ($root->hasAttribute('stopOnIncomplete')) { $result['stopOnIncomplete'] = $this->getBoolean( - (string) $root->getAttribute('stopOnIncomplete'), - false + (string) $root->getAttribute('stopOnIncomplete'), false ); } if ($root->hasAttribute('stopOnRisky')) { $result['stopOnRisky'] = $this->getBoolean( - (string) $root->getAttribute('stopOnRisky'), - false + (string) $root->getAttribute('stopOnRisky'), false ); } if ($root->hasAttribute('stopOnSkipped')) { $result['stopOnSkipped'] = $this->getBoolean( - (string) $root->getAttribute('stopOnSkipped'), - false + (string) $root->getAttribute('stopOnSkipped'), false ); } if ($root->hasAttribute('testSuiteLoaderClass')) { $result['testSuiteLoaderClass'] = (string) $root->getAttribute( - 'testSuiteLoaderClass' + 'testSuiteLoaderClass' ); } - if ($root->getAttribute('testSuiteLoaderFile')) { + if ($root->hasAttribute('testSuiteLoaderFile')) { $result['testSuiteLoaderFile'] = $this->toAbsolutePath( - (string) $root->getAttribute('testSuiteLoaderFile') + (string) $root->getAttribute('testSuiteLoaderFile') ); } if ($root->hasAttribute('printerClass')) { $result['printerClass'] = (string) $root->getAttribute( - 'printerClass' + 'printerClass' ); } - if ($root->getAttribute('printerFile')) { + if ($root->hasAttribute('printerFile')) { $result['printerFile'] = $this->toAbsolutePath( - (string) $root->getAttribute('printerFile') + (string) $root->getAttribute('printerFile') ); } - if ($root->hasAttribute('beStrictAboutChangesToGlobalState')) { - $result['beStrictAboutChangesToGlobalState'] = $this->getBoolean( - (string) $root->getAttribute('beStrictAboutChangesToGlobalState'), - false + if ($root->hasAttribute('timeoutForSmallTests')) { + $result['timeoutForSmallTests'] = $this->getInteger( + (string) $root->getAttribute('timeoutForSmallTests'), 1 ); } - if ($root->hasAttribute('beStrictAboutOutputDuringTests')) { - $result['disallowTestOutput'] = $this->getBoolean( - (string) $root->getAttribute('beStrictAboutOutputDuringTests'), - false + if ($root->hasAttribute('timeoutForMediumTests')) { + $result['timeoutForMediumTests'] = $this->getInteger( + (string) $root->getAttribute('timeoutForMediumTests'), 10 ); } - if ($root->hasAttribute('beStrictAboutResourceUsageDuringSmallTests')) { - $result['beStrictAboutResourceUsageDuringSmallTests'] = $this->getBoolean( - (string) $root->getAttribute('beStrictAboutResourceUsageDuringSmallTests'), - false + if ($root->hasAttribute('timeoutForLargeTests')) { + $result['timeoutForLargeTests'] = $this->getInteger( + (string) $root->getAttribute('timeoutForLargeTests'), 60 ); } if ($root->hasAttribute('beStrictAboutTestsThatDoNotTestAnything')) { $result['reportUselessTests'] = $this->getBoolean( - (string) $root->getAttribute('beStrictAboutTestsThatDoNotTestAnything'), - false - ); - } - - if ($root->hasAttribute('beStrictAboutTodoAnnotatedTests')) { - $result['disallowTodoAnnotatedTests'] = $this->getBoolean( - (string) $root->getAttribute('beStrictAboutTodoAnnotatedTests'), - false + (string) $root->getAttribute('beStrictAboutTestsThatDoNotTestAnything'), false ); } if ($root->hasAttribute('checkForUnintentionallyCoveredCode')) { $result['strictCoverage'] = $this->getBoolean( - (string) $root->getAttribute('checkForUnintentionallyCoveredCode'), - false + (string) $root->getAttribute('checkForUnintentionallyCoveredCode'), false ); } - if ($root->hasAttribute('enforceTimeLimit')) { - $result['enforceTimeLimit'] = $this->getBoolean( - (string) $root->getAttribute('enforceTimeLimit'), - false + if ($root->hasAttribute('beStrictAboutOutputDuringTests')) { + $result['disallowTestOutput'] = $this->getBoolean( + (string) $root->getAttribute('beStrictAboutOutputDuringTests'), false ); } - if ($root->hasAttribute('timeoutForSmallTests')) { - $result['timeoutForSmallTests'] = $this->getInteger( - (string) $root->getAttribute('timeoutForSmallTests'), - 1 + if ($root->hasAttribute('beStrictAboutTestSize')) { + $result['enforceTimeLimit'] = $this->getBoolean( + (string) $root->getAttribute('beStrictAboutTestSize'), false ); } - if ($root->hasAttribute('timeoutForMediumTests')) { - $result['timeoutForMediumTests'] = $this->getInteger( - (string) $root->getAttribute('timeoutForMediumTests'), - 10 + if ($root->hasAttribute('strict')) { + $flag = $this->getBoolean( + (string) $root->getAttribute('strict'), false ); - } - if ($root->hasAttribute('timeoutForLargeTests')) { - $result['timeoutForLargeTests'] = $this->getInteger( - (string) $root->getAttribute('timeoutForLargeTests'), - 60 - ); + $result['reportUselessTests'] = $flag; + $result['strictCoverage'] = $flag; + $result['disallowTestOutput'] = $flag; + $result['enforceTimeLimit'] = $flag; } - if ($root->hasAttribute('reverseDefectList')) { - $result['reverseDefectList'] = $this->getBoolean( - (string) $root->getAttribute('reverseDefectList'), - false + if ($root->hasAttribute('verbose')) { + $result['verbose'] = $this->getBoolean( + (string) $root->getAttribute('verbose'), false ); } - if ($root->hasAttribute('verbose')) { - $result['verbose'] = $this->getBoolean( - (string) $root->getAttribute('verbose'), - false + return $result; + } + + /** + * Returns the SeleniumTestCase browser configuration. + * + * @return array + * @since Method available since Release 3.2.9 + */ + public function getSeleniumBrowserConfiguration() + { + $result = array(); + + foreach ($this->xpath->query('selenium/browser') as $config) { + $name = (string) $config->getAttribute('name'); + $browser = (string) $config->getAttribute('browser'); + + if ($config->hasAttribute('host')) { + $host = (string) $config->getAttribute('host'); + } else { + $host = 'localhost'; + } + + if ($config->hasAttribute('port')) { + $port = $this->getInteger( + (string) $config->getAttribute('port'), 4444 + ); + } else { + $port = 4444; + } + + if ($config->hasAttribute('timeout')) { + $timeout = $this->getInteger( + (string) $config->getAttribute('timeout'), 30000 + ); + } else { + $timeout = 30000; + } + + $result[] = array( + 'name' => $name, + 'browser' => $browser, + 'host' => $host, + 'port' => $port, + 'timeout' => $timeout ); } @@ -773,10 +800,9 @@ public function getPHPUnitConfiguration() * Returns the test suite configuration. * * @return PHPUnit_Framework_TestSuite - * * @since Method available since Release 3.2.1 */ - public function getTestSuiteConfiguration($testSuiteFilter = null) + public function getTestSuiteConfiguration($testSuiteFilter=null) { $testSuiteNodes = $this->xpath->query('testsuites/testsuite'); @@ -793,7 +819,7 @@ public function getTestSuiteConfiguration($testSuiteFilter = null) foreach ($testSuiteNodes as $testSuiteNode) { $suite->addTestSuite( - $this->getTestSuite($testSuiteNode, $testSuiteFilter) + $this->getTestSuite($testSuiteNode, $testSuiteFilter) ); } @@ -802,29 +828,26 @@ public function getTestSuiteConfiguration($testSuiteFilter = null) } /** - * @param DOMElement $testSuiteNode - * + * @param DOMElement $testSuiteNode * @return PHPUnit_Framework_TestSuite - * * @since Method available since Release 3.4.0 */ - protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter = null) + protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter=null) { if ($testSuiteNode->hasAttribute('name')) { $suite = new PHPUnit_Framework_TestSuite( - (string) $testSuiteNode->getAttribute('name') + (string) $testSuiteNode->getAttribute('name') ); } else { $suite = new PHPUnit_Framework_TestSuite; } - $exclude = []; + $exclude = array(); foreach ($testSuiteNode->getElementsByTagName('exclude') as $excludeNode) { - $excludeFile = (string) $excludeNode->textContent; - if ($excludeFile) { - $exclude[] = $this->toAbsolutePath($excludeFile); - } + $exclude[] = $this->toAbsolutePath( + (string) $excludeNode->nodeValue + ); } $fileIteratorFacade = new File_Iterator_Facade; @@ -834,7 +857,7 @@ protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter = nu continue; } - $directory = (string) $directoryNode->textContent; + $directory = (string) $directoryNode->nodeValue; if (empty($directory)) { continue; @@ -869,10 +892,10 @@ protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter = nu } $files = $fileIteratorFacade->getFilesAsArray( - $this->toAbsolutePath($directory), - $suffix, - $prefix, - $exclude + $this->toAbsolutePath($directory), + $suffix, + $prefix, + $exclude ); $suite->addTestFiles($files); } @@ -882,7 +905,7 @@ protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter = nu continue; } - $file = (string) $fileNode->textContent; + $file = (string) $fileNode->nodeValue; if (empty($file)) { continue; @@ -890,7 +913,7 @@ protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter = nu // Get the absolute path to the file $file = $fileIteratorFacade->getFilesAsArray( - $this->toAbsolutePath($file) + $this->toAbsolutePath($file) ); if (!isset($file[0])) { @@ -922,11 +945,9 @@ protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter = nu } /** - * @param string $value - * @param bool $default - * - * @return bool - * + * @param string $value + * @param boolean $default + * @return boolean * @since Method available since Release 3.2.3 */ protected function getBoolean($value, $default) @@ -941,11 +962,9 @@ protected function getBoolean($value, $default) } /** - * @param string $value - * @param bool $default - * - * @return bool - * + * @param string $value + * @param boolean $default + * @return boolean * @since Method available since Release 3.6.0 */ protected function getInteger($value, $default) @@ -958,23 +977,15 @@ protected function getInteger($value, $default) } /** - * @param string $query - * + * @param string $query * @return array - * * @since Method available since Release 3.2.3 */ protected function readFilterDirectories($query) { - $directories = []; + $directories = array(); foreach ($this->xpath->query($query) as $directory) { - $directoryPath = (string) $directory->textContent; - - if (!$directoryPath) { - continue; - } - if ($directory->hasAttribute('prefix')) { $prefix = (string) $directory->getAttribute('prefix'); } else { @@ -993,44 +1004,37 @@ protected function readFilterDirectories($query) $group = 'DEFAULT'; } - $directories[] = [ - 'path' => $this->toAbsolutePath($directoryPath), + $directories[] = array( + 'path' => $this->toAbsolutePath((string) $directory->nodeValue), 'prefix' => $prefix, 'suffix' => $suffix, 'group' => $group - ]; + ); } return $directories; } /** - * @param string $query - * + * @param string $query * @return array - * * @since Method available since Release 3.2.3 */ protected function readFilterFiles($query) { - $files = []; + $files = array(); foreach ($this->xpath->query($query) as $file) { - $filePath = (string) $file->textContent; - if ($filePath) { - $files[] = $this->toAbsolutePath($filePath); - } + $files[] = $this->toAbsolutePath((string) $file->nodeValue); } return $files; } /** - * @param string $path - * @param bool $useIncludePath - * + * @param string $path + * @param boolean $useIncludePath * @return string - * * @since Method available since Release 3.5.0 */ protected function toAbsolutePath($path, $useIncludePath = false) diff --git a/tests/vendor/phpunit/phpunit/src/Util/DeprecatedFeature.php b/tests/vendor/phpunit/phpunit/src/Util/DeprecatedFeature.php new file mode 100644 index 00000000..637feb3a --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Util/DeprecatedFeature.php @@ -0,0 +1,108 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Ralph Schindler + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.5.7 + */ + +/** + * Class to hold the information about a deprecated feature that was used + * + * @package PHPUnit + * @subpackage Framework + * @author Ralph Schindler + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Interface available since Release 3.5.7 + */ +class PHPUnit_Util_DeprecatedFeature +{ + /** + * @var array + */ + protected $traceInfo = array(); + + /** + * @var string + */ + protected $message = null; + + /** + * @param string $message + * @param array $traceInfo + */ + public function __construct($message, array $traceInfo = array()) + { + $this->message = $message; + $this->traceInfo = $traceInfo; + } + + /** + * @return string + * @since Method available since Release 4.0.0 + */ + public function getMessage() + { + return $this->message; + } + + /** + * @return string + * @since Method available since Release 4.0.0 + */ + public function getSource() + { + $source = ''; + + if (isset($this->traceInfo['file'])) { + $source .= $this->traceInfo['file']; + + if (isset($this->traceInfo['line'])) { + $source .= ':' . $this->traceInfo['line']; + } + } + + return $source; + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Util/DeprecatedFeature/Logger.php b/tests/vendor/phpunit/phpunit/src/Util/DeprecatedFeature/Logger.php new file mode 100644 index 00000000..d77a87a5 --- /dev/null +++ b/tests/vendor/phpunit/phpunit/src/Util/DeprecatedFeature/Logger.php @@ -0,0 +1,212 @@ +. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Framework + * @author Ralph Schindler + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.5.7 + */ + +/** + * Test Listener that tracks the usage of deprecated features. + * + * @package PHPUnit + * @subpackage Framework + * @author Ralph Schindler + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.5.7 + */ +class PHPUnit_Util_DeprecatedFeature_Logger implements PHPUnit_Framework_TestListener +{ + /** + * @var PHPUnit_Framework_TestCase + */ + protected static $currentTest = null; + + /** + * This is the publicly accessible API for notifying the system that a + * deprecated feature has been used. + * + * If it is run via a TestRunner and the test extends + * PHPUnit_Framework_TestCase, then this will inject the result into the + * test runner for display, if not, it will throw the notice to STDERR. + * + * @param string $message + * @param int|bool $backtraceDepth + */ + public static function log($message, $backtraceDepth = 2) + { + if ($backtraceDepth !== false) { + $trace = debug_backtrace(false); + + if (is_int($backtraceDepth)) { + $traceItem = $trace[$backtraceDepth]; + } + + if (!isset($traceItem['file'])) { + $reflectionClass = new ReflectionClass($traceItem['class']); + $traceItem['file'] = $reflectionClass->getFileName(); + } + + if (!isset($traceItem['line']) && + isset($traceItem['class']) && + isset($traceItem['function'])) { + if (!isset($reflectionClass)) { + $reflectionClass = new ReflectionClass($traceItem['class']); + } + + $method = $reflectionClass->getMethod($traceItem['function']); + $traceItem['line'] = $method->getStartLine() . '-' . $method->getEndLine(); + } + } + + $deprecatedFeature = new PHPUnit_Util_DeprecatedFeature( + $message, $traceItem + ); + + if (self::$currentTest instanceof PHPUnit_Framework_TestCase) { + $result = self::$currentTest->getTestResultObject(); + $result->addDeprecatedFeature($deprecatedFeature); + } else { + file_put_contents('php://stderr', $deprecatedFeature); + } + } + + /** + * An error occurred. + * + * @param PHPUnit_Framework_Test $test + * @param Exception $e + * @param float $time + */ + public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) + { + } + + /** + * A failure occurred. + * + * @param PHPUnit_Framework_Test $test + * @param PHPUnit_Framework_AssertionFailedError $e + * @param float $time + */ + public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) + { + } + + /** + * Incomplete test. + * + * @param PHPUnit_Framework_Test $test + * @param Exception $e + * @param float $time + */ + public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + } + + /** + * Risky test. + * + * @param PHPUnit_Framework_Test $test + * @param Exception $e + * @param float $time + * @since Method available since Release 4.0.0 + */ + public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + } + + /** + * Skipped test. + * + * @param PHPUnit_Framework_Test $test + * @param Exception $e + * @param float $time + * @since Method available since Release 3.0.0 + */ + public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + } + + /** + * A test suite started. + * + * @param PHPUnit_Framework_TestSuite $suite + * @since Method available since Release 2.2.0 + */ + public function startTestSuite(PHPUnit_Framework_TestSuite $suite) + { + } + + /** + * A test suite ended. + * + * @param PHPUnit_Framework_TestSuite $suite + * @since Method available since Release 2.2.0 + */ + public function endTestSuite(PHPUnit_Framework_TestSuite $suite) + { + } + + /** + * A test started. + * + * @param PHPUnit_Framework_Test $test + */ + public function startTest(PHPUnit_Framework_Test $test) + { + self::$currentTest = $test; + } + + /** + * A test ended. + * + * @param PHPUnit_Framework_Test $test + * @param float $time + */ + public function endTest(PHPUnit_Framework_Test $test, $time) + { + self::$currentTest = null; + } +} diff --git a/tests/vendor/phpunit/phpunit/src/Util/ErrorHandler.php b/tests/vendor/phpunit/phpunit/src/Util/ErrorHandler.php index 24076644..c97ad095 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/ErrorHandler.php +++ b/tests/vendor/phpunit/phpunit/src/Util/ErrorHandler.php @@ -1,29 +1,69 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.3.0 */ // Workaround for http://bugs.php.net/bug.php?id=47987, // see https://github.com/sebastianbergmann/phpunit/issues#issue/125 for details -// Use dirname(__DIR__) instead of using /../ because of https://github.com/facebook/hhvm/issues/5215 -require_once dirname(__DIR__) . '/Framework/Error.php'; -require_once dirname(__DIR__) . '/Framework/Error/Notice.php'; -require_once dirname(__DIR__) . '/Framework/Error/Warning.php'; -require_once dirname(__DIR__) . '/Framework/Error/Deprecated.php'; +require_once __DIR__ . '/../Framework/Error.php'; +require_once __DIR__ . '/../Framework/Error/Notice.php'; +require_once __DIR__ . '/../Framework/Error/Warning.php'; +require_once __DIR__ . '/../Framework/Error/Deprecated.php'; /** * Error handler that converts PHP errors and warnings to exceptions. * - * @since Class available since Release 3.3.0 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.3.0 */ class PHPUnit_Util_ErrorHandler { - protected static $errorStack = []; + protected static $errorStack = array(); /** * Returns the error stack. @@ -36,11 +76,10 @@ public static function getErrorStack() } /** - * @param int $errno - * @param string $errstr - * @param string $errfile - * @param int $errline - * + * @param integer $errno + * @param string $errstr + * @param string $errfile + * @param integer $errline * @throws PHPUnit_Framework_Error */ public static function handleError($errno, $errstr, $errfile, $errline) @@ -49,7 +88,7 @@ public static function handleError($errno, $errstr, $errfile, $errline) return false; } - self::$errorStack[] = [$errno, $errstr, $errfile, $errline]; + self::$errorStack[] = array($errno, $errstr, $errfile, $errline); $trace = debug_backtrace(false); array_shift($trace); @@ -84,34 +123,4 @@ public static function handleError($errno, $errstr, $errfile, $errline) throw new $exception($errstr, $errno, $errfile, $errline); } - - /** - * Registers an error handler and returns a function that will restore - * the previous handler when invoked - * - * @param int $severity PHP predefined error constant - * - * @throws Exception if event of specified severity is emitted - */ - public static function handleErrorOnce($severity = E_WARNING) - { - $terminator = function () { - static $expired = false; - if (!$expired) { - $expired = true; - // cleans temporary error handler - return restore_error_handler(); - } - }; - - set_error_handler(function ($errno, $errstr) use ($severity) { - if ($errno === $severity) { - return; - } - - return false; - }); - - return $terminator; - } } diff --git a/tests/vendor/phpunit/phpunit/src/Util/Fileloader.php b/tests/vendor/phpunit/phpunit/src/Util/Fileloader.php index 7fc787fe..e2dcb52e 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/Fileloader.php +++ b/tests/vendor/phpunit/phpunit/src/Util/Fileloader.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.3.0 */ /** * Utility methods to load PHP sourcefiles. * - * @since Class available since Release 2.3.0 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.3.0 */ class PHPUnit_Util_Fileloader { @@ -19,10 +60,8 @@ class PHPUnit_Util_Fileloader * Checks if a PHP sourcefile is readable. * The sourcefile is loaded through the load() method. * - * @param string $filename - * + * @param string $filename * @return string - * * @throws PHPUnit_Framework_Exception */ public static function checkAndLoad($filename) @@ -31,7 +70,7 @@ public static function checkAndLoad($filename) if (!$includePathFilename || !is_readable($includePathFilename)) { throw new PHPUnit_Framework_Exception( - sprintf('Cannot open file "%s".' . "\n", $filename) + sprintf('Cannot open file "%s".' . "\n", $filename) ); } @@ -43,10 +82,8 @@ public static function checkAndLoad($filename) /** * Loads a PHP sourcefile. * - * @param string $filename - * + * @param string $filename * @return mixed - * * @since Method available since Release 3.0.0 */ public static function load($filename) @@ -57,9 +94,8 @@ public static function load($filename) $newVariables = get_defined_vars(); $newVariableNames = array_diff( - array_keys($newVariables), - $oldVariableNames - ); + array_keys($newVariables), $oldVariableNames + ); foreach ($newVariableNames as $variableName) { if ($variableName != 'oldVariableNames') { diff --git a/tests/vendor/phpunit/phpunit/src/Util/Filesystem.php b/tests/vendor/phpunit/phpunit/src/Util/Filesystem.php index 14340a8c..d5f8feef 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/Filesystem.php +++ b/tests/vendor/phpunit/phpunit/src/Util/Filesystem.php @@ -1,42 +1,81 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Filesystem helpers. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Util_Filesystem { /** * @var array */ - protected static $buffer = []; + protected static $buffer = array(); /** * Maps class names to source file names: * - PEAR CS: Foo_Bar_Baz -> Foo/Bar/Baz.php * - Namespace: Foo\Bar\Baz -> Foo/Bar/Baz.php * - * @param string $className - * + * @param string $className * @return string - * * @since Method available since Release 3.4.0 */ public static function classNameToFilename($className) { return str_replace( - ['_', '\\'], - DIRECTORY_SEPARATOR, - $className + array('_', '\\'), + DIRECTORY_SEPARATOR, + $className ) . '.php'; } } diff --git a/tests/vendor/phpunit/phpunit/src/Util/Filter.php b/tests/vendor/phpunit/phpunit/src/Util/Filter.php index b82608f7..09346d80 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/Filter.php +++ b/tests/vendor/phpunit/phpunit/src/Util/Filter.php @@ -1,26 +1,66 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * Utility class for code filtering. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Util_Filter { /** * Filters stack frames from PHPUnit classes. * - * @param Exception $e - * @param bool $asString - * + * @param Exception $e + * @param boolean $asString * @return string */ public static function getFilteredStacktrace(Exception $e, $asString = true) @@ -28,37 +68,33 @@ public static function getFilteredStacktrace(Exception $e, $asString = true) $prefix = false; $script = realpath($GLOBALS['_SERVER']['SCRIPT_NAME']); - if (defined('__PHPUNIT_PHAR_ROOT__')) { - $prefix = __PHPUNIT_PHAR_ROOT__; + if (defined('__PHPUNIT_PHAR__')) { + $prefix = 'phar://' . __PHPUNIT_PHAR__ . '/'; } if ($asString === true) { $filteredStacktrace = ''; } else { - $filteredStacktrace = []; + $filteredStacktrace = array(); } if ($e instanceof PHPUnit_Framework_SyntheticError) { $eTrace = $e->getSyntheticTrace(); $eFile = $e->getSyntheticFile(); $eLine = $e->getSyntheticLine(); - } elseif ($e instanceof PHPUnit_Framework_Exception) { - $eTrace = $e->getSerializableTrace(); - $eFile = $e->getFile(); - $eLine = $e->getLine(); } else { if ($e->getPrevious()) { - $e = $e->getPrevious(); + $eTrace = $e->getPrevious()->getTrace(); + } else { + $eTrace = $e->getTrace(); } - $eTrace = $e->getTrace(); $eFile = $e->getFile(); $eLine = $e->getLine(); } if (!self::frameExists($eTrace, $eFile, $eLine)) { array_unshift( - $eTrace, - ['file' => $eFile, 'line' => $eLine] + $eTrace, array('file' => $eFile, 'line' => $eLine) ); } @@ -71,9 +107,10 @@ public static function getFilteredStacktrace(Exception $e, $asString = true) $frame['file'] !== $script) { if ($asString === true) { $filteredStacktrace .= sprintf( - "%s:%s\n", - $frame['file'], - isset($frame['line']) ? $frame['line'] : '?' + "%s:%s\n", + + $frame['file'], + isset($frame['line']) ? $frame['line'] : '?' ); } else { $filteredStacktrace[] = $frame; @@ -85,12 +122,10 @@ public static function getFilteredStacktrace(Exception $e, $asString = true) } /** - * @param array $trace - * @param string $file - * @param int $line - * - * @return bool - * + * @param array $trace + * @param string $file + * @param int $line + * @return boolean * @since Method available since Release 3.3.2 */ private static function frameExists(array $trace, $file, $line) diff --git a/tests/vendor/phpunit/phpunit/src/Util/Getopt.php b/tests/vendor/phpunit/phpunit/src/Util/Getopt.php index ff23ed1c..0606406c 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/Getopt.php +++ b/tests/vendor/phpunit/phpunit/src/Util/Getopt.php @@ -1,28 +1,70 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * Command-line options parsing class. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Util + * @author Andrei Zmievski + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Util_Getopt { public static function getopt(array $args, $short_options, $long_options = null) { if (empty($args)) { - return [[], []]; + return array(array(), array()); } - $opts = []; - $non_opts = []; + $opts = array(); + $non_opts = array(); if ($long_options) { sort($long_options); @@ -47,26 +89,20 @@ public static function getopt(array $args, $short_options, $long_options = null) if ($arg[0] != '-' || (strlen($arg) > 1 && $arg[1] == '-' && !$long_options)) { - $non_opts[] = $args[$i]; - continue; + $non_opts = array_merge($non_opts, array_slice($args, $i)); + break; } elseif (strlen($arg) > 1 && $arg[1] == '-') { self::parseLongOption( - substr($arg, 2), - $long_options, - $opts, - $args + substr($arg, 2), $long_options, $opts, $args ); } else { self::parseShortOption( - substr($arg, 1), - $short_options, - $opts, - $args + substr($arg, 1), $short_options, $opts, $args ); } } - return [$opts, $non_opts]; + return array($opts, $non_opts); } protected static function parseShortOption($arg, $short_options, &$opts, &$args) @@ -80,30 +116,30 @@ protected static function parseShortOption($arg, $short_options, &$opts, &$args) if (($spec = strstr($short_options, $opt)) === false || $arg[$i] == ':') { throw new PHPUnit_Framework_Exception( - "unrecognized option -- $opt" + "unrecognized option -- $opt" ); } if (strlen($spec) > 1 && $spec[1] == ':') { if (strlen($spec) > 2 && $spec[2] == ':') { if ($i + 1 < $argLen) { - $opts[] = [$opt, substr($arg, $i + 1)]; + $opts[] = array($opt, substr($arg, $i + 1)); break; } } else { if ($i + 1 < $argLen) { - $opts[] = [$opt, substr($arg, $i + 1)]; + $opts[] = array($opt, substr($arg, $i + 1)); break; } elseif (list(, $opt_arg) = each($args)) { } else { throw new PHPUnit_Framework_Exception( - "option requires an argument -- $opt" + "option requires an argument -- $opt" ); } } } - $opts[] = [$opt, $opt_arg]; + $opts[] = array($opt, $opt_arg); } } @@ -133,7 +169,7 @@ protected static function parseLongOption($arg, $long_options, &$opts, &$args) if ($opt_rest != '' && $opt[0] != '=' && $i + 1 < $count && $opt == substr($long_options[$i+1], 0, $opt_len)) { throw new PHPUnit_Framework_Exception( - "option --$opt is ambiguous" + "option --$opt is ambiguous" ); } @@ -142,18 +178,17 @@ protected static function parseLongOption($arg, $long_options, &$opts, &$args) if (!strlen($opt_arg) && !(list(, $opt_arg) = each($args))) { throw new PHPUnit_Framework_Exception( - "option --$opt requires an argument" + "option --$opt requires an argument" ); } } } elseif ($opt_arg) { throw new PHPUnit_Framework_Exception( - "option --$opt doesn't allow an argument" + "option --$opt doesn't allow an argument" ); } - $full_option = '--' . preg_replace('/={1,2}$/', '', $long_opt); - $opts[] = [$full_option, $opt_arg]; + $opts[] = array('--' . $opt, $opt_arg); return; } diff --git a/tests/vendor/phpunit/phpunit/src/Util/GlobalState.php b/tests/vendor/phpunit/phpunit/src/Util/GlobalState.php index 4406c30a..31c1388e 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/GlobalState.php +++ b/tests/vendor/phpunit/phpunit/src/Util/GlobalState.php @@ -1,22 +1,75 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.4.0 */ /** - * @since Class available since Release 3.4.0 + * + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.4.0 */ class PHPUnit_Util_GlobalState { /** * @var array */ - protected static $superGlobalArrays = [ + protected static $globals = array(); + + /** + * @var array + */ + protected static $staticAttributes = array(); + + /** + * @var array + */ + protected static $superGlobalArrays = array( '_ENV', '_POST', '_GET', @@ -24,28 +77,115 @@ class PHPUnit_Util_GlobalState '_SERVER', '_FILES', '_REQUEST' - ]; + ); /** * @var array */ - protected static $superGlobalArraysLong = [ + protected static $superGlobalArraysLong = array( 'HTTP_ENV_VARS', 'HTTP_POST_VARS', 'HTTP_GET_VARS', 'HTTP_COOKIE_VARS', 'HTTP_SERVER_VARS', 'HTTP_POST_FILES' - ]; + ); - public static function getIncludedFilesAsString() + public static function backupGlobals(array $blacklist) + { + self::$globals = array(); + $superGlobalArrays = self::getSuperGlobalArrays(); + + foreach ($superGlobalArrays as $superGlobalArray) { + if (!in_array($superGlobalArray, $blacklist)) { + self::backupSuperGlobalArray($superGlobalArray); + } + } + + foreach (array_keys($GLOBALS) as $key) { + if ($key != 'GLOBALS' && + !in_array($key, $superGlobalArrays) && + !in_array($key, $blacklist) && + !$GLOBALS[$key] instanceof Closure) { + self::$globals['GLOBALS'][$key] = serialize($GLOBALS[$key]); + } + } + } + + public static function restoreGlobals(array $blacklist) + { + if (ini_get('register_long_arrays') == '1') { + $superGlobalArrays = array_merge( + self::$superGlobalArrays, self::$superGlobalArraysLong + ); + } else { + $superGlobalArrays = self::$superGlobalArrays; + } + + foreach ($superGlobalArrays as $superGlobalArray) { + if (!in_array($superGlobalArray, $blacklist)) { + self::restoreSuperGlobalArray($superGlobalArray); + } + } + + foreach (array_keys($GLOBALS) as $key) { + if ($key != 'GLOBALS' && + !in_array($key, $superGlobalArrays) && + !in_array($key, $blacklist)) { + if (isset(self::$globals['GLOBALS'][$key])) { + $GLOBALS[$key] = unserialize( + self::$globals['GLOBALS'][$key] + ); + } else { + unset($GLOBALS[$key]); + } + } + } + + self::$globals = array(); + } + + protected static function backupSuperGlobalArray($superGlobalArray) { - return static::processIncludedFilesAsString(get_included_files()); + self::$globals[$superGlobalArray] = array(); + + if (isset($GLOBALS[$superGlobalArray]) && + is_array($GLOBALS[$superGlobalArray])) { + foreach ($GLOBALS[$superGlobalArray] as $key => $value) { + self::$globals[$superGlobalArray][$key] = serialize($value); + } + } + } + + protected static function restoreSuperGlobalArray($superGlobalArray) + { + if (isset($GLOBALS[$superGlobalArray]) && + is_array($GLOBALS[$superGlobalArray]) && + isset(self::$globals[$superGlobalArray])) { + $keys = array_keys( + array_merge( + $GLOBALS[$superGlobalArray], self::$globals[$superGlobalArray] + ) + ); + + foreach ($keys as $key) { + if (isset(self::$globals[$superGlobalArray][$key])) { + $GLOBALS[$superGlobalArray][$key] = unserialize( + self::$globals[$superGlobalArray][$key] + ); + } else { + unset($GLOBALS[$superGlobalArray][$key]); + } + } + } + + self::$globals[$superGlobalArray] = array(); } - public static function processIncludedFilesAsString(array $files) + public static function getIncludedFilesAsString() { $blacklist = new PHPUnit_Util_Blacklist; + $files = get_included_files(); $prefix = false; $result = ''; @@ -60,11 +200,6 @@ public static function processIncludedFilesAsString(array $files) continue; } - // Skip virtual file system protocols - if (preg_match('/^(vfs|phpvfs[a-z0-9]+):/', $file)) { - continue; - } - if (!$blacklist->isBlacklisted($file) && is_file($file)) { $result = 'require_once \'' . $file . "';\n" . $result; } @@ -80,9 +215,9 @@ public static function getIniSettingsAsString() foreach ($iniSettings as $key => $value) { $result .= sprintf( - '@ini_set(%s, %s);' . "\n", - self::exportVariable($key), - self::exportVariable($value) + '@ini_set(%s, %s);' . "\n", + self::exportVariable($key), + self::exportVariable($value) ); } @@ -97,10 +232,10 @@ public static function getConstantsAsString() if (isset($constants['user'])) { foreach ($constants['user'] as $name => $value) { $result .= sprintf( - 'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n", - $name, - $name, - self::exportVariable($value) + 'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n", + $name, + $name, + self::exportVariable($value) ); } } @@ -122,10 +257,10 @@ public static function getGlobalsAsString() } $result .= sprintf( - '$GLOBALS[\'%s\'][\'%s\'] = %s;' . "\n", - $superGlobalArray, - $key, - self::exportVariable($GLOBALS[$superGlobalArray][$key]) + '$GLOBALS[\'%s\'][\'%s\'] = %s;' . "\n", + $superGlobalArray, + $key, + self::exportVariable($GLOBALS[$superGlobalArray][$key]) ); } } @@ -137,9 +272,9 @@ public static function getGlobalsAsString() foreach (array_keys($GLOBALS) as $key) { if (!in_array($key, $blacklist) && !$GLOBALS[$key] instanceof Closure) { $result .= sprintf( - '$GLOBALS[\'%s\'] = %s;' . "\n", - $key, - self::exportVariable($GLOBALS[$key]) + '$GLOBALS[\'%s\'] = %s;' . "\n", + $key, + self::exportVariable($GLOBALS[$key]) ); } } @@ -151,14 +286,73 @@ protected static function getSuperGlobalArrays() { if (ini_get('register_long_arrays') == '1') { return array_merge( - self::$superGlobalArrays, - self::$superGlobalArraysLong + self::$superGlobalArrays, self::$superGlobalArraysLong ); } else { return self::$superGlobalArrays; } } + public static function backupStaticAttributes(array $blacklist) + { + self::$staticAttributes = array(); + $declaredClasses = get_declared_classes(); + $declaredClassesNum = count($declaredClasses); + + for ($i = $declaredClassesNum - 1; $i >= 0; $i--) { + if (strpos($declaredClasses[$i], 'PHPUnit') !== 0 && + strpos($declaredClasses[$i], 'File_Iterator') !== 0 && + strpos($declaredClasses[$i], 'PHP_CodeCoverage') !== 0 && + strpos($declaredClasses[$i], 'PHP_Invoker') !== 0 && + strpos($declaredClasses[$i], 'PHP_Timer') !== 0 && + strpos($declaredClasses[$i], 'PHP_Token_Stream') !== 0 && + strpos($declaredClasses[$i], 'Symfony') !== 0 && + strpos($declaredClasses[$i], 'Text_Template') !== 0 && + !$declaredClasses[$i] instanceof PHPUnit_Framework_Test) { + $class = new ReflectionClass($declaredClasses[$i]); + + if (!$class->isUserDefined()) { + break; + } + + $backup = array(); + + foreach ($class->getProperties() as $attribute) { + if ($attribute->isStatic()) { + $name = $attribute->getName(); + + if (!isset($blacklist[$declaredClasses[$i]]) || + !in_array($name, $blacklist[$declaredClasses[$i]])) { + $attribute->setAccessible(true); + $value = $attribute->getValue(); + + if (!$value instanceof Closure) { + $backup[$name] = serialize($value); + } + } + } + } + + if (!empty($backup)) { + self::$staticAttributes[$declaredClasses[$i]] = $backup; + } + } + } + } + + public static function restoreStaticAttributes() + { + foreach (self::$staticAttributes as $className => $staticAttributes) { + foreach ($staticAttributes as $name => $value) { + $reflector = new ReflectionProperty($className, $name); + $reflector->setAccessible(true); + $reflector->setValue(unserialize($value)); + } + } + + self::$staticAttributes = array(); + } + protected static function exportVariable($variable) { if (is_scalar($variable) || is_null($variable) || @@ -166,9 +360,9 @@ protected static function exportVariable($variable) return var_export($variable, true); } - return 'unserialize(' . - var_export(serialize($variable), true) . - ')'; + return 'unserialize(\'' . + str_replace("'", "\'", serialize($variable)) . + '\')'; } protected static function arrayOnlyContainsScalars(array $array) diff --git a/tests/vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php b/tests/vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php index 80410a8b..94f3cf49 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php +++ b/tests/vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php @@ -1,26 +1,66 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * (c) Sebastian Bergmann + * 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. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.4.0 */ /** * Factory for PHPUnit_Framework_Exception objects that are used to describe * invalid arguments passed to a function or method. * - * @since Class available since Release 3.4.0 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.4.0 */ class PHPUnit_Util_InvalidArgumentHelper { /** - * @param int $argument - * @param string $type - * @param mixed $value - * + * @param integer $argument + * @param string $type + * @param mixed $value * @return PHPUnit_Framework_Exception */ public static function factory($argument, $type, $value = null) @@ -28,14 +68,14 @@ public static function factory($argument, $type, $value = null) $stack = debug_backtrace(false); return new PHPUnit_Framework_Exception( - sprintf( - 'Argument #%d%sof %s::%s() must be a %s', - $argument, - $value !== null ? ' (' . gettype($value) . '#' . $value . ')' : ' (No Value) ', - $stack[1]['class'], - $stack[1]['function'], - $type - ) + sprintf( + 'Argument #%d%sof %s::%s() must be a %s', + $argument, + $value !== null ? ' (' . gettype($value) . '#' . $value . ')' : ' (No Value) ', + $stack[1]['class'], + $stack[1]['function'], + $type + ) ); } } diff --git a/tests/vendor/phpunit/phpunit/src/Util/Log/JSON.php b/tests/vendor/phpunit/phpunit/src/Util/Log/JSON.php index 1b2dfb94..dfb3163d 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/Log/JSON.php +++ b/tests/vendor/phpunit/phpunit/src/Util/Log/JSON.php @@ -1,32 +1,78 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Util_Log + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ +if (!defined('JSON_PRETTY_PRINT')) { + define('JSON_PRETTY_PRINT', 128); +} + /** * A TestListener that generates JSON messages. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Util_Log + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Util_Log_JSON extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener { /** - * @var string + * @var string */ protected $currentTestSuiteName = ''; /** - * @var string + * @var string */ protected $currentTestName = ''; /** - * @var bool + * @var boolean + * @access private */ protected $currentTestPass = true; @@ -40,11 +86,11 @@ class PHPUnit_Util_Log_JSON extends PHPUnit_Util_Printer implements PHPUnit_Fram public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->writeCase( - 'error', - $time, - PHPUnit_Util_Filter::getFilteredStacktrace($e, false), - $e->getMessage(), - $test + 'error', + $time, + PHPUnit_Util_Filter::getFilteredStacktrace($e, false), + $e->getMessage(), + $test ); $this->currentTestPass = false; @@ -60,11 +106,11 @@ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { $this->writeCase( - 'fail', - $time, - PHPUnit_Util_Filter::getFilteredStacktrace($e, false), - $e->getMessage(), - $test + 'fail', + $time, + PHPUnit_Util_Filter::getFilteredStacktrace($e, false), + $e->getMessage(), + $test ); $this->currentTestPass = false; @@ -80,11 +126,11 @@ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_Asser public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->writeCase( - 'error', - $time, - PHPUnit_Util_Filter::getFilteredStacktrace($e, false), - 'Incomplete Test: ' . $e->getMessage(), - $test + 'error', + $time, + PHPUnit_Util_Filter::getFilteredStacktrace($e, false), + 'Incomplete Test: ' . $e->getMessage(), + $test ); $this->currentTestPass = false; @@ -96,17 +142,16 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 4.0.0 */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->writeCase( - 'error', - $time, - PHPUnit_Util_Filter::getFilteredStacktrace($e, false), - 'Risky Test: ' . $e->getMessage(), - $test + 'error', + $time, + PHPUnit_Util_Filter::getFilteredStacktrace($e, false), + 'Risky Test: ' . $e->getMessage(), + $test ); $this->currentTestPass = false; @@ -122,11 +167,11 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->writeCase( - 'error', - $time, - PHPUnit_Util_Filter::getFilteredStacktrace($e, false), - 'Skipped Test: ' . $e->getMessage(), - $test + 'error', + $time, + PHPUnit_Util_Filter::getFilteredStacktrace($e, false), + 'Skipped Test: ' . $e->getMessage(), + $test ); $this->currentTestPass = false; @@ -143,11 +188,11 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) $this->currentTestName = ''; $this->write( - [ + array( 'event' => 'suiteStart', 'suite' => $this->currentTestSuiteName, 'tests' => count($suite) - ] + ) ); } @@ -173,11 +218,11 @@ public function startTest(PHPUnit_Framework_Test $test) $this->currentTestPass = true; $this->write( - [ + array( 'event' => 'testStart', 'suite' => $this->currentTestSuiteName, 'test' => $this->currentTestName - ] + ) ); } @@ -190,18 +235,17 @@ public function startTest(PHPUnit_Framework_Test $test) public function endTest(PHPUnit_Framework_Test $test, $time) { if ($this->currentTestPass) { - $this->writeCase('pass', $time, [], '', $test); + $this->writeCase('pass', $time, array(), '', $test); } } /** - * @param string $status - * @param float $time - * @param array $trace - * @param string $message - * @param PHPUnit_Framework_TestCase|null $test + * @param string $status + * @param float $time + * @param array $trace + * @param string $message */ - protected function writeCase($status, $time, array $trace = [], $message = '', $test = null) + protected function writeCase($status, $time, array $trace = array(), $message = '', $test = null) { $output = ''; // take care of TestSuite producing error (e.g. by running into exception) as TestSuite doesn't have hasOutput @@ -209,7 +253,7 @@ protected function writeCase($status, $time, array $trace = [], $message = '', $ $output = $test->getActualOutput(); } $this->write( - [ + array( 'event' => 'test', 'suite' => $this->currentTestSuiteName, 'test' => $this->currentTestName, @@ -218,7 +262,7 @@ protected function writeCase($status, $time, array $trace = [], $message = '', $ 'trace' => $trace, 'message' => PHPUnit_Util_String::convertToUtf8($message), 'output' => $output, - ] + ) ); } diff --git a/tests/vendor/phpunit/phpunit/src/Util/Log/JUnit.php b/tests/vendor/phpunit/phpunit/src/Util/Log/JUnit.php index 002bc3c8..13fe0ec4 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/Log/JUnit.php +++ b/tests/vendor/phpunit/phpunit/src/Util/Log/JUnit.php @@ -1,11 +1,46 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Util_Log + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.3.0 */ /** @@ -13,84 +48,90 @@ * * The XML markup used is the same as the one that is used by the JUnit Ant task. * - * @since Class available since Release 2.1.0 + * @package PHPUnit + * @subpackage Util_Log + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.1.0 */ class PHPUnit_Util_Log_JUnit extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener { /** - * @var DOMDocument + * @var DOMDocument */ protected $document; /** - * @var DOMElement + * @var DOMElement */ protected $root; /** - * @var bool + * @var boolean */ protected $logIncompleteSkipped = false; /** - * @var bool + * @var boolean */ protected $writeDocument = true; /** - * @var DOMElement[] + * @var DOMElement[] */ - protected $testSuites = []; + protected $testSuites = array(); /** - * @var int[] + * @var integer[] */ - protected $testSuiteTests = [0]; + protected $testSuiteTests = array(0); /** - * @var int[] + * @var integer[] */ - protected $testSuiteAssertions = [0]; + protected $testSuiteAssertions = array(0); /** - * @var int[] + * @var integer[] */ - protected $testSuiteErrors = [0]; + protected $testSuiteErrors = array(0); /** - * @var int[] + * @var integer[] */ - protected $testSuiteFailures = [0]; + protected $testSuiteFailures = array(0); /** - * @var int[] + * @var integer[] */ - protected $testSuiteTimes = [0]; + protected $testSuiteTimes = array(0); /** - * @var int + * @var integer */ protected $testSuiteLevel = 0; /** - * @var DOMElement + * @var DOMElement */ protected $currentTestCase = null; /** - * @var bool + * @var boolean */ protected $attachCurrentTestCase = true; /** * Constructor. * - * @param mixed $out - * @param bool $logIncompleteSkipped + * @param mixed $out + * @param boolean $logIncompleteSkipped */ public function __construct($out = null, $logIncompleteSkipped = false) { - $this->document = new DOMDocument('1.0', 'UTF-8'); + $this->document = new DOMDocument('1.0', 'UTF-8'); $this->document->formatOutput = true; $this->root = $this->document->createElement('testsuites'); @@ -103,6 +144,7 @@ public function __construct($out = null, $logIncompleteSkipped = false) /** * Flush buffer and close output. + * */ public function flush() { @@ -122,8 +164,27 @@ public function flush() */ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { - $this->doAddFault($test, $e, $time, 'error'); - $this->testSuiteErrors[$this->testSuiteLevel]++; + if ($this->currentTestCase !== null) { + if ($test instanceof PHPUnit_Framework_SelfDescribing) { + $buffer = $test->toString() . "\n"; + } else { + $buffer = ''; + } + + $buffer .= PHPUnit_Framework_TestFailure::exceptionToString($e) . + "\n" . + PHPUnit_Util_Filter::getFilteredStacktrace($e); + + $error = $this->document->createElement( + 'error', PHPUnit_Util_XML::prepareString($buffer) + ); + + $error->setAttribute('type', get_class($e)); + + $this->currentTestCase->appendChild($error); + + $this->testSuiteErrors[$this->testSuiteLevel]++; + } } /** @@ -135,8 +196,29 @@ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) */ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { - $this->doAddFault($test, $e, $time, 'failure'); - $this->testSuiteFailures[$this->testSuiteLevel]++; + if ($this->currentTestCase !== null) { + if (!$test instanceof PHPUnit_Framework_Warning) { + if ($test instanceof PHPUnit_Framework_SelfDescribing) { + $buffer = $test->toString() . "\n"; + } else { + $buffer = ''; + } + + $buffer .= PHPUnit_Framework_TestFailure::exceptionToString($e) . + "\n" . + PHPUnit_Util_Filter::getFilteredStacktrace($e); + + $failure = $this->document->createElement( + 'failure', PHPUnit_Util_XML::prepareString($buffer) + ); + + $failure->setAttribute('type', get_class($e)); + + $this->currentTestCase->appendChild($failure); + + $this->testSuiteFailures[$this->testSuiteLevel]++; + } + } } /** @@ -150,11 +232,11 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t { if ($this->logIncompleteSkipped && $this->currentTestCase !== null) { $error = $this->document->createElement( - 'error', - PHPUnit_Util_XML::prepareString( - "Incomplete Test\n" . - PHPUnit_Util_Filter::getFilteredStacktrace($e) - ) + 'error', + PHPUnit_Util_XML::prepareString( + "Incomplete Test\n" . + PHPUnit_Util_Filter::getFilteredStacktrace($e) + ) ); $error->setAttribute('type', get_class($e)); @@ -173,18 +255,17 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 4.0.0 */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { if ($this->logIncompleteSkipped && $this->currentTestCase !== null) { $error = $this->document->createElement( - 'error', - PHPUnit_Util_XML::prepareString( - "Risky Test\n" . - PHPUnit_Util_Filter::getFilteredStacktrace($e) - ) + 'error', + PHPUnit_Util_XML::prepareString( + "Risky Test\n" . + PHPUnit_Util_Filter::getFilteredStacktrace($e) + ) ); $error->setAttribute('type', get_class($e)); @@ -203,18 +284,17 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 3.0.0 */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { if ($this->logIncompleteSkipped && $this->currentTestCase !== null) { $error = $this->document->createElement( - 'error', - PHPUnit_Util_XML::prepareString( - "Skipped Test\n" . - PHPUnit_Util_Filter::getFilteredStacktrace($e) - ) + 'error', + PHPUnit_Util_XML::prepareString( + "Skipped Test\n" . + PHPUnit_Util_Filter::getFilteredStacktrace($e) + ) ); $error->setAttribute('type', get_class($e)); @@ -231,7 +311,6 @@ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time * A testsuite started. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) @@ -267,34 +346,28 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) * A testsuite ended. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { $this->testSuites[$this->testSuiteLevel]->setAttribute( - 'tests', - $this->testSuiteTests[$this->testSuiteLevel] + 'tests', $this->testSuiteTests[$this->testSuiteLevel] ); $this->testSuites[$this->testSuiteLevel]->setAttribute( - 'assertions', - $this->testSuiteAssertions[$this->testSuiteLevel] + 'assertions', $this->testSuiteAssertions[$this->testSuiteLevel] ); $this->testSuites[$this->testSuiteLevel]->setAttribute( - 'failures', - $this->testSuiteFailures[$this->testSuiteLevel] + 'failures', $this->testSuiteFailures[$this->testSuiteLevel] ); $this->testSuites[$this->testSuiteLevel]->setAttribute( - 'errors', - $this->testSuiteErrors[$this->testSuiteLevel] + 'errors', $this->testSuiteErrors[$this->testSuiteLevel] ); $this->testSuites[$this->testSuiteLevel]->setAttribute( - 'time', - sprintf('%F', $this->testSuiteTimes[$this->testSuiteLevel]) + 'time', sprintf('%F', $this->testSuiteTimes[$this->testSuiteLevel]) ); if ($this->testSuiteLevel > 1) { @@ -315,23 +388,25 @@ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) */ public function startTest(PHPUnit_Framework_Test $test) { - $testCase = $this->document->createElement('testcase'); - $testCase->setAttribute('name', $test->getName()); + if (!$test instanceof PHPUnit_Framework_Warning) { + $testCase = $this->document->createElement('testcase'); + $testCase->setAttribute('name', $test->getName()); - if ($test instanceof PHPUnit_Framework_TestCase) { - $class = new ReflectionClass($test); - $methodName = $test->getName(); + if ($test instanceof PHPUnit_Framework_TestCase) { + $class = new ReflectionClass($test); + $methodName = $test->getName(); - if ($class->hasMethod($methodName)) { - $method = $class->getMethod($test->getName()); + if ($class->hasMethod($methodName)) { + $method = $class->getMethod($test->getName()); - $testCase->setAttribute('class', $class->getName()); - $testCase->setAttribute('file', $class->getFileName()); - $testCase->setAttribute('line', $method->getStartLine()); + $testCase->setAttribute('class', $class->getName()); + $testCase->setAttribute('file', $class->getFileName()); + $testCase->setAttribute('line', $method->getStartLine()); + } } - } - $this->currentTestCase = $testCase; + $this->currentTestCase = $testCase; + } } /** @@ -342,35 +417,35 @@ public function startTest(PHPUnit_Framework_Test $test) */ public function endTest(PHPUnit_Framework_Test $test, $time) { - if ($this->attachCurrentTestCase) { - if ($test instanceof PHPUnit_Framework_TestCase) { - $numAssertions = $test->getNumAssertions(); - $this->testSuiteAssertions[$this->testSuiteLevel] += $numAssertions; + if (!$test instanceof PHPUnit_Framework_Warning) { + if ($this->attachCurrentTestCase) { + if ($test instanceof PHPUnit_Framework_TestCase) { + $numAssertions = $test->getNumAssertions(); + $this->testSuiteAssertions[$this->testSuiteLevel] += $numAssertions; + + $this->currentTestCase->setAttribute( + 'assertions', $numAssertions + ); + } $this->currentTestCase->setAttribute( - 'assertions', - $numAssertions + 'time', sprintf('%F', $time) ); - } - - $this->currentTestCase->setAttribute( - 'time', - sprintf('%F', $time) - ); - $this->testSuites[$this->testSuiteLevel]->appendChild( - $this->currentTestCase - ); + $this->testSuites[$this->testSuiteLevel]->appendChild( + $this->currentTestCase + ); - $this->testSuiteTests[$this->testSuiteLevel]++; - $this->testSuiteTimes[$this->testSuiteLevel] += $time; + $this->testSuiteTests[$this->testSuiteLevel]++; + $this->testSuiteTimes[$this->testSuiteLevel] += $time; - if (method_exists($test, 'hasOutput') && $test->hasOutput()) { - $systemOut = $this->document->createElement('system-out'); - $systemOut->appendChild( - $this->document->createTextNode($test->getActualOutput()) - ); - $this->currentTestCase->appendChild($systemOut); + if (method_exists($test, 'hasOutput') && $test->hasOutput()) { + $systemOut = $this->document->createElement('system-out'); + $systemOut->appendChild( + $this->document->createTextNode($test->getActualOutput()) + ); + $this->currentTestCase->appendChild($systemOut); + } } } @@ -382,7 +457,6 @@ public function endTest(PHPUnit_Framework_Test $test, $time) * Returns the XML as a string. * * @return string - * * @since Method available since Release 2.2.0 */ public function getXML() @@ -398,7 +472,6 @@ public function getXML() * PHPUnit with Phing. * * @return string - * * @since Method available since Release 2.2.0 */ public function setWriteDocument($flag) @@ -407,37 +480,4 @@ public function setWriteDocument($flag) $this->writeDocument = $flag; } } - - /** - * Method which generalizes addError() and addFailure() - * - * @param PHPUnit_Framework_Test $test - * @param Exception $e - * @param float $time - * @param string $type - */ - private function doAddFault(PHPUnit_Framework_Test $test, Exception $e, $time, $type) - { - if ($this->currentTestCase === null) { - return; - } - - if ($test instanceof PHPUnit_Framework_SelfDescribing) { - $buffer = $test->toString() . "\n"; - } else { - $buffer = ''; - } - - $buffer .= PHPUnit_Framework_TestFailure::exceptionToString($e) . - "\n" . - PHPUnit_Util_Filter::getFilteredStacktrace($e); - - $fault = $this->document->createElement( - $type, - PHPUnit_Util_XML::prepareString($buffer) - ); - - $fault->setAttribute('type', get_class($e)); - $this->currentTestCase->appendChild($fault); - } } diff --git a/tests/vendor/phpunit/phpunit/src/Util/Log/TAP.php b/tests/vendor/phpunit/phpunit/src/Util/Log/TAP.php index e519e486..8fc924ca 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/Log/TAP.php +++ b/tests/vendor/phpunit/phpunit/src/Util/Log/TAP.php @@ -1,43 +1,82 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Util_Log + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ /** * A TestListener that generates a logfile of the * test execution using the Test Anything Protocol (TAP). * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Util_Log + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Util_Log_TAP extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener { /** - * @var int + * @var integer */ protected $testNumber = 0; /** - * @var int + * @var integer */ protected $testSuiteLevel = 0; /** - * @var bool + * @var boolean */ protected $testSuccessful = true; /** * Constructor. * - * @param mixed $out - * + * @param mixed $out * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.3.4 */ public function __construct($out = null) @@ -70,33 +109,32 @@ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_Asser $this->writeNotOk($test, 'Failure'); $message = explode( - "\n", - PHPUnit_Framework_TestFailure::exceptionToString($e) + "\n", PHPUnit_Framework_TestFailure::exceptionToString($e) ); - $diagnostic = [ + $diagnostic = array( 'message' => $message[0], 'severity' => 'fail' - ]; + ); if ($e instanceof PHPUnit_Framework_ExpectationFailedException) { $cf = $e->getComparisonFailure(); if ($cf !== null) { - $diagnostic['data'] = [ + $diagnostic['data'] = array( 'got' => $cf->getActual(), 'expected' => $cf->getExpected() - ]; + ); } } $yaml = new Symfony\Component\Yaml\Dumper; $this->write( - sprintf( - " ---\n%s ...\n", - $yaml->dump($diagnostic, 2, 2) - ) + sprintf( + " ---\n%s ...\n", + $yaml->dump($diagnostic, 2, 2) + ) ); } @@ -118,17 +156,17 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 4.0.0 */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->write( - sprintf( - "ok %d - # RISKY%s\n", - $this->testNumber, - $e->getMessage() != '' ? ' ' . $e->getMessage() : '' - ) + sprintf( + "ok %d - # RISKY%s\n", + + $this->testNumber, + $e->getMessage() != '' ? ' ' . $e->getMessage() : '' + ) ); $this->testSuccessful = false; @@ -140,17 +178,17 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 3.0.0 */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->write( - sprintf( - "ok %d - # SKIP%s\n", - $this->testNumber, - $e->getMessage() != '' ? ' ' . $e->getMessage() : '' - ) + sprintf( + "ok %d - # SKIP%s\n", + + $this->testNumber, + $e->getMessage() != '' ? ' ' . $e->getMessage() : '' + ) ); $this->testSuccessful = false; @@ -201,15 +239,14 @@ public function endTest(PHPUnit_Framework_Test $test, $time) { if ($this->testSuccessful === true) { $this->write( - sprintf( - "ok %d - %s\n", - $this->testNumber, - PHPUnit_Util_Test::describe($test) - ) + sprintf( + "ok %d - %s\n", + + $this->testNumber, + PHPUnit_Util_Test::describe($test) + ) ); } - - $this->writeDiagnostics($test); } /** @@ -220,38 +257,16 @@ public function endTest(PHPUnit_Framework_Test $test, $time) protected function writeNotOk(PHPUnit_Framework_Test $test, $prefix = '', $directive = '') { $this->write( - sprintf( - "not ok %d - %s%s%s\n", - $this->testNumber, - $prefix != '' ? $prefix . ': ' : '', - PHPUnit_Util_Test::describe($test), - $directive != '' ? ' # ' . $directive : '' - ) + sprintf( + "not ok %d - %s%s%s\n", + + $this->testNumber, + $prefix != '' ? $prefix . ': ' : '', + PHPUnit_Util_Test::describe($test), + $directive != '' ? ' # ' . $directive : '' + ) ); $this->testSuccessful = false; } - - /** - * @param PHPUnit_Framework_Test $test - */ - private function writeDiagnostics(PHPUnit_Framework_Test $test) - { - if (!$test instanceof PHPUnit_Framework_TestCase) { - return; - } - - if (!$test->hasOutput()) { - return; - } - - foreach (explode("\n", trim($test->getActualOutput())) as $line) { - $this->write( - sprintf( - "# %s\n", - $line - ) - ); - } - } } diff --git a/tests/vendor/phpunit/phpunit/src/Util/Log/TeamCity.php b/tests/vendor/phpunit/phpunit/src/Util/Log/TeamCity.php deleted file mode 100644 index 2eea4c2e..00000000 --- a/tests/vendor/phpunit/phpunit/src/Util/Log/TeamCity.php +++ /dev/null @@ -1,373 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use SebastianBergmann\Comparator\ComparisonFailure; - -/** - * A TestListener that generates a logfile of the test execution using the - * TeamCity format (for use with PhpStorm, for instance). - * - * @since Class available since Release 5.0.0 - */ -class PHPUnit_Util_Log_TeamCity extends PHPUnit_TextUI_ResultPrinter -{ - /** - * @var bool - */ - private $isSummaryTestCountPrinted = false; - - /** - * @var string - */ - private $startedTestName; - - /** - * @param string $progress - */ - protected function writeProgress($progress) - { - } - - /** - * @param PHPUnit_Framework_TestResult $result - */ - public function printResult(PHPUnit_Framework_TestResult $result) - { - $this->printHeader(); - $this->printFooter($result); - } - - /** - * An error occurred. - * - * @param PHPUnit_Framework_Test $test - * @param Exception $e - * @param float $time - */ - public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) - { - $this->printEvent( - 'testFailed', - [ - 'name' => $test->getName(), - 'message' => self::getMessage($e), - 'details' => self::getDetails($e), - ] - ); - } - - /** - * A failure occurred. - * - * @param PHPUnit_Framework_Test $test - * @param PHPUnit_Framework_AssertionFailedError $e - * @param float $time - */ - public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) - { - $parameters = [ - 'name' => $test->getName(), - 'message' => self::getMessage($e), - 'details' => self::getDetails($e), - ]; - - if ($e instanceof PHPUnit_Framework_ExpectationFailedException) { - $comparisonFailure = $e->getComparisonFailure(); - - if ($comparisonFailure instanceof ComparisonFailure) { - $expectedString = $comparisonFailure->getExpectedAsString(); - - if (is_null($expectedString) || empty($expectedString)) { - $expectedString = self::getPrimitiveValueAsString($comparisonFailure->getExpected()); - } - - $actualString = $comparisonFailure->getActualAsString(); - - if (is_null($actualString) || empty($actualString)) { - $actualString = self::getPrimitiveValueAsString($comparisonFailure->getActual()); - } - - if (!is_null($actualString) && !is_null($expectedString)) { - $parameters['actual'] = $actualString; - $parameters['expected'] = $expectedString; - } - } - } - - $this->printEvent('testFailed', $parameters); - } - - /** - * Incomplete test. - * - * @param PHPUnit_Framework_Test $test - * @param Exception $e - * @param float $time - */ - public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) - { - $this->printIgnoredTest($test->getName(), $e); - } - - /** - * Risky test. - * - * @param PHPUnit_Framework_Test $test - * @param Exception $e - * @param float $time - */ - public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) - { - $this->addError($test, $e, $time); - } - - /** - * Skipped test. - * - * @param PHPUnit_Framework_Test $test - * @param Exception $e - * @param float $time - */ - public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) - { - $testName = $test->getName(); - if ($this->startedTestName != $testName) { - $this->startTest($test); - $this->printIgnoredTest($testName, $e); - $this->endTest($test, $time); - } else { - $this->printIgnoredTest($testName, $e); - } - } - - public function printIgnoredTest($testName, Exception $e) - { - $this->printEvent( - 'testIgnored', - [ - 'name' => $testName, - 'message' => self::getMessage($e), - 'details' => self::getDetails($e), - ] - ); - } - - /** - * A testsuite started. - * - * @param PHPUnit_Framework_TestSuite $suite - */ - public function startTestSuite(PHPUnit_Framework_TestSuite $suite) - { - if (!$this->isSummaryTestCountPrinted) { - $this->isSummaryTestCountPrinted = true; - - $this->printEvent( - 'testCount', - ['count' => count($suite)] - ); - } - - $suiteName = $suite->getName(); - - if (empty($suiteName)) { - return; - } - - $parameters = ['name' => $suiteName]; - - if (class_exists($suiteName, false)) { - $fileName = self::getFileName($suiteName); - $parameters['locationHint'] = "php_qn://$fileName::\\$suiteName"; - } else { - $split = preg_split('/::/', $suiteName); - - if (count($split) == 2 && method_exists($split[0], $split[1])) { - $fileName = self::getFileName($split[0]); - $parameters['locationHint'] = "php_qn://$fileName::\\$suiteName"; - $parameters['name'] = $split[1]; - } - } - - $this->printEvent('testSuiteStarted', $parameters); - } - - /** - * A testsuite ended. - * - * @param PHPUnit_Framework_TestSuite $suite - */ - public function endTestSuite(PHPUnit_Framework_TestSuite $suite) - { - $suiteName = $suite->getName(); - - if (empty($suiteName)) { - return; - } - - $parameters = ['name' => $suiteName]; - - if (!class_exists($suiteName, false)) { - $split = preg_split('/::/', $suiteName); - - if (count($split) == 2 && method_exists($split[0], $split[1])) { - $parameters['name'] = $split[1]; - } - } - - $this->printEvent('testSuiteFinished', $parameters); - } - - /** - * A test started. - * - * @param PHPUnit_Framework_Test $test - */ - public function startTest(PHPUnit_Framework_Test $test) - { - $testName = $test->getName(); - $this->startedTestName = $testName; - $params = ['name' => $testName]; - - if ($test instanceof PHPUnit_Framework_TestCase) { - $className = get_class($test); - $fileName = self::getFileName($className); - $params['locationHint'] = "php_qn://$fileName::\\$className::$testName"; - } - - $this->printEvent('testStarted', $params); - } - - /** - * A test ended. - * - * @param PHPUnit_Framework_Test $test - * @param float $time - */ - public function endTest(PHPUnit_Framework_Test $test, $time) - { - parent::endTest($test, $time); - - $this->printEvent( - 'testFinished', - [ - 'name' => $test->getName(), - 'duration' => (int) (round($time, 2) * 1000) - ] - ); - } - - /** - * @param string $eventName - * @param array $params - */ - private function printEvent($eventName, $params = []) - { - $this->write("\n##teamcity[$eventName"); - - foreach ($params as $key => $value) { - $escapedValue = self::escapeValue($value); - $this->write(" $key='$escapedValue'"); - } - - $this->write("]\n"); - } - - /** - * @param Exception $e - * - * @return string - */ - private static function getMessage(Exception $e) - { - $message = ''; - - if (!$e instanceof PHPUnit_Framework_Exception) { - if (strlen(get_class($e)) != 0) { - $message = $message . get_class($e); - } - - if (strlen($message) != 0 && strlen($e->getMessage()) != 0) { - $message = $message . ' : '; - } - } - - return $message . $e->getMessage(); - } - - /** - * @param Exception $e - * - * @return string - */ - private static function getDetails(Exception $e) - { - $stackTrace = PHPUnit_Util_Filter::getFilteredStacktrace($e); - $previous = $e->getPrevious(); - - while ($previous) { - $stackTrace .= "\nCaused by\n" . - PHPUnit_Framework_TestFailure::exceptionToString($previous) . "\n" . - PHPUnit_Util_Filter::getFilteredStacktrace($previous); - - $previous = $previous->getPrevious(); - } - - return ' ' . str_replace("\n", "\n ", $stackTrace); - } - - /** - * @param mixed $value - * - * @return string - */ - private static function getPrimitiveValueAsString($value) - { - if (is_null($value)) { - return 'null'; - } elseif (is_bool($value)) { - return $value == true ? 'true' : 'false'; - } elseif (is_scalar($value)) { - return print_r($value, true); - } - - return; - } - - /** - * @param $text - * - * @return string - */ - private static function escapeValue($text) - { - $text = str_replace('|', '||', $text); - $text = str_replace("'", "|'", $text); - $text = str_replace("\n", '|n', $text); - $text = str_replace("\r", '|r', $text); - $text = str_replace(']', '|]', $text); - $text = str_replace('[', '|[', $text); - - return $text; - } - - /** - * @param string $className - * - * @return string - */ - private static function getFileName($className) - { - $reflectionClass = new ReflectionClass($className); - $fileName = $reflectionClass->getFileName(); - - return $fileName; - } -} diff --git a/tests/vendor/phpunit/phpunit/src/Util/PHP.php b/tests/vendor/phpunit/phpunit/src/Util/PHP.php index c5584104..95399c0b 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/PHP.php +++ b/tests/vendor/phpunit/phpunit/src/Util/PHP.php @@ -1,23 +1,63 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.4.0 */ /** * Utility methods for PHP sub-processes. * - * @since Class available since Release 3.4.0 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.4.0 */ abstract class PHPUnit_Util_PHP { /** * @return PHPUnit_Util_PHP - * * @since Method available since Release 3.5.12 */ public static function factory() @@ -32,10 +72,9 @@ public static function factory() /** * Runs a single test in a separate PHP process. * - * @param string $job - * @param PHPUnit_Framework_Test $test - * @param PHPUnit_Framework_TestResult $result - * + * @param string $job + * @param PHPUnit_Framework_Test $test + * @param PHPUnit_Framework_TestResult $result * @throws PHPUnit_Framework_Exception */ public function runTestJob($job, PHPUnit_Framework_Test $test, PHPUnit_Framework_TestResult $result) @@ -45,30 +84,23 @@ public function runTestJob($job, PHPUnit_Framework_Test $test, PHPUnit_Framework $_result = $this->runJob($job); $this->processChildResult( - $test, - $result, - $_result['stdout'], - $_result['stderr'] + $test, $result, $_result['stdout'], $_result['stderr'] ); } /** * Runs a single job (PHP code) using a separate PHP process. * - * @param string $job - * @param array $settings - * + * @param string $job + * @param array $settings * @return array - * * @throws PHPUnit_Framework_Exception */ - abstract public function runJob($job, array $settings = []); + abstract public function runJob($job, array $settings = array()); /** - * @param array $settings - * + * @param array $settings * @return string - * * @since Method available since Release 4.0.0 */ protected function settingsToParameters(array $settings) @@ -89,7 +121,6 @@ protected function settingsToParameters(array $settings) * @param PHPUnit_Framework_TestResult $result * @param string $stdout * @param string $stderr - * * @since Method available since Release 3.5.0 */ private function processChildResult(PHPUnit_Framework_Test $test, PHPUnit_Framework_TestResult $result, $stdout, $stderr) @@ -98,9 +129,8 @@ private function processChildResult(PHPUnit_Framework_Test $test, PHPUnit_Framew if (!empty($stderr)) { $result->addError( - $test, - new PHPUnit_Framework_Exception(trim($stderr)), - $time + $test, + new PHPUnit_Framework_Exception(trim($stderr)), $time ); } else { set_error_handler(function ($errno, $errstr, $errfile, $errline) { @@ -118,15 +148,13 @@ private function processChildResult(PHPUnit_Framework_Test $test, PHPUnit_Framew $childResult = false; $result->addError( - $test, - new PHPUnit_Framework_Exception(trim($stdout), 0, $e), - $time + $test, new PHPUnit_Framework_Exception(trim($stdout), 0, $e), $time ); } if ($childResult !== false) { if (!empty($childResult['output'])) { - $output = $childResult['output']; + print $childResult['output']; } $test->setResult($childResult['testResult']); @@ -136,7 +164,7 @@ private function processChildResult(PHPUnit_Framework_Test $test, PHPUnit_Framew if ($result->getCollectCodeCoverageInformation()) { $result->getCodeCoverage()->merge( - $childResult->getCodeCoverage() + $childResult->getCodeCoverage() ); } @@ -149,52 +177,36 @@ private function processChildResult(PHPUnit_Framework_Test $test, PHPUnit_Framew if (!empty($notImplemented)) { $result->addError( - $test, - $this->getException($notImplemented[0]), - $time + $test, $this->getException($notImplemented[0]), $time ); } elseif (!empty($risky)) { $result->addError( - $test, - $this->getException($risky[0]), - $time + $test, $this->getException($risky[0]), $time ); } elseif (!empty($skipped)) { $result->addError( - $test, - $this->getException($skipped[0]), - $time + $test, $this->getException($skipped[0]), $time ); } elseif (!empty($errors)) { $result->addError( - $test, - $this->getException($errors[0]), - $time + $test, $this->getException($errors[0]), $time ); } elseif (!empty($failures)) { $result->addFailure( - $test, - $this->getException($failures[0]), - $time + $test, $this->getException($failures[0]), $time ); } } } $result->endTest($test, $time); - - if (!empty($output)) { - print $output; - } } /** * Gets the thrown exception from a PHPUnit_Framework_TestFailure. * - * @param PHPUnit_Framework_TestFailure $error - * + * @param PHPUnit_Framework_TestFailure $error * @return Exception - * * @since Method available since Release 3.6.0 * @see https://github.com/sebastianbergmann/phpunit/issues/74 */ @@ -203,22 +215,22 @@ private function getException(PHPUnit_Framework_TestFailure $error) $exception = $error->thrownException(); if ($exception instanceof __PHP_Incomplete_Class) { - $exceptionArray = []; + $exceptionArray = array(); foreach ((array) $exception as $key => $value) { - $key = substr($key, strrpos($key, "\0") + 1); + $key = substr($key, strrpos($key, "\0") + 1); $exceptionArray[$key] = $value; } $exception = new PHPUnit_Framework_SyntheticError( - sprintf( - '%s: %s', - $exceptionArray['_PHP_Incomplete_Class_Name'], - $exceptionArray['message'] - ), - $exceptionArray['code'], - $exceptionArray['file'], - $exceptionArray['line'], - $exceptionArray['trace'] + sprintf( + '%s: %s', + $exceptionArray['_PHP_Incomplete_Class_Name'], + $exceptionArray['message'] + ), + $exceptionArray['code'], + $exceptionArray['file'], + $exceptionArray['line'], + $exceptionArray['trace'] ); } diff --git a/tests/vendor/phpunit/phpunit/src/Util/PHP/Default.php b/tests/vendor/phpunit/phpunit/src/Util/PHP/Default.php index 47fca099..af228fc5 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/PHP/Default.php +++ b/tests/vendor/phpunit/phpunit/src/Util/PHP/Default.php @@ -1,11 +1,46 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.5.12 */ use SebastianBergmann\Environment\Runtime; @@ -13,37 +48,41 @@ /** * Default utility for PHP sub-processes. * - * @since Class available since Release 3.5.12 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.5.12 */ class PHPUnit_Util_PHP_Default extends PHPUnit_Util_PHP { /** * Runs a single job (PHP code) using a separate PHP process. * - * @param string $job - * @param array $settings - * + * @param string $job + * @param array $settings * @return array - * * @throws PHPUnit_Framework_Exception */ - public function runJob($job, array $settings = []) + public function runJob($job, array $settings = array()) { $runtime = new Runtime; $process = proc_open( - $runtime->getBinary() . $this->settingsToParameters($settings), - [ - 0 => ['pipe', 'r'], - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'] - ], - $pipes + $runtime->getBinary() . $this->settingsToParameters($settings), + array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w') + ), + $pipes ); if (!is_resource($process)) { throw new PHPUnit_Framework_Exception( - 'Unable to spawn worker process' + 'Unable to spawn worker process' ); } @@ -59,15 +98,13 @@ public function runJob($job, array $settings = []) proc_close($process); $this->cleanup(); - return ['stdout' => $stdout, 'stderr' => $stderr]; + return array('stdout' => $stdout, 'stderr' => $stderr); } /** - * @param resource $pipe - * @param string $job - * + * @param resource $pipe + * @param string $job * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.5.12 */ protected function process($pipe, $job) diff --git a/tests/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl.dist b/tests/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl.dist index 773af778..e53abfd9 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl.dist +++ b/tests/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl.dist @@ -1,11 +1,4 @@ setCodeCoverage( - new PHP_CodeCoverage( - null, - unserialize('{codeCoverageFilter}') - ) - ); + $result->setCodeCoverage(new PHP_CodeCoverage); } $result->beStrictAboutTestsThatDoNotTestAnything({isStrictAboutTestsThatDoNotTestAnything}); $result->beStrictAboutOutputDuringTests({isStrictAboutOutputDuringTests}); - $result->enforceTimeLimit({enforcesTimeLimit}); - $result->beStrictAboutTodoAnnotatedTests({isStrictAboutTodoAnnotatedTests}); - $result->beStrictAboutResourceUsageDuringSmallTests({isStrictAboutResourceUsageDuringSmallTests}); + $result->beStrictAboutTestSize({isStrictAboutTestSize}); $test = new {className}('{methodName}', unserialize('{data}'), '{dataName}'); $test->setDependencyInput(unserialize('{dependencyInput}')); $test->setInIsolation(TRUE); ob_end_clean(); + ob_start(); $test->run($result); - $output = ''; - if (!$test->hasExpectationOnOutput()) { - $output = $test->getActualOutput(); - } - - rewind(STDOUT); - if ($stdout = stream_get_contents(STDOUT)) { - $output = $stdout . $output; - } + $output = ob_get_clean(); print serialize( array( @@ -69,13 +48,8 @@ function __phpunit_run_isolated_test() 'output' => $output ) ); -} - -$configurationFilePath = '{configurationFilePath}'; -if ('' !== $configurationFilePath) { - $configuration = PHPUnit_Util_Configuration::getInstance($configurationFilePath); - $configuration->handlePHPConfiguration(); + ob_start(); } {constants} @@ -88,3 +62,4 @@ if (isset($GLOBALS['__PHPUNIT_BOOTSTRAP'])) { } __phpunit_run_isolated_test(); +ob_end_clean(); diff --git a/tests/vendor/phpunit/phpunit/src/Util/PHP/Windows.php b/tests/vendor/phpunit/phpunit/src/Util/PHP/Windows.php index 3b7391f3..17d97687 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/PHP/Windows.php +++ b/tests/vendor/phpunit/phpunit/src/Util/PHP/Windows.php @@ -1,19 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.5.12 */ -use SebastianBergmann\Environment\Runtime; - /** * Windows utility for PHP sub-processes. * - * @since Class available since Release 3.5.12 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.5.12 */ class PHPUnit_Util_PHP_Windows extends PHPUnit_Util_PHP_Default { @@ -23,62 +62,9 @@ class PHPUnit_Util_PHP_Windows extends PHPUnit_Util_PHP_Default private $tempFile; /** - * {@inheritdoc} - * - * Reading from STDOUT or STDERR hangs forever on Windows if the output is - * too large. - * - * @see https://bugs.php.net/bug.php?id=51800 - */ - public function runJob($job, array $settings = []) - { - $runtime = new Runtime; - - if (false === $stdout_handle = tmpfile()) { - throw new PHPUnit_Framework_Exception( - 'A temporary file could not be created; verify that your TEMP environment variable is writable' - ); - } - - $process = proc_open( - $runtime->getBinary() . $this->settingsToParameters($settings), - [ - 0 => ['pipe', 'r'], - 1 => $stdout_handle, - 2 => ['pipe', 'w'] - ], - $pipes - ); - - if (!is_resource($process)) { - throw new PHPUnit_Framework_Exception( - 'Unable to spawn worker process' - ); - } - - $this->process($pipes[0], $job); - fclose($pipes[0]); - - $stderr = stream_get_contents($pipes[2]); - fclose($pipes[2]); - - proc_close($process); - - rewind($stdout_handle); - $stdout = stream_get_contents($stdout_handle); - fclose($stdout_handle); - - $this->cleanup(); - - return ['stdout' => $stdout, 'stderr' => $stderr]; - } - - /** - * @param resource $pipe - * @param string $job - * + * @param resource $pipe + * @param string $job * @throws PHPUnit_Framework_Exception - * * @since Method available since Release 3.5.12 */ protected function process($pipe, $job) @@ -86,13 +72,13 @@ protected function process($pipe, $job) if (!($this->tempFile = tempnam(sys_get_temp_dir(), 'PHPUnit')) || file_put_contents($this->tempFile, $job) === false) { throw new PHPUnit_Framework_Exception( - 'Unable to write temporary file' + 'Unable to write temporary file' ); } fwrite( - $pipe, - 'tempFile, true) . '; ?>' + $pipe, + "tempFile, true) . "; ?>" ); } diff --git a/tests/vendor/phpunit/phpunit/src/Util/Printer.php b/tests/vendor/phpunit/phpunit/src/Util/Printer.php index 42812ef5..9d67ad30 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/Printer.php +++ b/tests/vendor/phpunit/phpunit/src/Util/Printer.php @@ -1,47 +1,87 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.0.0 */ /** * Utility class that can print to STDOUT or write to a file. * - * @since Class available since Release 2.0.0 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.0.0 */ class PHPUnit_Util_Printer { /** * If true, flush output after every write. * - * @var bool + * @var boolean */ protected $autoFlush = false; /** - * @var resource + * @var resource */ protected $out; /** - * @var string + * @var string */ protected $outTarget; /** - * @var bool + * @var boolean */ protected $printsHTML = false; /** * Constructor. * - * @param mixed $out - * + * @param mixed $out * @throws PHPUnit_Framework_Exception */ public function __construct($out = null) @@ -87,12 +127,10 @@ public function flush() strpos($this->outTarget, 'socket://') !== 0 && extension_loaded('tidy')) { file_put_contents( - $this->outTarget, - tidy_repair_file( - $this->outTarget, - ['indent' => true, 'wrap' => 0], - 'utf8' - ) + $this->outTarget, + tidy_repair_file( + $this->outTarget, array('indent' => true, 'wrap' => 0), 'utf8' + ) ); } } @@ -142,8 +180,7 @@ public function write($buffer) /** * Check auto-flush mode. * - * @return bool - * + * @return boolean * @since Method available since Release 3.3.0 */ public function getAutoFlush() @@ -157,8 +194,7 @@ public function getAutoFlush() * If set, *incremental* flushes will be done after each write. This should * not be confused with the different effects of this class' flush() method. * - * @param bool $autoFlush - * + * @param boolean $autoFlush * @since Method available since Release 3.3.0 */ public function setAutoFlush($autoFlush) diff --git a/tests/vendor/phpunit/phpunit/src/Util/Regex.php b/tests/vendor/phpunit/phpunit/src/Util/Regex.php deleted file mode 100644 index 3624de15..00000000 --- a/tests/vendor/phpunit/phpunit/src/Util/Regex.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Error handler that converts PHP errors and warnings to exceptions. - * - * @since Class available since Release 4.2.0 - */ -class PHPUnit_Util_Regex -{ - public static function pregMatchSafe($pattern, $subject, $matches = null, $flags = 0, $offset = 0) - { - $handler_terminator = PHPUnit_Util_ErrorHandler::handleErrorOnce(E_WARNING); - $match = preg_match($pattern, $subject, $matches, $flags, $offset); - $handler_terminator(); // cleaning - - return $match; - } -} diff --git a/tests/vendor/phpunit/phpunit/src/Util/String.php b/tests/vendor/phpunit/phpunit/src/Util/String.php index 18f85938..a526bf43 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/String.php +++ b/tests/vendor/phpunit/phpunit/src/Util/String.php @@ -1,25 +1,65 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.6.0 */ /** * String helpers. * - * @since Class available since Release 3.6.0 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.6.0 */ class PHPUnit_Util_String { /** * Converts a string to UTF-8 encoding. * - * @param string $string - * + * @param string $string * @return string */ public static function convertToUtf8($string) @@ -38,9 +78,8 @@ public static function convertToUtf8($string) /** * Checks a string for UTF-8 encoding. * - * @param string $string - * - * @return bool + * @param string $string + * @return boolean */ protected static function isUtf8($string) { diff --git a/tests/vendor/phpunit/phpunit/src/Util/Test.php b/tests/vendor/phpunit/phpunit/src/Util/Test.php index 1dcc921d..366d4027 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/Test.php +++ b/tests/vendor/phpunit/phpunit/src/Util/Test.php @@ -1,40 +1,87 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * (c) Sebastian Bergmann + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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. + * + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 3.0.0 */ +if (!function_exists('trait_exists')) { + function trait_exists($traitname, $autoload = true) + { + return false; + } +} + /** * Test helpers. * - * @since Class available since Release 3.0.0 + * @package PHPUnit + * @subpackage Util + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 3.0.0 */ class PHPUnit_Util_Test { const REGEX_DATA_PROVIDER = '/@dataProvider\s+([a-zA-Z0-9._:-\\\\x7f-\xff]+)/'; - const REGEX_TEST_WITH = '/@testWith\s+/'; const REGEX_EXPECTED_EXCEPTION = '(@expectedException\s+([:.\w\\\\x7f-\xff]+)(?:[\t ]+(\S*))?(?:[\t ]+(\S*))?\s*$)m'; const REGEX_REQUIRES_VERSION = '/@requires\s+(?PPHP(?:Unit)?)\s+(?P[\d\.-]+(dev|(RC|alpha|beta)[\d\.])?)[ \t]*\r?$/m'; const REGEX_REQUIRES_OS = '/@requires\s+OS\s+(?P.+?)[ \t]*\r?$/m'; const REGEX_REQUIRES = '/@requires\s+(?Pfunction|extension)\s+(?P([^ ]+?))[ \t]*\r?$/m'; - const UNKNOWN = -1; - const SMALL = 0; - const MEDIUM = 1; - const LARGE = 2; + const SMALL = 0; + const MEDIUM = 1; + const LARGE = 2; - private static $annotationCache = []; + private static $annotationCache = array(); - private static $hookMethods = []; + private static $templateMethods = array( + 'setUp', 'assertPreConditions', 'assertPostConditions', 'tearDown' + ); /** - * @param PHPUnit_Framework_Test $test - * @param bool $asString - * + * @param PHPUnit_Framework_Test $test + * @param boolean $asString * @return mixed */ public static function describe(PHPUnit_Framework_Test $test, $asString = true) @@ -47,128 +94,127 @@ public static function describe(PHPUnit_Framework_Test $test, $asString = true) } } else { if ($test instanceof PHPUnit_Framework_TestCase) { - return [ + return array( get_class($test), $test->getName() - ]; + ); } elseif ($test instanceof PHPUnit_Framework_SelfDescribing) { - return ['', $test->toString()]; + return array('', $test->toString()); } else { - return ['', get_class($test)]; + return array('', get_class($test)); } } } /** - * @param string $className - * @param string $methodName - * - * @return array|bool - * - * @throws PHPUnit_Framework_CodeCoverageException + * Returns the files and lines a test method wants to cover. * + * @param string $className + * @param string $methodName + * @return array * @since Method available since Release 4.0.0 */ public static function getLinesToBeCovered($className, $methodName) { - $annotations = self::parseTestMethodAnnotations( - $className, - $methodName - ); + $codeToCoverList = array(); + + $class = new ReflectionClass($className); + + try { + $method = new ReflectionMethod($className, $methodName); + } catch (ReflectionException $e) { + return array(); + } + + $docComment = self::getDocCommentsOfTestClassAndTestMethodAndTemplateMethods($class, $method); - if (isset($annotations['class']['coversNothing']) || isset($annotations['method']['coversNothing'])) { + if (strpos($docComment, '@coversNothing') !== false) { return false; } - return self::getLinesToBeCoveredOrUsed($className, $methodName, 'covers'); + $classShortcut = preg_match_all( + '(@coversDefaultClass\s+(?P[^\s]++)\s*$)m', + $class->getDocComment(), + $matches + ); + + if ($classShortcut) { + if ($classShortcut > 1) { + throw new PHPUnit_Framework_CodeCoverageException( + sprintf( + 'More than one @coversClass annotation in class or interface "%s".', + $className + ) + ); + } + + $classShortcut = $matches['coveredClass'][0]; + } + + $match = preg_match_all( + '(@covers\s+(?P[^\s()]++)[\s()]*$)m', + $docComment, + $matches + ); + + if ($match) { + foreach ($matches['coveredElement'] as $coveredElement) { + if ($classShortcut && strncmp($coveredElement, '::', 2) === 0) { + $coveredElement = $classShortcut . $coveredElement; + } + + $codeToCoverList = array_merge( + $codeToCoverList, + self::resolveElementToReflectionObjects($coveredElement) + ); + } + } + + return self::resolveReflectionObjectsToLines($codeToCoverList); } /** * Returns lines of code specified with the @uses annotation. * - * @param string $className - * @param string $methodName - * + * @param string $className + * @param string $methodName * @return array - * * @since Method available since Release 4.0.0 */ public static function getLinesToBeUsed($className, $methodName) - { - return self::getLinesToBeCoveredOrUsed($className, $methodName, 'uses'); - } - - /** - * @param string $className - * @param string $methodName - * @param string $mode - * - * @return array - * - * @throws PHPUnit_Framework_CodeCoverageException - * - * @since Method available since Release 4.2.0 - */ - private static function getLinesToBeCoveredOrUsed($className, $methodName, $mode) { $annotations = self::parseTestMethodAnnotations( - $className, - $methodName + $className, $methodName ); - $classShortcut = null; - - if (!empty($annotations['class'][$mode . 'DefaultClass'])) { - if (count($annotations['class'][$mode . 'DefaultClass']) > 1) { - throw new PHPUnit_Framework_CodeCoverageException( - sprintf( - 'More than one @%sClass annotation in class or interface "%s".', - $mode, - $className - ) - ); - } + $uses = array(); - $classShortcut = $annotations['class'][$mode . 'DefaultClass'][0]; + if (isset($annotations['class']['uses'])) { + $uses = $annotations['class']['uses']; } - $list = []; - - if (isset($annotations['class'][$mode])) { - $list = $annotations['class'][$mode]; + if (isset($annotations['method']['uses'])) { + $uses = array_merge($uses, $annotations['method']['uses']); } - if (isset($annotations['method'][$mode])) { - $list = array_merge($list, $annotations['method'][$mode]); - } - - $codeList = []; - - foreach (array_unique($list) as $element) { - if ($classShortcut && strncmp($element, '::', 2) === 0) { - $element = $classShortcut . $element; - } + $uses = array_unique($uses); + $codeToUseList = array(); - $element = preg_replace('/[\s()]+$/', '', $element); - $element = explode(' ', $element); - $element = $element[0]; - - $codeList = array_merge( - $codeList, - self::resolveElementToReflectionObjects($element) + foreach (array_unique($uses) as $element) { + $codeToUseList = array_merge( + $codeToUseList, + self::resolveElementToReflectionObjects($element) ); } - return self::resolveReflectionObjectsToLines($codeList); + return self::resolveReflectionObjectsToLines($codeToUseList); } /** * Returns the requirements for a test. * - * @param string $className - * @param string $methodName - * + * @param string $className + * @param string $methodName * @return array - * * @since Method available since Release 3.6.0 */ public static function getRequirements($className, $methodName) @@ -177,12 +223,12 @@ public static function getRequirements($className, $methodName) $docComment = $reflector->getDocComment(); $reflector = new ReflectionMethod($className, $methodName); $docComment .= "\n" . $reflector->getDocComment(); - $requires = []; + $requires = array(); if ($count = preg_match_all(self::REGEX_REQUIRES_OS, $docComment, $matches)) { $requires['OS'] = sprintf( - '/%s/i', - addcslashes($matches['value'][$count - 1], '/') + '/%s/i', + addcslashes($matches['value'][$count - 1], '/') ); } if ($count = preg_match_all(self::REGEX_REQUIRES_VERSION, $docComment, $matches)) { @@ -192,13 +238,13 @@ public static function getRequirements($className, $methodName) } // https://bugs.php.net/bug.php?id=63055 - $matches = []; + $matches = array(); if ($count = preg_match_all(self::REGEX_REQUIRES, $docComment, $matches)) { for ($i = 0; $i < $count; $i++) { $name = $matches['name'][$i] . 's'; if (!isset($requires[$name])) { - $requires[$name] = []; + $requires[$name] = array(); } $requires[$name][] = $matches['value'][$i]; } @@ -207,68 +253,12 @@ public static function getRequirements($className, $methodName) return $requires; } - /** - * Returns the missing requirements for a test. - * - * @param string $className - * @param string $methodName - * - * @return array - * - * @since Method available since Release 4.3.0 - */ - public static function getMissingRequirements($className, $methodName) - { - $required = static::getRequirements($className, $methodName); - $missing = []; - - if (!empty($required['PHP']) && version_compare(PHP_VERSION, $required['PHP'], '<')) { - $missing[] = sprintf('PHP %s (or later) is required.', $required['PHP']); - } - - if (!empty($required['PHPUnit'])) { - $phpunitVersion = PHPUnit_Runner_Version::id(); - if (version_compare($phpunitVersion, $required['PHPUnit'], '<')) { - $missing[] = sprintf('PHPUnit %s (or later) is required.', $required['PHPUnit']); - } - } - - if (!empty($required['OS']) && !preg_match($required['OS'], PHP_OS)) { - $missing[] = sprintf('Operating system matching %s is required.', $required['OS']); - } - - if (!empty($required['functions'])) { - foreach ($required['functions'] as $function) { - $pieces = explode('::', $function); - if (2 === count($pieces) && method_exists($pieces[0], $pieces[1])) { - continue; - } - if (function_exists($function)) { - continue; - } - $missing[] = sprintf('Function %s is required.', $function); - } - } - - if (!empty($required['extensions'])) { - foreach ($required['extensions'] as $extension) { - if (!extension_loaded($extension)) { - $missing[] = sprintf('Extension %s is required.', $extension); - } - } - } - - return $missing; - } - /** * Returns the expected exception for a test. * - * @param string $className - * @param string $methodName - * + * @param string $className + * @param string $methodName * @return array - * * @since Method available since Release 3.3.6 */ public static function getExpectedException($className, $methodName) @@ -279,14 +269,12 @@ public static function getExpectedException($className, $methodName) if (preg_match(self::REGEX_EXPECTED_EXCEPTION, $docComment, $matches)) { $annotations = self::parseTestMethodAnnotations( - $className, - $methodName + $className, $methodName ); - $class = $matches[1]; - $code = null; - $message = ''; - $messageRegExp = ''; + $class = $matches[1]; + $code = null; + $message = ''; if (isset($matches[2])) { $message = trim($matches[2]); @@ -296,12 +284,6 @@ public static function getExpectedException($className, $methodName) ); } - if (isset($annotations['method']['expectedExceptionMessageRegExp'])) { - $messageRegExp = self::parseAnnotationContent( - $annotations['method']['expectedExceptionMessageRegExp'][0] - ); - } - if (isset($matches[3])) { $code = $matches[3]; } elseif (isset($annotations['method']['expectedExceptionCode'])) { @@ -316,9 +298,9 @@ public static function getExpectedException($className, $methodName) $code = (int) constant($code); } - return [ - 'class' => $class, 'code' => $code, 'message' => $message, 'message_regex' => $messageRegExp - ]; + return array( + 'class' => $class, 'code' => $code, 'message' => $message + ); } return false; @@ -331,8 +313,7 @@ public static function getExpectedException($className, $methodName) * * If the constant is not found the string is used as is to ensure maximum BC. * - * @param string $message - * + * @param string $message * @return string */ private static function parseAnnotationContent($message) @@ -349,14 +330,12 @@ private static function parseAnnotationContent($message) /** * Returns the provided data for a method. * - * @param string $className - * @param string $methodName - * - * @return array|Iterator when a data provider is specified and exists - * null when no data provider is specified - * - * @throws PHPUnit_Framework_Exception - * + * @param string $className + * @param string $methodName + * @param string $docComment + * @return mixed array|Iterator when a data provider is specified and exists + * false when a data provider is specified and does not exist + * null when no data provider is specified * @since Method available since Release 3.2.0 */ public static function getProvidedData($className, $methodName) @@ -365,55 +344,13 @@ public static function getProvidedData($className, $methodName) $docComment = $reflector->getDocComment(); $data = null; - if ($dataProviderData = self::getDataFromDataProviderAnnotation($docComment, $className, $methodName)) { - $data = $dataProviderData; - } - - if ($testWithData = self::getDataFromTestWithAnnotation($docComment)) { - $data = $testWithData; - } - - if ($data !== null) { - if (is_object($data)) { - $data = iterator_to_array($data); - } - - foreach ($data as $key => $value) { - if (!is_array($value)) { - throw new PHPUnit_Framework_Exception( - sprintf( - 'Data set %s is invalid.', - is_int($key) ? '#' . $key : '"' . $key . '"' - ) - ); - } - } - } - - return $data; - } - - /** - * Returns the provided data for a method. - * - * @param string $docComment - * @param string $className - * @param string $methodName - * - * @return array|Iterator when a data provider is specified and exists - * null when no data provider is specified - * - * @throws PHPUnit_Framework_Exception - */ - private static function getDataFromDataProviderAnnotation($docComment, $className, $methodName) - { if (preg_match(self::REGEX_DATA_PROVIDER, $docComment, $matches)) { $dataProviderMethodNameNamespace = explode('\\', $matches[1]); $leaf = explode('::', array_pop($dataProviderMethodNameNamespace)); $dataProviderMethodName = array_pop($leaf); if (!empty($dataProviderMethodNameNamespace)) { - $dataProviderMethodNameNamespace = implode('\\', $dataProviderMethodNameNamespace) . '\\'; + $dataProviderMethodNameNamespace = join('\\', $dataProviderMethodNameNamespace) . '\\'; } else { $dataProviderMethodNameNamespace = ''; } @@ -426,7 +363,7 @@ private static function getDataFromDataProviderAnnotation($docComment, $classNam $dataProviderClass = new ReflectionClass($dataProviderClassName); $dataProviderMethod = $dataProviderClass->getMethod( - $dataProviderMethodName + $dataProviderMethodName ); if ($dataProviderMethod->isStatic()) { @@ -440,96 +377,66 @@ private static function getDataFromDataProviderAnnotation($docComment, $classNam } else { $data = $dataProviderMethod->invoke($object, $methodName); } - - return $data; } - } - /** - * @param string $docComment full docComment string - * - * @return array when @testWith annotation is defined - * null when @testWith annotation is omitted - * - * @throws PHPUnit_Framework_Exception when @testWith annotation is defined but cannot be parsed - */ - public static function getDataFromTestWithAnnotation($docComment) - { - $docComment = self::cleanUpMultiLineAnnotation($docComment); - if (preg_match(self::REGEX_TEST_WITH, $docComment, $matches, PREG_OFFSET_CAPTURE)) { - $offset = strlen($matches[0][0]) + $matches[0][1]; - $annotationContent = substr($docComment, $offset); - $data = []; - foreach (explode("\n", $annotationContent) as $candidateRow) { - $candidateRow = trim($candidateRow); - $dataSet = json_decode($candidateRow, true); - if (json_last_error() != JSON_ERROR_NONE) { - break; - } - $data[] = $dataSet; + if ($data !== null) { + if (is_object($data)) { + $data = iterator_to_array($data); } - if (!$data) { - throw new PHPUnit_Framework_Exception('The dataset for the @testWith annotation cannot be parsed.'); + foreach ($data as $key => $value) { + if (!is_array($value)) { + throw new PHPUnit_Framework_Exception( + sprintf( + 'Data set %s is invalid.', + is_int($key) ? '#' . $key : '"' . $key . '"' + ) + ); + } } - - return $data; } - } - - private static function cleanUpMultiLineAnnotation($docComment) - { - //removing initial ' * ' for docComment - $docComment = preg_replace('/' . '\n' . '\s*' . '\*' . '\s?' . '/', "\n", $docComment); - $docComment = substr($docComment, 0, -1); - $docComment = rtrim($docComment, "\n"); - return $docComment; + return $data; } /** - * @param string $className - * @param string $methodName - * + * @param string $className + * @param string $methodName * @return array - * * @throws ReflectionException - * * @since Method available since Release 3.4.0 */ public static function parseTestMethodAnnotations($className, $methodName = '') { if (!isset(self::$annotationCache[$className])) { - $class = new ReflectionClass($className); + $class = new ReflectionClass($className); self::$annotationCache[$className] = self::parseAnnotations($class->getDocComment()); } if (!empty($methodName) && !isset(self::$annotationCache[$className . '::' . $methodName])) { try { - $method = new ReflectionMethod($className, $methodName); + $method = new ReflectionMethod($className, $methodName); $annotations = self::parseAnnotations($method->getDocComment()); } catch (ReflectionException $e) { - $annotations = []; + $annotations = array(); } self::$annotationCache[$className . '::' . $methodName] = $annotations; } - return [ + return array( 'class' => self::$annotationCache[$className], - 'method' => !empty($methodName) ? self::$annotationCache[$className . '::' . $methodName] : [] - ]; + 'method' => !empty($methodName) ? self::$annotationCache[$className . '::' . $methodName] : array() + ); } /** - * @param string $docblock - * + * @param string $docblock * @return array - * * @since Method available since Release 3.4.0 */ private static function parseAnnotations($docblock) { - $annotations = []; + $annotations = array(); // Strip away the docblock header and footer to ease parsing of one line annotations $docblock = substr($docblock, 3, -2); @@ -547,47 +454,38 @@ private static function parseAnnotations($docblock) /** * Returns the backup settings for a test. * - * @param string $className - * @param string $methodName - * + * @param string $className + * @param string $methodName * @return array - * * @since Method available since Release 3.4.0 */ public static function getBackupSettings($className, $methodName) { - return [ + return array( 'backupGlobals' => self::getBooleanAnnotationSetting( - $className, - $methodName, - 'backupGlobals' + $className, $methodName, 'backupGlobals' ), 'backupStaticAttributes' => self::getBooleanAnnotationSetting( - $className, - $methodName, - 'backupStaticAttributes' + $className, $methodName, 'backupStaticAttributes' ) - ]; + ); } /** * Returns the dependencies for a test class or method. * - * @param string $className - * @param string $methodName - * + * @param string $className + * @param string $methodName * @return array - * * @since Method available since Release 3.4.0 */ public static function getDependencies($className, $methodName) { $annotations = self::parseTestMethodAnnotations( - $className, - $methodName + $className, $methodName ); - $dependencies = []; + $dependencies = array(); if (isset($annotations['class']['depends'])) { $dependencies = $annotations['class']['depends']; @@ -595,8 +493,7 @@ public static function getDependencies($className, $methodName) if (isset($annotations['method']['depends'])) { $dependencies = array_merge( - $dependencies, - $annotations['method']['depends'] + $dependencies, $annotations['method']['depends'] ); } @@ -606,40 +503,33 @@ public static function getDependencies($className, $methodName) /** * Returns the error handler settings for a test. * - * @param string $className - * @param string $methodName - * - * @return bool - * + * @param string $className + * @param string $methodName + * @return boolean * @since Method available since Release 3.4.0 */ public static function getErrorHandlerSettings($className, $methodName) { return self::getBooleanAnnotationSetting( - $className, - $methodName, - 'errorHandler' + $className, $methodName, 'errorHandler' ); } /** * Returns the groups for a test class or method. * - * @param string $className - * @param string $methodName - * + * @param string $className + * @param string $methodName * @return array - * * @since Method available since Release 3.2.0 */ public static function getGroups($className, $methodName = '') { $annotations = self::parseTestMethodAnnotations( - $className, - $methodName + $className, $methodName ); - $groups = []; + $groups = array(); if (isset($annotations['method']['author'])) { $groups = $annotations['method']['author']; @@ -663,17 +553,11 @@ public static function getGroups($className, $methodName = '') $groups = array_merge($groups, $annotations['method']['ticket']); } - foreach (['method', 'class'] as $element) { - foreach (['small', 'medium', 'large'] as $size) { - if (isset($annotations[$element][$size])) { - $groups[] = $size; - break 2; - } - - if (isset($annotations[$element][$size])) { - $groups[] = $size; - break 2; - } + foreach (array('small', 'medium', 'large') as $size) { + if (isset($annotations['method'][$size])) { + $groups[] = $size; + } elseif (isset($annotations['class'][$size])) { + $groups[] = $size; } } @@ -683,29 +567,26 @@ public static function getGroups($className, $methodName = '') /** * Returns the size of the test. * - * @param string $className - * @param string $methodName - * - * @return int - * + * @param string $className + * @param string $methodName + * @return integer * @since Method available since Release 3.6.0 */ public static function getSize($className, $methodName) { $groups = array_flip(self::getGroups($className, $methodName)); - $size = self::UNKNOWN; + $size = self::SMALL; $class = new ReflectionClass($className); - if (isset($groups['large']) || - (class_exists('PHPUnit_Extensions_Database_TestCase', false) && + if ((class_exists('PHPUnit_Extensions_Database_TestCase', false) && $class->isSubclassOf('PHPUnit_Extensions_Database_TestCase')) || (class_exists('PHPUnit_Extensions_SeleniumTestCase', false) && $class->isSubclassOf('PHPUnit_Extensions_SeleniumTestCase'))) { $size = self::LARGE; } elseif (isset($groups['medium'])) { $size = self::MEDIUM; - } elseif (isset($groups['small'])) { - $size = self::SMALL; + } elseif (isset($groups['large'])) { + $size = self::LARGE; } return $size; @@ -714,21 +595,18 @@ public static function getSize($className, $methodName) /** * Returns the tickets for a test class or method. * - * @param string $className - * @param string $methodName - * + * @param string $className + * @param string $methodName * @return array - * * @since Method available since Release 3.4.0 */ public static function getTickets($className, $methodName) { $annotations = self::parseTestMethodAnnotations( - $className, - $methodName + $className, $methodName ); - $tickets = []; + $tickets = array(); if (isset($annotations['class']['ticket'])) { $tickets = $annotations['class']['ticket']; @@ -744,18 +622,15 @@ public static function getTickets($className, $methodName) /** * Returns the process isolation settings for a test. * - * @param string $className - * @param string $methodName - * - * @return bool - * + * @param string $className + * @param string $methodName + * @return boolean * @since Method available since Release 3.4.1 */ public static function getProcessIsolationSettings($className, $methodName) { $annotations = self::parseTestMethodAnnotations( - $className, - $methodName + $className, $methodName ); if (isset($annotations['class']['runTestsInSeparateProcesses']) || @@ -769,94 +644,29 @@ public static function getProcessIsolationSettings($className, $methodName) /** * Returns the preserve global state settings for a test. * - * @param string $className - * @param string $methodName - * - * @return bool - * + * @param string $className + * @param string $methodName + * @return boolean * @since Method available since Release 3.4.0 */ public static function getPreserveGlobalStateSettings($className, $methodName) { return self::getBooleanAnnotationSetting( - $className, - $methodName, - 'preserveGlobalState' + $className, $methodName, 'preserveGlobalState' ); } /** - * @param string $className - * - * @return array - * - * @since Method available since Release 4.0.8 - */ - public static function getHookMethods($className) - { - if (!class_exists($className, false)) { - return self::emptyHookMethodsArray(); - } - - if (!isset(self::$hookMethods[$className])) { - self::$hookMethods[$className] = self::emptyHookMethodsArray(); - - try { - $class = new ReflectionClass($className); - - foreach ($class->getMethods() as $method) { - if (self::isBeforeClassMethod($method)) { - self::$hookMethods[$className]['beforeClass'][] = $method->getName(); - } - - if (self::isBeforeMethod($method)) { - self::$hookMethods[$className]['before'][] = $method->getName(); - } - - if (self::isAfterMethod($method)) { - self::$hookMethods[$className]['after'][] = $method->getName(); - } - - if (self::isAfterClassMethod($method)) { - self::$hookMethods[$className]['afterClass'][] = $method->getName(); - } - } - } catch (ReflectionException $e) { - } - } - - return self::$hookMethods[$className]; - } - - /** - * @return array - * - * @since Method available since Release 4.0.9 - */ - private static function emptyHookMethodsArray() - { - return [ - 'beforeClass' => ['setUpBeforeClass'], - 'before' => ['setUp'], - 'after' => ['tearDown'], - 'afterClass' => ['tearDownAfterClass'] - ]; - } - - /** - * @param string $className - * @param string $methodName - * @param string $settingName - * - * @return bool - * + * @param string $className + * @param string $methodName + * @param string $settingName + * @return boolean * @since Method available since Release 3.4.0 */ private static function getBooleanAnnotationSetting($className, $methodName, $settingName) { $annotations = self::parseTestMethodAnnotations( - $className, - $methodName + $className, $methodName ); $result = null; @@ -881,35 +691,29 @@ private static function getBooleanAnnotationSetting($className, $methodName, $se } /** - * @param string $element - * + * @param string $element * @return array - * - * @throws PHPUnit_Framework_InvalidCoversTargetException - * * @since Method available since Release 4.0.0 */ private static function resolveElementToReflectionObjects($element) { - $codeToCoverList = []; + $codeToCoverList = array(); - if (strpos($element, '\\') !== false && function_exists($element)) { - $codeToCoverList[] = new ReflectionFunction($element); - } elseif (strpos($element, '::') !== false) { + if (strpos($element, '::') !== false) { list($className, $methodName) = explode('::', $element); if (isset($methodName[0]) && $methodName[0] == '<') { - $classes = [$className]; + $classes = array($className); foreach ($classes as $className) { if (!class_exists($className) && !interface_exists($className)) { throw new PHPUnit_Framework_InvalidCoversTargetException( - sprintf( - 'Trying to @cover or @use not existing class or ' . - 'interface "%s".', - $className - ) + sprintf( + 'Trying to @cover or @use not existing class or ' . + 'interface "%s".', + $className + ) ); } @@ -934,12 +738,12 @@ private static function resolveElementToReflectionObjects($element) } } } else { - $classes = [$className]; + $classes = array($className); foreach ($classes as $className) { if ($className == '' && function_exists($methodName)) { $codeToCoverList[] = new ReflectionFunction( - $methodName + $methodName ); } else { if (!((class_exists($className) || @@ -947,17 +751,16 @@ interface_exists($className) || trait_exists($className)) && method_exists($className, $methodName))) { throw new PHPUnit_Framework_InvalidCoversTargetException( - sprintf( - 'Trying to @cover or @use not existing method "%s::%s".', - $className, - $methodName - ) + sprintf( + 'Trying to @cover or @use not existing method "%s::%s".', + $className, + $methodName + ) ); } $codeToCoverList[] = new ReflectionMethod( - $className, - $methodName + $className, $methodName ); } } @@ -966,17 +769,20 @@ trait_exists($className)) && $extended = false; if (strpos($element, '') !== false) { - $element = str_replace('', '', $element); + $element = str_replace( + '', '', $element + ); + $extended = true; } - $classes = [$element]; + $classes = array($element); if ($extended) { $classes = array_merge( - $classes, - class_implements($element), - class_parents($element) + $classes, + class_implements($element), + class_parents($element) ); } @@ -985,11 +791,11 @@ class_parents($element) !interface_exists($className) && !trait_exists($className)) { throw new PHPUnit_Framework_InvalidCoversTargetException( - sprintf( - 'Trying to @cover or @use not existing class or ' . - 'interface "%s".', - $className - ) + sprintf( + 'Trying to @cover or @use not existing class or ' . + 'interface "%s".', + $className + ) ); } @@ -1000,78 +806,42 @@ class_parents($element) return $codeToCoverList; } - /** - * @param array $reflectors - * - * @return array - */ private static function resolveReflectionObjectsToLines(array $reflectors) { - $result = []; + $result = array(); foreach ($reflectors as $reflector) { $filename = $reflector->getFileName(); if (!isset($result[$filename])) { - $result[$filename] = []; + $result[$filename] = array(); } $result[$filename] = array_unique( - array_merge( - $result[$filename], - range($reflector->getStartLine(), $reflector->getEndLine()) + array_merge( + $result[$filename], + range( + $reflector->getStartLine(), $reflector->getEndLine() ) + ) ); } return $result; } - /** - * @param ReflectionMethod $method - * - * @return bool - * - * @since Method available since Release 4.0.8 - */ - private static function isBeforeClassMethod(ReflectionMethod $method) + private static function getDocCommentsOfTestClassAndTestMethodAndTemplateMethods(ReflectionClass $class, ReflectionMethod $method) { - return $method->isStatic() && strpos($method->getDocComment(), '@beforeClass') !== false; - } + $buffer = substr($class->getDocComment(), 3, -2) . PHP_EOL . + substr($method->getDocComment(), 3, -2); - /** - * @param ReflectionMethod $method - * - * @return bool - * - * @since Method available since Release 4.0.8 - */ - private static function isBeforeMethod(ReflectionMethod $method) - { - return preg_match('/@before\b/', $method->getDocComment()); - } - - /** - * @param ReflectionMethod $method - * - * @return bool - * - * @since Method available since Release 4.0.8 - */ - private static function isAfterClassMethod(ReflectionMethod $method) - { - return $method->isStatic() && strpos($method->getDocComment(), '@afterClass') !== false; - } + foreach (self::$templateMethods as $templateMethod) { + if ($class->hasMethod($templateMethod)) { + $_method = $class->getMethod($templateMethod); + $buffer .= PHP_EOL . substr($_method->getDocComment(), 3, -2); + } + } - /** - * @param ReflectionMethod $method - * - * @return bool - * - * @since Method available since Release 4.0.8 - */ - private static function isAfterMethod(ReflectionMethod $method) - { - return preg_match('/@after\b/', $method->getDocComment()); + return $buffer; } } diff --git a/tests/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php b/tests/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php index 8fa1b51e..20a7f794 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php +++ b/tests/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php @@ -1,40 +1,80 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Util_TestDox + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.3.0 */ /** * Prettifies class and method names for use in TestDox documentation. * - * @since Class available since Release 2.1.0 + * @package PHPUnit + * @subpackage Util_TestDox + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.1.0 */ class PHPUnit_Util_TestDox_NamePrettifier { /** - * @var string + * @var string */ protected $prefix = 'Test'; /** - * @var string + * @var string */ protected $suffix = 'Test'; /** - * @var array + * @var array */ - protected $strings = []; + protected $strings = array(); /** * Prettifies the name of a test class. * - * @param string $name - * + * @param string $name * @return string */ public function prettifyTestClass($name) @@ -51,18 +91,13 @@ public function prettifyTestClass($name) $title = substr($title, strlen($this->prefix)); } - if (substr($title, 0, 1) == '\\') { - $title = substr($title, 1); - } - - return $title; + return str_replace('\\', '', $title); } /** * Prettifies the name of a test method. * - * @param string $name - * + * @param string $name * @return string */ public function prettifyTestMethod($name) diff --git a/tests/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php b/tests/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php index c1fe17ae..b227f24f 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php +++ b/tests/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php @@ -1,17 +1,58 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Util_TestDox + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.3.0 */ /** * Base class for printers of TestDox documentation. * - * @since Class available since Release 2.1.0 + * @package PHPUnit + * @subpackage Util_TestDox + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.1.0 */ abstract class PHPUnit_Util_TestDox_ResultPrinter extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener { @@ -26,40 +67,45 @@ abstract class PHPUnit_Util_TestDox_ResultPrinter extends PHPUnit_Util_Printer i protected $testClass = ''; /** - * @var int + * @var integer */ protected $testStatus = false; /** * @var array */ - protected $tests = []; + protected $tests = array(); /** - * @var int + * @var integer */ protected $successful = 0; /** - * @var int + * @var integer */ protected $failed = 0; /** - * @var int + * @var integer */ protected $risky = 0; /** - * @var int + * @var integer */ protected $skipped = 0; /** - * @var int + * @var integer */ protected $incomplete = 0; + /** + * @var string + */ + protected $testTypeOfInterest = 'PHPUnit_Framework_TestCase'; + /** * @var string */ @@ -85,6 +131,7 @@ public function __construct($out = null) /** * Flush buffer and close output. + * */ public function flush() { @@ -103,12 +150,10 @@ public function flush() */ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { - if (!$this->isOfInterest($test)) { - return; + if ($test instanceof $this->testTypeOfInterest) { + $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_ERROR; + $this->failed++; } - - $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_ERROR; - $this->failed++; } /** @@ -120,12 +165,10 @@ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) */ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { - if (!$this->isOfInterest($test)) { - return; + if ($test instanceof $this->testTypeOfInterest) { + $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE; + $this->failed++; } - - $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE; - $this->failed++; } /** @@ -137,12 +180,10 @@ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_Asser */ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { - if (!$this->isOfInterest($test)) { - return; + if ($test instanceof $this->testTypeOfInterest) { + $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE; + $this->incomplete++; } - - $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE; - $this->incomplete++; } /** @@ -151,17 +192,14 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 4.0.0 */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { - if (!$this->isOfInterest($test)) { - return; + if ($test instanceof $this->testTypeOfInterest) { + $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_RISKY; + $this->risky++; } - - $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_RISKY; - $this->risky++; } /** @@ -170,24 +208,20 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time - * * @since Method available since Release 3.0.0 */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { - if (!$this->isOfInterest($test)) { - return; + if ($test instanceof $this->testTypeOfInterest) { + $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED; + $this->skipped++; } - - $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED; - $this->skipped++; } /** * A testsuite started. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) @@ -198,7 +232,6 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) * A testsuite ended. * * @param PHPUnit_Framework_TestSuite $suite - * * @since Method available since Release 2.2.0 */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) @@ -212,38 +245,39 @@ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) */ public function startTest(PHPUnit_Framework_Test $test) { - if (!$this->isOfInterest($test)) { - return; - } + if ($test instanceof $this->testTypeOfInterest) { + $class = get_class($test); + + if ($this->testClass != $class) { + if ($this->testClass != '') { + $this->doEndClass(); + } - $class = get_class($test); + $this->currentTestClassPrettified = $this->prettifier->prettifyTestClass($class); + $this->startClass($class); - if ($this->testClass != $class) { - if ($this->testClass != '') { - $this->doEndClass(); + $this->testClass = $class; + $this->tests = array(); } - $this->currentTestClassPrettified = $this->prettifier->prettifyTestClass($class); - $this->startClass($class); + $prettified = false; - $this->testClass = $class; - $this->tests = []; - } + if ($test instanceof PHPUnit_Framework_TestCase && + !$test instanceof PHPUnit_Framework_Warning) { + $annotations = $test->getAnnotations(); - $prettified = false; - - $annotations = $test->getAnnotations(); + if (isset($annotations['method']['testdox'][0])) { + $this->currentTestMethodPrettified = $annotations['method']['testdox'][0]; + $prettified = true; + } + } - if (isset($annotations['method']['testdox'][0])) { - $this->currentTestMethodPrettified = $annotations['method']['testdox'][0]; - $prettified = true; - } + if (!$prettified) { + $this->currentTestMethodPrettified = $this->prettifier->prettifyTestMethod($test->getName(false)); + } - if (!$prettified) { - $this->currentTestMethodPrettified = $this->prettifier->prettifyTestMethod($test->getName(false)); + $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_PASSED; } - - $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_PASSED; } /** @@ -254,28 +288,26 @@ public function startTest(PHPUnit_Framework_Test $test) */ public function endTest(PHPUnit_Framework_Test $test, $time) { - if (!$this->isOfInterest($test)) { - return; - } - - if (!isset($this->tests[$this->currentTestMethodPrettified])) { - if ($this->testStatus == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) { - $this->tests[$this->currentTestMethodPrettified]['success'] = 1; - $this->tests[$this->currentTestMethodPrettified]['failure'] = 0; + if ($test instanceof $this->testTypeOfInterest) { + if (!isset($this->tests[$this->currentTestMethodPrettified])) { + if ($this->testStatus == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) { + $this->tests[$this->currentTestMethodPrettified]['success'] = 1; + $this->tests[$this->currentTestMethodPrettified]['failure'] = 0; + } else { + $this->tests[$this->currentTestMethodPrettified]['success'] = 0; + $this->tests[$this->currentTestMethodPrettified]['failure'] = 1; + } } else { - $this->tests[$this->currentTestMethodPrettified]['success'] = 0; - $this->tests[$this->currentTestMethodPrettified]['failure'] = 1; + if ($this->testStatus == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) { + $this->tests[$this->currentTestMethodPrettified]['success']++; + } else { + $this->tests[$this->currentTestMethodPrettified]['failure']++; + } } - } else { - if ($this->testStatus == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) { - $this->tests[$this->currentTestMethodPrettified]['success']++; - } else { - $this->tests[$this->currentTestMethodPrettified]['failure']++; - } - } - $this->currentTestClassPrettified = null; - $this->currentTestMethodPrettified = null; + $this->currentTestClassPrettified = null; + $this->currentTestMethodPrettified = null; + } } /** @@ -292,6 +324,7 @@ protected function doEndClass() /** * Handler for 'start run' event. + * */ protected function startRun() { @@ -309,8 +342,8 @@ protected function startClass($name) /** * Handler for 'on test' event. * - * @param string $name - * @param bool $success + * @param string $name + * @param boolean $success */ protected function onTest($name, $success = true) { @@ -327,13 +360,9 @@ protected function endClass($name) /** * Handler for 'end run' event. + * */ protected function endRun() { } - - private function isOfInterest(PHPUnit_Framework_Test $test) - { - return $test instanceof PHPUnit_Framework_TestCase && get_class($test) != 'PHPUnit_Framework_Warning'; - } } diff --git a/tests/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php b/tests/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php index 6919eafe..c501dc72 100644 --- a/tests/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php +++ b/tests/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php @@ -1,27 +1,69 @@ . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * (c) Sebastian Bergmann + * * Neither the name of Sebastian Bergmann nor the names of his + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * 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. + * + * @package PHPUnit + * @subpackage Util_TestDox + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since File available since Release 2.3.0 */ /** * Prints TestDox documentation in HTML format. * - * @since Class available since Release 2.1.0 + * @package PHPUnit + * @subpackage Util_TestDox + * @author Sebastian Bergmann + * @copyright 2001-2014 Sebastian Bergmann + * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License + * @link http://www.phpunit.de/ + * @since Class available since Release 2.1.0 */ class PHPUnit_Util_TestDox_ResultPrinter_HTML extends PHPUnit_Util_TestDox_ResultPrinter { /** - * @var bool + * @var boolean */ protected $printsHTML = true; /** * Handler for 'start run' event. + * */ protected function startRun() { @@ -36,16 +78,16 @@ protected function startRun() protected function startClass($name) { $this->write( - '

' . $this->currentTestClassPrettified . - '

%s%d%%
%s%d%%