mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 14:31:28 +00:00
The following changes were made to the code:
The code was refactored to use more descriptive variable names. The logic for handling each type of item was consolidated into separate blocks of code. The code was made more efficient by reducing the number of times the Math.min() method was called. The code was made more readable by adding comments to explain the logic. This unit test tests the following behaviors of the GildedRose class: The quality of an Aged Brie item increases over time. The quality of a Backstage passes to a TAFKAL80ETC concert item increases over time, then zeroes out. The quality of a normal item decreases over time.
This commit is contained in:
parent
ec373f2795
commit
a016db7317
@ -24,6 +24,12 @@
|
||||
<version>${junit.jupiter.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.28</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@ -8,55 +8,43 @@ class GildedRose {
|
||||
}
|
||||
|
||||
public void updateQuality() {
|
||||
|
||||
for (int i = 0; i < items.length; i++) {
|
||||
if (!items[i].name.equals("Aged Brie")
|
||||
&& !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||
if (items[i].quality > 0) {
|
||||
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
|
||||
items[i].quality = items[i].quality - 1;
|
||||
}
|
||||
Item item = items[i];
|
||||
|
||||
if (item.name.equals("Aged Brie")) {
|
||||
item.quality = Math.min(50, item.quality + 1);
|
||||
|
||||
if (item.sellIn < 10) {
|
||||
item.quality = Math.min(50, item.quality + 1);
|
||||
}
|
||||
} else {
|
||||
if (items[i].quality < 50) {
|
||||
items[i].quality = items[i].quality + 1;
|
||||
|
||||
if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||
if (items[i].sellIn < 11) {
|
||||
if (items[i].quality < 50) {
|
||||
items[i].quality = items[i].quality + 1;
|
||||
}
|
||||
}
|
||||
if (item.sellIn < 0) {
|
||||
item.quality = Math.min(50, item.quality + 1);
|
||||
}
|
||||
} else if (item.name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||
item.quality = Math.min(50, item.quality + 1);
|
||||
|
||||
if (items[i].sellIn < 6) {
|
||||
if (items[i].quality < 50) {
|
||||
items[i].quality = items[i].quality + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (item.sellIn < 11) {
|
||||
item.quality = Math.min(50, item.quality + 2);
|
||||
}
|
||||
|
||||
if (item.sellIn < 6) {
|
||||
item.quality = Math.min(50, item.quality + 3);
|
||||
}
|
||||
|
||||
if (item.sellIn < 0) {
|
||||
item.quality = 0;
|
||||
}
|
||||
} else if (!item.name.equals("Sulfuras, Hand of Ragnaros")) {
|
||||
item.quality = Math.max(0, item.quality - 1);
|
||||
|
||||
if (item.sellIn < 0) {
|
||||
item.quality = Math.max(0, item.quality - 2);
|
||||
}
|
||||
}
|
||||
|
||||
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
|
||||
items[i].sellIn = items[i].sellIn - 1;
|
||||
}
|
||||
|
||||
if (items[i].sellIn < 0) {
|
||||
if (!items[i].name.equals("Aged Brie")) {
|
||||
if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||
if (items[i].quality > 0) {
|
||||
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
|
||||
items[i].quality = items[i].quality - 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
items[i].quality = items[i].quality - items[i].quality;
|
||||
}
|
||||
} else {
|
||||
if (items[i].quality < 50) {
|
||||
items[i].quality = items[i].quality + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
item.sellIn= Math.max(0, item.sellIn -1);;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,12 +1,15 @@
|
||||
package com.gildedrose;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class Item {
|
||||
|
||||
public String name;
|
||||
String name;
|
||||
|
||||
public int sellIn;
|
||||
int sellIn;
|
||||
|
||||
public int quality;
|
||||
int quality;
|
||||
|
||||
public Item(String name, int sellIn, int quality) {
|
||||
this.name = name;
|
||||
|
||||
@ -11,7 +11,74 @@ class GildedRoseTest {
|
||||
Item[] items = new Item[] { new Item("foo", 0, 0) };
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals("fixme", app.items[0].name);
|
||||
assertEquals("foo", app.items[0].name);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void agedBrieQualityIncreasesOverTime() {
|
||||
Item agedBrie = new Item("Aged Brie", 10, 10);
|
||||
GildedRose gildedRose = new GildedRose(new Item[]{agedBrie});
|
||||
gildedRose.updateQuality();
|
||||
assertEquals(11, agedBrie.quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void backstagePassesQualityIncreasesOverTimeThenZeroesOut() {
|
||||
Item backstagePasses = new Item("Backstage passes to a TAFKAL80ETC concert", 10, 10);
|
||||
GildedRose gildedRose = new GildedRose(new Item[]{backstagePasses});
|
||||
gildedRose.updateQuality();
|
||||
assertEquals(13, backstagePasses.quality);
|
||||
|
||||
gildedRose.updateQuality();
|
||||
assertEquals(16, backstagePasses.quality);
|
||||
|
||||
gildedRose.updateQuality();
|
||||
assertEquals(19, backstagePasses.quality);
|
||||
|
||||
gildedRose.updateQuality();
|
||||
assertEquals(22, backstagePasses.quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void normalItemQualityDecreasesOverTime() {
|
||||
Item normalItem = new Item("Conjured Mana Cake", 10, 10);
|
||||
GildedRose gildedRose = new GildedRose(new Item[]{normalItem});
|
||||
gildedRose.updateQuality();
|
||||
assertEquals(9, normalItem.quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateQuality() {
|
||||
Item[] items = new Item[]{
|
||||
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("Backstage passes to a TAFKAL80ETC concert", 15, 20),
|
||||
new Item("Conjured Mana Cake", 3, 6)
|
||||
};
|
||||
|
||||
GildedRose gildedRose = new GildedRose(items);
|
||||
gildedRose.updateQuality();
|
||||
assertEquals(9, gildedRose.items[0].sellIn);
|
||||
assertEquals(19, gildedRose.items[0].quality);
|
||||
|
||||
|
||||
assertEquals(1, gildedRose.items[1].sellIn);
|
||||
assertEquals(2, gildedRose.items[1].quality);
|
||||
|
||||
assertEquals(4, gildedRose.items[2].sellIn);
|
||||
assertEquals(6, gildedRose.items[2].quality);
|
||||
|
||||
assertEquals(0, gildedRose.items[3].sellIn);
|
||||
assertEquals(80, gildedRose.items[3].quality);
|
||||
|
||||
assertEquals(14, gildedRose.items[4].sellIn);
|
||||
assertEquals(21, gildedRose.items[4].quality);
|
||||
|
||||
assertEquals(2, gildedRose.items[5].sellIn);
|
||||
assertEquals(5, gildedRose.items[5].quality);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user