|
|
|
@ -98,6 +98,13 @@ namespace Google.Protobuf |
|
|
|
|
output.WriteRawVarint32((uint) value); |
|
|
|
|
output.Flush(); |
|
|
|
|
Assert.AreEqual(data, rawOutput.ToArray()); |
|
|
|
|
|
|
|
|
|
var bufferWriter = new ArrayBufferWriter<byte>(); |
|
|
|
|
bufferWriter.MaxGrowBy = bufferSize; |
|
|
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx); |
|
|
|
|
ctx.WriteUInt32((uint) value); |
|
|
|
|
ctx.Flush(); |
|
|
|
|
Assert.AreEqual(data, bufferWriter.WrittenSpan.ToArray()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
{ |
|
|
|
@ -106,9 +113,15 @@ namespace Google.Protobuf |
|
|
|
|
output.WriteRawVarint64(value); |
|
|
|
|
output.Flush(); |
|
|
|
|
Assert.AreEqual(data, rawOutput.ToArray()); |
|
|
|
|
|
|
|
|
|
var bufferWriter = new ArrayBufferWriter<byte>(); |
|
|
|
|
bufferWriter.MaxGrowBy = bufferSize; |
|
|
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx); |
|
|
|
|
ctx.WriteUInt64(value); |
|
|
|
|
ctx.Flush(); |
|
|
|
|
Assert.AreEqual(data, bufferWriter.WrittenSpan.ToArray()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// TODO: also test different chunk sizes for IBufferWriter |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -153,28 +166,35 @@ namespace Google.Protobuf |
|
|
|
|
/// </summary> |
|
|
|
|
private static void AssertWriteLittleEndian32(byte[] data, uint value) |
|
|
|
|
{ |
|
|
|
|
MemoryStream rawOutput = new MemoryStream(); |
|
|
|
|
CodedOutputStream output = new CodedOutputStream(rawOutput); |
|
|
|
|
output.WriteRawLittleEndian32(value); |
|
|
|
|
output.Flush(); |
|
|
|
|
Assert.AreEqual(data, rawOutput.ToArray()); |
|
|
|
|
|
|
|
|
|
var bufferWriter = new ArrayBufferWriter<byte>(); |
|
|
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx); |
|
|
|
|
ctx.WriteFixed32(value); |
|
|
|
|
ctx.Flush(); |
|
|
|
|
Assert.AreEqual(data, bufferWriter.WrittenSpan.ToArray()); |
|
|
|
|
{ |
|
|
|
|
var rawOutput = new MemoryStream(); |
|
|
|
|
var output = new CodedOutputStream(rawOutput); |
|
|
|
|
output.WriteRawLittleEndian32(value); |
|
|
|
|
output.Flush(); |
|
|
|
|
Assert.AreEqual(data, rawOutput.ToArray()); |
|
|
|
|
|
|
|
|
|
var bufferWriter = new ArrayBufferWriter<byte>(); |
|
|
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx); |
|
|
|
|
ctx.WriteFixed32(value); |
|
|
|
|
ctx.Flush(); |
|
|
|
|
Assert.AreEqual(data, bufferWriter.WrittenSpan.ToArray()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Try different buffer sizes. |
|
|
|
|
for (int bufferSize = 1; bufferSize <= 16; bufferSize *= 2) |
|
|
|
|
{ |
|
|
|
|
rawOutput = new MemoryStream(); |
|
|
|
|
output = new CodedOutputStream(rawOutput, bufferSize); |
|
|
|
|
var rawOutput = new MemoryStream(); |
|
|
|
|
var output = new CodedOutputStream(rawOutput, bufferSize); |
|
|
|
|
output.WriteRawLittleEndian32(value); |
|
|
|
|
output.Flush(); |
|
|
|
|
Assert.AreEqual(data, rawOutput.ToArray()); |
|
|
|
|
|
|
|
|
|
// TODO: also test different chunk sizes for IBufferWriter |
|
|
|
|
var bufferWriter = new ArrayBufferWriter<byte>(); |
|
|
|
|
bufferWriter.MaxGrowBy = bufferSize; |
|
|
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx); |
|
|
|
|
ctx.WriteFixed32(value); |
|
|
|
|
ctx.Flush(); |
|
|
|
|
Assert.AreEqual(data, bufferWriter.WrittenSpan.ToArray()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -184,28 +204,35 @@ namespace Google.Protobuf |
|
|
|
|
/// </summary> |
|
|
|
|
private static void AssertWriteLittleEndian64(byte[] data, ulong value) |
|
|
|
|
{ |
|
|
|
|
MemoryStream rawOutput = new MemoryStream(); |
|
|
|
|
CodedOutputStream output = new CodedOutputStream(rawOutput); |
|
|
|
|
output.WriteRawLittleEndian64(value); |
|
|
|
|
output.Flush(); |
|
|
|
|
Assert.AreEqual(data, rawOutput.ToArray()); |
|
|
|
|
|
|
|
|
|
var bufferWriter = new ArrayBufferWriter<byte>(); |
|
|
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx); |
|
|
|
|
ctx.WriteFixed64(value); |
|
|
|
|
ctx.Flush(); |
|
|
|
|
Assert.AreEqual(data, bufferWriter.WrittenSpan.ToArray()); |
|
|
|
|
{ |
|
|
|
|
var rawOutput = new MemoryStream(); |
|
|
|
|
var output = new CodedOutputStream(rawOutput); |
|
|
|
|
output.WriteRawLittleEndian64(value); |
|
|
|
|
output.Flush(); |
|
|
|
|
Assert.AreEqual(data, rawOutput.ToArray()); |
|
|
|
|
|
|
|
|
|
var bufferWriter = new ArrayBufferWriter<byte>(); |
|
|
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx); |
|
|
|
|
ctx.WriteFixed64(value); |
|
|
|
|
ctx.Flush(); |
|
|
|
|
Assert.AreEqual(data, bufferWriter.WrittenSpan.ToArray()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Try different block sizes. |
|
|
|
|
for (int blockSize = 1; blockSize <= 16; blockSize *= 2) |
|
|
|
|
{ |
|
|
|
|
rawOutput = new MemoryStream(); |
|
|
|
|
output = new CodedOutputStream(rawOutput, blockSize); |
|
|
|
|
var rawOutput = new MemoryStream(); |
|
|
|
|
var output = new CodedOutputStream(rawOutput, blockSize); |
|
|
|
|
output.WriteRawLittleEndian64(value); |
|
|
|
|
output.Flush(); |
|
|
|
|
Assert.AreEqual(data, rawOutput.ToArray()); |
|
|
|
|
|
|
|
|
|
// TODO: also test different chunk sizes for IBufferWriter |
|
|
|
|
var bufferWriter = new ArrayBufferWriter<byte>(); |
|
|
|
|
bufferWriter.MaxGrowBy = blockSize; |
|
|
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx); |
|
|
|
|
ctx.WriteFixed64(value); |
|
|
|
|
ctx.Flush(); |
|
|
|
|
Assert.AreEqual(data, bufferWriter.WrittenSpan.ToArray()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -241,9 +268,12 @@ namespace Google.Protobuf |
|
|
|
|
message.WriteTo(output); |
|
|
|
|
output.Flush(); |
|
|
|
|
Assert.AreEqual(rawBytes, rawOutput.ToArray()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// TODO: test for different chunks sizes and IBufferWriter... |
|
|
|
|
var bufferWriter = new ArrayBufferWriter<byte>(); |
|
|
|
|
bufferWriter.MaxGrowBy = blockSize; |
|
|
|
|
message.WriteTo(bufferWriter); |
|
|
|
|
Assert.AreEqual(rawBytes, bufferWriter.WrittenSpan.ToArray()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[Test] |
|
|
|
|