This commit is contained in:
Philip 2016-07-04 05:57:13 +00:00 committed by GitHub
commit 3916c6d25b
3 changed files with 1845 additions and 3 deletions

View File

@ -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);
}
}

View File

@ -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() ); }
}

File diff suppressed because it is too large Load Diff