mirror of https://github.com/Minestom/Minestom.git
52 lines
2.0 KiB
Java
52 lines
2.0 KiB
Java
package net.minestom.server.command;
|
|
|
|
import net.minestom.testing.Env;
|
|
import net.minestom.testing.EnvTest;
|
|
import net.minestom.server.command.builder.Command;
|
|
import net.minestom.server.command.builder.suggestion.SuggestionEntry;
|
|
import net.minestom.server.coordinate.Pos;
|
|
import net.minestom.server.network.packet.client.play.ClientTabCompletePacket;
|
|
import net.minestom.server.network.packet.server.play.TabCompletePacket;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.util.List;
|
|
|
|
import static net.minestom.server.command.builder.arguments.ArgumentType.Literal;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
|
|
|
@EnvTest
|
|
public class CommandSuggestionIntegrationTest {
|
|
|
|
@Test
|
|
public void suggestion(Env env) {
|
|
var instance = env.createFlatInstance();
|
|
var connection = env.createConnection();
|
|
var player = connection.connect(instance, new Pos(0, 42, 0)).join();
|
|
|
|
var command = new Command("test");
|
|
command.addSyntax((sender, context) -> {
|
|
|
|
}, Literal("arg").setSuggestionCallback((sender, context, suggestion) -> {
|
|
assertEquals(player, sender);
|
|
assertNull(context.get("arg"));
|
|
assertEquals("test", context.getCommandName());
|
|
assertEquals("test te", context.getInput());
|
|
suggestion.addEntry(new SuggestionEntry("test1"));
|
|
}));
|
|
|
|
env.process().command().register(command);
|
|
|
|
var listener = connection.trackIncoming(TabCompletePacket.class);
|
|
player.addPacketToQueue(new ClientTabCompletePacket(3, "test te"));
|
|
player.interpretPacketQueue();
|
|
|
|
listener.assertSingle(tabCompletePacket -> {
|
|
assertEquals(3, tabCompletePacket.transactionId());
|
|
assertEquals(6, tabCompletePacket.start());
|
|
assertEquals(2, tabCompletePacket.length());
|
|
assertEquals(List.of(new TabCompletePacket.Match("test1", null)), tabCompletePacket.matches());
|
|
});
|
|
}
|
|
}
|