public void TestPlainBuilder() { TestXmlMessage.Builder builder = 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]))) ; MemoryStream ms = new MemoryStream(); new BinaryFormatter().Serialize(ms, builder); ms.Position = 0; TestXmlMessage.Builder copy = (TestXmlMessage.Builder) new BinaryFormatter().Deserialize(ms); Assert.AreEqual(builder.Build(), copy.Build()); }
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 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 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 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 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 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 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 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 Example_FromXml() { TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); XmlReader rdr = XmlReader.Create(new StringReader(@"<root><valid>true</valid></root>")); //3.5: builder.MergeFromXml(rdr); Extensions.MergeFromXml(builder, rdr); TestXmlMessage message = builder.Build(); Assert.AreEqual(true, message.Valid); }
public void TestNoValue() { ICodedInputStream input = FormUrlEncodedReader.CreateInstance("valid=true&text&numbers=1"); TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); builder.MergeFrom(input); Assert.IsTrue(builder.Valid); Assert.IsTrue(builder.HasText); Assert.AreEqual("", builder.Text); Assert.AreEqual(1, builder.NumbersCount); Assert.AreEqual(1, builder.NumbersList[0]); }
public void Example_FromFormData() { Stream rawPost = new MemoryStream(Encoding.UTF8.GetBytes("text=two+three%20four&valid=true&numbers=1&numbers=2"), false); ICodedInputStream input = FormUrlEncodedReader.CreateInstance(rawPost); TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); builder.MergeFrom(input); TestXmlMessage message = builder.Build(); Assert.AreEqual(true, message.Valid); Assert.AreEqual("two three four", message.Text); Assert.AreEqual(2, message.NumbersCount); Assert.AreEqual(1, message.NumbersList[0]); Assert.AreEqual(2, message.NumbersList[1]); }
public void Example_FromQueryString() { Uri sampleUri = new Uri("http://sample.com/Path/File.ext?text=two+three%20four&valid=true&numbers=1&numbers=2", UriKind.Absolute); ICodedInputStream input = FormUrlEncodedReader.CreateInstance(sampleUri.Query); TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); builder.MergeFrom(input); TestXmlMessage message = builder.Build(); Assert.AreEqual(true, message.Valid); Assert.AreEqual("two three four", message.Text); Assert.AreEqual(2, message.NumbersCount); Assert.AreEqual(1, message.NumbersList[0]); Assert.AreEqual(2, message.NumbersList[1]); }
public void TestBuilderWithExtensions() { TestXmlMessage.Builder builder = 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]))) .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionText, " extension text value ! ") .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionMessage, new TestXmlExtension.Builder().SetNumber(42).Build()) .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 100) .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 101) .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 102) .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionEnum, EnumOptions.ONE) ; ExtensionRegistry registry = ExtensionRegistry.CreateInstance(); UnitTestXmlSerializerTestProtoFile.RegisterAllExtensions(registry); MemoryStream ms = new MemoryStream(); new BinaryFormatter().Serialize(ms, builder); ms.Position = 0; //you need to provide the extension registry as context to the serializer BinaryFormatter bff = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.All, registry)); TestXmlMessage.Builder copy = (TestXmlMessage.Builder)bff.Deserialize(ms); // And all extensions will be defined. Assert.AreEqual(builder.Build(), copy.Build()); }
public void TestReadWriteJsonWithoutRoot() { TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); TestXmlMessage message = builder.SetText("abc").SetNumber(123).Build(); string Json; using (StringWriter sw = new StringWriter()) { ICodedOutputStream output = JsonFormatWriter.CreateInstance(sw); message.WriteTo(output); output.Flush(); Json = sw.ToString(); } Assert.AreEqual(@"""text"":""abc"",""number"":123", Json); ICodedInputStream input = JsonFormatReader.CreateInstance(Json); TestXmlMessage copy = TestXmlMessage.CreateBuilder().MergeFrom(input).Build(); Assert.AreEqual(message, copy); }
public void TestXmlWriterOptions() { TestXmlMessage message = TestXmlMessage.CreateBuilder().SetText("a").AddNumbers(1).AddNumbers(2).Build(); MessageFormatOptions options = new MessageFormatOptions() { XmlWriterOptions = XmlWriterOptions.OutputNestedArrays, XmlWriterRootElementName = "root-node" }; MemoryStream ms = new MemoryStream(); Extensions.WriteTo(message, options, "application/xml", ms); ms.Position = 0; TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); XmlFormatReader.CreateInstance(ms) .SetOptions(XmlReaderOptions.ReadNestedArrays) .Merge("root-node", builder); Assert.AreEqual("a", builder.Text); Assert.AreEqual(1, builder.NumbersList[0]); Assert.AreEqual(2, builder.NumbersList[1]); }