replaces strings for items names with constants

This commit is contained in:
Gabba 2017-12-16 11:59:57 +00:00
parent e8780706a1
commit e6f4256062
5 changed files with 37 additions and 32 deletions

View File

@ -1,23 +1,23 @@
package com.gildedrose; package com.gildedrose;
import com.gildedrose.item.Item; import com.gildedrose.item.Item;
import com.gildedrose.item.ItemFactory; import com.gildedrose.item.CustomisedItemFactory;
import com.gildedrose.item.QualityValues; import com.gildedrose.item.QualityValues;
class GildedRose { class GildedRose {
private static final int LOWEST_QUALITY_VALUE_POSSIBLE = 0; private static final int LOWEST_QUALITY_VALUE_POSSIBLE = 0;
private final ItemFactory itemFactory; private final CustomisedItemFactory customisedItemFactory;
Item[] items; Item[] items;
public GildedRose(Item[] items) { public GildedRose(Item[] items) {
this.itemFactory = new ItemFactory(); this.customisedItemFactory = new CustomisedItemFactory();
this.items = items; this.items = items;
} }
public void updateQuality() { public void updateQuality() {
for (Item item : items) { for (Item item : items) {
itemFactory.customiseItem(item).updateState(); customisedItemFactory.customiseItem(item).updateState();
if (hasReachedLowestQualityValue(item)) { if (hasReachedLowestQualityValue(item)) {
item.quality = LOWEST_QUALITY_VALUE_POSSIBLE; item.quality = LOWEST_QUALITY_VALUE_POSSIBLE;
} else if (hasReachedHighestQualityValue(item)) { } else if (hasReachedHighestQualityValue(item)) {

View File

@ -0,0 +1,20 @@
package com.gildedrose.item;
public class CustomisedItemFactory {
public final static String SULFURAS = "Sulfuras, Hand of Ragnaros";
public final static String BRIE = "Aged Brie";
public final static String BACKSTAGE_PASSES_ITEM = "Backstage passes to a TAFKAL80ETC concert";
public CustomisedItem customiseItem(Item item) {
if (item.name.equals(SULFURAS)) {
return new Sulfuras(item);
} else if (item.name.equals(BRIE)) {
return new AgedBrie(item);
} else if (item.name.equals(BACKSTAGE_PASSES_ITEM)) {
return new BackstagePassesItem(item);
} else {
return new StandardItem(item);
}
}
}

View File

@ -1,16 +0,0 @@
package com.gildedrose.item;
public class ItemFactory {
public CustomisedItem customiseItem(Item item) {
if (item.name.equals("Sulfuras, Hand of Ragnaros")) {
return new Sulfuras(item);
} else if (item.name.equals("Aged Brie")) {
return new AgedBrie(item);
} else if (item.name.equals("Backstage passes to a TAFKAL80ETC concert")) {
return new BackstagePassesItem(item);
} else {
return new StandardItem(item);
}
}
}

View File

@ -3,7 +3,7 @@ package com.gildedrose.item;
public final class QualityValues { public final class QualityValues {
public static int highestValuePossible(Item item) { public static int highestValuePossible(Item item) {
if (item.name.equals("Sulfuras, Hand of Ragnaros")) { if (item.name.equals(CustomisedItemFactory.SULFURAS)) {
return 80; return 80;
} }
return 50; return 50;

View File

@ -3,6 +3,7 @@ package com.gildedrose;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import com.gildedrose.item.Item; import com.gildedrose.item.Item;
import com.gildedrose.item.CustomisedItemFactory;
import org.junit.Test; import org.junit.Test;
public class GildedRoseTest { public class GildedRoseTest {
@ -27,7 +28,7 @@ public class GildedRoseTest {
@Test @Test
public void brieDecreasesSellByDayNumberEachTime() { public void brieDecreasesSellByDayNumberEachTime() {
GildedRose app = newGildedRose("Aged Brie", 0, 0); GildedRose app = newGildedRose(CustomisedItemFactory.BRIE, 0, 0);
app.updateQuality(); app.updateQuality();
@ -36,7 +37,7 @@ public class GildedRoseTest {
@Test @Test
public void backstagePassesItemDecreasesSellByDayNumberEachTime() { public void backstagePassesItemDecreasesSellByDayNumberEachTime() {
GildedRose app = newGildedRose("Backstage passes to a TAFKAL80ETC concert", 0, 0); GildedRose app = newGildedRose(CustomisedItemFactory.BACKSTAGE_PASSES_ITEM, 0, 0);
app.updateQuality(); app.updateQuality();
@ -45,7 +46,7 @@ public class GildedRoseTest {
@Test @Test
public void brieIncreasesInQualityEachTime() { public void brieIncreasesInQualityEachTime() {
GildedRose app = newGildedRose("Aged Brie", 1, 1); GildedRose app = newGildedRose(CustomisedItemFactory.BRIE, 1, 1);
app.updateQuality(); app.updateQuality();
@ -54,7 +55,7 @@ public class GildedRoseTest {
@Test @Test
public void brieQualityCannotGoAboveFiftyWhenIncreasing() { public void brieQualityCannotGoAboveFiftyWhenIncreasing() {
GildedRose app = newGildedRose("Aged Brie", 1, 49); GildedRose app = newGildedRose(CustomisedItemFactory.BRIE, 1, 49);
app.updateQuality(); app.updateQuality();
app.updateQuality(); app.updateQuality();
@ -64,7 +65,7 @@ public class GildedRoseTest {
@Test @Test
public void backstagePassesItemDecreasesQualityByOneIfSellByDayMoreThanEleven() { public void backstagePassesItemDecreasesQualityByOneIfSellByDayMoreThanEleven() {
GildedRose app = newGildedRose("Backstage passes to a TAFKAL80ETC concert", 12, 1); GildedRose app = newGildedRose(CustomisedItemFactory.BACKSTAGE_PASSES_ITEM, 12, 1);
app.updateQuality(); app.updateQuality();
@ -73,7 +74,7 @@ public class GildedRoseTest {
@Test @Test
public void backstagePassesItemDecreasesQualityByTwoIfSellByDayIsMoreThanSix() { public void backstagePassesItemDecreasesQualityByTwoIfSellByDayIsMoreThanSix() {
GildedRose app = newGildedRose("Backstage passes to a TAFKAL80ETC concert", 10, 1); GildedRose app = newGildedRose(CustomisedItemFactory.BACKSTAGE_PASSES_ITEM, 10, 1);
app.updateQuality(); app.updateQuality();
@ -82,7 +83,7 @@ public class GildedRoseTest {
@Test @Test
public void backstagePassesItemDecreasesQualityByThreeIfSellByDayIsMoreThanZero() { public void backstagePassesItemDecreasesQualityByThreeIfSellByDayIsMoreThanZero() {
GildedRose app = newGildedRose("Backstage passes to a TAFKAL80ETC concert", 5, 1); GildedRose app = newGildedRose(CustomisedItemFactory.BACKSTAGE_PASSES_ITEM, 5, 1);
app.updateQuality(); app.updateQuality();
@ -91,7 +92,7 @@ public class GildedRoseTest {
@Test @Test
public void backstagePassesItemQualityDropsToZeroIfSellByDayIsZeroOrLess() { public void backstagePassesItemQualityDropsToZeroIfSellByDayIsZeroOrLess() {
GildedRose app = newGildedRose("Backstage passes to a TAFKAL80ETC concert", 0,50); GildedRose app = newGildedRose(CustomisedItemFactory.BACKSTAGE_PASSES_ITEM, 0,50);
app.updateQuality(); app.updateQuality();
@ -100,7 +101,7 @@ public class GildedRoseTest {
@Test @Test
public void backstagePassesItemQualityCannotGoAboveFiftyWhenIncreasing() { public void backstagePassesItemQualityCannotGoAboveFiftyWhenIncreasing() {
GildedRose app = newGildedRose("Backstage passes to a TAFKAL80ETC concert", 5, 50); GildedRose app = newGildedRose(CustomisedItemFactory.BACKSTAGE_PASSES_ITEM, 5, 50);
app.updateQuality(); app.updateQuality();
@ -136,14 +137,14 @@ public class GildedRoseTest {
@Test @Test
public void sulfurasHasQualityEighty() { public void sulfurasHasQualityEighty() {
GildedRose app = newGildedRose("Sulfuras, Hand of Ragnaros", 1, 80); GildedRose app = newGildedRose(CustomisedItemFactory.SULFURAS, 1, 80);
assertEquals(80, itemQualityValue(app)); assertEquals(80, itemQualityValue(app));
} }
@Test @Test
public void sulfurasItemDoesNotAlterValues() { public void sulfurasItemDoesNotAlterValues() {
GildedRose app = newGildedRose("Sulfuras, Hand of Ragnaros", 1, 80); GildedRose app = newGildedRose(CustomisedItemFactory.SULFURAS, 1, 80);
app.updateQuality(); app.updateQuality();