public void VerifyEncoding_largecorpus() { string input = TestResources.RFC5_Text; int len = input.Length; var data = new MemoryStream(); var writer = new BitBinaryWriter(data); var reader = new BitBinaryReader(data); var compressor = new DynamicHuffman <char>(OriginalNYT); for (int i = 0; i < len; ++i) { compressor.WriteCode(input[i], writer.Write, writer.Write); } writer.Flush(); data.Position = 0; var decompressor = new DynamicHuffman <char>(OriginalNYT); for (int i = 0; i < len; ++i) { Assert.AreEqual(input[i], decompressor.GetSymbol(reader.ReadBoolean, reader.ReadChar)); } Assert.AreEqual(data.Position, data.Length); }
public void BitBinaryWriterCompatible() { var stream = new MemoryStream(); var writer = new BitBinaryWriter(stream); var reader = new BitBinaryReader(stream); foreach (TestValue value in _testValuesWithBits) { value.Write(writer); } writer.Flush(); stream.Position = 0; foreach (TestValue value in _testValuesWithBits) { value.Read(reader); } }
public static unsafe void Serialize(BinaryWriter writer, double *values, int count) { // Reserve one byte for future versioning. writer.Write((byte)1); SerializationUtils.WriteUInt32AsBase128(writer, (uint)count); if (count > 0) { BitBinaryWriter bitWriter = new BitBinaryWriter(writer); var previousState = new DoubleValueState(0, -1, -1); for (int i = 0; i < count; ++i) { DoubleValueState newState; WriteDouble(bitWriter, values[i], previousState, out newState); previousState = newState; } bitWriter.Flush(); } }
public void VerifyEncoding_astrachan_() { string input = "astrachan_"; var data = new MemoryStream(); var writer = new BitBinaryWriter(data); var reader = new BitBinaryReader(data); var compressor = new DynamicHuffman <char>(OriginalNYT); for (int i = 0; i < input.Length; ++i) { compressor.WriteCode(input[i], writer.Write, writer.Write); } writer.Flush(); data.Position = 0; var decompressor = new DynamicHuffman <char>(OriginalNYT); for (int i = 0; i < input.Length; ++i) { Assert.AreEqual(input[i], decompressor.GetSymbol(reader.ReadBoolean, reader.ReadChar)); } Assert.AreEqual(data.Position, data.Length); }