From a2cbc65a449eebb11e38ac5d48ca9eb9eb905569 Mon Sep 17 00:00:00 2001 From: Alex Smolyankin <“ashustrich@gmail.com”> Date: Thu, 9 Nov 2017 00:51:09 +0200 Subject: [PATCH] Added test cases which cover approximately all cases --- php/test/gilded_rose_test.php | 163 +++++++++++++++++++++++++++++++++- 1 file changed, 161 insertions(+), 2 deletions(-) diff --git a/php/test/gilded_rose_test.php b/php/test/gilded_rose_test.php index c18bfa05..0355f657 100644 --- a/php/test/gilded_rose_test.php +++ b/php/test/gilded_rose_test.php @@ -2,13 +2,172 @@ require_once 'gilded_rose.php'; -class GildedRoseTest extends PHPUnit_Framework_TestCase { +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); + $this->assertEquals("foo", $items[0]->name); } + function testItemToString() { + $items = array(new Item("foo", 0, 0)); + $gildedRose = new GildedRose($items); + $this->assertEquals("foo, 0, 0", (string)$items[0]); + } + + function testSulfuras() { + $baseQuality = 80; + $items = array( + new Item("Sulfuras, Hand of Ragnaros", 10, $baseQuality), + new Item("Sulfuras, Hand of Ragnaros", 0, $baseQuality), + new Item("Sulfuras, Hand of Ragnaros", -10, $baseQuality), + ); + $gildedRose = new GildedRose($items); + $gildedRose->update_quality(); + $this->assertEquals($baseQuality, $items[0]->quality); + $this->assertEquals($baseQuality, $items[1]->quality); + $this->assertEquals($baseQuality, $items[2]->quality); + } + + function testSulfurasFewDays() { + $baseQuality = 80; + + $items = array( + new Item("Sulfuras, Hand of Ragnaros", 10, $baseQuality), + new Item("Sulfuras, Hand of Ragnaros", 0, $baseQuality), + new Item("Sulfuras, Hand of Ragnaros", -10, $baseQuality), + ); + + $gildedRose = new GildedRose($items); + $gildedRose->update_quality(); + $gildedRose->update_quality(); + $gildedRose->update_quality(); + + $this->assertEquals($baseQuality, $items[0]->quality); + $this->assertEquals($baseQuality, $items[1]->quality); + $this->assertEquals($baseQuality, $items[2]->quality); + } + + function testAged() { + $baseQuality = 10; + + $items = array( + new Item("Aged Brie", 10, $baseQuality), + new Item("Aged Brie", 0, $baseQuality), + new Item("Aged Brie", -10, $baseQuality), + ); + + $gildedRose = new GildedRose($items); + $gildedRose->update_quality(); + + $this->assertEquals($baseQuality + 1, $items[0]->quality); + $this->assertEquals($baseQuality + 2, $items[1]->quality); + $this->assertEquals($baseQuality + 2, $items[2]->quality); + } + + function testAgedFewDays() { + $baseQuality = 10; + $days = 3; + + $items = array( + new Item("Aged Brie", 10, $baseQuality), + new Item("Aged Brie", 0, $baseQuality), + new Item("Aged Brie", -10, $baseQuality), + ); + + $gildedRose = new GildedRose($items); + foreach (range(1, $days) as $value) { + $gildedRose->update_quality(); + } + + $this->assertEquals($baseQuality + 1 * $days, $items[0]->quality); + $this->assertEquals($baseQuality + 2 * $days, $items[1]->quality); + $this->assertEquals($baseQuality + 2 * $days, $items[2]->quality); + } + + function testBackStage() { + $baseQuality = 10; + + $items = array( + new Item("Backstage passes to a TAFKAL80ETC concert", 30, $baseQuality), + new Item("Backstage passes to a TAFKAL80ETC concert", 10, $baseQuality), + new Item("Backstage passes to a TAFKAL80ETC concert", 5, $baseQuality), + new Item("Backstage passes to a TAFKAL80ETC concert", 0, $baseQuality), + new Item("Backstage passes to a TAFKAL80ETC concert", -10, $baseQuality), + ); + + $gildedRose = new GildedRose($items); + $gildedRose->update_quality(); + + $this->assertEquals($baseQuality + 1, $items[0]->quality); + $this->assertEquals($baseQuality + 2, $items[1]->quality); + $this->assertEquals($baseQuality + 3, $items[2]->quality); + + $this->assertEquals(0, $items[3]->quality); + $this->assertEquals(0, $items[4]->quality); + } + + function testBackStageFewDays() { + $baseQuality = 10; + $days = 3; + + $items = array( + new Item("Backstage passes to a TAFKAL80ETC concert", 30, $baseQuality), + new Item("Backstage passes to a TAFKAL80ETC concert", 10, $baseQuality), + new Item("Backstage passes to a TAFKAL80ETC concert", 5, $baseQuality), + new Item("Backstage passes to a TAFKAL80ETC concert", 0, $baseQuality), + new Item("Backstage passes to a TAFKAL80ETC concert", -10, $baseQuality), + ); + + $gildedRose = new GildedRose($items); + foreach (range(1, $days) as $value) { + $gildedRose->update_quality(); + } + + $this->assertEquals($baseQuality + 1 * $days, $items[0]->quality); + $this->assertEquals($baseQuality + 2 * $days, $items[1]->quality); + $this->assertEquals($baseQuality + 3 * $days, $items[2]->quality); + + $this->assertEquals(0, $items[3]->quality); + $this->assertEquals(0, $items[4]->quality); + } + + function testCommonProduct() { + $baseQuality = 10; + + $items = array( + new Item("Some non interested product", 30, $baseQuality), + new Item("Some non interested product", 0, $baseQuality), + new Item("Some non interested product", -10, $baseQuality), + ); + + $gildedRose = new GildedRose($items); + $gildedRose->update_quality(); + + $this->assertEquals($baseQuality - 1, $items[0]->quality); + $this->assertEquals($baseQuality - 2, $items[1]->quality); + $this->assertEquals($baseQuality - 2, $items[2]->quality); + } + + function testCommonProductFewDays() { + $baseQuality = 10; + $days = 3; + + $items = array( + new Item("Some non interested product", 30, $baseQuality), + new Item("Some non interested product", 0, $baseQuality), + new Item("Some non interested product", -10, $baseQuality), + ); + + $gildedRose = new GildedRose($items); + foreach (range(1, $days) as $value) { + $gildedRose->update_quality(); + } + + $this->assertEquals($baseQuality - 1 * $days, $items[0]->quality); + $this->assertEquals($baseQuality - 2 * $days, $items[1]->quality); + $this->assertEquals($baseQuality - 2 * $days, $items[2]->quality); + } }