|
|
|
@ -1,9 +1,11 @@ |
|
|
|
|
using System; |
|
|
|
|
using System.IO; |
|
|
|
|
using System.Text; |
|
|
|
|
using Google.ProtocolBuffers.DescriptorProtos; |
|
|
|
|
using Google.ProtocolBuffers.Serialization; |
|
|
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting; |
|
|
|
|
using Google.ProtocolBuffers.TestProtos; |
|
|
|
|
using EnumOptions = Google.ProtocolBuffers.TestProtos.EnumOptions; |
|
|
|
|
|
|
|
|
|
namespace Google.ProtocolBuffers |
|
|
|
|
{ |
|
|
|
@ -152,6 +154,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
@"{}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestRepeatedField() |
|
|
|
|
{ |
|
|
|
@ -163,6 +166,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
@"{""options"":[""ONE"",""TWO""]}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestNestedEmptyMessage() |
|
|
|
|
{ |
|
|
|
@ -173,6 +177,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
@"{""child"":{}}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestNestedMessage() |
|
|
|
|
{ |
|
|
|
@ -183,6 +188,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
@"{""child"":{""options"":[""TWO""]}}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestBooleanTypes() |
|
|
|
|
{ |
|
|
|
@ -193,6 +199,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
@"{""valid"":true}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestFullMessage() |
|
|
|
|
{ |
|
|
|
@ -222,6 +229,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
0x1010101010L.ToString() |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestMessageWithXmlText() |
|
|
|
|
{ |
|
|
|
@ -232,6 +240,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
@"{""text"":""<text><\/text>""}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestWithEscapeChars() |
|
|
|
|
{ |
|
|
|
@ -242,6 +251,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
"{\"text\":\" \\t <- \\\"leading space and trailing\\\" -> \\\\ \\uef54 \\u0000 \\u00ff \\uffff \\b \\f \\r \\n \\t \"}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestWithExtensionText() |
|
|
|
|
{ |
|
|
|
@ -253,6 +263,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
@"{""valid"":false,""extension_text"":"" extension text value ! ""}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestWithExtensionNumber() |
|
|
|
|
{ |
|
|
|
@ -264,6 +275,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
@"{""number"":42}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestWithExtensionArray() |
|
|
|
|
{ |
|
|
|
@ -276,6 +288,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
@"{""extension_number"":[100,101,102]}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestWithExtensionEnum() |
|
|
|
|
{ |
|
|
|
@ -286,6 +299,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
@"{""extension_enum"":""ONE""}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestMessageWithExtensions() |
|
|
|
|
{ |
|
|
|
@ -308,6 +322,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
@"""extension_message"":{""number"":42}" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestMessageMissingExtensions() |
|
|
|
|
{ |
|
|
|
@ -340,6 +355,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
Assert.AreNotEqual(original, copy); |
|
|
|
|
Assert.AreEqual(message, copy); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestMergeFields() |
|
|
|
|
{ |
|
|
|
@ -350,6 +366,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
Assert.AreEqual("text", builder.Text); |
|
|
|
|
Assert.AreEqual(411, builder.Number); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestMessageArray() |
|
|
|
|
{ |
|
|
|
@ -374,6 +391,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
Assert.AreEqual(3, ordinal); |
|
|
|
|
Assert.AreEqual(3, builder.TextlinesCount); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestNestedMessageArray() |
|
|
|
|
{ |
|
|
|
@ -403,6 +421,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
Assert.AreEqual(3, ordinal); |
|
|
|
|
Assert.AreEqual(3, builder.TextlinesCount); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
|
public void TestReadWriteJsonWithoutRoot() |
|
|
|
|
{ |
|
|
|
@ -425,6 +444,7 @@ namespace Google.ProtocolBuffers |
|
|
|
|
|
|
|
|
|
Assert.AreEqual(message, copy); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod,ExpectedException(typeof(RecursionLimitExceededException))] |
|
|
|
|
public void TestRecursiveLimit() |
|
|
|
|
{ |
|
|
|
@ -433,29 +453,46 @@ namespace Google.ProtocolBuffers |
|
|
|
|
sb.Append("{\"child\":"); |
|
|
|
|
TestXmlRescursive msg = Extensions.MergeFromJson(new TestXmlRescursive.Builder(), sb.ToString()).Build(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod, ExpectedException(typeof(FormatException))] |
|
|
|
|
public void FailWithEmptyText() |
|
|
|
|
{ |
|
|
|
|
JsonFormatReader.CreateInstance("") |
|
|
|
|
.Merge(TestXmlMessage.CreateBuilder()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod, ExpectedException(typeof(FormatException))] |
|
|
|
|
public void FailWithUnexpectedValue() |
|
|
|
|
{ |
|
|
|
|
JsonFormatReader.CreateInstance("{{}}") |
|
|
|
|
.Merge(TestXmlMessage.CreateBuilder()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod, ExpectedException(typeof(FormatException))] |
|
|
|
|
public void FailWithUnQuotedName() |
|
|
|
|
{ |
|
|
|
|
JsonFormatReader.CreateInstance("{name:{}}") |
|
|
|
|
.Merge(TestXmlMessage.CreateBuilder()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[TestMethod, ExpectedException(typeof(FormatException))] |
|
|
|
|
public void FailWithUnexpectedType() |
|
|
|
|
{ |
|
|
|
|
JsonFormatReader.CreateInstance("{\"valid\":{}}") |
|
|
|
|
.Merge(TestXmlMessage.CreateBuilder()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// See issue 64 for background. |
|
|
|
|
[TestMethod] |
|
|
|
|
public void ToJsonRequiringBufferExpansion() |
|
|
|
|
{ |
|
|
|
|
string s = new string('.', 4086); |
|
|
|
|
var opts = FileDescriptorProto.CreateBuilder() |
|
|
|
|
.SetName(s) |
|
|
|
|
.SetPackage("package") |
|
|
|
|
.BuildPartial(); |
|
|
|
|
|
|
|
|
|
Assert.NotNull(opts.ToJson()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|