Last active
February 23, 2023 11:45
-
-
Save franreyes/efe65b9afa560181bc80841816aeb2b4 to your computer and use it in GitHub Desktop.
Full coverage and mutants killed in GildedRose.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 expired_regular_items_quality_never_decreases_below_the_minimum_quality(){ | |
Item item = regularItem(0, 1); | |
GildedRose shop = new GildedRose(new Item[]{item}); | |
shop.updateQuality(); | |
assertEquals(MIN_QUALITY, item.quality); | |
assertEquals(-1, 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_quality_never_increases_over_the_maximun_quality() { | |
Item item = agedBrie(0, MAX_QUALITY - 1); | |
GildedRose shop = new GildedRose(new Item[]{item}); | |
shop.updateQuality(); | |
assertEquals(MAX_QUALITY, item.quality); | |
assertEquals(-1, 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(10, 6); | |
Item item2 = backstagePasses(6, 20); | |
GildedRose shop = new GildedRose(new Item[]{item1, item2}); | |
shop.updateQuality(); | |
assertEquals(8, item1.quality); | |
assertEquals(9, item1.sellIn); | |
assertEquals(22, item2.quality); | |
assertEquals(5, item2.sellIn); | |
} | |
@Test | |
public void backstage_increase_quality_by_3_when_sellIn_is_between_5_and_1() { | |
Item item1 = backstagePasses(5, 6); | |
Item item2 = backstagePasses(1, 20); | |
GildedRose shop = new GildedRose(new Item[]{item1, item2}); | |
shop.updateQuality(); | |
assertEquals(9, item1.quality); | |
assertEquals(4, item1.sellIn); | |
assertEquals(23, item2.quality); | |
assertEquals(0, item2.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_when_increasing_by_1() { | |
Item item = backstagePasses(11, MAX_QUALITY); | |
GildedRose shop = new GildedRose(new Item[]{item}); | |
shop.updateQuality(); | |
assertEquals(MAX_QUALITY, item.quality); | |
assertEquals(10, item.sellIn); | |
} | |
@Test | |
public void backstage_quality_never_increases_over_the_maximun_quality_when_increasing_by_2() { | |
Item item = backstagePasses(8, MAX_QUALITY - 1); | |
GildedRose shop = new GildedRose(new Item[]{item}); | |
shop.updateQuality(); | |
assertEquals(MAX_QUALITY, item.quality); | |
assertEquals(7, item.sellIn); | |
} | |
@Test | |
public void backstage_quality_never_increases_over_the_maximun_quality_when_increasing_by_3() { | |
Item item = backstagePasses(4, MAX_QUALITY - 2); | |
GildedRose shop = new GildedRose(new Item[]{item}); | |
shop.updateQuality(); | |
assertEquals(MAX_QUALITY, item.quality); | |
assertEquals(3, 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