public void TestFullMessage() { FormatterAssert( TestXmlMessage.CreateBuilder() .SetValid(true) .SetText("text") .AddTextlines("a") .AddTextlines("b") .AddTextlines("c") .SetNumber(0x1010101010) .AddNumbers(1) .AddNumbers(2) .AddNumbers(3) .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.ONE).SetBinary(ByteString.CopyFrom(new byte[1]))) .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.TWO).SetBinary(ByteString.CopyFrom(new byte[2]))) .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.THREE).SetBinary(ByteString.CopyFrom(new byte[3]))) .Build(), @"""text"":""text""", @"[""a"",""b"",""c""]", @"[1,2,3]", @"""child"":{", @"""children"":[{", @"AA==", @"AAA=", @"AAAA", 0x1010101010L.ToString() ); }
public void TestMessageMissingExtensions() { TestXmlMessage original = TestXmlMessage.CreateBuilder() .SetValid(true) .SetText("text") .SetExtension(UnittestExtrasXmltest.ExtensionText, " extension text value ! ") .SetExtension(UnittestExtrasXmltest.ExtensionMessage, new TestXmlExtension.Builder().SetNumber(42).Build()) .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 100) .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 101) .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 102) .SetExtension(UnittestExtrasXmltest.ExtensionEnum, EnumOptions.ONE) .Build(); TestXmlMessage message = original.ToBuilder() .ClearExtension(UnittestExtrasXmltest.ExtensionText) .ClearExtension(UnittestExtrasXmltest.ExtensionMessage) .ClearExtension(UnittestExtrasXmltest.ExtensionNumber) .ClearExtension(UnittestExtrasXmltest.ExtensionEnum) .Build(); JsonFormatWriter writer = JsonFormatWriter.CreateInstance(); writer.WriteMessage(original); Content = writer.ToString(); IMessageLite copy = JsonFormatReader.CreateInstance(Content) .Merge(message.CreateBuilderForType()).Build(); Assert.AreNotEqual(original, message); Assert.AreNotEqual(original, copy); Assert.AreEqual(message, copy); }
public void TestFullMessageWithRichTypes() { TestXmlMessage message = TestXmlMessage.CreateBuilder() .SetValid(true) .SetText("text") .AddTextlines("a") .AddTextlines("b") .AddTextlines("c") .SetNumber(0x1010101010) .AddNumbers(1) .AddNumbers(2) .AddNumbers(3) .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.ONE).SetBinary(ByteString.CopyFrom(new byte[1]))) .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.TWO).SetBinary(ByteString.CopyFrom(new byte[2]))) .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.THREE).SetBinary(ByteString.CopyFrom(new byte[3]))) .Build(); StringWriter sw = new StringWriter(); XmlWriter xwtr = XmlWriter.Create(sw, new XmlWriterSettings { Indent = true, IndentChars = " " }); XmlFormatWriter.CreateInstance(xwtr) .SetOptions(XmlWriterOptions.OutputNestedArrays | XmlWriterOptions.OutputEnumValues) .WriteMessage("root", message); string xml = sw.ToString(); XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml); rdr.Options = XmlReaderOptions.ReadNestedArrays; TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build(); Assert.AreEqual(message, copy); }
public void TestXmlReadWriteWithoutRoot() { TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); TestXmlMessage message = builder.SetText("abc").SetNumber(123).Build(); string xml; using (StringWriter sw = new StringWriter()) { ICodedOutputStream output = XmlFormatWriter.CreateInstance( XmlWriter.Create(sw, new XmlWriterSettings() { ConformanceLevel = ConformanceLevel.Fragment })); message.WriteTo(output); output.Flush(); xml = sw.ToString(); } Assert.AreEqual("<text>abc</text><number>123</number>", xml); TestXmlMessage copy; using (XmlReader xr = XmlReader.Create(new StringReader(xml), new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Fragment })) { ICodedInputStream input = XmlFormatReader.CreateInstance(xr); copy = TestXmlMessage.CreateBuilder().MergeFrom(input).Build(); } Assert.AreEqual(message, copy); }
public void TestNestedMessageArray() { JsonFormatWriter writer = JsonFormatWriter.CreateInstance(); using (writer.StartArray()) { using (writer.StartArray()) { writer.WriteMessage(TestXmlMessage.CreateBuilder().SetNumber(1).AddTextlines("a").Build()); writer.WriteMessage(TestXmlMessage.CreateBuilder().SetNumber(2).AddTextlines("b").Build()); } using (writer.StartArray()) writer.WriteMessage(TestXmlMessage.CreateBuilder().SetNumber(3).AddTextlines("c").Build()); } string json = writer.ToString(); JsonFormatReader reader = JsonFormatReader.CreateInstance(json); TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); int ordinal = 0; foreach (JsonFormatReader r in reader.EnumerateArray()) { foreach (JsonFormatReader r2 in r.EnumerateArray()) { r2.Merge(builder); Assert.AreEqual(++ordinal, builder.Number); } } Assert.AreEqual(3, ordinal); Assert.AreEqual(3, builder.TextlinesCount); }
public void Example_WriteJsonUsingICodedOutputStream() { TestXmlMessage message = TestXmlMessage.CreateBuilder() .SetValid(true) .Build(); using (TextWriter output = new StringWriter()) { ICodedOutputStream writer = JsonFormatWriter.CreateInstance(output); writer.WriteMessageStart(); //manually begin the message, output is '{' writer.Flush(); Assert.AreEqual("{", output.ToString()); ICodedOutputStream stream = writer; message.WriteTo(stream); //write the message normally writer.Flush(); Assert.AreEqual(@"{""valid"":true", output.ToString()); writer.WriteMessageEnd(); //manually write the end message '}' Assert.AreEqual(@"{""valid"":true}", output.ToString()); } }
public void TestPlainMessage() { TestXmlMessage message = TestXmlMessage.CreateBuilder() .SetValid(true) .SetText("text") .AddTextlines("a") .AddTextlines("b") .AddTextlines("c") .SetNumber(0x1010101010) .AddNumbers(1) .AddNumbers(2) .AddNumbers(3) .SetChild(TestXmlChild.CreateBuilder() .AddOptions(EnumOptions.ONE) .SetBinary(ByteString.CopyFrom(new byte[1]))) .AddChildren(TestXmlMessage.Types.Children.CreateBuilder() .AddOptions(EnumOptions.TWO) .SetBinary(ByteString.CopyFrom(new byte[2]))) .AddChildren(TestXmlMessage.Types.Children.CreateBuilder() .AddOptions(EnumOptions.THREE) .SetBinary(ByteString.CopyFrom(new byte[3]))) .Build(); MemoryStream ms = new MemoryStream(); new BinaryFormatter().Serialize(ms, message); ms.Position = 0; TestXmlMessage copy = (TestXmlMessage) new BinaryFormatter().Deserialize(ms); Assert.AreEqual(message, copy); }
public void TestWithExtensionEnum() { FormatterAssert( TestXmlMessage.CreateBuilder() .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionEnum, EnumOptions.ONE) .Build(), @"{""extension_enum"":""ONE""}" ); }
public void TestWithEscapeChars() { FormatterAssert( TestXmlMessage.CreateBuilder() .SetText(" \t <- \"leading space and trailing\" -> \\ \xef54 \x0000 \xFF \xFFFF \b \f \r \n \t ") .Build(), "{\"text\":\" \\t <- \\\"leading space and trailing\\\" -> \\\\ \\uef54 \\u0000 \\u00ff \\uffff \\b \\f \\r \\n \\t \"}" ); }
public void TestBooleanTypes() { FormatterAssert( TestXmlMessage.CreateBuilder() .SetValid(true) .Build(), @"{""valid"":true}" ); }
public void TestNestedMessage() { FormatterAssert( TestXmlMessage.CreateBuilder() .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.TWO).Build()) .Build(), @"{""child"":{""options"":[""TWO""]}}" ); }
public void TestWriteToXmlType() { MemoryStream ms = new MemoryStream(); Extensions.WriteTo(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build(), new MessageFormatOptions(), "application/xml", ms); Assert.AreEqual("<root><text>a</text><number>1</number></root>", Encoding.UTF8.GetString(ms.ToArray(), 0, (int)ms.Length)); }
public void TestWithExtensionEnum() { FormatterAssert( TestXmlMessage.CreateBuilder() .SetExtension(UnittestExtrasXmltest.ExtensionEnum, EnumOptions.ONE) .Build(), @"{""extension_enum"":""ONE""}" ); }
public void TestWriteToJsonType() { MemoryStream ms = new MemoryStream(); Extensions.WriteTo(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build(), new MessageFormatOptions(), "application/json", ms); Assert.AreEqual(@"{""text"":""a"",""number"":1}", Encoding.UTF8.GetString(ms.ToArray(), 0, (int)ms.Length)); }
public void TestMessageWithXmlText() { FormatterAssert( TestXmlMessage.CreateBuilder() .SetText("<text></text>") .Build(), @"{""text"":""<text><\/text>""}" ); }
public void TestMergeFields() { TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); builder.MergeFrom(JsonFormatReader.CreateInstance("\"valid\": true")); builder.MergeFrom(JsonFormatReader.CreateInstance("\"text\": \"text\", \"number\": \"411\"")); Assert.AreEqual(true, builder.Valid); Assert.AreEqual("text", builder.Text); Assert.AreEqual(411, builder.Number); }
public void TestNestedEmptyMessage() { FormatterAssert( TestXmlMessage.CreateBuilder() .SetChild(TestXmlChild.CreateBuilder().Build()) .Build(), @"{""child"":{}}" ); }
public void TestWriteToProtoType() { MemoryStream ms = new MemoryStream(); Extensions.WriteTo(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build(), new MessageFormatOptions(), "application/vnd.google.protobuf", ms); byte[] bytes = TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build().ToByteArray(); TestUtil.AssertBytesEqual(bytes, ms.ToArray()); }
public void TestWithExtensionNumber() { FormatterAssert( TestXmlMessage.CreateBuilder() .SetExtension(UnittestExtrasXmltest.ExtensionMessage, new TestXmlExtension.Builder().SetNumber(42).Build()) .Build(), @"{""number"":42}" ); }
public void TestWithExtensionText() { FormatterAssert( TestXmlMessage.CreateBuilder() .SetValid(false) .SetExtension(UnittestExtrasXmltest.ExtensionText, " extension text value ! ") .Build(), @"{""valid"":false,""extension_text"":"" extension text value ! ""}" ); }
public void TestWithExtensionNumber() { FormatterAssert( TestXmlMessage.CreateBuilder() .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionMessage, new TestXmlExtension.Builder().SetNumber(42).Build()) .Build(), @"{""number"":42}" ); }
public void TestWithExtensionArray() { FormatterAssert( TestXmlMessage.CreateBuilder() .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 100) .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 101) .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 102) .Build(), @"{""extension_number"":[100,101,102]}" ); }
public void TestMergeFromProtoType() { TestXmlMessage msg = Extensions.MergeFrom(new TestXmlMessage.Builder(), new MessageFormatOptions(), "application/vnd.google.protobuf", new MemoryStream( TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build().ToByteArray() )) .Build(); Assert.AreEqual("a", msg.Text); Assert.AreEqual(1, msg.Number); }
public void Example_ReadJsonUsingICodedInputStream() { TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); ICodedInputStream reader = JsonFormatReader.CreateInstance(@"{""valid"":true}"); reader.ReadMessageStart(); //manually read the begin the message '{' builder.MergeFrom(reader); //write the message normally reader.ReadMessageEnd(); //manually read the end message '}' }
public void TestXmlReadEmptyRoot() { TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); ICodedInputStream reader = XmlFormatReader.CreateInstance(@"<root/>"); reader.ReadMessageStart(); //manually read the begin the message '{' builder.MergeFrom(reader); //write the message normally reader.ReadMessageEnd(); //manually read the end message '}' }
public void TestXmlReadEmptyChild() { TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); ICodedInputStream reader = XmlFormatReader.CreateInstance(@"<root><text /></root>"); reader.ReadMessageStart(); //manually read the begin the message '{' builder.MergeFrom(reader); //write the message normally Assert.IsTrue(builder.HasText); Assert.AreEqual(String.Empty, builder.Text); }
public void Example_ReadXmlUsingICodedInputStream() { TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); ICodedInputStream reader = XmlFormatReader.CreateInstance(@"<root><valid>true</valid></root>"); reader.ReadMessageStart(); //manually read the begin the message '{' builder.MergeFrom(reader); //read the message normally reader.ReadMessageEnd(); //manually read the end message '}' }
public void TestWithExtensionArray() { FormatterAssert( TestXmlMessage.CreateBuilder() .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 100) .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 101) .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 102) .Build(), @"{""extension_number"":[100,101,102]}" ); }
public void Example_FromJson() { TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); //3.5: builder.MergeFromJson(@"{""valid"":true}"); Extensions.MergeFromJson(builder, @"{""valid"":true}"); TestXmlMessage message = builder.Build(); Assert.AreEqual(true, message.Valid); }
public void TestJsonFormatted() { MemoryStream ms = new MemoryStream(); Extensions.WriteTo(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build(), new MessageFormatOptions() { FormattedOutput = true }, "application/json", ms); Assert.AreEqual("{\r\n \"text\": \"a\",\r\n \"number\": 1\r\n}", Encoding.UTF8.GetString(ms.ToArray(), 0, (int)ms.Length)); }