private void WriteNode(BigEndianStream zipped, NbtNode node) { zipped.Write(node.Type); if (node.Type == 0) return; zipped.Write8(node.Name); switch (node.Type) { case 1: zipped.Write(((NbtByte)node).Value); break; case 2: zipped.Write(((NbtShort)node).Value); break; case 3: zipped.Write(((NbtInt)node).Value); break; case 4: zipped.Write(((NbtLong)node).Value); break; case 5: zipped.Write(((NbtFloat)node).Value); break; case 6: zipped.Write(((NbtDouble)node).Value); break; case 7: zipped.Write(((NbtBytes)node).Value.Length); zipped.Write(((NbtBytes)node).Value); break; case 8: zipped.Write8(((NbtString)node).Value); break; case 9: var list = (NbtList) node; zipped.Write(list.TagId); zipped.Write(list.Childs.Count); foreach (var child in list.Childs) { WriteRaw(zipped, list.TagId, child); } break; case 10: var compount = (NbtCompound) node; foreach (var item in compount.Childs) { WriteNode(zipped, item); } WriteNode(zipped, new NbtStop()); break; case 11: zipped.Write(((NbtInts)node).Value.Length); zipped.Write(IntToByteArray(((NbtInts)node).Value)); break; } }
public async Task StringTestAsync() { MemoryStream memStream = new MemoryStream(); BigEndianStream bigEndianStream = new BigEndianStream(memStream); string testString = "Hello, World!"; await bigEndianStream.WriteAsync(testString); memStream.Seek(0, SeekOrigin.Begin); var result = await bigEndianStream.ReadString16Async(); Assert.AreEqual(testString, result); Assert.AreEqual(memStream.Position, memStream.Length); memStream.SetLength(0); bigEndianStream.Write8(testString); memStream.Seek(0, SeekOrigin.Begin); result = await bigEndianStream.ReadString8Async(); Assert.AreEqual(testString, result); Assert.AreEqual(memStream.Position, memStream.Length); }
public void StringTest() { MemoryStream memStream = new MemoryStream(); BigEndianStream bigEndianStream = new BigEndianStream(memStream); string testString = "Hello, World!"; bigEndianStream.Write(testString); memStream.Seek(0, SeekOrigin.Begin); var result = bigEndianStream.ReadString16(); Assert.AreEqual(testString, result); Assert.AreEqual(memStream.Position, memStream.Length); memStream.SetLength(0); bigEndianStream.Write8(testString); memStream.Seek(0, SeekOrigin.Begin); result = bigEndianStream.ReadString8(); Assert.AreEqual(testString, result); Assert.AreEqual(memStream.Position, memStream.Length); }