XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEServerManager

【Java】我的世界XFE服务器管理器

公开
关注 0 Fork 0 Star 0
UTF-8
package com.xfestudio.xfeservermanager.api;

import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

import com.xfestudio.xfeservermanager.api.command.CommandNames;
import com.xfestudio.xfeservermanager.api.command.InvocationAst;
import com.xfestudio.xfeservermanager.api.world.WorldStatePayload;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Test;

class NeutralModelTest {
    @Test
    void commandAliasesAndNamespacesCanonicalize() {
        assertEquals("minecraft:teleport", CommandNames.canonicalize("/tp @s 0 0 0"));
        assertEquals("minecraft:teleport", CommandNames.canonicalize("minecraft:teleport"));
        assertEquals("example:admin", CommandNames.canonicalize("example:admin"));

        InvocationAst alias = new InvocationAst("tp @s 0 0 0", "tp", List.of("tp"), Map.of(),
                List.of(), List.of(), List.of(), true);
        assertEquals(List.of("teleport"), alias.commandPath());
    }

    @Test
    void opaqueWorldPayloadIsDefensivelyCopied() {
        byte[] bytes = {1, 2, 3};
        WorldStatePayload payload = new WorldStatePayload("example:codec", 1,
                "application/octet-stream", bytes, Map.of());
        bytes[0] = 9;
        byte[] returned = payload.payload();
        returned[1] = 9;

        assertArrayEquals(new byte[]{1, 2, 3}, payload.payload());
        assertThrows(UnsupportedOperationException.class,
                () -> payload.metadata().put("mutable", "no"));
    }
}