From 5372781618ceab430dd56fceaec838ef5bca5ef1 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 10 May 2022 09:19:30 +0200 Subject: [PATCH] More tests --- src/de/steamwar/command/AbstractSWCommand.java | 2 +- src/de/steamwar/command/SubCommand.java | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/command/AbstractSWCommand.java b/src/de/steamwar/command/AbstractSWCommand.java index fd371df..1cb830a 100644 --- a/src/de/steamwar/command/AbstractSWCommand.java +++ b/src/de/steamwar/command/AbstractSWCommand.java @@ -170,7 +170,7 @@ public abstract class AbstractSWCommand { if (compare != 0) { return compare; } else { - return Integer.compare(o1.comparableValue, o2.comparableValue); + return Double.compare(o1.comparableValue, o2.comparableValue); } }); commandHelpList.sort((o1, o2) -> { diff --git a/src/de/steamwar/command/SubCommand.java b/src/de/steamwar/command/SubCommand.java index 74d1a80..c928268 100644 --- a/src/de/steamwar/command/SubCommand.java +++ b/src/de/steamwar/command/SubCommand.java @@ -23,6 +23,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; @@ -30,6 +31,14 @@ import java.util.function.Predicate; public class SubCommand { + private static Map, Double> increment = new HashMap<>(); + static { + increment.put(double.class, 0.1); + increment.put(Double.class, 0.1); + increment.put(float.class, 0.1); + increment.put(Float.class, 0.1); + } + private AbstractSWCommand abstractSWCommand; Method method; String[] description; @@ -38,12 +47,11 @@ public class SubCommand { private Function senderFunction; AbstractGuardChecker guardChecker; boolean noTabComplete; - int comparableValue; + double comparableValue; private CommandPart commandPart; SubCommand(AbstractSWCommand abstractSWCommand, Method method, String[] subCommand, Map> localTypeMapper, Map> localGuardChecker, boolean help, String[] description, boolean noTabComplete) { - System.out.println(method); this.abstractSWCommand = abstractSWCommand; this.method = method; this.subCommand = subCommand; @@ -52,6 +60,9 @@ public class SubCommand { Parameter[] parameters = method.getParameters(); comparableValue = parameters[parameters.length - 1].isVarArgs() ? Integer.MAX_VALUE : -parameters.length; + for (Parameter parameter : parameters) { + comparableValue += increment.getOrDefault(parameter.getType(), 0.0); + } guardChecker = SWCommandUtils.getGuardChecker(parameters[0], localGuardChecker);