public unsafe void MixedRead() { byte[] data; using (MemoryStream ms = new MemoryStream()) { using (BinaryWriter writer = new BinaryWriter(ms)) { writer.Write("abcABCäöüÄÖÜßáÁàÀ♥♦♣♠"); writer.Write((byte)66); writer.Write(0x48484848); writer.Write(0x84848484U); writer.Write("abcABCäöüÄÖÜßáÁàÀ♥♦♣♠"); } data = ms.ToArray(); } fixed(byte *pData = data) { UnsafeBinaryMemoryReader reader = new UnsafeBinaryMemoryReader(pData); Assert.AreEqual(reader.ReadString(), "abcABCäöüÄÖÜßáÁàÀ♥♦♣♠", "BinaryMemoryReader String incompatible to BinaryReader."); Assert.AreEqual(reader.ReadByte(), (byte)66, "BinaryMemoryReader Byte incompatible to BinaryReader."); Assert.AreEqual(reader.ReadInt32(), 0x48484848, "BinaryMemoryReader Int incompatible to BinaryReader."); Assert.AreEqual(reader.ReadUInt32(), 0x84848484U, "BinaryMemoryReader UInt incompatible to BinaryReader."); Assert.AreEqual(reader.ReadString(), "abcABCäöüÄÖÜßáÁàÀ♥♦♣♠", "BinaryMemoryReader 2nd String incompatible to BinaryReader."); } }
public unsafe void UnsafeBinaryMemoryReader_Strings(byte[] data) { fixed(byte *pData = data) { UnsafeBinaryMemoryReader reader = new UnsafeBinaryMemoryReader(pData); for (int count = 0; count < 10240; count++) { reader.ReadString(); } } }
public unsafe void StringRead() { foreach (int size in new int[] { 1, 127, 128, 16383, 16384, 2097151, 2097152, 268435455, 268435456, 300000000 }) { byte[] data; using (MemoryStream ms = new MemoryStream()) { using (BinaryWriter writer = new BinaryWriter(ms)) writer.Write(new string('A', size)); data = ms.ToArray(); } fixed(byte *pData = data) { UnsafeBinaryMemoryReader reader = new UnsafeBinaryMemoryReader(pData); Assert.AreEqual(reader.ReadString(), new string('A', size), "UnsafeBinaryMemoryReader String incompatible to BinaryReader."); } } }