package net.querz.nbt.io; | |
import net.querz.NBTTestCase; | |
import net.querz.nbt.tag.*; | |
import java.util.LinkedHashMap; | |
public class SNBTWriterTest extends NBTTestCase { | |
public void testWrite() { | |
// write number tags | |
assertEquals("127b", assertThrowsNoException(() -> SNBTUtil.toSNBT(new ByteTag(Byte.MAX_VALUE)))); | |
assertEquals("-32768s", assertThrowsNoException(() -> SNBTUtil.toSNBT(new ShortTag(Short.MIN_VALUE)))); | |
assertEquals("-2147483648", assertThrowsNoException(() -> SNBTUtil.toSNBT(new IntTag(Integer.MIN_VALUE)))); | |
assertEquals("-9223372036854775808l", assertThrowsNoException(() -> SNBTUtil.toSNBT(new LongTag(Long.MIN_VALUE)))); | |
assertEquals("123.456f", assertThrowsNoException(() -> SNBTUtil.toSNBT(new FloatTag(123.456F)))); | |
assertEquals("123.456d", assertThrowsNoException(() -> SNBTUtil.toSNBT(new DoubleTag(123.456D)))); | |
// write array tags | |
assertEquals("[B;-128,0,127]", assertThrowsNoException(() -> SNBTUtil.toSNBT(new ByteArrayTag(new byte[]{Byte.MIN_VALUE, 0, Byte.MAX_VALUE})))); | |
assertEquals("[I;-2147483648,0,2147483647]", assertThrowsNoException(() -> SNBTUtil.toSNBT(new IntArrayTag(new int[]{Integer.MIN_VALUE, 0, Integer.MAX_VALUE})))); | |
assertEquals("[L;-9223372036854775808,0,9223372036854775807]", assertThrowsNoException(() -> SNBTUtil.toSNBT(new LongArrayTag(new long[]{Long.MIN_VALUE, 0, Long.MAX_VALUE})))); | |
// write string tag | |
assertEquals("abc", assertThrowsNoException(() -> SNBTUtil.toSNBT(new StringTag("abc")))); | |
assertEquals("\"123\"", assertThrowsNoException(() -> SNBTUtil.toSNBT(new StringTag("123")))); | |
assertEquals("\"123.456\"", assertThrowsNoException(() -> SNBTUtil.toSNBT(new StringTag("123.456")))); | |
assertEquals("\"-123\"", assertThrowsNoException(() -> SNBTUtil.toSNBT(new StringTag("-123")))); | |
assertEquals("\"-1.23e14\"", assertThrowsNoException(() -> SNBTUtil.toSNBT(new StringTag("-1.23e14")))); | |
assertEquals("\"äöü\\\\\"", assertThrowsNoException(() -> SNBTUtil.toSNBT(new StringTag("äöü\\")))); | |
// write list tag | |
ListTag<StringTag> lt = new ListTag<>(StringTag.class); | |
lt.addString("blah"); | |
lt.addString("blubb"); | |
lt.addString("123"); | |
assertEquals("[blah,blubb,\"123\"]", assertThrowsNoException(() -> SNBTUtil.toSNBT(lt))); | |
// write compound tag | |
CompoundTag ct = new CompoundTag(); | |
invokeSetValue(ct, new LinkedHashMap<>()); | |
ct.putString("key", "value"); | |
ct.putByte("byte", Byte.MAX_VALUE); | |
ct.putByteArray("array", new byte[]{Byte.MIN_VALUE, 0, Byte.MAX_VALUE}); | |
ListTag<StringTag> clt = new ListTag<>(StringTag.class); | |
clt.addString("foo"); | |
clt.addString("bar"); | |
ct.put("list", clt); | |
String ctExpected = "{key:value,byte:127b,array:[B;-128,0,127],list:[foo,bar]}"; | |
assertEquals(ctExpected, assertThrowsNoException(() -> SNBTUtil.toSNBT(ct))); | |
} | |
} |