Skip to content

Commit 28fb84e

Browse files
committed
Improved the ban cmd test-case
1 parent 0faa07a commit 28fb84e

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

core/src/test/java/dev/velix/imperat/TestSmartUsageResolve.java

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void banWithSwitchFlag() {
8383
test(
8484
"ban mqzen",
8585
ResolvedArgsData.empty()
86-
.arg("player", "mqzen")
86+
.arg("target", "mqzen")
8787
.flag("silent", false)
8888
.flag("ip", false)
8989
.arg("duration", null)
@@ -94,17 +94,17 @@ public void banWithSwitchFlag() {
9494
test(
9595
"ban mqzen -s",
9696
ResolvedArgsData.empty()
97-
.arg("player", "mqzen")
97+
.arg("target", "mqzen")
9898
.flag("silent", true)
99-
.arg("duration", null)
10099
.flag("ip", false)
100+
.arg("duration", null)
101101
.arg("reason", "Breaking server laws")
102102

103103
);
104104
test(
105105
"ban mqzen -s 1d",
106106
ResolvedArgsData.empty()
107-
.arg("player", "mqzen")
107+
.arg("target", "mqzen")
108108
.flag("silent", true)
109109
.flag("ip", false)
110110
.arg("duration", "1d")
@@ -114,7 +114,7 @@ public void banWithSwitchFlag() {
114114
test(
115115
"ban mqzen -s 1d A disgrace to community",
116116
ResolvedArgsData.empty()
117-
.arg("player", "mqzen")
117+
.arg("target", "mqzen")
118118
.flag("silent", true)
119119
.flag("ip", false)
120120
.arg("duration", "1d")
@@ -155,9 +155,20 @@ private ResolvedArgsData(ResolvedContext<TestSource> context) {
155155
args.put(resolved.parameter().name(), resolved.value());
156156
}
157157

158-
for (var flag : context.getResolvedFlags()) {
159-
String name = flag.flag().name();
160-
resolvedFlags.setData(flag.flag().name(), context.getFlagValue(name));
158+
for (var param : context.getDetectedUsage().getParameters()) {
159+
if(!param.isFlag()) {
160+
continue;
161+
}
162+
var flagParam = param.asFlagParameter();
163+
164+
String name = param.asFlagParameter().flagData().name();
165+
166+
Object resolvedValue = context.getFlagValue(name);
167+
if(resolvedValue == null && flagParam.isSwitch()) {
168+
resolvedValue = false;
169+
}
170+
171+
resolvedFlags.setData(name, resolvedValue);
161172
}
162173
}
163174

@@ -181,14 +192,22 @@ public ResolvedArgsData flag(String paramName, Object inputValue) {
181192
}
182193

183194
public boolean matches(ResolvedArgsData other) {
195+
System.out.println("----------------");
196+
System.out.println("Comparing THIS ARGS:");
184197
System.out.println(this.args);
198+
199+
200+
System.out.println("Comparing OTHER ARGS:");
185201
System.out.println(other.args);
202+
203+
System.out.println("Comparing THIS FLAGS:");
186204
System.out.println(this.resolvedFlags.getMap());
205+
206+
System.out.println("Comparing OTHER FLAGS:");
187207
System.out.println(other.resolvedFlags.getMap());
188208

189209

190210
if (args.size() != other.args.size() || resolvedFlags.size() != other.resolvedFlags.size()) {
191-
192211
return false;
193212
}
194213

@@ -203,10 +222,12 @@ public boolean matches(ResolvedArgsData other) {
203222
for (String flagKey : resolvedFlags.getKeys()) {
204223
Object flagValue = resolvedFlags.getData(flagKey).orElse(null);
205224
if (!other.resolvedFlags.getMap().containsKey(flagKey)) {
225+
System.out.println("Flag mismatch: " + flagKey + "=" + flagValue + " != " + flagKey + "=null");
206226
return false;
207227
}
208228
if (!Objects.equals(flagValue, other.resolvedFlags.getData(flagKey)
209229
.orElse(null))) {
230+
System.out.println("Flag mismatch: " + flagKey + "=" + flagValue + " != " + flagKey + "=" + other.resolvedFlags.getData(flagKey).orElse(null));
210231
return false;
211232
}
212233
}

core/src/test/java/dev/velix/imperat/commands/annotations/examples/BanCommand.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import dev.velix.imperat.TestSource;
44
import dev.velix.imperat.annotations.Command;
5+
import dev.velix.imperat.annotations.Default;
56
import dev.velix.imperat.annotations.Description;
67
import dev.velix.imperat.annotations.Greedy;
78
import dev.velix.imperat.annotations.Named;
@@ -29,7 +30,7 @@ public void ban(
2930
@Switch({"silent", "s"}) boolean silent,
3031
@Switch("ip") boolean ip,
3132
@Named("duration") @Optional @Nullable String duration,
32-
@Named("reason") @Optional @Greedy String reason
33+
@Named("reason") @Default("Breaking server laws") @Optional @Greedy String reason
3334
) {
3435
//TODO actual ban logic
3536
String durationFormat = duration == null ? "FOREVER" : "for " + duration;

0 commit comments

Comments
 (0)