From 6322ea1cf47d95ec93365762cb302d4f96a137c6 Mon Sep 17 00:00:00 2001 From: Rui Sousa Date: Fri, 23 Sep 2022 07:16:26 -0100 Subject: [PATCH] added tests --- Kotlin/build.gradle.kts | 1 + .../kotlin/com/gildedrose/GildedRoseTest.kt | 91 ++++++++++++++++++- 2 files changed, 88 insertions(+), 4 deletions(-) diff --git a/Kotlin/build.gradle.kts b/Kotlin/build.gradle.kts index 595148f6..16badfe6 100644 --- a/Kotlin/build.gradle.kts +++ b/Kotlin/build.gradle.kts @@ -14,6 +14,7 @@ repositories { dependencies { implementation(kotlin("stdlib")) testImplementation("org.junit.jupiter:junit-jupiter:5.8.2") + testImplementation("org.assertj:assertj-core:3.21.0") } tasks.test { diff --git a/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt b/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt index 797ac815..0cb77fbc 100644 --- a/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt +++ b/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt @@ -1,17 +1,100 @@ package com.gildedrose -import org.junit.jupiter.api.Assertions.assertEquals +import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test internal class GildedRoseTest { @Test - fun foo() { - val items = arrayOf(Item("foo", 0, 0)) + fun agedBrie_increasesInQuality() { + val item = Item("Aged Brie", 2, 2) + val app = GildedRose(arrayOf(item)) + app.updateQuality() + assertThat(item.quality).isEqualTo(3) + } + + @Test + fun agedBrie_increasesInQualityBy2WhenSellInPasses() { + val item = Item("Aged Brie", -2, 2) + val app = GildedRose(arrayOf(item)) + app.updateQuality() + assertThat(item.quality).isEqualTo(4) + } + + @Test + fun itemsExceptSulfurasQualityNeverNegative() { + val items = arrayOf( + Item("Aged Brie", 2, 0), + Item("Backstage passes to a TAFKAL80ETC concert", 1, 0), + ) val app = GildedRose(items) app.updateQuality() - assertEquals("fixme", app.items[0].name) + items.forEach { item -> + assertThat(item.quality).isGreaterThanOrEqualTo(0) + } + } + @Test + fun itemsExceptSulfurasQualityNeverGreaterThan50() { + val items = arrayOf( + Item("Aged Brie", 2, 50), + Item("Backstage passes to a TAFKAL80ETC concert", 1, 50), + ) + val app = GildedRose(items) + app.updateQuality() + items.forEach { item -> + assertThat(item.quality).isLessThanOrEqualTo(50) + } + } + + @Test + fun decreaseValueOfAnItemByTheEndOfADay() { + val item = Item("Elixir of the Mongoose", 5, 7) + val app = GildedRose(arrayOf(item)) + app.updateQuality() + assertThat(item.quality).isEqualTo(6) + assertThat(item.sellIn).isEqualTo(4) + } + + @Test + fun sulfurasNeverDecreaseQuality() { + val item = Item("Sulfuras, Hand of Ragnaros", 5, 80) + val app = GildedRose(arrayOf(item)) + app.updateQuality() + assertThat(item.quality).isEqualTo(80) + } + + @Test + fun backStagePassesIncreasesQualityByTwoInside10Days() { + val item = Item("Backstage passes to a TAFKAL80ETC concert", 10, 4) + val app = GildedRose(arrayOf(item)) + app.updateQuality() + assertThat(item.quality).isEqualTo(6) + } + + @Test + fun backStagePassesIncreasesQualityBy3Inside5Days() { + val item = Item("Backstage passes to a TAFKAL80ETC concert", 5, 4) + val app = GildedRose(arrayOf(item)) + app.updateQuality() + assertThat(item.quality).isEqualTo(7) + } + + @Test + fun backStagePassesQualityGoesToZeroWhenSellInExpires() { + val item = Item("Backstage passes to a TAFKAL80ETC concert", 0, 4) + val app = GildedRose(arrayOf(item)) + app.updateQuality() + assertThat(item.quality).isEqualTo(0) + assertThat(item.sellIn).isEqualTo(-1) + } + + @Test + fun decreaseQualityOfAnItemByTwoWhenSellDatePasses() { + val item = Item("Elixir of the Mongoose", -1, 7) + val app = GildedRose(arrayOf(item)) + app.updateQuality() + assertThat(item.quality).isEqualTo(5) } }