function testFoo()
 {
     $items = array(new Item("foo", 0, 0));
     $gildedRose = new GildedRose($items);
     $gildedRose->update_quality();
     $this->assertEquals("fixme", $items[0]->name);
 }
<?php

require_once 'gilded_rose.php';
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), 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->update_quality();
}
 function testConjuredItems()
 {
     $items = array(new Item('Conjured Mana Cake', 3, 8), new Item('Conjured Mana Cake', 1, 8), new Item('Conjured Mana Cake', 0, 3));
     $gildedRose = new GildedRose($items);
     // test assertions
     $gildedRose->update_quality();
     // Conjured items degrade 2 in a normal day
     $this->assertEquals(2, $items[0]->sell_in);
     $this->assertEquals(6, $items[0]->quality);
     // check for a degrade of 2 that will increase to 4 upon expiration
     $this->assertEquals(0, $items[1]->sell_in);
     $this->assertEquals(6, $items[1]->quality);
     // ensure can't return negative sell_in values, and non-negative qualities
     $this->assertEquals(0, $items[2]->sell_in);
     $this->assertEquals(0, $items[2]->quality);
     // second iteration to test progressions
     $gildedRose->update_quality();
     // Conjured items degrade 2 in a normal day
     $this->assertEquals(1, $items[0]->sell_in);
     $this->assertEquals(4, $items[0]->quality);
     // check for a degrade of 2 that will increase to 4 upon expiration
     $this->assertEquals(0, $items[1]->sell_in);
     $this->assertEquals(2, $items[1]->quality);
     // ensure can't return negative sell_in values, and non-negative qualities
     $this->assertEquals(0, $items[2]->sell_in);
     $this->assertEquals(0, $items[2]->quality);
 }