Test integration of path & structure

Signed-off-by: TheMode <themode@outlook.fr>
This commit is contained in:
TheMode 2022-04-13 13:16:23 +02:00
parent 50a7d7ca81
commit 0875becdc7
1 changed files with 47 additions and 0 deletions

View File

@ -1,9 +1,12 @@
package net.minestom.server.tag;
import net.minestom.server.entity.PlayerSkin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.junit.jupiter.api.Test;
import java.util.UUID;
import static net.minestom.server.api.TestUtils.assertEqualsSNBT;
import static org.junit.jupiter.api.Assertions.*;
@ -129,4 +132,48 @@ public class TagStructureTest {
""", handler.asCompound());
}
}
@Test
public void pathOverride() {
var handler = TagHandler.newHandler();
Tag<UUID> uuidTag = Tag.UUID("Id").path("SkullOwner");
Tag<PlayerSkin> skinTag = Tag.Structure("Properties", new TagSerializer<PlayerSkin>() {
@Override
public @Nullable PlayerSkin read(@NotNull TagReadable reader) {
final String value = reader.getTag(Tag.String("Value"));
final String signature = reader.getTag(Tag.String("Signature"));
if (value == null || signature == null) return null;
return new PlayerSkin(value, signature);
}
@Override
public void write(@NotNull TagWritable writer, @NotNull PlayerSkin value) {
writer.setTag(Tag.String("Value"), value.textures());
writer.setTag(Tag.String("Signature"), value.signature());
}
}).path("SkullOwner");
var uuid = UUID.fromString("a4a9f3e7-f8b5-4b8e-8b3d-b8b9f8b9f8b9");
var skin = new PlayerSkin("textures", "signature");
handler.setTag(uuidTag, uuid);
handler.setTag(skinTag, skin);
assertEquals(uuid, handler.getTag(uuidTag));
assertEquals(skin, handler.getTag(skinTag));
assertEqualsSNBT("""
{
"SkullOwner":{
"Id":[
I;-1532365849,
-122336370,
-1958889287,
-122029895
],
"Properties":{
"Signature":"signature",
"Value":"textures"
}
}
}
""", handler.asCompound());
}
}