mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-04 09:11:39 +00:00
commit
66c1a38081
29
GildedRoseRequirements_ua.md
Normal file
29
GildedRoseRequirements_ua.md
Normal file
@ -0,0 +1,29 @@
|
||||
# Технічні вимоги «Gilded Rose»
|
||||
|
||||
Привіт і ласкаво просимо до команди Gilded Rose. Як ви знаєте, ми — невеликий готель з чудовим розташуванням у видатному місті, яким керує привітна господиня на ім'я Еллісон. Ми також купуємо і продаємо тільки найкращі товари.
|
||||
На жаль, якість (`Quality`) наших товарів постійно погіршується по мірі наближення до кінцевого терміну придатності.
|
||||
|
||||
Ми маємо інформаційну систему, яка веде облік всіх товарів. Система була розроблена прагматичним хлопцем на ім'я Лірой, який вирушив у нові пригоди. Ваше завдання полягає в тому, щоб додати новий функціонал до нашої системи, щоб ми могли почати продавати нову категорію товарів. Спочатку коротке введення в нашу систему:
|
||||
|
||||
- Усі `items` (предмети) мають значення `SellIn`, яке позначає кількість днів, протягом яких ми повинні продати `items` (цей товар).
|
||||
- Усі `items` мають значення `Quality`, яке позначає якість `item`.
|
||||
- В кінці кожного дня наша система знижує значення обох властивостей для кожного `item`.
|
||||
|
||||
Досить просто, чи не так? Але тут починається найцікавіше:
|
||||
|
||||
- Після того як `SellIn` (дата продажу) минула, `Quality` (якість) падає вдвічі швидше
|
||||
- `Quality` товару ніколи не може бути від'ємною
|
||||
- Для товару __"Aged Brie"__ якість збільшується з віком
|
||||
- `Quality` товару ніколи не перевищує `50`
|
||||
- __"Sulfuras"__, як легендарний товар, ніколи не потребує продажу і його `Quality` ніколи не зменшується
|
||||
- __"Backstage passes"__ (пропуск за лаштунки), як і __"Aged Brie"__, збільшує якість по мірі наближення до значення `SellIn`:
|
||||
- `Quality` (Якість) збільшується на `2`, коли залишилося `10` днів або менше, і на `3`, коли залишилося `5` днів або менше, але
|
||||
- Якість падає до `0` після концерту
|
||||
|
||||
Ми недавно підписали угоду з постачальником чарівних товарів. Це потребує оновлення нашої системи:
|
||||
|
||||
- Чарівні (__"Conjured"__) предмети втрачають якість (`Quality`) удвічі швидше, ніж звичайні товари
|
||||
|
||||
Не соромтеся вносити будь-які зміни до методу `UpdateQuality` та додавати будь-який новий код, поки система працює правильно. Однак не змінюйте клас `Item` або властивість `Items`, оскільки вони належать гобліну в кутку, який дуже роздратований і тому вистрілить в вас, оскільки він не вірить у принцип спільної власності коду (ви можете зробити метод `UpdateQuality` та властивість `Items` статичними, якщо хочете — ми прикриємо вас).
|
||||
|
||||
Просто для уточнення, товар ніколи не може мати якість (`Quality`) вище, ніж `50`, однак легендарний товар __"Sulfuras"__ має якість `80` і вона ніколи не змінюється.
|
||||
@ -26,6 +26,7 @@ The idea of the exercise is to do some deliberate practice, and improve your ski
|
||||
- [日本語](GildedRoseRequirements_jp.md)
|
||||
- [Português](GildedRoseRequirements_pt-BR.md)
|
||||
- [Русский](GildedRoseRequirements_ru.md)
|
||||
- [Українська](GildedRoseRequirements_ua.md)
|
||||
- [ไทย](GildedRoseRequirements_th.md)
|
||||
- [中文](GildedRoseRequirements_zh.txt)
|
||||
- [한국어](GildedRoseRequirements_kr.md)
|
||||
|
||||
@ -1,3 +1,22 @@
|
||||
# Gilded Rose starting position in Scala
|
||||
# Gilded Rose starting position in Scala 3 scalatest
|
||||
|
||||
TODO: explain how to run this code
|
||||
|
||||
## Build the project
|
||||
|
||||
``` cmd
|
||||
sbt compile
|
||||
```
|
||||
|
||||
## Run the Gilded Rose Command-Line program
|
||||
|
||||
For e.g. 10 days:
|
||||
|
||||
``` cmd
|
||||
sbt "run 10"
|
||||
```
|
||||
|
||||
## Run all the unit tests
|
||||
|
||||
``` cmd
|
||||
sbt test
|
||||
```
|
||||
|
||||
@ -1,8 +1,11 @@
|
||||
name := "GildedRose"
|
||||
val scala3Version = "3.6.4"
|
||||
|
||||
version := "1.0"
|
||||
lazy val root = project
|
||||
.in(file("."))
|
||||
.settings(
|
||||
name := "GildedRose",
|
||||
version := "1.0",
|
||||
scalaVersion := scala3Version,
|
||||
|
||||
scalaVersion := "2.13.1"
|
||||
|
||||
resolvers += DefaultMavenRepository
|
||||
libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.1" % "test"
|
||||
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.19" % "test"
|
||||
)
|
||||
|
||||
@ -1 +1 @@
|
||||
sbt.version=1.3.9
|
||||
sbt.version=1.10.10
|
||||
|
||||
@ -3,7 +3,7 @@ package com.gildedrose
|
||||
class GildedRose(val items: Array[Item]) {
|
||||
|
||||
|
||||
def updateQuality() {
|
||||
def updateQuality() : Unit = {
|
||||
for (i <- 0 until items.length) {
|
||||
if (!items(i).name.equals("Aged Brie")
|
||||
&& !items(i).name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||
@ -55,4 +55,4 @@ class GildedRose(val items: Array[Item]) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.gildedrose
|
||||
|
||||
object TexttestFixture {
|
||||
object Main {
|
||||
def main(args: Array[String]): Unit = {
|
||||
val items = Array[Item](
|
||||
new Item("+5 Dexterity Vest", 10, 20),
|
||||
@ -14,8 +14,13 @@ object TexttestFixture {
|
||||
// this conjured item does not work properly yet
|
||||
new Item("Conjured Mana Cake", 3, 6)
|
||||
)
|
||||
|
||||
val app = new GildedRose(items)
|
||||
|
||||
val days = if (args.length > 0) args(0).toInt + 1 else 2
|
||||
|
||||
System.out.println("OMGHAI!")
|
||||
|
||||
for (i <- 0 until days) {
|
||||
System.out.println("-------- day " + i + " --------")
|
||||
System.out.println("name, sellIn, quality")
|
||||
@ -3,11 +3,11 @@ package com.gildedrose
|
||||
import org.scalatest.flatspec.AnyFlatSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
|
||||
class GildedRoseTest extends AnyFlatSpec with Matchers {
|
||||
class GildedRoseTest extends AnyFlatSpec with Matchers {
|
||||
it should "foo" in {
|
||||
val items = Array[Item](new Item("foo", 0, 0))
|
||||
val app = new GildedRose(items)
|
||||
app.updateQuality()
|
||||
app.items(0).name should equal ("fixme")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user