mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 14:31:28 +00:00
Merge 5c0a645fd3 into c6cad5bf8d
This commit is contained in:
commit
3916c6d25b
@ -1,5 +1,10 @@
|
||||
package com.gildedrose;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
class GildedRose {
|
||||
Item[] items;
|
||||
|
||||
@ -59,4 +64,10 @@ class GildedRose {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return Arrays.toString(items);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,17 +1,84 @@
|
||||
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 org.approvaltests.legacycode.LegacyApprovals;
|
||||
import org.approvaltests.reporters.DiffReporter;
|
||||
import org.approvaltests.reporters.JunitReporter;
|
||||
import org.approvaltests.reporters.UseReporter;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@UseReporter(JunitReporter.class)
|
||||
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
|
||||
public void foo() {
|
||||
Item[] items = new Item[] { new Item("foo", 0, 0) };
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
String name = "foo";
|
||||
int sellIn = 0;
|
||||
int quality = 0;
|
||||
GildedRose app = updateQuality(name, sellIn, quality);
|
||||
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