port GildedRose Java version to PHP with PHPUnit test

This commit is contained in:
Peter Kofler 2014-04-01 20:06:25 +02:00
parent 370c77bb6b
commit 09355abb56
4 changed files with 110 additions and 0 deletions

15
php/phpunit.xml Normal file
View File

@ -0,0 +1,15 @@
<?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"
bootstrap="test/bootstrap.php"
colors="false"
strict="true"
verbose="true">
<testsuites>
<testsuite name="AllTests">
<directory suffix="_test.php">test</directory>
</testsuite>
</testsuites>
</phpunit>

79
php/src/gilded_rose.php Normal file
View File

@ -0,0 +1,79 @@
<?php
class GildedRose {
private $items;
function __construct($items) {
$this->items = $items;
}
function update_quality() {
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 {
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;
}
}
}
}
}
}
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}";
}
}

2
php/test/bootstrap.php Normal file
View File

@ -0,0 +1,2 @@
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__.'/../src');

View File

@ -0,0 +1,14 @@
<?php
require_once 'gilded_rose.php';
class GildedRoseTest extends PHPUnit_Framework_TestCase {
function testFoo() {
$items = array(new Item("foo", 0, 0));
$gildedRose = new GildedRose($items);
$gildedRose->update_quality();
$this->assertEquals("fixme", $items[0]->name);
}
}