Skip to content

Instantly share code, notes, and snippets.

@trikitrok
Created June 28, 2023 12:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trikitrok/069d9154433ed4d2672d6b0cc59d0c76 to your computer and use it in GitHub Desktop.
Save trikitrok/069d9154433ed4d2672d6b0cc59d0c76 to your computer and use it in GitHub Desktop.
with surviving mutants
package com.gildedrose;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class GildedRoseTest {
private static final int MIN_QUALITY = 0;
private static final int MAX_QUALITY = 50;
@Test
public void regular_items_quality_decreases_every_day() {
Item item = regularItem(1, 3);
GildedRose shop = new GildedRose(new Item[]{item});
shop.updateQuality();
assertEquals(2, item.quality);
assertEquals(0, item.sellIn);
}
@Test
public void expired_regular_items_quality_decreases_twice_as_fast_once_sellIn_has_passed() {
Item item = regularItem(0, 3);
GildedRose shop = new GildedRose(new Item[]{item});
shop.updateQuality();
assertEquals(1, item.quality);
assertEquals(-1, item.sellIn);
}
@Test
public void regular_items_quality_never_decreases_below_the_minimum_quality() {
Item item = regularItem(5, 0);
GildedRose shop = new GildedRose(new Item[]{item});
shop.updateQuality();
assertEquals(MIN_QUALITY, item.quality);
assertEquals(4, item.sellIn);
}
@Test
public void aged_brie_increases_quality_by_1() {
Item item = agedBrie(5, 8);
GildedRose shop = new GildedRose(new Item[]{item});
shop.updateQuality();
assertEquals(9, item.quality);
assertEquals(4, item.sellIn);
}
@Test
public void aged_brie_quality_never_increases_over_the_maximun_quality() {
Item item = agedBrie(5, MAX_QUALITY);
GildedRose shop = new GildedRose(new Item[]{item});
shop.updateQuality();
assertEquals(MAX_QUALITY, item.quality);
assertEquals(4, item.sellIn);
}
@Test
public void expired_aged_brie_increases_quality_by_2() {
Item item = agedBrie(0, 8);
GildedRose shop = new GildedRose(new Item[]{item});
shop.updateQuality();
assertEquals(10, item.quality);
assertEquals(-1, item.sellIn);
}
@Test
public void sulfuras_never_changes() {
Item item = sulfuras(1, 80);
GildedRose shop = new GildedRose(new Item[]{item});
shop.updateQuality();
assertEquals(80, item.quality);
assertEquals(1, item.sellIn);
}
@Test
public void expired_sulfuras_never_changes() {
Item item = sulfuras(-1, 80);
GildedRose shop = new GildedRose(new Item[]{item});
shop.updateQuality();
assertEquals(80, item.quality);
assertEquals(-1, item.sellIn);
}
@Test
public void backstage_increase_quality_by_1_when_sellIn_is_greater_than_10() {
Item item = backstagePasses(11, 6);
GildedRose shop = new GildedRose(new Item[]{item});
shop.updateQuality();
assertEquals(7, item.quality);
assertEquals(10, item.sellIn);
}
@Test
public void backstage_increase_quality_by_2_when_sellIn_is_between_10_and_6() {
Item item1 = backstagePasses(8, 6);
GildedRose shop = new GildedRose(new Item[]{item1});
shop.updateQuality();
assertEquals(8, item1.quality);
assertEquals(7, item1.sellIn);
}
@Test
public void backstage_increase_quality_by_3_when_sellIn_is_between_5_and_1() {
Item item1 = backstagePasses(4, 6);
GildedRose shop = new GildedRose(new Item[]{item1});
shop.updateQuality();
assertEquals(9, item1.quality);
assertEquals(3, item1.sellIn);
}
@Test
public void backstage_quality_drops_to_0_after_the_concert() {
Item item = backstagePasses(0, 6);
GildedRose shop = new GildedRose(new Item[]{item});
shop.updateQuality();
assertEquals(MIN_QUALITY, item.quality);
assertEquals(-1, item.sellIn);
}
@Test
public void backstage_quality_never_increases_over_the_maximun_quality() {
Item item = backstagePasses(11, MAX_QUALITY);
GildedRose shop = new GildedRose(new Item[]{item});
shop.updateQuality();
assertEquals(MAX_QUALITY, item.quality);
assertEquals(10, item.sellIn);
}
public Item regularItem(int sellIn, int quality) {
return new Item("foo", sellIn, quality);
}
public Item agedBrie(int sellIn, int quality) {
return new Item("Aged Brie", sellIn, quality);
}
public Item sulfuras(int sellIn, int quality) {
return new Item("Sulfuras, Hand of Ragnaros", sellIn, quality);
}
public Item backstagePasses(int sellIn, int quality) {
return new Item("Backstage passes to a TAFKAL80ETC concert", sellIn, quality);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment