Skip to content

Commit d51a509

Browse files
authored
Add interpreter design pattern with test case (#59)
1 parent d6d55eb commit d51a509

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

DesignPatterns/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ with practical examples and best practices for using design patterns to create r
1212
- [Chain of Responsibility](src/main/java/pl/mperor/lab/java/design/pattern/behavioral/chain/of/responsibility) 🔗
1313
- [Command](src/main/java/pl/mperor/lab/java/design/pattern/behavioral/command) 📝
1414
- [Execute Around Method (EAM)](src/main/java/pl/mperor/lab/java/design/pattern/behavioral/eam)
15+
- [Interpreter](src/main/java/pl/mperor/lab/java/design/pattern/behavioral/interpreter) 📰
1516
- [Mediator](src/main/java/pl/mperor/lab/java/design/pattern/behavioral/mediator) 🗣️
1617
- [Memento](src/main/java/pl/mperor/lab/java/design/pattern/behavioral/memento) 💾
1718
- [Observer](src/main/java/pl/mperor/lab/java/design/pattern/behavioral/observer) 👀
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package pl.mperor.lab.java.design.pattern.behavioral.interpreter;
2+
3+
@FunctionalInterface
4+
interface CommandInterpreter {
5+
6+
String interpret(String source);
7+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package pl.mperor.lab.java.design.pattern.behavioral.interpreter;
2+
3+
import org.junit.jupiter.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
9+
public class CommandInterpreterTest {
10+
11+
@Test
12+
public void testCommandInterpreter() {
13+
Map<String, CommandInterpreter> commands = new HashMap<>();
14+
commands.put("/welcome", name -> "👋 Welcome " + name + "!");
15+
commands.put("/shout", message -> "❗" + message.toUpperCase());
16+
17+
Assertions.assertEquals("👋 Welcome Alice 👱‍♀️!",
18+
commands.get("/welcome").interpret("Alice 👱‍♀️")
19+
);
20+
Assertions.assertEquals("❗ARE U READY?",
21+
commands.get("/shout").interpret("Are u ready?")
22+
);
23+
}
24+
}

0 commit comments

Comments
 (0)