Merge pull request #113 from beryllium/php-7-support

Add PHP 7 support
This commit is contained in:
Emily Bache authored and GitHub committed 2019-05-24 08:30:56 +02:00
commit fb3853835e
20 files changed
+1710

No files matched your search

+1
View File
@@ -2,3 +2,4 @@ bin
obj obj
*.sln.DotSettings.user *.sln.DotSettings.user
.vs .vs
vendor
View File
File renamed without changes.
View File
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+51
View File
@@ -0,0 +1,51 @@
Requirements
------------
**PHP 7:**
This is usually bundled with your operating system, or fetchable using a package manager like `apt` or `homebrew`.
Windows users can find the latest version here: https://windows.php.net/download#php-7.3
If you want to compile from source code, that can be found here: https://www.php.net/downloads.php
**Composer:**
Composer is PHP's main package and dependency management tool.
It can be downloaded here: https://getcomposer.org/download/
Getting Started
---------------
To begin the kata, install the dependencies and run `phpunit`:
```
cd php7
composer install
vendor/bin/phpunit
```
If the "install" command does not work, try running `composer update` instead.
This will tell composer that it has permission to look for a newer version of
its dependencies.
If things are still not cooperating, you can try this extreme approach:
```
composer remove phpunit/phpunit
composer require phpunit/phpunit
```
To exercise the code outside of phpunit, for example to visually confirm that it is working,
use the `texttest_fixture` script:
```
php fixtures/texttest_fixture.php
```
Tips
----
PHPUnit has a very thorough reference manual. It would be particularly useful to explore the
[Data Providers](https://phpunit.readthedocs.io/en/8.1/writing-tests-for-phpunit.html#data-providers) section.
+10
View File
@@ -0,0 +1,10 @@
{
"require-dev": {
"phpunit/phpunit": "^8.1"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
+1491
View File
File diff suppressed because it is too large. Load diff
+38
View File
@@ -0,0 +1,38 @@
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use App\GildedRose;
use App\Item;
echo "OMGHAI!\n";
$items = array(
new Item('+5 Dexterity Vest', 10, 20),
new Item('Aged Brie', 2, 0),
new Item('Elixir of the Mongoose', 5, 7),
new Item('Sulfuras, Hand of Ragnaros', 0, 80),
new Item('Sulfuras, Hand of Ragnaros', -1, 80),
new Item('Backstage passes to a TAFKAL80ETC concert', 15, 20),
new Item('Backstage passes to a TAFKAL80ETC concert', 10, 49),
new Item('Backstage passes to a TAFKAL80ETC concert', 5, 49),
// this conjured item does not work properly yet
new Item('Conjured Mana Cake', 3, 6)
);
$app = new GildedRose($items);
$days = 2;
if (count($argv) > 1) {
$days = (int) $argv[1];
}
for ($i = 0; $i < $days; $i++) {
echo("-------- day $i --------\n");
echo("name, sellIn, quality\n");
foreach ($items as $item) {
echo $item . PHP_EOL;
}
echo PHP_EOL;
$app->updateQuality();
}
+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/3.7/phpunit.xsd"
backupGlobals="false"
colors="false"
verbose="true">
<testsuites>
<testsuite name="AllTests">
<directory suffix="Test.php">test</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>src</directory>
</whitelist>
</filter>
</phpunit>
+65
View File
@@ -0,0 +1,65 @@
<?php
namespace App;
final class GildedRose {
private $items = [];
public function __construct($items) {
$this->items = $items;
}
public function updateQuality() {
foreach ($this->items as $item) {
if ($item->name != 'Aged Brie' and $item->name != 'Backstage passes to a TAFKAL80ETC concert') {
if ($item->quality > 0) {
if ($item->name != 'Sulfuras, Hand of Ragnaros') {
$item->quality = $item->quality - 1;
} else {
$item->quality = 80;
}
}
} else {
if ($item->quality < 50) {
$item->quality = $item->quality + 1;
if ($item->name == 'Backstage passes to a TAFKAL80ETC concert') {
if ($item->sell_in < 11) {
if ($item->quality < 50) {
$item->quality = $item->quality + 1;
}
}
if ($item->sell_in < 6) {
if ($item->quality < 50) {
$item->quality = $item->quality + 1;
}
}
}
}
}
if ($item->name != 'Sulfuras, Hand of Ragnaros') {
$item->sell_in = $item->sell_in - 1;
}
if ($item->sell_in < 0) {
if ($item->name != 'Aged Brie') {
if ($item->name != 'Backstage passes to a TAFKAL80ETC concert') {
if ($item->quality > 0) {
if ($item->name != 'Sulfuras, Hand of Ragnaros') {
$item->quality = $item->quality - 1;
}
}
} else {
$item->quality = $item->quality - $item->quality;
}
} else {
if ($item->quality < 50) {
$item->quality = $item->quality + 1;
}
}
}
}
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
namespace App;
final class Item {
public $name;
public $sell_in;
public $quality;
function __construct($name, $sell_in, $quality) {
$this->name = $name;
$this->sell_in = $sell_in;
$this->quality = $quality;
}
public function __toString() {
return "{$this->name}, {$this->sell_in}, {$this->quality}";
}
}
+12
View File
@@ -0,0 +1,12 @@
<?php
namespace App;
class GildedRoseTest extends \PHPUnit\Framework\TestCase {
public function testFoo() {
$items = [new Item("foo", 0, 0)];
$gildedRose = new GildedRose($items);
$gildedRose->updateQuality();
$this->assertEquals("fixme", $items[0]->name);
}
}
+2
View File
@@ -0,0 +1,2 @@
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__.'/../src');