mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
feat: making the Item class respecting the Encapsulation Principle
This commit is contained in:
parent
3c51e0ad35
commit
f0fe95be85
@ -11,22 +11,22 @@ class GildedRose {
|
||||
for (int i = 0; i < items.length; i++) {
|
||||
|
||||
// to avoid to have to check it later on
|
||||
if (items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
|
||||
if (items[i].getName().equals("Sulfuras, Hand of Ragnaros")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// first we define what should increase and what should decrease
|
||||
if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert") |
|
||||
items[i].name.equals("Aged Brie")) {
|
||||
if (items[i].quality < 50) {
|
||||
items[i].quality = items[i].quality + 1;
|
||||
if (items[i].getName().equals("Backstage passes to a TAFKAL80ETC concert") |
|
||||
items[i].getName().equals("Aged Brie")) {
|
||||
if (items[i].getQuality() < 50) {
|
||||
items[i].setQuality(items[i].getQuality() + 1);
|
||||
|
||||
if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||
if (items[i].sellIn < 11 && items[i].quality < 50) {
|
||||
items[i].quality = items[i].quality + 1;
|
||||
if (items[i].getName().equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||
if (items[i].getSellIn() < 11 && items[i].getQuality() < 50) {
|
||||
items[i].setQuality(items[i].getQuality() + 1);
|
||||
}
|
||||
if (items[i].sellIn < 6 && items[i].quality < 50) {
|
||||
items[i].quality = items[i].quality + 1;
|
||||
if (items[i].getSellIn() < 6 && items[i].getQuality() < 50) {
|
||||
items[i].setQuality(items[i].getQuality() + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -34,29 +34,29 @@ class GildedRose {
|
||||
updateNormalAndConjuredItems(items[i]);
|
||||
}
|
||||
|
||||
if (items[i].sellIn <= 0) {
|
||||
if (items[i].getSellIn() <= 0) {
|
||||
|
||||
if (items[i].name.equals("Aged Brie") && items[i].quality < 50) {
|
||||
items[i].quality = items[i].quality + 1;
|
||||
if (items[i].getName().equals("Aged Brie") && items[i].getQuality() < 50) {
|
||||
items[i].setQuality(items[i].getQuality() + 1);
|
||||
}
|
||||
|
||||
if (items[i].name.equals("+5 Dexterity Vest") || items[i].name.equals("Elixir of the Mongoose") ||
|
||||
items[i].name.equals("Conjured Mana Cake")) {
|
||||
if (items[i].getName().equals("+5 Dexterity Vest") || items[i].getName().equals("Elixir of the Mongoose") ||
|
||||
items[i].getName().equals("Conjured Mana Cake")) {
|
||||
updateNormalAndConjuredItems(items[i]);
|
||||
}
|
||||
if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||
items[i].quality = items[i].quality - items[i].quality;
|
||||
if (items[i].getName().equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||
items[i].setQuality(0);
|
||||
}
|
||||
}
|
||||
items[i].sellIn = items[i].sellIn - 1;
|
||||
items[i].setSellIn(items[i].getSellIn() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateNormalAndConjuredItems(Item item) {
|
||||
if (item.quality > 0) {
|
||||
item.quality = item.quality - 1;
|
||||
if (item.name.equals("Conjured Mana Cake") && item.quality > 0) {
|
||||
item.quality = item.quality - 1;
|
||||
if (item.getQuality() > 0) {
|
||||
item.setQuality(item.getQuality() - 1);
|
||||
if (item.getName().equals("Conjured Mana Cake") && item.getQuality() > 0) {
|
||||
item.setQuality(item.getQuality() - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,11 +2,11 @@ package com.gildedrose;
|
||||
|
||||
public class Item {
|
||||
|
||||
public String name;
|
||||
private String name;
|
||||
|
||||
public int sellIn;
|
||||
private int sellIn;
|
||||
|
||||
public int quality;
|
||||
private int quality;
|
||||
|
||||
public Item(String name, int sellIn, int quality) {
|
||||
this.name = name;
|
||||
@ -14,8 +14,28 @@ public class Item {
|
||||
this.quality = quality;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public int getSellIn() {
|
||||
return this.sellIn;
|
||||
}
|
||||
|
||||
public void setSellIn(int value) {
|
||||
this.sellIn = value;
|
||||
}
|
||||
|
||||
public int getQuality() {
|
||||
return this.quality;
|
||||
}
|
||||
|
||||
public void setQuality(int value) {
|
||||
this.quality = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.name + ", " + this.sellIn + ", " + this.quality;
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,11 +14,9 @@ class UpdateQualityTest {
|
||||
Item[] items = new Item[]{new Item("Elixir of the Mongoose", 5, 7)};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals("Elixir of the Mongoose", app.items[0].name);
|
||||
System.out.println("Quality: " + app.items[0].sellIn);
|
||||
assertEquals(4, app.items[0].sellIn);
|
||||
assertEquals(4, app.items[0].getSellIn());
|
||||
app.updateQuality();
|
||||
assertEquals(3, app.items[0].sellIn);
|
||||
assertEquals(3, app.items[0].getSellIn());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -26,11 +24,9 @@ class UpdateQualityTest {
|
||||
Item[] items = new Item[]{new Item("Elixir of the Mongoose", 5, 7)};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals("Elixir of the Mongoose", app.items[0].name);
|
||||
System.out.println("Quality: " + app.items[0].quality);
|
||||
assertEquals(6, app.items[0].quality);
|
||||
assertEquals(6, app.items[0].getQuality());
|
||||
app.updateQuality();
|
||||
assertEquals(5, app.items[0].quality);
|
||||
assertEquals(5, app.items[0].getQuality());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -39,8 +35,8 @@ class UpdateQualityTest {
|
||||
Item[] items = new Item[]{new Item("+5 Dexterity Vest", 0, 20)};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(18, app.items[0].quality);
|
||||
assertEquals("+5 Dexterity Vest", app.items[0].name);
|
||||
assertEquals(18, app.items[0].getQuality());
|
||||
assertEquals("+5 Dexterity Vest", app.items[0].getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -49,8 +45,8 @@ class UpdateQualityTest {
|
||||
Item[] items = new Item[]{new Item("+5 Dexterity Vest", -1, 18)};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(16, app.items[0].quality);
|
||||
assertEquals("+5 Dexterity Vest", app.items[0].name);
|
||||
assertEquals(16, app.items[0].getQuality());
|
||||
assertEquals("+5 Dexterity Vest", app.items[0].getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -63,9 +59,8 @@ class UpdateQualityTest {
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
app.updateQuality();
|
||||
System.out.println(app.items[0].quality);
|
||||
assertEquals(0, app.items[0].quality);
|
||||
assertEquals(0, app.items[1].quality);
|
||||
assertEquals(0, app.items[0].getQuality());
|
||||
assertEquals(0, app.items[1].getQuality());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -74,8 +69,8 @@ class UpdateQualityTest {
|
||||
Item[] items = new Item[]{new Item("+5 Dexterity Vest", 1, 30)};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(29, app.items[0].quality);
|
||||
assertEquals(0, app.items[0].sellIn);
|
||||
assertEquals(29, app.items[0].getQuality());
|
||||
assertEquals(0, app.items[0].getSellIn());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -84,8 +79,8 @@ class UpdateQualityTest {
|
||||
Item[] items = new Item[]{new Item("Aged Brie", 1, 30)};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(31, app.items[0].quality); //new Item("Aged Brie", 2, 0),
|
||||
assertEquals(0, app.items[0].sellIn);
|
||||
assertEquals(31, app.items[0].getQuality());
|
||||
assertEquals(0, app.items[0].getSellIn());
|
||||
}
|
||||
@Test
|
||||
void sellInValueCanBeNegativeStartAtZero() {
|
||||
@ -96,8 +91,8 @@ class UpdateQualityTest {
|
||||
for (int i = 0; i < timeFrame; i++) {
|
||||
app.updateQuality();
|
||||
}
|
||||
assertEquals(10, app.items[0].quality);
|
||||
assertEquals(-timeFrame, app.items[0].sellIn);
|
||||
assertEquals(10, app.items[0].getQuality());
|
||||
assertEquals(-timeFrame, app.items[0].getSellIn());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -109,8 +104,8 @@ class UpdateQualityTest {
|
||||
for (int i = 0; i < timeFrame; i++) {
|
||||
app.updateQuality();
|
||||
}
|
||||
assertEquals(10, app.items[0].quality);
|
||||
assertEquals(-5 -timeFrame, app.items[0].sellIn);
|
||||
assertEquals(10, app.items[0].getQuality());
|
||||
assertEquals(-5 -timeFrame, app.items[0].getSellIn());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -121,7 +116,7 @@ class UpdateQualityTest {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
app.updateQuality();
|
||||
}
|
||||
assertEquals(-1, app.items[0].sellIn);
|
||||
assertEquals(-1, app.items[0].getSellIn());
|
||||
}
|
||||
|
||||
|
||||
@ -132,11 +127,9 @@ class UpdateQualityTest {
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
app.updateQuality();
|
||||
assertEquals("Aged Brie", app.items[0].name);
|
||||
System.out.println("Quality: " + app.items[0].quality);
|
||||
assertEquals(2, app.items[0].quality);
|
||||
assertEquals(2, app.items[0].getQuality());
|
||||
app.updateQuality();
|
||||
assertEquals(3, app.items[0].quality);
|
||||
assertEquals(3, app.items[0].getQuality());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -145,7 +138,7 @@ class UpdateQualityTest {
|
||||
Item[] items = new Item[]{new Item("Aged Brie", -1, 20)};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(22, app.items[0].quality);
|
||||
assertEquals(22, app.items[0].getQuality());
|
||||
}
|
||||
|
||||
|
||||
@ -155,9 +148,9 @@ class UpdateQualityTest {
|
||||
Item[] items = new Item[]{new Item("Aged Brie", 10, 49)};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(50, app.items[0].quality);
|
||||
assertEquals(50, app.items[0].getQuality());
|
||||
app.updateQuality();
|
||||
assertEquals(50, app.items[0].quality);
|
||||
assertEquals(50, app.items[0].getQuality());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -166,9 +159,9 @@ class UpdateQualityTest {
|
||||
Item[] items = new Item[]{new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49)};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(50, app.items[0].quality);
|
||||
assertEquals(50, app.items[0].getQuality());
|
||||
app.updateQuality();
|
||||
assertEquals(50, app.items[0].quality);
|
||||
assertEquals(50, app.items[0].getQuality());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -176,11 +169,11 @@ class UpdateQualityTest {
|
||||
System.out.println("\"Sulfuras\", being a legendary item, never decreases in Quality and stays the same");
|
||||
Item[] items = new Item[]{new Item("Sulfuras, Hand of Ragnaros", 5, 55)};
|
||||
GildedRose app = new GildedRose(items);
|
||||
assertEquals("Sulfuras, Hand of Ragnaros", app.items[0].name);
|
||||
assertEquals("Sulfuras, Hand of Ragnaros", app.items[0].getName());
|
||||
for (int i = 0; i < 10; i++) {
|
||||
app.updateQuality();
|
||||
}
|
||||
assertEquals(55, app.items[0].quality);
|
||||
assertEquals(55, app.items[0].getQuality());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -193,9 +186,9 @@ class UpdateQualityTest {
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(2, app.items[0].quality);
|
||||
assertEquals(2, app.items[1].quality);
|
||||
assertEquals(50, app.items[2].quality);
|
||||
assertEquals(2, app.items[0].getQuality());
|
||||
assertEquals(2, app.items[1].getQuality());
|
||||
assertEquals(50, app.items[2].getQuality());
|
||||
|
||||
}
|
||||
|
||||
@ -209,9 +202,9 @@ class UpdateQualityTest {
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(6, app.items[0].quality);
|
||||
assertEquals(6, app.items[1].quality);
|
||||
assertEquals(50, app.items[2].quality);
|
||||
assertEquals(6, app.items[0].getQuality());
|
||||
assertEquals(6, app.items[1].getQuality());
|
||||
assertEquals(50, app.items[2].getQuality());
|
||||
|
||||
}
|
||||
|
||||
@ -225,9 +218,9 @@ class UpdateQualityTest {
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(0, app.items[0].quality);
|
||||
assertEquals(0, app.items[1].quality);
|
||||
assertEquals(0, app.items[2].quality);
|
||||
assertEquals(0, app.items[0].getQuality());
|
||||
assertEquals(0, app.items[1].getQuality());
|
||||
assertEquals(0, app.items[2].getQuality());
|
||||
|
||||
}
|
||||
|
||||
@ -239,7 +232,7 @@ class UpdateQualityTest {
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(0, app.items[0].quality);
|
||||
assertEquals(0, app.items[0].getQuality());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -254,7 +247,7 @@ class UpdateQualityTest {
|
||||
new Item("Conjured Mana Cake", 3, 6)};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(4, app.items[0].quality);
|
||||
assertEquals(4, app.items[0].getQuality());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -265,7 +258,7 @@ class UpdateQualityTest {
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(6, app.items[0].quality);
|
||||
assertEquals(6, app.items[0].getQuality());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -276,7 +269,7 @@ class UpdateQualityTest {
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(4, app.items[0].quality);
|
||||
assertEquals(4, app.items[0].getQuality());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user