Create three classes for BackStageItem, AgedBrieItem and RegularItem

This commit is contained in:
brianblessou 2019-05-12 16:15:55 +02:00
parent f0ed10d078
commit 29f0e257aa
7 changed files with 151 additions and 88 deletions

View File

@ -0,0 +1,32 @@
package com.gildedrose;
public class AgedBrie {
private Item item;
public AgedBrie(Item item) {
this.item=item;
}
public void updateQuaility() {
increaseQuality();
if (itemHasExpired()) {
increaseQuality();
}
}
private void increaseQuality() {
if (item.quality < 50) {
item.quality += 1;
}
}
private boolean itemHasExpired() {
boolean condition;
if (item.sellIn < 0) {
condition = true;
} else {
condition = false;
}
return condition;
}
}

View File

@ -0,0 +1,38 @@
package com.gildedrose;
public class BackStageItem {
private Item item;
public BackStageItem(Item item) {
this.item=item;
}
public void update() {
increaseQuality();
if (item.sellIn < 10) {
increaseQuality();
}
if (item.sellIn < 5) {
increaseQuality();
}
if (itemHasExpired()) {
item.quality -= item.quality;
}
}
private void increaseQuality() {
if (item.quality < 50) {
item.quality += 1;
}
}
private boolean itemHasExpired() {
boolean condition;
if (item.sellIn < 0) {
condition = true;
} else {
condition = false;
}
return condition;
}
}

View File

@ -1,85 +0,0 @@
package com.gildedrose;
class GildedRose {
Item[] items;
String SULFURA = "Sulfuras, Hand of Ragnaros";
String AGED_BRIE = "Aged Brie";
String BACKSTAGE = "Backstage passes to a TAFKAL80ETC concert";
public GildedRose(Item[] items) {
this.items = items;
}
private void increaseQuality(Item item) {
if (item.quality < 50) {
item.quality += 1;
}
}
private void decreaseQuality(Item item) {
if (item.quality > 0) {
item.quality -= 1;
}
}
private void updateNumberOfdayToSellRemaining(Item item) {
item.sellIn -= 1;
}
private boolean itemHasExpired(Item item) {
boolean condition;
if (item.sellIn < 0) {
condition = true;
} else {
condition = false;
}
return condition;
}
private void decreaseQualityTwice(Item item) {
decreaseQuality(item);
decreaseQuality(item);
}
private void updateAgedBrieQuaility(Item item) {
increaseQuality(item);
if (itemHasExpired(item)) {
increaseQuality(item);
}
}
private void updateBackstageQuaility(Item item) {
increaseQuality(item);
if (item.sellIn < 10) {
increaseQuality(item);
}
if (item.sellIn < 5) {
increaseQuality(item);
}
if (itemHasExpired(item)) {
item.quality -= item.quality;
}
}
private void updateQualityItem(Item item) {
if (item.name.equals(AGED_BRIE)) {
updateAgedBrieQuaility(item);
} else if (item.name.equals(BACKSTAGE)) {
updateBackstageQuaility(item);
} else {
if (itemHasExpired(item)) {
decreaseQualityTwice(item);
} else {
decreaseQuality(item);
}
}
}
public void updateQuality() {
for (Item item : items) {
if (item.name.equals(SULFURA)) {continue;}
updateNumberOfdayToSellRemaining(item);
updateQualityItem(item);
}
}
}

View File

@ -0,0 +1,38 @@
package com.gildedrose;
class GildedRoseItem {
Item[] items;
public static final String SULFURA = "Sulfuras, Hand of Ragnaros";
public static final String AGED_BRIE = "Aged Brie";
public static final String BACKSTAGE = "Backstage passes to a TAFKAL80ETC concert";
public GildedRoseItem(Item[] items) {
this.items = items;
}
private void updateNumberOfdayToSellRemaining(Item item) {
item.sellIn -= 1;
}
private void updateQualityItem(Item item) {
if (item.name.equals(AGED_BRIE)) {
AgedBrie agedBrieItem = new AgedBrie(item);
agedBrieItem.updateQuaility();
} else if (item.name.equals(BACKSTAGE)) {
BackStageItem backStageItem = new BackStageItem(item);
backStageItem.update();
} else {
RegularItem regularItem = new RegularItem(item);
regularItem.updateQuality();
}
}
public void updateQuality() {
for (Item item : items) {
if (item.name.equals(SULFURA)) {continue;}
updateNumberOfdayToSellRemaining(item);
updateQualityItem(item);
}
}
}

View File

@ -0,0 +1,40 @@
package com.gildedrose;
public class RegularItem {
private Item item;
public RegularItem(Item item) {
this.item = item;
}
public void updateQuality() {
if (itemHasExpired(item)) {
decreaseQualityTwice();
} else {
decreaseQuality();
}
}
private boolean itemHasExpired(Item item) {
boolean condition;
if (item.sellIn < 0) {
condition = true;
} else {
condition = false;
}
return condition;
}
private void decreaseQualityTwice() {
decreaseQuality();
decreaseQuality();
}
private void decreaseQuality() {
if (item.quality > 0) {
item.quality -= 1;
}
}
}

View File

@ -5,7 +5,7 @@ import java.util.HashMap;
import org.junit.Test;
public class GildedRoseTest {
public class GildedRoseItemTest {
private Item[] itemsSample = new Item[]{new Item("+5 Dexterity Vest", 10, 20), //
new Item("Aged Brie", 2, 0), //
new Item("Elixir of the Mongoose", 5, 7), //
@ -14,7 +14,7 @@ public class GildedRoseTest {
// this conjured item does not work properly yet
new Item("Conjured Mana Cake", 3, 6) };
private GildedRose app = new GildedRose(itemsSample);
private GildedRoseItem app = new GildedRoseItem(itemsSample);
/**
* Test if item.sellIn and item.quality is the same that expected after a number of day.

View File

@ -16,7 +16,7 @@ public class TexttestFixture {
// this conjured item does not work properly yet
new Item("Conjured Mana Cake", 3, 6) };
GildedRose app = new GildedRose(items);
GildedRoseItem app = new GildedRoseItem(items);
int days = 2;
if (args.length > 0) {