mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
Merge 5c0a645fd3 into c6cad5bf8d
This commit is contained in:
commit
3916c6d25b
@ -1,5 +1,10 @@
|
|||||||
package com.gildedrose;
|
package com.gildedrose;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
import static java.util.stream.Collectors.toList;
|
||||||
|
|
||||||
class GildedRose {
|
class GildedRose {
|
||||||
Item[] items;
|
Item[] items;
|
||||||
|
|
||||||
@ -59,4 +64,10 @@ class GildedRose {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return Arrays.toString(items);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,17 +1,84 @@
|
|||||||
package com.gildedrose;
|
package com.gildedrose;
|
||||||
|
|
||||||
|
import static java.lang.Integer.*;
|
||||||
|
import static java.lang.Integer.MIN_VALUE;
|
||||||
|
import static java.util.function.Function.identity;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
import org.approvaltests.legacycode.LegacyApprovals;
|
||||||
|
import org.approvaltests.reporters.DiffReporter;
|
||||||
|
import org.approvaltests.reporters.JunitReporter;
|
||||||
|
import org.approvaltests.reporters.UseReporter;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
@UseReporter(JunitReporter.class)
|
||||||
public class GildedRoseTest {
|
public class GildedRoseTest {
|
||||||
|
|
||||||
|
Stream<String> ODD_ITEM_NAMES = Σ("", "pie", "foo");
|
||||||
|
Stream<String> KNOWN_ITEM_NAMES =
|
||||||
|
Σ("Aged Brie",
|
||||||
|
"Elixir of the Mongoose",
|
||||||
|
"Sulfuras, Hand of Ragnaros",
|
||||||
|
"Backstage passes to a TAFKAL80ETC concert");
|
||||||
|
Stream<String> UNKNOWN_ITEM_NAMES = Σ("+5 Dexterity Vest", "Conjured Mana Cake");
|
||||||
|
|
||||||
|
Stream<Integer> MIN_DAYS = Σ(MIN_VALUE);
|
||||||
|
Stream<Integer> DAYS_NEAR_ZERO = Σ(-1,0,1);
|
||||||
|
Stream<Integer> SINGLE_DIGIT_DAYS = Σ(4,5,6);
|
||||||
|
Stream<Integer> LOW_DOUBLE_DIGIT_DAYS = Σ(10,11,12);
|
||||||
|
Stream<Integer> HIGH_DOUBLE_DIGIT_DAYS = Σ(99_999,100_000,100_001);
|
||||||
|
Stream<Integer> MAX_DAYS = Σ(MAX_VALUE);
|
||||||
|
|
||||||
|
Stream<Integer> MINIMUM_QUALITY = Σ(0);
|
||||||
|
Stream<Integer> SINGLE_DIGIT_QUALITIES = Σ(1,2,3,4,5);
|
||||||
|
Stream<Integer> DOUBLE_DIGIT_QUALITIES = Σ(12,13,15);
|
||||||
|
Stream<Integer> QUALITIES_NEAR_MAXIMUM = Σ(47,48,49);
|
||||||
|
Stream<Integer> MAXIMUM_QUALITY = Σ(50);
|
||||||
|
Stream<Integer> LEGENDARY_ITEM_QUALITY = Σ(80);
|
||||||
|
|
||||||
|
Stream<String> GOOD_MIX_OF_ITEM_NAMES =
|
||||||
|
⁀(ODD_ITEM_NAMES, KNOWN_ITEM_NAMES, UNKNOWN_ITEM_NAMES);
|
||||||
|
Stream<Integer> GOOD_MIX_OF_NUMBER_OF_DAYS_BY_WHICH_TO_SELL_ITEM =
|
||||||
|
⁀(MIN_DAYS, DAYS_NEAR_ZERO, SINGLE_DIGIT_DAYS, LOW_DOUBLE_DIGIT_DAYS, HIGH_DOUBLE_DIGIT_DAYS, MAX_DAYS);
|
||||||
|
Stream<Integer> GOOD_MIX_OF_ITEM_QUALITY_LEVELS =
|
||||||
|
⁀(MINIMUM_QUALITY, SINGLE_DIGIT_QUALITIES, DOUBLE_DIGIT_QUALITIES, QUALITIES_NEAR_MAXIMUM, MAXIMUM_QUALITY, LEGENDARY_ITEM_QUALITY);
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void foo() {
|
public void foo() {
|
||||||
Item[] items = new Item[] { new Item("foo", 0, 0) };
|
String name = "foo";
|
||||||
GildedRose app = new GildedRose(items);
|
int sellIn = 0;
|
||||||
app.updateQuality();
|
int quality = 0;
|
||||||
|
GildedRose app = updateQuality(name, sellIn, quality);
|
||||||
assertEquals("fixme", app.items[0].name);
|
assertEquals("fixme", app.items[0].name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void regression_test() throws Exception
|
||||||
|
{
|
||||||
|
LegacyApprovals.LockDown(
|
||||||
|
this,
|
||||||
|
"updateQuality",
|
||||||
|
GOOD_MIX_OF_ITEM_NAMES.toArray(),
|
||||||
|
GOOD_MIX_OF_NUMBER_OF_DAYS_BY_WHICH_TO_SELL_ITEM.toArray(),
|
||||||
|
GOOD_MIX_OF_ITEM_QUALITY_LEVELS.toArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
public GildedRose updateQuality(String name, Integer sellIn, Integer quality)
|
||||||
|
{
|
||||||
|
Item[] items = new Item[] { new Item(name, sellIn, quality) };
|
||||||
|
GildedRose app = new GildedRose(items);
|
||||||
|
app.updateQuality();
|
||||||
|
return app;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a stream of As
|
||||||
|
private <A> Stream<A> Σ(A... As){ return Arrays.stream(As); }
|
||||||
|
|
||||||
|
// concatenate streams of As
|
||||||
|
private <A> Stream<A> ⁀(Stream<A>... streams) { return Arrays.stream(streams).flatMap( Function.identity() ); }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
1764
Java/com/gildedrose/GildedRoseTest.regression_test.approved.txt
Normal file
1764
Java/com/gildedrose/GildedRoseTest.regression_test.approved.txt
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user