Code refactor

This commit is contained in:
aletta.codes 2022-03-22 20:45:09 +01:00
parent 9536fcdc69
commit a25bcd3db2
2 changed files with 91 additions and 65 deletions

View File

@ -3,79 +3,66 @@ package com.gildedrose;
class GildedRose { class GildedRose {
Item[] items; Item[] items;
String itemName;
int itemQuality;
int itemSellIn;
public GildedRose(Item[] items) { public GildedRose(Item[] items) {
this.items = items; this.items = items;
} }
public void updateQuality() { public void updateQuality() {
for (int i = 0; i < items.length; i++) { for (int i = 0; i < items.length; i++) {
itemName = items[i].name; String itemName = items[i].name;
itemQuality = items[i].quality; int itemQuality = items[i].quality;
itemSellIn = items[i].sellIn; int itemSellIn = items[i].sellIn;
if (!itemIsAgedBrie(itemName) adjustQualityNotation(itemName, itemQuality, itemSellIn);
&& !itemIsBackstagePasses(itemName)) { lowerSellInNotation(itemName, itemSellIn);
if (itemQuality > 0) {
if (!itemIsSulfuras(itemName)) { if (itemSellIn < 0) {
if (isDecreasableItem(itemName, itemQuality)) {
decreaseByOne(itemQuality); decreaseByOne(itemQuality);
} } else if (itemQuality < 50) {
}
} else {
if (itemQuality < 50) {
itemQuality = itemQuality + 1;
if (itemIsBackstagePasses(itemName)) {
if (itemSellIn < 11) {
if (itemQuality < 50) {
increaseByOne(itemQuality); increaseByOne(itemQuality);
} }
} }
}
}
public void adjustQualityNotation(String itemName, int itemQuality, int itemSellIn) {
if (isDecreasableItem(itemName, itemQuality)) {
decreaseByOne(itemQuality);
} else if (qualityLowerThanFifty(itemQuality)) {
increaseByOne(itemQuality);
backstagePassesExtraQualityCheck(itemName, itemQuality, itemSellIn);
}
}
public void backstagePassesExtraQualityCheck(String itemName, int itemQuality, int itemSellIn) {
if (itemIsBackstagePasses(itemName) && qualityLowerThanFifty(itemQuality)) {
if (itemSellIn < 11) {
increaseByOne(itemQuality);
}
if (itemSellIn < 6) { if (itemSellIn < 6) {
if (itemQuality < 50) {
increaseByOne(itemQuality); increaseByOne(itemQuality);
} }
} }
} }
}
}
public void lowerSellInNotation(String itemName, int itemSellIn) {
if (!itemIsSulfuras(itemName)) { if (!itemIsSulfuras(itemName)) {
decreaseByOne(itemSellIn); decreaseByOne(itemSellIn);
} }
if (itemSellIn < 0) {
if (!itemIsAgedBrie(itemName)) {
if (!itemIsBackstagePasses(itemName)) {
if (itemQuality > 0) {
if (!itemIsSulfuras(itemName)) {
decreaseByOne(itemQuality);
}
}
} else {
decreaseByOne(itemQuality);
}
} else {
if (itemQuality < 50) {
increaseByOne(itemQuality);
}
}
}
}
} }
public void increaseByOne (int itemValue) { public int increaseByOne (int incomingValue) {
itemValue++; return incomingValue += 1;
} }
public void decreaseByOne (int itemValue) { public int decreaseByOne (int incomingValue) {
itemValue--; return incomingValue -= 1;
} }
public boolean itemIsSulfuras(String itemName) { public boolean itemIsSulfuras(String itemName) {
return ProjectConstants.SULFURAS.equals(itemName) ? true : false; return ProjectConstants.SULFURAS.equals(itemName) ? true : false;
} }
@ -87,4 +74,19 @@ class GildedRose {
public boolean itemIsAgedBrie(String itemName) { public boolean itemIsAgedBrie(String itemName) {
return ProjectConstants.AGED_BRIE.equals(itemName) ? true : false; return ProjectConstants.AGED_BRIE.equals(itemName) ? true : false;
} }
public boolean qualityHigherThanZero(int itemQuality) {
return itemQuality > 0;
}
public boolean qualityLowerThanFifty(int itemQuality) {
return itemQuality < 50;
}
public boolean isDecreasableItem(String itemName, int itemQuality) {
return qualityHigherThanZero(itemQuality) &&
!itemIsAgedBrie(itemName) &&
!itemIsBackstagePasses(itemName) &&
!itemIsSulfuras(itemName);
}
} }

View File

@ -12,37 +12,61 @@ public class GildedRoseTest {
GildedRose app; GildedRose app;
Item[] items;
@BeforeAll @BeforeAll
public void init() { public void init() {
Item[] items = new Item[] { new Item(ProjectConstants.SULFURAS, 0, 0) }; items = new Item[] { new Item(ProjectConstants.SULFURAS, 0, 0),
new Item(ProjectConstants.ELIXIR, 2, 54) };
app = new GildedRose(items); app = new GildedRose(items);
} }
@Test @Test
public void increaseByOne() { public void increaseByOneTest() {
int initial = 2; int result = app.increaseByOne(2);
app.increaseByOne(initial); assertEquals(3, result);
assertEquals("3", initial);
} }
@Test @Test
public void decreaseByOne() { public void decreaseByOneTest() {
int initial = 2; int result = app.decreaseByOne(2);
app.decreaseByOne(initial); assertEquals(1, result);
assertEquals("1", initial);
} }
@Test @Test
public void itemIsSulfuras() { public void itemIsSulfurasTest() {
String itemName = app.items[0].name; String itemName = app.items[0].name;
boolean result = app.itemIsSulfuras(itemName); boolean result = app.itemIsSulfuras(itemName);
assertTrue(result); assertTrue(result);
} }
@Test @Test
public void ItemIsAgedBrieFalse() { public void ItemIsAgedBrieFalseTest() {
String itemName = app.items[0].name; String itemName = app.items[0].name;
boolean result = app.itemIsAgedBrie(itemName); boolean result = app.itemIsAgedBrie(itemName);
assertFalse(result); assertFalse(result);
} }
@Test
public void qualityComparisonTest() {
int firstItemQuality = app.items[0].quality;
int secondItemQuality = app.items[1].quality;
assertFalse(app.qualityHigherThanZero(firstItemQuality));
assertTrue(app.qualityHigherThanZero(secondItemQuality));
assertTrue(app.qualityLowerThanFifty(firstItemQuality));
assertFalse(app.qualityLowerThanFifty(secondItemQuality));
}
@Test
public void isDecreaseItemTest() {
String firstItemName = app.items[0].name;
int firstItemQuality = app.items[0].quality;
String secondItemName = app.items[1].name;
int secondItemQuality = app.items[1].quality;
assertFalse(app.isDecreasableItem(firstItemName, firstItemQuality));
assertTrue(app.isDecreasableItem(secondItemName, secondItemQuality));
}
} }