function testFoo()
 {
     $items = array(new Item("foo", 0, 0));
     $gildedRose = new GildedRose($items);
     $gildedRose->update_quality();
     $this->assertEquals("fixme", $items[0]->name);
 }
 public function test()
 {
     $received = "";
     $items = $this->makeItems();
     $sut = new GildedRose($items);
     for ($day = 1; $day <= 100; $day++) {
         $received .= $this->formatItemsForDay($day, $items);
         $sut->updateQuality();
     }
     $receivedExpected = $this->compareToApproved($received);
     if (!$receivedExpected) {
         $this->writeReceivedFile($received);
     }
     $this->assertTrue($receivedExpected, "Did not match approved results. Compare files '" . self::GILDED_ROSE_APPROVED_FILE . "' and '" . self::GILDED_ROSE_RECEIVED_FILE . "'");
 }
<?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();
}
 /**
  * @param $item
  */
 private function updateQualityForItem($item)
 {
     $rose = new GildedRose(array($item));
     $rose->updateQuality();
 }
<?php

require_once 'GildedRose.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->updateQuality();
}
 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);
 }