|
@@ -58,7 +58,7 @@ namespace Google.Protobuf
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
|
|
|
|
// IBufferWriter
|
|
// IBufferWriter
|
|
- var bufferWriter = new ArrayBufferWriter<byte>();
|
|
|
|
|
|
+ var bufferWriter = new TestArrayBufferWriter<byte>();
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
ctx.WriteUInt32((uint) value);
|
|
ctx.WriteUInt32((uint) value);
|
|
ctx.Flush();
|
|
ctx.Flush();
|
|
@@ -77,7 +77,7 @@ namespace Google.Protobuf
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
|
|
|
|
// IBufferWriter
|
|
// IBufferWriter
|
|
- var bufferWriter = new ArrayBufferWriter<byte>();
|
|
|
|
|
|
+ var bufferWriter = new TestArrayBufferWriter<byte>();
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
ctx.WriteUInt64(value);
|
|
ctx.WriteUInt64(value);
|
|
ctx.Flush();
|
|
ctx.Flush();
|
|
@@ -100,7 +100,7 @@ namespace Google.Protobuf
|
|
output.Flush();
|
|
output.Flush();
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
|
|
|
|
- var bufferWriter = new ArrayBufferWriter<byte>();
|
|
|
|
|
|
+ var bufferWriter = new TestArrayBufferWriter<byte>();
|
|
bufferWriter.MaxGrowBy = bufferSize;
|
|
bufferWriter.MaxGrowBy = bufferSize;
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
ctx.WriteUInt32((uint) value);
|
|
ctx.WriteUInt32((uint) value);
|
|
@@ -115,7 +115,7 @@ namespace Google.Protobuf
|
|
output.Flush();
|
|
output.Flush();
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
|
|
|
|
- var bufferWriter = new ArrayBufferWriter<byte>();
|
|
|
|
|
|
+ var bufferWriter = new TestArrayBufferWriter<byte>();
|
|
bufferWriter.MaxGrowBy = bufferSize;
|
|
bufferWriter.MaxGrowBy = bufferSize;
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
ctx.WriteUInt64(value);
|
|
ctx.WriteUInt64(value);
|
|
@@ -174,7 +174,7 @@ namespace Google.Protobuf
|
|
output.Flush();
|
|
output.Flush();
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
|
|
|
|
- var bufferWriter = new ArrayBufferWriter<byte>();
|
|
|
|
|
|
+ var bufferWriter = new TestArrayBufferWriter<byte>();
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
ctx.WriteFixed32(value);
|
|
ctx.WriteFixed32(value);
|
|
ctx.Flush();
|
|
ctx.Flush();
|
|
@@ -190,7 +190,7 @@ namespace Google.Protobuf
|
|
output.Flush();
|
|
output.Flush();
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
|
|
|
|
- var bufferWriter = new ArrayBufferWriter<byte>();
|
|
|
|
|
|
+ var bufferWriter = new TestArrayBufferWriter<byte>();
|
|
bufferWriter.MaxGrowBy = bufferSize;
|
|
bufferWriter.MaxGrowBy = bufferSize;
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
ctx.WriteFixed32(value);
|
|
ctx.WriteFixed32(value);
|
|
@@ -212,7 +212,7 @@ namespace Google.Protobuf
|
|
output.Flush();
|
|
output.Flush();
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
|
|
|
|
- var bufferWriter = new ArrayBufferWriter<byte>();
|
|
|
|
|
|
+ var bufferWriter = new TestArrayBufferWriter<byte>();
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
ctx.WriteFixed64(value);
|
|
ctx.WriteFixed64(value);
|
|
ctx.Flush();
|
|
ctx.Flush();
|
|
@@ -228,7 +228,7 @@ namespace Google.Protobuf
|
|
output.Flush();
|
|
output.Flush();
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
Assert.AreEqual(data, rawOutput.ToArray());
|
|
|
|
|
|
- var bufferWriter = new ArrayBufferWriter<byte>();
|
|
|
|
|
|
+ var bufferWriter = new TestArrayBufferWriter<byte>();
|
|
bufferWriter.MaxGrowBy = blockSize;
|
|
bufferWriter.MaxGrowBy = blockSize;
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
ctx.WriteFixed64(value);
|
|
ctx.WriteFixed64(value);
|
|
@@ -270,7 +270,7 @@ namespace Google.Protobuf
|
|
output.Flush();
|
|
output.Flush();
|
|
Assert.AreEqual(rawBytes, rawOutput.ToArray());
|
|
Assert.AreEqual(rawBytes, rawOutput.ToArray());
|
|
|
|
|
|
- var bufferWriter = new ArrayBufferWriter<byte>();
|
|
|
|
|
|
+ var bufferWriter = new TestArrayBufferWriter<byte>();
|
|
bufferWriter.MaxGrowBy = blockSize;
|
|
bufferWriter.MaxGrowBy = blockSize;
|
|
message.WriteTo(bufferWriter);
|
|
message.WriteTo(bufferWriter);
|
|
Assert.AreEqual(rawBytes, bufferWriter.WrittenSpan.ToArray());
|
|
Assert.AreEqual(rawBytes, bufferWriter.WrittenSpan.ToArray());
|
|
@@ -292,7 +292,7 @@ namespace Google.Protobuf
|
|
output.Flush();
|
|
output.Flush();
|
|
byte[] expectedBytes2 = expectedOutput.ToArray();
|
|
byte[] expectedBytes2 = expectedOutput.ToArray();
|
|
|
|
|
|
- var bufferWriter = new ArrayBufferWriter<byte>();
|
|
|
|
|
|
+ var bufferWriter = new TestArrayBufferWriter<byte>();
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
WriteContext.Initialize(bufferWriter, out WriteContext ctx);
|
|
ctx.WriteMessage(message);
|
|
ctx.WriteMessage(message);
|
|
ctx.Flush();
|
|
ctx.Flush();
|
|
@@ -519,7 +519,21 @@ namespace Google.Protobuf
|
|
}
|
|
}
|
|
|
|
|
|
[Test]
|
|
[Test]
|
|
- public void WriteStringsOfDifferentSizes()
|
|
|
|
|
|
+ public void WriteString_AsciiSmall_MaxUtf8SizeExceedsBuffer()
|
|
|
|
+ {
|
|
|
|
+ var buffer = new byte[5];
|
|
|
|
+ var output = new CodedOutputStream(buffer);
|
|
|
|
+ output.WriteString("ABC");
|
|
|
|
+
|
|
|
|
+ output.Flush();
|
|
|
|
+
|
|
|
|
+ // Verify written content
|
|
|
|
+ var input = new CodedInputStream(buffer);
|
|
|
|
+ Assert.AreEqual("ABC", input.ReadString());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [Test]
|
|
|
|
+ public void WriteStringsOfDifferentSizes_Ascii()
|
|
{
|
|
{
|
|
for (int i = 1; i <= 1024; i++)
|
|
for (int i = 1; i <= 1024; i++)
|
|
{
|
|
{
|
|
@@ -540,5 +554,30 @@ namespace Google.Protobuf
|
|
Assert.AreEqual(s, input.ReadString());
|
|
Assert.AreEqual(s, input.ReadString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ [Test]
|
|
|
|
+ public void WriteStringsOfDifferentSizes_Unicode()
|
|
|
|
+ {
|
|
|
|
+ for (int i = 1; i <= 1024; i++)
|
|
|
|
+ {
|
|
|
|
+ var buffer = new byte[4096];
|
|
|
|
+ var output = new CodedOutputStream(buffer);
|
|
|
|
+ var sb = new StringBuilder();
|
|
|
|
+ for (int j = 0; j < i; j++)
|
|
|
|
+ {
|
|
|
|
+ char c = (char)((j % 10) + 10112);
|
|
|
|
+ sb.Append(c.ToString()); // incrementing unicode numbers, repeating
|
|
|
|
+ }
|
|
|
|
+ var s = sb.ToString();
|
|
|
|
+ output.WriteString(s);
|
|
|
|
+
|
|
|
|
+ output.Flush();
|
|
|
|
+
|
|
|
|
+ // Verify written content
|
|
|
|
+ var input = new CodedInputStream(buffer);
|
|
|
|
+
|
|
|
|
+ Assert.AreEqual(s, input.ReadString());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|