Checkstyle and tests

This commit is contained in:
Arne Keller 2020-02-28 15:24:56 +01:00
parent b2d3e2e6e6
commit f274b25ae2
8 changed files with 29 additions and 30 deletions

View File

@ -6,3 +6,5 @@ list-resources I can buy
reset
reset the game
rollD8 5
start creating,good,task,specifications,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a
start with,less,cards

View File

@ -6,3 +6,5 @@ Error, invalid list-resources argument: none expected
OK
Error, invalid reset argument: none expected
Error, not expecting dice roll
Error, invalid start argument value(s)
Error, invalid start arguments

View File

@ -8,6 +8,7 @@ import java.util.Arrays;
import java.util.Deque;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import static edu.kit.informatik.model.Item.AXE;
@ -105,7 +106,7 @@ public class CardGame {
if (canBuild(item)) {
// remove used resources
for (Card resource : item.resourcesNeeded()) {
assert(resources.removeLastOccurrence(resource)); // TODO: remove assert
assert resources.removeLastOccurrence(resource); // TODO: remove assert
}
items.add(item);
if (item.equals(STEAMBOAT) || item.equals(BALLOON)) {
@ -146,8 +147,8 @@ public class CardGame {
return new ArrayList<>(items);
}
public List<Item> getBuildableItems() {
return Arrays.stream(Item.values()).filter(this::canBuild).collect(Collectors.toList());
public Set<Item> getBuildableItems() {
return Arrays.stream(Item.values()).filter(this::canBuild).collect(Collectors.toSet());
}
public void reset() {

View File

@ -17,21 +17,21 @@ public enum Item {
public Card[] resourcesNeeded() {
switch (this) {
case AXE:
return new Card[] { METAL, METAL, METAL };
return new Card[] {METAL, METAL, METAL};
case CLUB:
return new Card[] { WOOD, WOOD, WOOD };
return new Card[] {WOOD, WOOD, WOOD};
case SHACK:
return new Card[] { WOOD, WOOD, METAL, PLASTIC, PLASTIC };
return new Card[] {WOOD, WOOD, METAL, PLASTIC, PLASTIC};
case FIREPLACE:
return new Card[] { WOOD, WOOD, WOOD, METAL };
return new Card[] {WOOD, WOOD, WOOD, METAL};
case SAILING_RAFT:
return new Card[] { WOOD, WOOD, WOOD, WOOD, METAL, METAL, PLASTIC, PLASTIC };
return new Card[] {WOOD, WOOD, WOOD, WOOD, METAL, METAL, PLASTIC, PLASTIC};
case HANG_GLIDER:
return new Card[] { WOOD, WOOD, METAL, METAL, PLASTIC, PLASTIC, PLASTIC, PLASTIC };
return new Card[] {WOOD, WOOD, METAL, METAL, PLASTIC, PLASTIC, PLASTIC, PLASTIC};
case STEAMBOAT:
return new Card[] { METAL, METAL, METAL, METAL, METAL, METAL, PLASTIC };
return new Card[] {METAL, METAL, METAL, METAL, METAL, METAL, PLASTIC};
case BALLOON:
return new Card[] { WOOD, PLASTIC, PLASTIC, PLASTIC, PLASTIC, PLASTIC, PLASTIC };
return new Card[] {WOOD, PLASTIC, PLASTIC, PLASTIC, PLASTIC, PLASTIC, PLASTIC};
default:
return null;
}

View File

@ -6,19 +6,18 @@ import edu.kit.informatik.model.Item;
import edu.kit.informatik.ui.InvalidInputException;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import static edu.kit.informatik.ui.command.CommandFactory.BUILDABLE;
public class Buildable extends Command {
@Override
public void apply(CardGame game) {
List<Item> buildable = game.getBuildableItems();
Set<Item> buildable = game.getBuildableItems();
if (buildable.isEmpty()) {
Terminal.printLine("EMPTY");
} else {
buildable.sort(Comparator.comparing(Object::toString));
buildable.forEach(Terminal::printLine);
buildable.stream().sorted(Comparator.comparing(Object::toString)).forEach(Terminal::printLine);
}
}

View File

@ -11,7 +11,7 @@ import static edu.kit.informatik.ui.command.CommandFactory.LIST_BUILDINGS;
public class ListBuildings extends Command {
@Override
public void apply(CardGame game) throws InvalidInputException {
public void apply(CardGame game) {
List<Item> items = game.getItems();
if (items.isEmpty()) {
Terminal.printLine("EMPTY");

View File

@ -11,7 +11,7 @@ import static edu.kit.informatik.ui.command.CommandFactory.LIST_RESOURCES;
public class ListResources extends Command {
@Override
public void apply(CardGame game) throws InvalidInputException {
public void apply(CardGame game) {
Deque<Card> resources = game.getResources();
if (resources.isEmpty()) {
Terminal.printLine("EMPTY");

View File

@ -6,18 +6,12 @@ import edu.kit.informatik.model.CardGame;
import edu.kit.informatik.ui.InvalidInputException;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Deque;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static edu.kit.informatik.ui.command.CommandFactory.CARD;
public class Start extends Command {
private static final Pattern START_ARGUMENTS = Pattern.compile("start ((?:(?:" + CARD + "),){63}(?:" + CARD + "))");
private static final Pattern START_ARGUMENTS = Pattern.compile("start ((\\w+,){63}(\\w+))");
private Deque<Card> cards;
@ -39,13 +33,14 @@ public class Start extends Command {
if (!matcher.matches()) {
throw new InvalidInputException("invalid start arguments");
}
cards = Arrays.stream(matcher.group(1).split(","))
.map(Card::parse)
.collect(Collectors.toCollection(ArrayDeque::new));
if (cards.stream().anyMatch(Objects::isNull)) {
cards = null;
cards = new ArrayDeque<>();
for (String s : matcher.group(1).split(",")) {
Card card = Card.parse(s);
if (card == null) {
throw new InvalidInputException("invalid start argument value(s)");
}
cards.add(card);
}
}
/*
Dieser Befehl ermöglicht es dem Benutzer, ein neues Spiel zu starten. Dieser Befehl kann nur