mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2025-12-12 04:12:13 +00:00
commit
d9c2f9a9e5
@ -5,5 +5,4 @@
|
|||||||
<module fileurl="file://$PROJECT_DIR$/Java/Java.iml" filepath="$PROJECT_DIR$/Java/Java.iml" />
|
<module fileurl="file://$PROJECT_DIR$/Java/Java.iml" filepath="$PROJECT_DIR$/Java/Java.iml" />
|
||||||
</modules>
|
</modules>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
|
|
||||||
124
Groovy/.gitignore
vendored
Normal file
124
Groovy/.gitignore
vendored
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
|
||||||
|
# Created by https://www.gitignore.io/api/groovy,intellij,eclipse,vim
|
||||||
|
|
||||||
|
#!! ERROR: groovy is undefined. Use list command to see defined gitignore types !!#
|
||||||
|
|
||||||
|
### Intellij ###
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff:
|
||||||
|
.idea/workspace.xml
|
||||||
|
.idea/tasks.xml
|
||||||
|
.idea/dictionaries
|
||||||
|
.idea/vcs.xml
|
||||||
|
.idea/jsLibraryMappings.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files:
|
||||||
|
.idea/dataSources.ids
|
||||||
|
.idea/dataSources.xml
|
||||||
|
.idea/dataSources.local.xml
|
||||||
|
.idea/sqlDataSources.xml
|
||||||
|
.idea/dynamic.xml
|
||||||
|
.idea/uiDesigner.xml
|
||||||
|
|
||||||
|
# Gradle:
|
||||||
|
.idea/gradle.xml
|
||||||
|
.idea/libraries
|
||||||
|
|
||||||
|
# Mongo Explorer plugin:
|
||||||
|
.idea/mongoSettings.xml
|
||||||
|
|
||||||
|
## File-based project format:
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
## Plugin-specific files:
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
/out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
### Intellij Patch ###
|
||||||
|
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||||
|
|
||||||
|
# *.iml
|
||||||
|
# modules.xml
|
||||||
|
|
||||||
|
|
||||||
|
### Eclipse ###
|
||||||
|
|
||||||
|
.metadata
|
||||||
|
bin/
|
||||||
|
tmp/
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
*.swp
|
||||||
|
*~.nib
|
||||||
|
local.properties
|
||||||
|
.settings/
|
||||||
|
.loadpath
|
||||||
|
.recommenders
|
||||||
|
|
||||||
|
# Eclipse Core
|
||||||
|
.project
|
||||||
|
|
||||||
|
# External tool builders
|
||||||
|
.externalToolBuilders/
|
||||||
|
|
||||||
|
# Locally stored "Eclipse launch configurations"
|
||||||
|
*.launch
|
||||||
|
|
||||||
|
# PyDev specific (Python IDE for Eclipse)
|
||||||
|
*.pydevproject
|
||||||
|
|
||||||
|
# CDT-specific (C/C++ Development Tooling)
|
||||||
|
.cproject
|
||||||
|
|
||||||
|
# JDT-specific (Eclipse Java Development Tools)
|
||||||
|
.classpath
|
||||||
|
|
||||||
|
# Java annotation processor (APT)
|
||||||
|
.factorypath
|
||||||
|
|
||||||
|
# PDT-specific (PHP Development Tools)
|
||||||
|
.buildpath
|
||||||
|
|
||||||
|
# sbteclipse plugin
|
||||||
|
.target
|
||||||
|
|
||||||
|
# Tern plugin
|
||||||
|
.tern-project
|
||||||
|
|
||||||
|
# TeXlipse plugin
|
||||||
|
.texlipse
|
||||||
|
|
||||||
|
# STS (Spring Tool Suite)
|
||||||
|
.springBeans
|
||||||
|
|
||||||
|
# Code Recommenders
|
||||||
|
.recommenders/
|
||||||
|
|
||||||
|
|
||||||
|
### Vim ###
|
||||||
|
# swap
|
||||||
|
[._]*.s[a-w][a-z]
|
||||||
|
[._]s[a-w][a-z]
|
||||||
|
# session
|
||||||
|
Session.vim
|
||||||
|
# temporary
|
||||||
|
.netrwhist
|
||||||
|
*~
|
||||||
|
# auto-generated tag files
|
||||||
|
tags
|
||||||
|
|
||||||
22
Groovy/.idea/compiler.xml
Normal file
22
Groovy/.idea/compiler.xml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CompilerConfiguration">
|
||||||
|
<resourceExtensions />
|
||||||
|
<wildcardResourcePatterns>
|
||||||
|
<entry name="!?*.java" />
|
||||||
|
<entry name="!?*.form" />
|
||||||
|
<entry name="!?*.class" />
|
||||||
|
<entry name="!?*.groovy" />
|
||||||
|
<entry name="!?*.scala" />
|
||||||
|
<entry name="!?*.flex" />
|
||||||
|
<entry name="!?*.kt" />
|
||||||
|
<entry name="!?*.clj" />
|
||||||
|
<entry name="!?*.aj" />
|
||||||
|
</wildcardResourcePatterns>
|
||||||
|
<annotationProcessing>
|
||||||
|
<profile default="true" name="Default" enabled="false">
|
||||||
|
<processorPath useClasspath="true" />
|
||||||
|
</profile>
|
||||||
|
</annotationProcessing>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
3
Groovy/.idea/copyright/profiles_settings.xml
Normal file
3
Groovy/.idea/copyright/profiles_settings.xml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<component name="CopyrightManager">
|
||||||
|
<settings default="" />
|
||||||
|
</component>
|
||||||
26
Groovy/.idea/misc.xml
Normal file
26
Groovy/.idea/misc.xml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="EntryPointsManager">
|
||||||
|
<entry_points version="2.0" />
|
||||||
|
</component>
|
||||||
|
<component name="MavenImportPreferences">
|
||||||
|
<option name="generalSettings">
|
||||||
|
<MavenGeneralSettings>
|
||||||
|
<option name="mavenHome" value="Bundled (Maven 3)" />
|
||||||
|
</MavenGeneralSettings>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
|
||||||
|
<OptionsSetting value="true" id="Add" />
|
||||||
|
<OptionsSetting value="true" id="Remove" />
|
||||||
|
<OptionsSetting value="true" id="Checkout" />
|
||||||
|
<OptionsSetting value="true" id="Update" />
|
||||||
|
<OptionsSetting value="true" id="Status" />
|
||||||
|
<OptionsSetting value="true" id="Edit" />
|
||||||
|
<ConfirmationsSetting value="0" id="Add" />
|
||||||
|
<ConfirmationsSetting value="0" id="Remove" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
Groovy/.idea/modules.xml
Normal file
8
Groovy/.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/Groovy.iml" filepath="$PROJECT_DIR$/Groovy.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
12
Groovy/Groovy.iml
Normal file
12
Groovy/Groovy.iml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="library" name="Current Groovy (sdkman)" level="application" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
17
Groovy/readme.txt
Normal file
17
Groovy/readme.txt
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Welcome to the Groovy Gilded Rose
|
||||||
|
=================================
|
||||||
|
|
||||||
|
to run the test, you can either:
|
||||||
|
- run them from your favorite IDE
|
||||||
|
- make sure you have installed language support for Groovy
|
||||||
|
- IntelliJ:
|
||||||
|
- open project
|
||||||
|
- choose this folder (Groovy)
|
||||||
|
- Eclipse:
|
||||||
|
- new Groovy Project
|
||||||
|
- choose this folder (Groovy) as the project folder
|
||||||
|
- add JUnit to build path
|
||||||
|
- run the test from the src/ folder in your shell:
|
||||||
|
- $ cd src/
|
||||||
|
- $ groovy com/gildedrose/GildedRoseTest.groovy
|
||||||
|
|
||||||
62
Groovy/src/com/gildedrose/GildedRose.groovy
Normal file
62
Groovy/src/com/gildedrose/GildedRose.groovy
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package com.gildedrose
|
||||||
|
|
||||||
|
class GildedRose {
|
||||||
|
Item[] items
|
||||||
|
|
||||||
|
GildedRose(Item[] items) {
|
||||||
|
this.items = items
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateQuality() {
|
||||||
|
for (int i = 0; i < items.length; i++) {
|
||||||
|
if (!items[i].name.equals("Aged Brie")
|
||||||
|
&& !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||||
|
if (items[i].quality > 0) {
|
||||||
|
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
|
||||||
|
items[i].quality = items[i].quality - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (items[i].quality < 50) {
|
||||||
|
items[i].quality = items[i].quality + 1
|
||||||
|
|
||||||
|
if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||||
|
if (items[i].sellIn < 11) {
|
||||||
|
if (items[i].quality < 50) {
|
||||||
|
items[i].quality = items[i].quality + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (items[i].sellIn < 6) {
|
||||||
|
if (items[i].quality < 50) {
|
||||||
|
items[i].quality = items[i].quality + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
|
||||||
|
items[i].sellIn = items[i].sellIn - 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if (items[i].sellIn < 0) {
|
||||||
|
if (!items[i].name.equals("Aged Brie")) {
|
||||||
|
if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||||
|
if (items[i].quality > 0) {
|
||||||
|
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
|
||||||
|
items[i].quality = items[i].quality - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
items[i].quality = items[i].quality - items[i].quality
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (items[i].quality < 50) {
|
||||||
|
items[i].quality = items[i].quality + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
15
Groovy/src/com/gildedrose/GildedRoseTest.groovy
Normal file
15
Groovy/src/com/gildedrose/GildedRoseTest.groovy
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package com.gildedrose
|
||||||
|
|
||||||
|
import org.junit.Test
|
||||||
|
|
||||||
|
class GildedRoseTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void "foo"() {
|
||||||
|
def items = [ new Item("foo", 0, 0) ] as Item[]
|
||||||
|
def app = new GildedRose(items)
|
||||||
|
app.updateQuality()
|
||||||
|
assert "fixme" == app.items[0].name
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
21
Groovy/src/com/gildedrose/Item.groovy
Normal file
21
Groovy/src/com/gildedrose/Item.groovy
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package com.gildedrose
|
||||||
|
|
||||||
|
class Item {
|
||||||
|
|
||||||
|
String name
|
||||||
|
|
||||||
|
int sellIn
|
||||||
|
|
||||||
|
int quality
|
||||||
|
|
||||||
|
Item(String name, int sellIn, int quality) {
|
||||||
|
this.name = name
|
||||||
|
this.sellIn = sellIn
|
||||||
|
this.quality = quality
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
String toString() {
|
||||||
|
return this.name + ", " + this.sellIn + ", " + this.quality
|
||||||
|
}
|
||||||
|
}
|
||||||
32
Groovy/src/com/gildedrose/TexttestFixture.groovy
Normal file
32
Groovy/src/com/gildedrose/TexttestFixture.groovy
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
package com.gildedrose
|
||||||
|
|
||||||
|
println("OMGHAI!")
|
||||||
|
|
||||||
|
Item[] items = [
|
||||||
|
new Item("+5 Dexterity Vest", 10, 20),
|
||||||
|
new Item("Aged Brie", 2, 0),
|
||||||
|
new Item("Elixir of the Mongoose", 5, 7),
|
||||||
|
new Item("Sulfuras, Hand of Ragnaros", 0, 80),
|
||||||
|
new Item("Sulfuras, Hand of Ragnaros", -1, 80),
|
||||||
|
new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20),
|
||||||
|
new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49),
|
||||||
|
new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49),
|
||||||
|
// this conjured item does not work properly yet
|
||||||
|
new Item("Conjured Mana Cake", 3, 6)] as Item[]
|
||||||
|
|
||||||
|
GildedRose app = new GildedRose(items)
|
||||||
|
|
||||||
|
int days = 2
|
||||||
|
if (args.length > 0) {
|
||||||
|
days = Integer.parseInt(args[0]) + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < days; i++) {
|
||||||
|
println("-------- day " + i + " --------")
|
||||||
|
println("name, sellIn, quality")
|
||||||
|
for (Item item in items) {
|
||||||
|
println(item)
|
||||||
|
}
|
||||||
|
println ""
|
||||||
|
app.updateQuality()
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user