public void BufferedReaderWriter_Basics() { Random r = new Random(5); byte[] content = new byte[1024]; r.NextBytes(content); byte[] result = new byte[128]; using (BufferedReader reader = BufferedReader.FromArray(content, 0, content.Length)) using (BufferedWriter writer = BufferedWriter.ToArray(content)) { while (!reader.EndOfStream) { int length = reader.EnsureSpace(150); writer.EnsureSpace(length); Buffer.BlockCopy(reader.Buffer, reader.Index, writer.Buffer, writer.Index, length); reader.Index += length; writer.Index += length; } result = writer.Buffer; } Assert.IsTrue(result.Length >= content.Length); for (int i = 0; i < content.Length; ++i) { Assert.AreEqual(content[i], result[i], $"@{i:n0}, expect: {content[i]}, actual: {result[i]}"); } }
private void DecompressString() { if (_decompressReader == null) { _decompressReader = BufferedReader.FromArray(_reader.Buffer, 0, 0); _decompressWriter = BufferedWriter.ToArray(new byte[1024]); } _decompressReader.ReadSlice(_reader.Buffer, _currentCompressedStringStart, _reader.Index - 1); _decompressWriter.Index = 0; // Decompress the content _compressor.Expand(_decompressReader, _decompressWriter); // Make a String8 referencing the full decompressed value _currentString = String8.Reference(_decompressWriter.Buffer, 0, _decompressWriter.Index); }