diff --git a/src/main/java/ch/zhaw/ads/BracketServer.java b/src/main/java/ch/zhaw/ads/BracketServer.java new file mode 100644 index 0000000..24c7164 --- /dev/null +++ b/src/main/java/ch/zhaw/ads/BracketServer.java @@ -0,0 +1,48 @@ +package ch.zhaw.ads; + +import java.util.Map; +import static java.util.Map.entry; + +public class BracketServer implements CommandExecutor { + + @Override + public String execute(String command) { + StringBuffer result = new StringBuffer(100); + result.append("Die Eingabe war \""); + result.append(command); + result.append("\"\n"); + return result.toString(); + } + + private Map openingBrackets = Map.ofEntries( + entry('(', ')'), + entry('[', ']'), + entry('{', '}') + ); + + private Map closingBrackets = Map.ofEntries( + entry(')', '('), + entry(']', '['), + entry('}', '{') + ); + + public boolean checkBrackets(String input) { + ListStack bracketStack = new ListStack<>(); + for (int i = 0; i < input.length(); i++) { + char cur_char = input.charAt(i); + if (openingBrackets.containsKey(cur_char)) { + bracketStack.push(cur_char); + } + if (closingBrackets.containsKey(cur_char)) { + if (bracketStack.isEmpty()) { + return false; + } + Character last = (Character) bracketStack.pop(); + if (last != closingBrackets.get(cur_char)) { + return false; + } + } + } + return bracketStack.isEmpty(); + } +} diff --git a/src/test/java/ch/zhaw/ads/BracketServerTest.java b/src/test/java/ch/zhaw/ads/BracketServerTest.java index f35661d..abbe219 100644 --- a/src/test/java/ch/zhaw/ads/BracketServerTest.java +++ b/src/test/java/ch/zhaw/ads/BracketServerTest.java @@ -3,9 +3,10 @@ package ch.zhaw.ads; import org.junit.Test; import org.junit.Before; import static org.junit.Assert.*; + public class BracketServerTest { -/* BracketServer bs; + BracketServer bs; @Before public void setUp() throws Exception { @@ -24,6 +25,4 @@ public class BracketServerTest { test("[(3 +3)* 35 +3]* {3 +2}",true); test("[({3 +3)* 35} +3]* {3 +2}",false); } - - */ }