The Quality of an item is never negative

This commit is contained in:
Sallah Kokaina 2019-11-01 14:40:07 +01:00
parent d278d9b389
commit 172ba212f6
3 changed files with 35 additions and 8 deletions

View File

@ -11,7 +11,7 @@
# unit tests
-[x] At the end of each day our system lowers both values for every item
-[x] Once the sell by date has passed, Quality degrades twice as fast
-[ ] The Quality of an item is never negative
-[x] The Quality of an item is never negative
-[ ] "Aged Brie" actually increases in Quality the older it gets
-[ ] The Quality of an item is never more than 50
-[ ] "Sulfuras", being a legendary item, never has to be sold or decreases in Quality

View File

@ -11,13 +11,15 @@
<properties>
<java.version>1.8</java.version>
<junit-jupiter.version>5.5.2</junit-jupiter.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
@ -31,6 +33,15 @@
<target>${java.version}</target>
</configuration>
</plugin>
<!-- Need at least 2.22.0 to support JUnit 5 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
</plugin>
</plugins>
</build>

View File

@ -1,8 +1,9 @@
package com.gildedrose;
import static org.junit.Assert.*;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.Test;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
public class GildedRoseTest {
@ -14,8 +15,8 @@ public class GildedRoseTest {
assertEquals("foo", app.items[0].name);
}
//At the end of each day our system lowers both values for every item
@Test
@DisplayName("At the end of each day our system lowers both values for every item")
public void shouldLowerBothValues(){
Item[] items = new Item[] { TestHelper.getItem("foobar", 2, 2) };
GildedRose app = new GildedRose(items);
@ -24,8 +25,8 @@ public class GildedRoseTest {
assertEquals(1, app.items[0].sellIn);
}
//Once the sell by date has passed (<=0), Quality degrades twice as fast
@Test
@DisplayName("Once the sell by date has passed (<=0), Quality degrades twice as fast")
public void shouldDowngradeTwiceAsFastAfterSellDate(){
Item[] items = new Item[] { TestHelper.getItem("foobar", 1, 5) };
GildedRose app = new GildedRose(items);
@ -41,4 +42,19 @@ public class GildedRoseTest {
assertEquals(-1, app.items[0].sellIn);
}
@Test
@DisplayName("The Quality of an item is never negative")
public void shouldNeverHaveANegativeQuality() {
Item[] items = new Item[]{TestHelper.getItem("foobar", 0, 0)};
GildedRose app = new GildedRose(items);
//day 1, drop by 1
app.updateQuality();
assertEquals(0, app.items[0].quality);
//day 2, drop by 1 => quality is still 0
app.updateQuality();
assertEquals(0, app.items[0].quality);
}
}