From 2596913c51adf31ad9892e67a16a95d3e1a16f27 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Thu, 4 Oct 2018 21:41:07 +0200 Subject: [PATCH 1/6] Update gradle wrapper to use -all distribution --- gradle/wrapper/gradle-wrapper.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 933b6473..f27dcda5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Thu Oct 04 21:38:43 CEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip From 83c8967721a1103f8f5d94cb27513399e63693d0 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Thu, 4 Oct 2018 21:41:49 +0200 Subject: [PATCH 2/6] Update kotlin version to 1.2.71 --- build.gradle | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 02295308..bc864d82 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.2.21' + ext.kotlin_version = '1.2.71' repositories { mavenCentral() @@ -20,14 +20,17 @@ dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" testCompile 'junit:junit:4.12' } + repositories { mavenCentral() } + compileKotlin { kotlinOptions { jvmTarget = "1.8" } } + compileTestKotlin { kotlinOptions { jvmTarget = "1.8" From 8dead4b8d8576ba27f7907798187813cc5069b09 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Fri, 5 Oct 2018 13:35:09 +0200 Subject: [PATCH 3/6] Restructure build project --- build.gradle | 35 ++++++----------------- gradle/wrapper/gradle-wrapper.jar | Bin 54329 -> 54413 bytes gradle/wrapper/gradle-wrapper.properties | 4 +-- settings.gradle | 1 + 4 files changed, 12 insertions(+), 28 deletions(-) create mode 100644 settings.gradle diff --git a/build.gradle b/build.gradle index bc864d82..17b9ae55 100644 --- a/build.gradle +++ b/build.gradle @@ -1,38 +1,21 @@ -buildscript { - ext.kotlin_version = '1.2.71' - - repositories { - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - plugins { - id "org.jetbrains.kotlin.jvm" version "1.2.21" + id 'org.jetbrains.kotlin.jvm' version '1.2.71' } -apply plugin: 'kotlin' - -dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - testCompile 'junit:junit:4.12' -} +version '1.0.0' repositories { mavenCentral() } -compileKotlin { - kotlinOptions { - jvmTarget = "1.8" - } +dependencies { + compile 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71' + testCompile 'junit:junit:4.12' } +compileKotlin { + kotlinOptions.jvmTarget = '1.8' +} compileTestKotlin { - kotlinOptions { - jvmTarget = "1.8" - } + kotlinOptions.jvmTarget = '1.8' } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 01b8bf6b1f99cad9213fc495b33ad5bbab8efd20..1948b9074f1016d15d505d185bc3f73deb82d8c8 100644 GIT binary patch delta 7399 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 Da{n=i delta 7286 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 KPzU?}WBw1fHw(7_ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f27dcda5..eddf6021 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Oct 04 21:38:43 CEST 2018 +#Fri Oct 05 12:30:37 CEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-all.zip diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..2d0d2d0d --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'gildedrose' From 538bbce81c7d4286bc4419d26ca6e89d7fa1dd06 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Fri, 5 Oct 2018 13:55:04 +0200 Subject: [PATCH 4/6] Replace texttests with own fixture --- texttest/ThirtyDays.txt | 301 ++++++++++++++++++++++++ texttests/README.md | 37 --- texttests/ThirtyDays/._options.gr | Bin 4096 -> 0 bytes texttests/ThirtyDays/options.gr | 1 - texttests/ThirtyDays/stderr.gr | 0 texttests/ThirtyDays/stdout.gr | 373 ------------------------------ texttests/config.gr | 35 --- texttests/environment.gr | 3 - texttests/testsuite.gr | 2 - 9 files changed, 301 insertions(+), 451 deletions(-) create mode 100644 texttest/ThirtyDays.txt delete mode 100644 texttests/README.md delete mode 100755 texttests/ThirtyDays/._options.gr delete mode 100755 texttests/ThirtyDays/options.gr delete mode 100755 texttests/ThirtyDays/stderr.gr delete mode 100644 texttests/ThirtyDays/stdout.gr delete mode 100755 texttests/config.gr delete mode 100755 texttests/environment.gr delete mode 100755 texttests/testsuite.gr diff --git a/texttest/ThirtyDays.txt b/texttest/ThirtyDays.txt new file mode 100644 index 00000000..9e65f2e5 --- /dev/null +++ b/texttest/ThirtyDays.txt @@ -0,0 +1,301 @@ + +DAY 0 +Item(name=+5 Dexterity Vest, sellIn=10, quality=20) +Item(name=Aged Brie, sellIn=2, quality=0) +Item(name=Elixir of the Mongoose, sellIn=5, quality=7) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=15, quality=20) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=10, quality=49) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=5, quality=49) +Item(name=Conjured Mana Cake, sellIn=3, quality=6) +DAY 1 +Item(name=+5 Dexterity Vest, sellIn=9, quality=19) +Item(name=Aged Brie, sellIn=1, quality=1) +Item(name=Elixir of the Mongoose, sellIn=4, quality=6) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=14, quality=21) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=9, quality=50) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=4, quality=50) +Item(name=Conjured Mana Cake, sellIn=2, quality=5) +DAY 2 +Item(name=+5 Dexterity Vest, sellIn=8, quality=18) +Item(name=Aged Brie, sellIn=0, quality=2) +Item(name=Elixir of the Mongoose, sellIn=3, quality=5) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=13, quality=22) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=8, quality=50) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=3, quality=50) +Item(name=Conjured Mana Cake, sellIn=1, quality=4) +DAY 3 +Item(name=+5 Dexterity Vest, sellIn=7, quality=17) +Item(name=Aged Brie, sellIn=-1, quality=4) +Item(name=Elixir of the Mongoose, sellIn=2, quality=4) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=12, quality=23) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=7, quality=50) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=2, quality=50) +Item(name=Conjured Mana Cake, sellIn=0, quality=3) +DAY 4 +Item(name=+5 Dexterity Vest, sellIn=6, quality=16) +Item(name=Aged Brie, sellIn=-2, quality=6) +Item(name=Elixir of the Mongoose, sellIn=1, quality=3) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=11, quality=24) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=6, quality=50) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=1, quality=50) +Item(name=Conjured Mana Cake, sellIn=-1, quality=1) +DAY 5 +Item(name=+5 Dexterity Vest, sellIn=5, quality=15) +Item(name=Aged Brie, sellIn=-3, quality=8) +Item(name=Elixir of the Mongoose, sellIn=0, quality=2) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=10, quality=25) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=5, quality=50) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=0, quality=50) +Item(name=Conjured Mana Cake, sellIn=-2, quality=0) +DAY 6 +Item(name=+5 Dexterity Vest, sellIn=4, quality=14) +Item(name=Aged Brie, sellIn=-4, quality=10) +Item(name=Elixir of the Mongoose, sellIn=-1, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=9, quality=27) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=4, quality=50) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-1, quality=0) +Item(name=Conjured Mana Cake, sellIn=-3, quality=0) +DAY 7 +Item(name=+5 Dexterity Vest, sellIn=3, quality=13) +Item(name=Aged Brie, sellIn=-5, quality=12) +Item(name=Elixir of the Mongoose, sellIn=-2, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=8, quality=29) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=3, quality=50) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-2, quality=0) +Item(name=Conjured Mana Cake, sellIn=-4, quality=0) +DAY 8 +Item(name=+5 Dexterity Vest, sellIn=2, quality=12) +Item(name=Aged Brie, sellIn=-6, quality=14) +Item(name=Elixir of the Mongoose, sellIn=-3, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=7, quality=31) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=2, quality=50) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-3, quality=0) +Item(name=Conjured Mana Cake, sellIn=-5, quality=0) +DAY 9 +Item(name=+5 Dexterity Vest, sellIn=1, quality=11) +Item(name=Aged Brie, sellIn=-7, quality=16) +Item(name=Elixir of the Mongoose, sellIn=-4, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=6, quality=33) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=1, quality=50) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-4, quality=0) +Item(name=Conjured Mana Cake, sellIn=-6, quality=0) +DAY 10 +Item(name=+5 Dexterity Vest, sellIn=0, quality=10) +Item(name=Aged Brie, sellIn=-8, quality=18) +Item(name=Elixir of the Mongoose, sellIn=-5, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=5, quality=35) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=0, quality=50) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-5, quality=0) +Item(name=Conjured Mana Cake, sellIn=-7, quality=0) +DAY 11 +Item(name=+5 Dexterity Vest, sellIn=-1, quality=8) +Item(name=Aged Brie, sellIn=-9, quality=20) +Item(name=Elixir of the Mongoose, sellIn=-6, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=4, quality=38) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-1, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-6, quality=0) +Item(name=Conjured Mana Cake, sellIn=-8, quality=0) +DAY 12 +Item(name=+5 Dexterity Vest, sellIn=-2, quality=6) +Item(name=Aged Brie, sellIn=-10, quality=22) +Item(name=Elixir of the Mongoose, sellIn=-7, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=3, quality=41) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-2, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-7, quality=0) +Item(name=Conjured Mana Cake, sellIn=-9, quality=0) +DAY 13 +Item(name=+5 Dexterity Vest, sellIn=-3, quality=4) +Item(name=Aged Brie, sellIn=-11, quality=24) +Item(name=Elixir of the Mongoose, sellIn=-8, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=2, quality=44) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-3, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-8, quality=0) +Item(name=Conjured Mana Cake, sellIn=-10, quality=0) +DAY 14 +Item(name=+5 Dexterity Vest, sellIn=-4, quality=2) +Item(name=Aged Brie, sellIn=-12, quality=26) +Item(name=Elixir of the Mongoose, sellIn=-9, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=1, quality=47) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-4, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-9, quality=0) +Item(name=Conjured Mana Cake, sellIn=-11, quality=0) +DAY 15 +Item(name=+5 Dexterity Vest, sellIn=-5, quality=0) +Item(name=Aged Brie, sellIn=-13, quality=28) +Item(name=Elixir of the Mongoose, sellIn=-10, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=0, quality=50) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-5, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-10, quality=0) +Item(name=Conjured Mana Cake, sellIn=-12, quality=0) +DAY 16 +Item(name=+5 Dexterity Vest, sellIn=-6, quality=0) +Item(name=Aged Brie, sellIn=-14, quality=30) +Item(name=Elixir of the Mongoose, sellIn=-11, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-1, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-6, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-11, quality=0) +Item(name=Conjured Mana Cake, sellIn=-13, quality=0) +DAY 17 +Item(name=+5 Dexterity Vest, sellIn=-7, quality=0) +Item(name=Aged Brie, sellIn=-15, quality=32) +Item(name=Elixir of the Mongoose, sellIn=-12, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-2, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-7, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-12, quality=0) +Item(name=Conjured Mana Cake, sellIn=-14, quality=0) +DAY 18 +Item(name=+5 Dexterity Vest, sellIn=-8, quality=0) +Item(name=Aged Brie, sellIn=-16, quality=34) +Item(name=Elixir of the Mongoose, sellIn=-13, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-3, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-8, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-13, quality=0) +Item(name=Conjured Mana Cake, sellIn=-15, quality=0) +DAY 19 +Item(name=+5 Dexterity Vest, sellIn=-9, quality=0) +Item(name=Aged Brie, sellIn=-17, quality=36) +Item(name=Elixir of the Mongoose, sellIn=-14, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-4, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-9, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-14, quality=0) +Item(name=Conjured Mana Cake, sellIn=-16, quality=0) +DAY 20 +Item(name=+5 Dexterity Vest, sellIn=-10, quality=0) +Item(name=Aged Brie, sellIn=-18, quality=38) +Item(name=Elixir of the Mongoose, sellIn=-15, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-5, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-10, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-15, quality=0) +Item(name=Conjured Mana Cake, sellIn=-17, quality=0) +DAY 21 +Item(name=+5 Dexterity Vest, sellIn=-11, quality=0) +Item(name=Aged Brie, sellIn=-19, quality=40) +Item(name=Elixir of the Mongoose, sellIn=-16, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-6, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-11, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-16, quality=0) +Item(name=Conjured Mana Cake, sellIn=-18, quality=0) +DAY 22 +Item(name=+5 Dexterity Vest, sellIn=-12, quality=0) +Item(name=Aged Brie, sellIn=-20, quality=42) +Item(name=Elixir of the Mongoose, sellIn=-17, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-7, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-12, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-17, quality=0) +Item(name=Conjured Mana Cake, sellIn=-19, quality=0) +DAY 23 +Item(name=+5 Dexterity Vest, sellIn=-13, quality=0) +Item(name=Aged Brie, sellIn=-21, quality=44) +Item(name=Elixir of the Mongoose, sellIn=-18, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-8, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-13, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-18, quality=0) +Item(name=Conjured Mana Cake, sellIn=-20, quality=0) +DAY 24 +Item(name=+5 Dexterity Vest, sellIn=-14, quality=0) +Item(name=Aged Brie, sellIn=-22, quality=46) +Item(name=Elixir of the Mongoose, sellIn=-19, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-9, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-14, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-19, quality=0) +Item(name=Conjured Mana Cake, sellIn=-21, quality=0) +DAY 25 +Item(name=+5 Dexterity Vest, sellIn=-15, quality=0) +Item(name=Aged Brie, sellIn=-23, quality=48) +Item(name=Elixir of the Mongoose, sellIn=-20, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-10, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-15, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-20, quality=0) +Item(name=Conjured Mana Cake, sellIn=-22, quality=0) +DAY 26 +Item(name=+5 Dexterity Vest, sellIn=-16, quality=0) +Item(name=Aged Brie, sellIn=-24, quality=50) +Item(name=Elixir of the Mongoose, sellIn=-21, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-11, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-16, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-21, quality=0) +Item(name=Conjured Mana Cake, sellIn=-23, quality=0) +DAY 27 +Item(name=+5 Dexterity Vest, sellIn=-17, quality=0) +Item(name=Aged Brie, sellIn=-25, quality=50) +Item(name=Elixir of the Mongoose, sellIn=-22, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-12, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-17, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-22, quality=0) +Item(name=Conjured Mana Cake, sellIn=-24, quality=0) +DAY 28 +Item(name=+5 Dexterity Vest, sellIn=-18, quality=0) +Item(name=Aged Brie, sellIn=-26, quality=50) +Item(name=Elixir of the Mongoose, sellIn=-23, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-13, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-18, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-23, quality=0) +Item(name=Conjured Mana Cake, sellIn=-25, quality=0) +DAY 29 +Item(name=+5 Dexterity Vest, sellIn=-19, quality=0) +Item(name=Aged Brie, sellIn=-27, quality=50) +Item(name=Elixir of the Mongoose, sellIn=-24, quality=0) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=0, quality=80) +Item(name=Sulfuras, Hand of Ragnaros, sellIn=-1, quality=80) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-14, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-19, quality=0) +Item(name=Backstage passes to a TAFKAL80ETC concert, sellIn=-24, quality=0) +Item(name=Conjured Mana Cake, sellIn=-26, quality=0) \ No newline at end of file diff --git a/texttests/README.md b/texttests/README.md deleted file mode 100644 index 7f8a53ca..00000000 --- a/texttests/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# TextTest regression tests - -This folder contains Text-Based tests for the GildedRose Refactoring Kata. - -These tests are designed to be used with the open source testing tool "TextTest", available from http://texttest.org You can run them without it too though, see below. - -## Running without TextTest - -This should be perfectly possible, but is probably less convenient than using TextTest. - -Write a script that will execute the SUT (see "config.gr" for details of the executables), giving the commandline options listed in "options.gr". Collect the output from standard output in a file, and diff that against the golden copy "stdout.gr". Any diff is a test failure. - -## Running with TextTest - -- Install TextTest (see http://texttest.org) -- set $TEXTTEST_HOME environment variable to point at the "texttests" folder -- run texttest using a command like "python texttest.py -a gr" - -This should start the GUI for the TextTest tool. - -Each test case has it's own subdirectory. The name of the directory is the name of the test - in this case "ThirtyDays". The "Golden Copy" of the output for that test case is kept in that directory. In this case we have three files: - -- __stderr.gr__ - the expected output to Standard Error (stderr) -- __stdout.gr__ - the expected output to Standard Output (stdout) -- __options.gr__ - the options to give on the command line when you run the System Under Test (SUT) - -In the directory above, there are configuration files for TextTest: - -- __config.gr__ - this tells TextTest where to find the SUT executable, and sets up options for how it runs the SUT and interprets the output. -- __environment.gr__ - this file lists environment variables that will be set before TextTest runs the SUT. This is especially important for Java applications, that must set the CLASSPATH environment variable in order to run properly. -- __testsuite.gr__ - lists the constituent test cases of this suite. Change the order of the entries here to change the order they appear in the TextTest GUI. - -To run a test, click on it in the GUI and select "Run". TextTest will run it in a temporary (sandbox) directory and report the results. If the test fails, you can double click on a file to see the diff against the Golden Copy. - -If you run into difficulties with TextTest, there is documentation available on [texttest.org](http://texttest.org), or you can ask a question on the [mailing list](https://lists.sourceforge.net/lists/listinfo/texttest-users). - - diff --git a/texttests/ThirtyDays/._options.gr b/texttests/ThirtyDays/._options.gr deleted file mode 100755 index 5ffc020ca9a07576f2666083de5aca2ad8d1ca85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH~u?oU45QeXUh#lN?l5)O4QP<+&1BjpgNW}TK83I0Yxp8H)gtKP zEZo6y`H%b|_iYF5K?hm@3&wG|#tk-6_n_-@3eday>UHl95Jdj`Bj#zkN-nqR<$$xl zKKil*UN`+dH+h^hZcWadC}Pg6aBvLkk8q>PT;mMK$x|z-g;$d#JbgV#k_Zq1B0vO) z01+SpM1Tko0U|&Ih(Nt;*7=Mm-N^#2C`@U&z|7b^O6`Pp(rBjC0hP!cZWYsezkxQc Ozb>EizegEDR8 Date: Fri, 5 Oct 2018 13:57:10 +0200 Subject: [PATCH 5/6] Replace texttest fixture with own acceptance test --- .../kotlin/com/gildedrose/TexttestFixture.kt | 36 ------------- .../acceptance/ThirtyDaysAcceptanceTests.kt | 50 +++++++++++++++++++ .../com/gildedrose/core/TestToFileHandler.kt | 13 +++++ 3 files changed, 63 insertions(+), 36 deletions(-) delete mode 100644 src/test/kotlin/com/gildedrose/TexttestFixture.kt create mode 100644 src/test/kotlin/com/gildedrose/acceptance/ThirtyDaysAcceptanceTests.kt create mode 100644 src/test/kotlin/com/gildedrose/core/TestToFileHandler.kt diff --git a/src/test/kotlin/com/gildedrose/TexttestFixture.kt b/src/test/kotlin/com/gildedrose/TexttestFixture.kt deleted file mode 100644 index 7eeac81e..00000000 --- a/src/test/kotlin/com/gildedrose/TexttestFixture.kt +++ /dev/null @@ -1,36 +0,0 @@ -package com.gildedrose - -fun main(args: Array) { - - println("OMGHAI!") - - val items = arrayOf(Item("+5 Dexterity Vest", 10, 20), // - Item("Aged Brie", 2, 0), // - Item("Elixir of the Mongoose", 5, 7), // - Item("Sulfuras, Hand of Ragnaros", 0, 80), // - Item("Sulfuras, Hand of Ragnaros", -1, 80), - Item("Backstage passes to a TAFKAL80ETC concert", 15, 20), - Item("Backstage passes to a TAFKAL80ETC concert", 10, 49), - Item("Backstage passes to a TAFKAL80ETC concert", 5, 49), - // this conjured item does not work properly yet - Item("Conjured Mana Cake", 3, 6)) - - val app = GildedRose(items) - - var days = 2 - if (args.size > 0) { - days = Integer.parseInt(args[0]) + 1 - } - - for (i in 0..days - 1) { - println("-------- day $i --------") - println("name, sellIn, quality") - for (item in items) { - println(item) - } - println() - app.updateQuality() - } - - -} diff --git a/src/test/kotlin/com/gildedrose/acceptance/ThirtyDaysAcceptanceTests.kt b/src/test/kotlin/com/gildedrose/acceptance/ThirtyDaysAcceptanceTests.kt new file mode 100644 index 00000000..b9fab047 --- /dev/null +++ b/src/test/kotlin/com/gildedrose/acceptance/ThirtyDaysAcceptanceTests.kt @@ -0,0 +1,50 @@ +package com.gildedrose.acceptance + +import com.gildedrose.GildedRose +import com.gildedrose.Item +import com.gildedrose.core.TestToFileHandler +import org.junit.Assert.assertEquals +import org.junit.Test + +class ThirtyDaysAcceptanceTests { + + private val testToFileHandler = TestToFileHandler("ThirtyDays") + + @Test + fun withInitialTextFixture_whenRunForThirtyDays_itShouldHaveSameOutputAsLegacyCode() { + val initialTextFixture = arrayOf( + Item("+5 Dexterity Vest", 10, 20), // + Item("Aged Brie", 2, 0), // + Item("Elixir of the Mongoose", 5, 7), // + Item("Sulfuras, Hand of Ragnaros", 0, 80), // + Item("Sulfuras, Hand of Ragnaros", -1, 80), + Item("Backstage passes to a TAFKAL80ETC concert", 15, 20), + Item("Backstage passes to a TAFKAL80ETC concert", 10, 49), + Item("Backstage passes to a TAFKAL80ETC concert", 5, 49), + // this conjured item does not work properly yet + Item("Conjured Mana Cake", 3, 6)) + + val output = runWithItemsForDays(initialTextFixture, 30) + + assertEquals(output, testToFileHandler.read()) + } + + private fun runWithItemsForDays(items: Array, days: Int): String { + var output = "" + + val app = GildedRose(items) + + for (i in 0 until days) { + output += "\nDAY $i\n" + + items.forEach { + val newLine = if (it == items.last()) "" else "\n" + output += "$it$newLine" + } + + app.updateQuality() + } + + return output + } +} \ No newline at end of file diff --git a/src/test/kotlin/com/gildedrose/core/TestToFileHandler.kt b/src/test/kotlin/com/gildedrose/core/TestToFileHandler.kt new file mode 100644 index 00000000..9db55ac8 --- /dev/null +++ b/src/test/kotlin/com/gildedrose/core/TestToFileHandler.kt @@ -0,0 +1,13 @@ +package com.gildedrose.core + +import java.io.File + +class TestToFileHandler( + fileName: String) { + + val filePath = "texttest/$fileName.txt" + + fun write(text: String) = File(filePath).bufferedWriter().use { it.write(text) } + + fun read() = File(filePath).bufferedReader().readLines().joinToString(separator = "\n") +} \ No newline at end of file From c7ef152ccfc16fe90e05bb4fdda6acbc439a7365 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Fri, 5 Oct 2018 20:29:33 +0200 Subject: [PATCH 6/6] Add assertj library --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 17b9ae55..503e2f53 100644 --- a/build.gradle +++ b/build.gradle @@ -11,6 +11,7 @@ repositories { dependencies { compile 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71' testCompile 'junit:junit:4.12' + testCompile "org.assertj:assertj-core:3.8.0" } compileKotlin {