From 0875becdc7fbce9254eb42802116fe673e97b6f7 Mon Sep 17 00:00:00 2001 From: TheMode Date: Wed, 13 Apr 2022 13:16:23 +0200 Subject: [PATCH] Test integration of path & structure Signed-off-by: TheMode --- .../minestom/server/tag/TagStructureTest.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/test/java/net/minestom/server/tag/TagStructureTest.java b/src/test/java/net/minestom/server/tag/TagStructureTest.java index 6746d83b7..6973916f3 100644 --- a/src/test/java/net/minestom/server/tag/TagStructureTest.java +++ b/src/test/java/net/minestom/server/tag/TagStructureTest.java @@ -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 uuidTag = Tag.UUID("Id").path("SkullOwner"); + Tag skinTag = Tag.Structure("Properties", new TagSerializer() { + @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()); + } }