Skip to content

Commit 7d936f8

Browse files
committed
Use strategy pattern in Language enum
Add test
1 parent 292fba3 commit 7d936f8

4 files changed

Lines changed: 25 additions & 19 deletions

File tree

src/Application.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ void sayHello(ParsedArgs parsedArgs) {
1515
if (parsedArgs.hasHelpFlag()) {
1616
printHelp();
1717
} else {
18-
IO.println(parsedArgs.getLanguage().getGreeting());
18+
IO.println(parsedArgs.getLanguage().greet());
1919
}
2020
}
2121

src/Greeter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
interface Greeter {
2+
String greet();
3+
}

src/Language.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
import module java.base;
22

3-
enum Language {
3+
enum Language implements Greeter {
44

5-
French("Bonjour", new int[]{0x1F1EB, 0x1F1F7}),
6-
English("Hello", new int[]{0x1F1EC, 0x1F1E7});
7-
8-
private final String message;
9-
private final int[] emoji;
10-
11-
Language(String message, int[] emoji) {
12-
this.message = message;
13-
this.emoji = emoji;
14-
}
15-
16-
String getGreeting() {
17-
return "%s %s%s".formatted(message, Character.toString(emoji[0]), Character.toString(emoji[1]));
18-
}
5+
French() {
6+
@Override
7+
public String greet() {
8+
return "Bonjour 🇫🇷";
9+
}
10+
},
11+
English() {
12+
@Override
13+
public String greet() {
14+
return "Hello 🇬🇧";
15+
}
16+
};
1917

2018
static Optional<Language> fromString(String language) {
2119
return Arrays.stream(values())

src/LanguageTest.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ void failingTest() {
1414
assert false : "Test was expected to fail.";
1515
}
1616

17-
void getGreetingTest() {
18-
String greeting = Language.French.getGreeting();
19-
assert greeting.equals("Bonjour 🇫🇷") : "Incorrect greeting returned";
17+
void frenchGreetTest() {
18+
String greet = Language.French.greet();
19+
assert greet.equals("Bonjour 🇫🇷") : "Incorrect greet returned";
2020
}
21+
22+
void englishGreetTest() {
23+
String greet = Language.French.greet();
24+
assert greet.equals("Hello 🇬🇧") : "Incorrect greet returned";
25+
}

0 commit comments

Comments
 (0)