aboutsummaryrefslogtreecommitdiff
path: root/csharp/src/ProtocolBuffers.Test/CodedInputStreamTest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'csharp/src/ProtocolBuffers.Test/CodedInputStreamTest.cs')
-rw-r--r--csharp/src/ProtocolBuffers.Test/CodedInputStreamTest.cs112
1 files changed, 47 insertions, 65 deletions
diff --git a/csharp/src/ProtocolBuffers.Test/CodedInputStreamTest.cs b/csharp/src/ProtocolBuffers.Test/CodedInputStreamTest.cs
index 9bb8ba27..52757d4d 100644
--- a/csharp/src/ProtocolBuffers.Test/CodedInputStreamTest.cs
+++ b/csharp/src/ProtocolBuffers.Test/CodedInputStreamTest.cs
@@ -37,11 +37,12 @@
using System;
using System.Collections.Generic;
using System.IO;
-using Google.ProtocolBuffers.Descriptors;
-using Google.ProtocolBuffers.TestProtos;
+using Google.Protobuf.Collections;
+using Google.Protobuf.Descriptors;
+using Google.Protobuf.TestProtos;
using NUnit.Framework;
-namespace Google.ProtocolBuffers
+namespace Google.Protobuf
{
public class CodedInputStreamTest
{
@@ -231,7 +232,7 @@ namespace Google.ProtocolBuffers
Assert.AreEqual(0x7FFFFFFFFFFFFFFFL, CodedInputStream.DecodeZigZag64(0xFFFFFFFFFFFFFFFEL));
Assert.AreEqual(unchecked((long) 0x8000000000000000L), CodedInputStream.DecodeZigZag64(0xFFFFFFFFFFFFFFFFL));
}
-
+ /*
[Test]
public void ReadWholeMessage()
{
@@ -273,7 +274,7 @@ namespace Google.ProtocolBuffers
unknownFields.MergeFieldFrom(tag, input1);
input2.SkipField();
}
- }
+ }*/
/// <summary>
/// Test that a bug in SkipRawBytes has been fixed: if the skip
@@ -290,7 +291,7 @@ namespace Google.ProtocolBuffers
input.PopLimit(limit);
Assert.AreEqual(2, input.ReadRawByte());
}
-
+ /*
public void ReadHugeBlob()
{
// Allocate and initialize a 1MB blob.
@@ -318,7 +319,7 @@ namespace Google.ProtocolBuffers
.SetOptionalBytes(TestUtil.GetAllSet().OptionalBytes)
.Build();
TestUtil.AssertAllFieldsSet(message3);
- }
+ }*/
[Test]
public void ReadMaliciouslyLargeBlob()
@@ -335,25 +336,22 @@ namespace Google.ProtocolBuffers
CodedInputStream input = CodedInputStream.CreateInstance(ms);
uint testtag;
- string ignore;
- Assert.IsTrue(input.ReadTag(out testtag, out ignore));
+ Assert.IsTrue(input.ReadTag(out testtag));
Assert.AreEqual(tag, testtag);
- ByteString bytes = null;
// TODO(jonskeet): Should this be ArgumentNullException instead?
- Assert.Throws<InvalidProtocolBufferException>(() => input.ReadBytes(ref bytes));
+ Assert.Throws<InvalidProtocolBufferException>(() => input.ReadBytes());
}
private static TestRecursiveMessage MakeRecursiveMessage(int depth)
{
if (depth == 0)
{
- return TestRecursiveMessage.CreateBuilder().SetI(5).Build();
+ return new TestRecursiveMessage { I = 5 };
}
else
{
- return TestRecursiveMessage.CreateBuilder()
- .SetA(MakeRecursiveMessage(depth - 1)).Build();
+ return new TestRecursiveMessage { A = MakeRecursiveMessage(depth - 1) };
}
}
@@ -361,12 +359,12 @@ namespace Google.ProtocolBuffers
{
if (depth == 0)
{
- Assert.IsFalse(message.HasA);
+ Assert.IsNull(message.A);
Assert.AreEqual(5, message.I);
}
else
{
- Assert.IsTrue(message.HasA);
+ Assert.IsNotNull(message.A);
AssertMessageDepth(message.A, depth - 1);
}
}
@@ -377,15 +375,16 @@ namespace Google.ProtocolBuffers
ByteString data64 = MakeRecursiveMessage(64).ToByteString();
ByteString data65 = MakeRecursiveMessage(65).ToByteString();
- AssertMessageDepth(TestRecursiveMessage.ParseFrom(data64), 64);
+ AssertMessageDepth(TestRecursiveMessage.Parser.ParseFrom(data64), 64);
- Assert.Throws<InvalidProtocolBufferException>(() => TestRecursiveMessage.ParseFrom(data65));
+ Assert.Throws<InvalidProtocolBufferException>(() => TestRecursiveMessage.Parser.ParseFrom(data65));
CodedInputStream input = data64.CreateCodedInput();
input.SetRecursionLimit(8);
- Assert.Throws<InvalidProtocolBufferException>(() => TestRecursiveMessage.ParseFrom(input));
+ Assert.Throws<InvalidProtocolBufferException>(() => TestRecursiveMessage.Parser.ParseFrom(input));
}
+ /*
[Test]
public void SizeLimit()
{
@@ -396,7 +395,7 @@ namespace Google.ProtocolBuffers
input.SetSizeLimit(16);
Assert.Throws<InvalidProtocolBufferException>(() => TestAllTypes.ParseFrom(input));
- }
+ }*/
[Test]
public void ResetSizeCounter()
@@ -434,13 +433,10 @@ namespace Google.ProtocolBuffers
CodedInputStream input = CodedInputStream.CreateInstance(ms);
- uint testtag;
- string ignored;
-
- Assert.IsTrue(input.ReadTag(out testtag, out ignored));
- Assert.AreEqual(tag, testtag);
- string text = null;
- input.ReadString(ref text);
+ uint actualTag;
+ Assert.IsTrue(input.ReadTag(out actualTag));
+ Assert.AreEqual(tag, actualTag);
+ string text = input.ReadString();
Assert.AreEqual('\ufffd', text[0]);
}
@@ -472,12 +468,8 @@ namespace Google.ProtocolBuffers
{
byte[] bytes = new byte[10] { 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01 };
CodedInputStream input = CodedInputStream.CreateInstance(bytes);
- object unk;
- TestNegEnum val = TestNegEnum.None;
-
- Assert.IsTrue(input.ReadEnum(ref val, out unk));
+ Assert.AreEqual((int)TestNegEnum.Value, input.ReadEnum());
Assert.IsTrue(input.IsAtEnd);
- Assert.AreEqual(TestNegEnum.Value, val);
}
[Test]
@@ -487,25 +479,22 @@ namespace Google.ProtocolBuffers
int msgSize = 1 + 1 + arraySize;
byte[] bytes = new byte[msgSize];
CodedOutputStream output = CodedOutputStream.CreateInstance(bytes);
- output.WritePackedInt32Array(8, "", arraySize, new int[] { 0, -1, -2, -3, -4, -5 });
+ output.WriteTag(8, WireFormat.WireType.LengthDelimited);
+ output.WritePackedInt32Array(new RepeatedField<int> { 0, -1, -2, -3, -4, -5 });
Assert.AreEqual(0, output.SpaceLeft);
CodedInputStream input = CodedInputStream.CreateInstance(bytes);
uint tag;
- string name;
- Assert.IsTrue(input.ReadTag(out tag, out name));
+ Assert.IsTrue(input.ReadTag(out tag));
- List<TestNegEnum> values = new List<TestNegEnum>();
- ICollection<object> unk;
- input.ReadEnumArray(tag, name, values, out unk);
+ RepeatedField<TestNegEnum> values = new RepeatedField<TestNegEnum>();
+ input.ReadEnumArray(values);
- Assert.AreEqual(2, values.Count);
+ Assert.AreEqual(6, values.Count);
Assert.AreEqual(TestNegEnum.None, values[0]);
- Assert.AreEqual(TestNegEnum.Value, values[1]);
-
- Assert.NotNull(unk);
- Assert.AreEqual(4, unk.Count);
+ Assert.AreEqual(TestNegEnum.Value, values[2]);
+ // TODO(jonskeet): Test unknown value preservation
}
[Test]
@@ -515,25 +504,21 @@ namespace Google.ProtocolBuffers
int msgSize = arraySize;
byte[] bytes = new byte[msgSize];
CodedOutputStream output = CodedOutputStream.CreateInstance(bytes);
- output.WriteInt32Array(8, "", new int[] { 0, -1, -2, -3, -4, -5 });
+ output.WriteInt32Array(8, new RepeatedField<int> { 0, -1, -2, -3, -4, -5 });
Assert.AreEqual(0, output.SpaceLeft);
CodedInputStream input = CodedInputStream.CreateInstance(bytes);
uint tag;
- string name;
- Assert.IsTrue(input.ReadTag(out tag, out name));
+ Assert.IsTrue(input.ReadTag(out tag));
- List<TestNegEnum> values = new List<TestNegEnum>();
- ICollection<object> unk;
- input.ReadEnumArray(tag, name, values, out unk);
+ RepeatedField<TestNegEnum> values = new RepeatedField<TestNegEnum>();
+ input.ReadEnumArray(values);
- Assert.AreEqual(2, values.Count);
+ Assert.AreEqual(6, values.Count);
Assert.AreEqual(TestNegEnum.None, values[0]);
- Assert.AreEqual(TestNegEnum.Value, values[1]);
-
- Assert.NotNull(unk);
- Assert.AreEqual(4, unk.Count);
+ Assert.AreEqual(TestNegEnum.Value, values[2]);
+ // TODO(jonskeet): Test unknown value preservation
}
//Issue 71: CodedInputStream.ReadBytes go to slow path unnecessarily
@@ -543,26 +528,23 @@ namespace Google.ProtocolBuffers
using (var ms = new MemoryStream())
{
CodedOutputStream output = CodedOutputStream.CreateInstance(ms);
- output.WriteField(FieldType.Bytes, 1, "bytes", ByteString.CopyFrom(new byte[100]));
- output.WriteField(FieldType.Bytes, 2, "bytes", ByteString.CopyFrom(new byte[100]));
+ output.WriteTag(1, WireFormat.WireType.LengthDelimited);
+ output.WriteBytes(ByteString.CopyFrom(new byte[100]));
+ output.WriteTag(2, WireFormat.WireType.LengthDelimited);
+ output.WriteBytes(ByteString.CopyFrom(new byte[100]));
output.Flush();
ms.Position = 0;
CodedInputStream input = CodedInputStream.CreateInstance(ms, new byte[ms.Length / 2]);
uint tag;
- string ignore;
- ByteString value;
-
- Assert.IsTrue(input.ReadTag(out tag, out ignore));
+ Assert.IsTrue(input.ReadTag(out tag));
Assert.AreEqual(1, WireFormat.GetTagFieldNumber(tag));
- value = ByteString.Empty;
- Assert.IsTrue(input.ReadBytes(ref value) && value.Length == 100);
+ Assert.AreEqual(100, input.ReadBytes().Length);
- Assert.IsTrue(input.ReadTag(out tag, out ignore));
+ Assert.IsTrue(input.ReadTag(out tag));
Assert.AreEqual(2, WireFormat.GetTagFieldNumber(tag));
- value = ByteString.Empty;
- Assert.IsTrue(input.ReadBytes(ref value) && value.Length == 100);
+ Assert.AreEqual(100, input.ReadBytes().Length);
}
}
}