1
- import com .datasiqn .commandcore .argument .type .ArgumentType ;
2
1
import com .datasiqn .commandcore .argument .StringArgumentReader ;
2
+ import com .datasiqn .commandcore .argument .type .ArgumentType ;
3
3
import com .datasiqn .resultapi .Result ;
4
+ import org .bukkit .Bukkit ;
4
5
import org .bukkit .Material ;
6
+ import org .bukkit .World ;
7
+ import org .bukkit .entity .EntityType ;
8
+ import org .bukkit .entity .Player ;
5
9
import org .bukkit .util .Vector ;
6
10
import org .jetbrains .annotations .NotNull ;
7
11
import org .junit .Test ;
8
12
13
+ import java .util .function .Predicate ;
14
+
9
15
import static com .datasiqn .commandcore .argument .type .ArgumentType .*;
10
- import static org .junit .Assert .assertEquals ;
11
16
import static org .junit .Assert .assertTrue ;
12
17
13
18
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
+
14
28
@ Test
15
29
public void testWord () {
16
30
testOk ("hello there" , WORD , "hello" );
@@ -64,6 +78,40 @@ public void testVector() {
64
78
testErr ("bla word a" , VECTOR );
65
79
}
66
80
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
+
67
115
@ Test
68
116
public void testMaterial () {
69
117
testOk ("stick" , MATERIAL , Material .STICK );
@@ -84,8 +132,28 @@ public void testItem() {
84
132
testErr ("wall_torch" , ITEM );
85
133
}
86
134
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
+ }
89
157
90
158
// Skip command because that won't work in a testing environment
91
159
// public void testCommand() {}
@@ -109,13 +177,31 @@ public void testRangedInt() {
109
177
testErr ("number" , ranged );
110
178
}
111
179
180
+ private <T > void testOk (String arg , @ NotNull ArgumentType <T > type ) {
181
+ this .<T >testOk (arg , type , val -> true );
182
+ }
112
183
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 ) {
113
187
Result <T , String > result = type .parse (new StringArgumentReader (arg ));
114
188
assertTrue (result .isOk ());
115
- assertEquals ( result .unwrap (), val );
189
+ assertTrue ( tester . test ( result .unwrap ()) );
116
190
}
117
191
118
192
private void testErr (String arg , @ NotNull ArgumentType <?> type ) {
119
193
assertTrue (type .parse (new StringArgumentReader (arg )).isError ());
120
194
}
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
+ }
121
207
}
0 commit comments