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 {
Item[] items;
String itemName;
int itemQuality;
int itemSellIn;
public GildedRose(Item[] items) {
this.items = items;
}
public void updateQuality() {
for (int i = 0; i < items.length; i++) {
itemName = items[i].name;
itemQuality = items[i].quality;
itemSellIn = items[i].sellIn;
String itemName = items[i].name;
int itemQuality = items[i].quality;
int itemSellIn = items[i].sellIn;
if (!itemIsAgedBrie(itemName)
&& !itemIsBackstagePasses(itemName)) {
if (itemQuality > 0) {
if (!itemIsSulfuras(itemName)) {
decreaseByOne(itemQuality);
}
}
} else {
if (itemQuality < 50) {
itemQuality = itemQuality + 1;
if (itemIsBackstagePasses(itemName)) {
if (itemSellIn < 11) {
if (itemQuality < 50) {
increaseByOne(itemQuality);
}
}
if (itemSellIn < 6) {
if (itemQuality < 50) {
increaseByOne(itemQuality);
}
}
}
}
}
if (!itemIsSulfuras(itemName)) {
decreaseByOne(itemSellIn);
}
adjustQualityNotation(itemName, itemQuality, itemSellIn);
lowerSellInNotation(itemName, 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) {
if (isDecreasableItem(itemName, itemQuality)) {
decreaseByOne(itemQuality);
} else if (itemQuality < 50) {
increaseByOne(itemQuality);
}
}
}
}
}
public void increaseByOne (int itemValue) {
itemValue++;
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 decreaseByOne (int itemValue) {
itemValue--;
public void backstagePassesExtraQualityCheck(String itemName, int itemQuality, int itemSellIn) {
if (itemIsBackstagePasses(itemName) && qualityLowerThanFifty(itemQuality)) {
if (itemSellIn < 11) {
increaseByOne(itemQuality);
}
if (itemSellIn < 6) {
increaseByOne(itemQuality);
}
}
}
public void lowerSellInNotation(String itemName, int itemSellIn) {
if (!itemIsSulfuras(itemName)) {
decreaseByOne(itemSellIn);
}
}
public int increaseByOne (int incomingValue) {
return incomingValue += 1;
}
public int decreaseByOne (int incomingValue) {
return incomingValue -= 1;
}
public boolean itemIsSulfuras(String itemName) {
return ProjectConstants.SULFURAS.equals(itemName) ? true : false;
}
@ -87,4 +74,19 @@ class GildedRose {
public boolean itemIsAgedBrie(String itemName) {
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;
Item[] items;
@BeforeAll
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);
}
@Test
public void increaseByOne() {
int initial = 2;
app.increaseByOne(initial);
assertEquals("3", initial);
public void increaseByOneTest() {
int result = app.increaseByOne(2);
assertEquals(3, result);
}
@Test
public void decreaseByOne() {
int initial = 2;
app.decreaseByOne(initial);
assertEquals("1", initial);
public void decreaseByOneTest() {
int result = app.decreaseByOne(2);
assertEquals(1, result);
}
@Test
public void itemIsSulfuras() {
public void itemIsSulfurasTest() {
String itemName = app.items[0].name;
boolean result = app.itemIsSulfuras(itemName);
assertTrue(result);
}
@Test
public void ItemIsAgedBrieFalse() {
public void ItemIsAgedBrieFalseTest() {
String itemName = app.items[0].name;
boolean result = app.itemIsAgedBrie(itemName);
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));
}
}