mirror of https://github.com/Minestom/Minestom.git
67 lines
2.0 KiB
Java
67 lines
2.0 KiB
Java
package net.minestom.server.tag;
|
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
import org.jetbrains.annotations.Nullable;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import static net.minestom.server.api.TestUtils.assertEqualsIgnoreSpace;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
|
|
|
public class TagViewTest {
|
|
|
|
private static final Tag<Entry> VIEW_TAG = Tag.View(new TagSerializer<>() {
|
|
private static final Tag<String> VALUE_TAG = Tag.String("value");
|
|
|
|
@Override
|
|
public @Nullable Entry read(@NotNull TagReadable reader) {
|
|
final String value = reader.getTag(VALUE_TAG);
|
|
return value != null ? new Entry(value) : null;
|
|
}
|
|
|
|
@Override
|
|
public void write(@NotNull TagWritable writer, @Nullable Entry value) {
|
|
if (value != null) {
|
|
writer.setTag(VALUE_TAG, value.value);
|
|
} else {
|
|
writer.removeTag(VALUE_TAG);
|
|
}
|
|
}
|
|
});
|
|
|
|
private record Entry(String value) {
|
|
}
|
|
|
|
@Test
|
|
public void basic() {
|
|
var handler = TagHandler.newHandler();
|
|
assertNull(handler.getTag(VIEW_TAG));
|
|
assertFalse(handler.hasTag(VIEW_TAG));
|
|
|
|
var entry = new Entry("hello");
|
|
handler.setTag(VIEW_TAG, entry);
|
|
assertTrue(handler.hasTag(VIEW_TAG));
|
|
assertEquals(entry, handler.getTag(VIEW_TAG));
|
|
|
|
handler.removeTag(VIEW_TAG);
|
|
assertFalse(handler.hasTag(VIEW_TAG));
|
|
assertNull(handler.getTag(VIEW_TAG));
|
|
}
|
|
|
|
@Test
|
|
public void snbt() {
|
|
var handler = TagHandler.newHandler();
|
|
var entry = new Entry("hello");
|
|
handler.setTag(VIEW_TAG, entry);
|
|
assertEqualsIgnoreSpace("""
|
|
{
|
|
"value": "hello"
|
|
}
|
|
""", handler.asCompound().toSNBT());
|
|
|
|
handler.removeTag(VIEW_TAG);
|
|
assertEqualsIgnoreSpace("{}", handler.asCompound().toSNBT());
|
|
}
|
|
|
|
}
|