mirror of https://github.com/Minestom/Minestom.git
107 lines
3.4 KiB
Java
107 lines
3.4 KiB
Java
package net.minestom.server.command;
|
|
|
|
import net.minestom.server.command.builder.Command;
|
|
import net.minestom.server.command.builder.CommandContext;
|
|
import net.minestom.server.command.builder.arguments.ArgumentType;
|
|
import org.jetbrains.annotations.NotNull;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.util.Set;
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
public class CommandTest {
|
|
|
|
@Test
|
|
public void testNames() {
|
|
Command command = new Command("name1", "name2", "name3");
|
|
|
|
assertEquals("name1", command.getName());
|
|
assertArrayEquals(new String[]{"name2", "name3"}, command.getAliases());
|
|
|
|
// command#getNames does not have any order guarantee, so that cannot be relied on
|
|
assertEquals(Set.of("name1", "name2", "name3"), Set.of(command.getNames()));
|
|
|
|
assertTrue(Command.isValidName(command, "name1"));
|
|
assertTrue(Command.isValidName(command, "name2"));
|
|
}
|
|
|
|
@Test
|
|
public void testGlobalListener() {
|
|
var manager = new CommandManager();
|
|
|
|
AtomicBoolean hasRun = new AtomicBoolean(false);
|
|
|
|
var command = new Command("command") {
|
|
@Override
|
|
public void globalListener(@NotNull CommandSender sender, @NotNull CommandContext context, @NotNull String command) {
|
|
hasRun.set(true);
|
|
context.setArg("key", "value", "value");
|
|
}
|
|
};
|
|
|
|
manager.register(command);
|
|
|
|
AtomicBoolean checkSet = new AtomicBoolean(false);
|
|
command.setDefaultExecutor((sender, context) -> checkSet.set("value".equals(context.get("key"))));
|
|
|
|
manager.executeServerCommand("command");
|
|
|
|
assertTrue(hasRun.get());
|
|
assertTrue(checkSet.get());
|
|
|
|
}
|
|
|
|
@Test
|
|
public void conflictSubcommandString() {
|
|
final CommandManager manager = new CommandManager();
|
|
|
|
final AtomicBoolean subcommandRun = new AtomicBoolean();
|
|
final AtomicBoolean syntaxRun = new AtomicBoolean();
|
|
|
|
final Command command = new Command("command");
|
|
command.addSubcommand(new Command("subcommand") {
|
|
{
|
|
addSyntax((sender, ctx) -> subcommandRun.set(true));
|
|
}
|
|
});
|
|
var argument = ArgumentType.String("id");
|
|
command.addSyntax((sender, ctx) -> syntaxRun.set(true), argument);
|
|
|
|
manager.register(command);
|
|
|
|
manager.executeServerCommand("command subcommand");
|
|
|
|
assertTrue(subcommandRun.get());
|
|
assertFalse(syntaxRun.get());
|
|
}
|
|
|
|
@Test
|
|
public void conflictLiteralString() {
|
|
final CommandManager manager = new CommandManager();
|
|
|
|
final AtomicBoolean literalBool = new AtomicBoolean();
|
|
final AtomicBoolean stringBool = new AtomicBoolean();
|
|
|
|
final Command command = new Command("command");
|
|
var literal = ArgumentType.Literal("literal");
|
|
var string = ArgumentType.String("id");
|
|
command.addSyntax((sender, ctx) -> stringBool.set(true), string);
|
|
command.addSyntax((sender, ctx) -> literalBool.set(true), literal);
|
|
|
|
manager.register(command);
|
|
|
|
manager.executeServerCommand("command literal");
|
|
assertTrue(literalBool.get());
|
|
assertFalse(stringBool.get());
|
|
|
|
literalBool.set(false);
|
|
stringBool.set(false);
|
|
|
|
manager.executeServerCommand("command string");
|
|
assertFalse(literalBool.get());
|
|
assertTrue(stringBool.get());
|
|
}
|
|
}
|