Unittests mit Mockito
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.5 KiB

package de.edu.hsfulda.ciip.tdd;
import java.util.LinkedList;
import java.util.List;
public class TannenbaumRenderer {
private static final int BOTH_DIRECTIONS = 2;
private static final int OFFSET = 1;
private static final int MIDDLE_BRANCH = 1;
private static final String SYMBOL_TRUNK = "I";
private static final String SYMBOL_BRANCH = "X";
private static final String SYMBOL_INDENT = " ";
private final StringRepeater symbolRepeater;
public TannenbaumRenderer(StringRepeater symbolRepeater) {
this.symbolRepeater = symbolRepeater;
}
public List<String> getTreeOf(int size) {
List<String> tree = new LinkedList<>();
renderTreeSlices(size, tree);
renderTrunk(size, tree);
return tree;
}
private void renderTrunk(int size, List<String> tree) {
StringBuilder slice = new StringBuilder();
symbolRepeater.repeatSymbol(slice, size - MIDDLE_BRANCH, SYMBOL_INDENT);
symbolRepeater.repeatSymbol(slice, MIDDLE_BRANCH, SYMBOL_TRUNK);
tree.add(slice.toString());
}
private void renderTreeSlices(int size, List<String> tree) {
for (int sliceWidth = 0; sliceWidth < size; sliceWidth++) {
renderSingleSlice(size, tree, sliceWidth);
}
}
private void renderSingleSlice(int size, List<String> tree, int sliceWidth) {
StringBuilder slice = new StringBuilder();
symbolRepeater.repeatSymbol(slice, size - (sliceWidth + OFFSET), SYMBOL_INDENT);
symbolRepeater.repeatSymbol(slice, sliceWidth * BOTH_DIRECTIONS + MIDDLE_BRANCH, SYMBOL_BRANCH);
tree.add(slice.toString());
}
}