Minestom/src/test/java/net/minestom/server/tag/TagHandlerCopyTest.java

85 lines
2.5 KiB
Java

package net.minestom.server.tag;
import org.junit.jupiter.api.Test;
import static net.minestom.testing.TestUtils.assertEqualsSNBT;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
public class TagHandlerCopyTest {
@Test
public void copy() {
var handler = TagHandler.newHandler();
handler.setTag(Tag.String("key"), "test");
var copy = handler.copy();
assertEquals(handler.getTag(Tag.String("key")), copy.getTag(Tag.String("key")));
}
@Test
public void copyCachePath() {
var tag = Tag.String("key").path("path");
var handler = TagHandler.newHandler();
handler.setTag(tag, "test");
assertEqualsSNBT("""
{"path":{"key":"test"}}
""", handler.asCompound());
var copy = handler.copy();
handler.setTag(tag, "test2");
assertEqualsSNBT("""
{"path":{"key":"test2"}}
""", handler.asCompound());
assertEqualsSNBT("""
{"path":{"key":"test"}}
""", copy.asCompound());
copy.setTag(tag, "test3");
assertEquals("test3", copy.getTag(tag));
assertEqualsSNBT("""
{"path":{"key":"test3"}}
""", copy.asCompound());
}
@Test
public void copyCache() {
var tag = Tag.String("key");
var handler = TagHandler.newHandler();
handler.setTag(tag, "test");
assertEqualsSNBT("""
{"key":"test"}
""", handler.asCompound());
var copy = handler.copy();
handler.setTag(tag, "test2");
assertEqualsSNBT("""
{"key":"test2"}
""", handler.asCompound());
assertEqualsSNBT("""
{"key":"test"}
""", copy.asCompound());
copy.setTag(tag, "test3");
assertEquals("test3", copy.getTag(tag));
assertEqualsSNBT("""
{"key":"test2"}
""", handler.asCompound());
assertEqualsSNBT("""
{"key":"test3"}
""", copy.asCompound());
}
@Test
public void copyRehashing() {
var handler = TagHandler.newHandler();
TagHandler handlerCopy;
for (int i = 0; i < 1000; i++) {
handlerCopy = handler.copy();
var tag = Tag.Integer("copyRehashing" + i);
handler.setTag(tag, i);
assertNull(handlerCopy.getTag(tag));
}
}
}