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

3 years ago
  1. package de.edu.hsfulda.ciip.tdd;
  2. import java.util.LinkedList;
  3. import java.util.List;
  4. public class TannenbaumRenderer {
  5. private static final int BOTH_DIRECTIONS = 2;
  6. private static final int OFFSET = 1;
  7. private static final int MIDDLE_BRANCH = 1;
  8. private static final String SYMBOL_TRUNK = "I";
  9. private static final String SYMBOL_BRANCH = "X";
  10. private static final String SYMBOL_INDENT = " ";
  11. private final StringRepeater symbolRepeater;
  12. public TannenbaumRenderer(StringRepeater symbolRepeater) {
  13. this.symbolRepeater = symbolRepeater;
  14. }
  15. public List<String> getTreeOf(int size) {
  16. List<String> tree = new LinkedList<>();
  17. renderTreeSlices(size, tree);
  18. renderTrunk(size, tree);
  19. return tree;
  20. }
  21. private void renderTrunk(int size, List<String> tree) {
  22. StringBuilder slice = new StringBuilder();
  23. symbolRepeater.repeatSymbol(slice, size - MIDDLE_BRANCH, SYMBOL_INDENT);
  24. symbolRepeater.repeatSymbol(slice, MIDDLE_BRANCH, SYMBOL_TRUNK);
  25. tree.add(slice.toString());
  26. }
  27. private void renderTreeSlices(int size, List<String> tree) {
  28. for (int sliceWidth = 0; sliceWidth < size; sliceWidth++) {
  29. renderSingleSlice(size, tree, sliceWidth);
  30. }
  31. }
  32. private void renderSingleSlice(int size, List<String> tree, int sliceWidth) {
  33. StringBuilder slice = new StringBuilder();
  34. symbolRepeater.repeatSymbol(slice, size - (sliceWidth + OFFSET), SYMBOL_INDENT);
  35. symbolRepeater.repeatSymbol(slice, sliceWidth * BOTH_DIRECTIONS + MIDDLE_BRANCH, SYMBOL_BRANCH);
  36. tree.add(slice.toString());
  37. }
  38. }