Skip to content

Commit ffa373e

Browse files
created tests for the newly created argument types
1 parent 23c1028 commit ffa373e

File tree

1 file changed

+91
-5
lines changed

1 file changed

+91
-5
lines changed

src/test/java/ArgumentParserTest.java

Lines changed: 91 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
1-
import com.datasiqn.commandcore.argument.type.ArgumentType;
21
import com.datasiqn.commandcore.argument.StringArgumentReader;
2+
import com.datasiqn.commandcore.argument.type.ArgumentType;
33
import com.datasiqn.resultapi.Result;
4+
import org.bukkit.Bukkit;
45
import org.bukkit.Material;
6+
import org.bukkit.World;
7+
import org.bukkit.entity.EntityType;
8+
import org.bukkit.entity.Player;
59
import org.bukkit.util.Vector;
610
import org.jetbrains.annotations.NotNull;
711
import org.junit.Test;
812

13+
import java.util.function.Predicate;
14+
915
import static com.datasiqn.commandcore.argument.type.ArgumentType.*;
10-
import static org.junit.Assert.assertEquals;
1116
import static org.junit.Assert.assertTrue;
1217

1318
public class ArgumentParserTest {
19+
static {
20+
Bukkit.setServer(new MockServer.Builder()
21+
.addPlayer("bob")
22+
.addPlayer("jim")
23+
.addWorld("world")
24+
.addWorld("nether")
25+
.build());
26+
}
27+
1428
@Test
1529
public void testWord() {
1630
testOk("hello there", WORD, "hello");
@@ -64,6 +78,40 @@ public void testVector() {
6478
testErr("bla word a", VECTOR);
6579
}
6680

81+
@Test
82+
public void testWorld() {
83+
this.<World>testOk("world", WORLD, world -> world.getName().equals("world"));
84+
this.<World>testOk("nETHer", WORLD, world -> world.getName().equals("nether"));
85+
testErr("end", WORLD);
86+
}
87+
88+
@Test
89+
public void testEntity() {
90+
testOk("zombie", ENTITY, EntityType.ZOMBIE);
91+
testOk("armor_stand", ENTITY, EntityType.ARMOR_STAND);
92+
testErr("herobrine", ENTITY);
93+
}
94+
95+
@Test
96+
public void testLivingEntity() {
97+
testOk("player", LIVING_ENTITY, EntityType.PLAYER);
98+
testOk("enderman", LIVING_ENTITY, EntityType.ENDERMAN);
99+
testErr("egg", LIVING_ENTITY);
100+
}
101+
102+
@Test
103+
public void testSpawnableEntity() {
104+
testOk("dropped_item", SPAWNABLE_ENTITY, EntityType.DROPPED_ITEM);
105+
testErr("player", SPAWNABLE_ENTITY);
106+
}
107+
108+
@Test
109+
public void testLootTable() {
110+
testOk("jungle_temple", LOOT_TABLE);
111+
testOk("buried_treasure", LOOT_TABLE);
112+
testErr("blabla", LOOT_TABLE);
113+
}
114+
67115
@Test
68116
public void testMaterial() {
69117
testOk("stick", MATERIAL, Material.STICK);
@@ -84,8 +132,28 @@ public void testItem() {
84132
testErr("wall_torch", ITEM);
85133
}
86134

87-
// Skip player because that won't work in a testing environment
88-
// public void testPlayer() {}
135+
@Test
136+
public void testEnum() {
137+
ArgumentType<UppercaseEnum> uppercaseEnum = new EnumArgumentType<>(UppercaseEnum.class);
138+
testOk("cOoL_ConstANT", uppercaseEnum, UppercaseEnum.COOL_CONSTANT);
139+
testOk("thREE", uppercaseEnum, UppercaseEnum.THREE);
140+
testOk("wow", uppercaseEnum, UppercaseEnum.WOW);
141+
testErr("not an enum", uppercaseEnum);
142+
143+
ArgumentType<BadEnum> badEnum = new EnumArgumentType<>(BadEnum.class);
144+
testOk("pascalcase", badEnum, BadEnum.PascalCase);
145+
testOk("LOWERCASE", badEnum, BadEnum.lowercase);
146+
testOk("CameLcAse", badEnum, BadEnum.camelCase);
147+
testErr("aaaaaa", badEnum);
148+
}
149+
150+
@Test
151+
public void testPlayer() {
152+
this.<Player>testOk("jim", PLAYER, player -> player.getName().equals("jim"));
153+
this.<Player>testOk("bob", PLAYER, player -> player.getName().equals("bob"));
154+
testErr("joe", PLAYER);
155+
testErr("b", PLAYER);
156+
}
89157

90158
// Skip command because that won't work in a testing environment
91159
// public void testCommand() {}
@@ -109,13 +177,31 @@ public void testRangedInt() {
109177
testErr("number", ranged);
110178
}
111179

180+
private <T> void testOk(String arg, @NotNull ArgumentType<T> type) {
181+
this.<T>testOk(arg, type, val -> true);
182+
}
112183
private <T> void testOk(String arg, @NotNull ArgumentType<T> type, T val) {
184+
this.<T>testOk(arg, type, parsed -> parsed.equals(val));
185+
}
186+
private <T> void testOk(String arg, @NotNull ArgumentType<T> type, @NotNull Predicate<T> tester) {
113187
Result<T, String> result = type.parse(new StringArgumentReader(arg));
114188
assertTrue(result.isOk());
115-
assertEquals(result.unwrap(), val);
189+
assertTrue(tester.test(result.unwrap()));
116190
}
117191

118192
private void testErr(String arg, @NotNull ArgumentType<?> type) {
119193
assertTrue(type.parse(new StringArgumentReader(arg)).isError());
120194
}
195+
196+
private enum UppercaseEnum {
197+
COOL_CONSTANT,
198+
THREE,
199+
WOW,
200+
}
201+
202+
private enum BadEnum {
203+
PascalCase,
204+
lowercase,
205+
camelCase,
206+
}
121207
}

0 commit comments

Comments
 (0)