Skip to content

Commit c90a564

Browse files
committed
test: add EnumAdapter unit tests
1 parent 01dec5a commit c90a564

3 files changed

Lines changed: 614 additions & 10 deletions

File tree

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
package dev.objz.commandbridge.scripting.bind;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertTrue;
5+
6+
import java.util.List;
7+
8+
import org.junit.jupiter.api.BeforeAll;
9+
import org.junit.jupiter.api.Test;
10+
import org.slf4j.LoggerFactory;
11+
12+
import dev.objz.commandbridge.logging.Log;
13+
14+
class PlaceholderExtractorTest {
15+
16+
@BeforeAll
17+
static void installLog() {
18+
try {
19+
Log.install(LoggerFactory.getLogger("test"));
20+
} catch (IllegalStateException e) {
21+
// Log already installed, ignore
22+
}
23+
}
24+
25+
@Test
26+
void testSinglePlaceholder() {
27+
List<String> result = PlaceholderExtractor.extract("/give ${player} diamond");
28+
assertEquals(List.of("player"), result);
29+
}
30+
31+
@Test
32+
void testMultiplePlaceholders() {
33+
List<String> result = PlaceholderExtractor.extract("${cmd} ${target}");
34+
assertEquals(List.of("cmd", "target"), result);
35+
}
36+
37+
@Test
38+
void testNoPlaceholders() {
39+
List<String> result = PlaceholderExtractor.extract("plain command");
40+
assertTrue(result.isEmpty());
41+
}
42+
43+
@Test
44+
void testEmptyString() {
45+
List<String> result = PlaceholderExtractor.extract("");
46+
assertTrue(result.isEmpty());
47+
}
48+
49+
@Test
50+
void testNullString() {
51+
List<String> result = PlaceholderExtractor.extract(null);
52+
assertTrue(result.isEmpty());
53+
}
54+
55+
@Test
56+
void testBlankString() {
57+
List<String> result = PlaceholderExtractor.extract(" ");
58+
assertTrue(result.isEmpty());
59+
}
60+
61+
@Test
62+
void testRepeatedPlaceholder() {
63+
List<String> result = PlaceholderExtractor.extract("${a} ${a}");
64+
assertEquals(List.of("a", "a"), result);
65+
}
66+
67+
@Test
68+
void testAdjacentPlaceholders() {
69+
List<String> result = PlaceholderExtractor.extract("${x}${y}");
70+
assertEquals(List.of("x", "y"), result);
71+
}
72+
73+
@Test
74+
void testPlaceholderWithWhitespace() {
75+
List<String> result = PlaceholderExtractor.extract("${ player }");
76+
assertEquals(List.of("player"), result);
77+
}
78+
79+
@Test
80+
void testBlankPlaceholder() {
81+
List<String> result = PlaceholderExtractor.extract("${} command");
82+
assertTrue(result.isEmpty());
83+
}
84+
85+
@Test
86+
void testPlaceholderWithSpaces() {
87+
List<String> result = PlaceholderExtractor.extract("${ } command");
88+
assertTrue(result.isEmpty());
89+
}
90+
91+
@Test
92+
void testMixedValidAndBlank() {
93+
List<String> result = PlaceholderExtractor.extract("${valid} ${} ${another}");
94+
assertEquals(List.of("valid", "another"), result);
95+
}
96+
97+
@Test
98+
void testExtractAllWithMultipleCommands() {
99+
List<String> commands = List.of(
100+
"/give ${player} diamond",
101+
"${cmd} ${target}"
102+
);
103+
List<String> result = PlaceholderExtractor.extractAll(commands);
104+
assertEquals(List.of("player", "cmd", "target"), result);
105+
}
106+
107+
@Test
108+
void testExtractAllWithEmptyList() {
109+
List<String> result = PlaceholderExtractor.extractAll(List.of());
110+
assertTrue(result.isEmpty());
111+
}
112+
113+
@Test
114+
void testExtractAllWithNullList() {
115+
List<String> result = PlaceholderExtractor.extractAll(null);
116+
assertTrue(result.isEmpty());
117+
}
118+
119+
@Test
120+
void testExtractAllWithNullCommand() {
121+
List<String> commands = new java.util.ArrayList<>();
122+
commands.add("/give ${player} diamond");
123+
commands.add(null);
124+
commands.add("${cmd} ${target}");
125+
List<String> result = PlaceholderExtractor.extractAll(commands);
126+
assertEquals(List.of("player", "cmd", "target"), result);
127+
}
128+
129+
@Test
130+
void testExtractAllWithBlankCommand() {
131+
List<String> commands = List.of(
132+
"/give ${player} diamond",
133+
" ",
134+
"${cmd} ${target}"
135+
);
136+
List<String> result = PlaceholderExtractor.extractAll(commands);
137+
assertEquals(List.of("player", "cmd", "target"), result);
138+
}
139+
140+
@Test
141+
void testExtractAllWithDuplicates() {
142+
List<String> commands = List.of(
143+
"${a} ${a}",
144+
"${a} ${b}"
145+
);
146+
List<String> result = PlaceholderExtractor.extractAll(commands);
147+
assertEquals(List.of("a", "a", "a", "b"), result);
148+
}
149+
150+
@Test
151+
void testComplexCommand() {
152+
List<String> result = PlaceholderExtractor.extract(
153+
"execute as ${player} at @s run give @s ${item} ${amount}"
154+
);
155+
assertEquals(List.of("player", "item", "amount"), result);
156+
}
157+
158+
@Test
159+
void testPlaceholderWithSpecialChars() {
160+
List<String> result = PlaceholderExtractor.extract("${player_name}");
161+
assertEquals(List.of("player_name"), result);
162+
}
163+
164+
@Test
165+
void testPlaceholderWithNumbers() {
166+
List<String> result = PlaceholderExtractor.extract("${arg1} ${arg2}");
167+
assertEquals(List.of("arg1", "arg2"), result);
168+
}
169+
170+
}

core/src/test/java/dev/objz/commandbridge/scripting/bind/adapters/EnumAdapterTest.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,47 +30,42 @@ private static ConvertContext ctx() {
3030
}
3131

3232
@Test
33-
@SuppressWarnings("unchecked")
3433
void parsesExactMatch() {
3534
EnumAdapter adapter = new EnumAdapter();
3635
YamlNode node = YamlNode.scalar("BACKEND");
37-
Location result = (Location) adapter.fromYaml(node, Location.class, ctx());
36+
Enum<?> result = adapter.fromYaml(node, Location.class, ctx());
3837
assertEquals(Location.BACKEND, result);
3938
}
4039

4140
@Test
42-
@SuppressWarnings("unchecked")
4341
void parsesLowercase() {
4442
EnumAdapter adapter = new EnumAdapter();
4543
YamlNode node = YamlNode.scalar("backend");
46-
Location result = (Location) adapter.fromYaml(node, Location.class, ctx());
44+
Enum<?> result = adapter.fromYaml(node, Location.class, ctx());
4745
assertEquals(Location.BACKEND, result);
4846
}
4947

5048
@Test
51-
@SuppressWarnings("unchecked")
5249
void parsesUppercase() {
5350
EnumAdapter adapter = new EnumAdapter();
5451
YamlNode node = YamlNode.scalar("VELOCITY");
55-
Location result = (Location) adapter.fromYaml(node, Location.class, ctx());
52+
Enum<?> result = adapter.fromYaml(node, Location.class, ctx());
5653
assertEquals(Location.VELOCITY, result);
5754
}
5855

5956
@Test
60-
@SuppressWarnings("unchecked")
6157
void parsesMixedCase() {
6258
EnumAdapter adapter = new EnumAdapter();
6359
YamlNode node = YamlNode.scalar("VeLoCiTy");
64-
Location result = (Location) adapter.fromYaml(node, Location.class, ctx());
60+
Enum<?> result = adapter.fromYaml(node, Location.class, ctx());
6561
assertEquals(Location.VELOCITY, result);
6662
}
6763

6864
@Test
69-
@SuppressWarnings("unchecked")
7065
void returnsNullForNullValue() {
7166
EnumAdapter adapter = new EnumAdapter();
7267
YamlNode node = YamlNode.scalar(null);
73-
Location result = (Location) adapter.fromYaml(node, Location.class, ctx());
68+
Enum<?> result = adapter.fromYaml(node, Location.class, ctx());
7469
assertNull(result);
7570
}
7671

0 commit comments

Comments
 (0)