blob: a52d04e1e6c661dabfbe7d6ce0af8563bda03891 [file] [log] [blame]
csharptest2b868842011-06-10 14:41:47 -05001using System;
2using System.Collections.Generic;
3using System.IO;
4using System.Text;
5using System.Xml;
6using Google.ProtocolBuffers.Serialization;
7using NUnit.Framework;
8using Google.ProtocolBuffers.TestProtos;
9
10namespace Google.ProtocolBuffers
11{
12 [TestFixture]
13 public class TestWriterFormatXml
14 {
15 [Test]
csharptestc2d2c1a2011-09-08 20:02:11 -050016 public void Example_FromXml()
17 {
18 TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
19
20 XmlReader rdr = XmlReader.Create(new StringReader(@"<root><valid>true</valid></root>"));
21 builder.MergeFromXml(rdr);
22
23 TestXmlMessage message = builder.Build();
24 Assert.AreEqual(true, message.Valid);
25 }
26
27 [Test]
28 public void Example_ToXml()
29 {
30 TestXmlMessage message =
31 TestXmlMessage.CreateBuilder()
32 .SetValid(true)
33 .Build();
34
35 string Xml = message.ToXml();
36
37 Assert.AreEqual(@"<root><valid>true</valid></root>", Xml);
38 }
39
40 [Test]
41 public void Example_WriteXmlUsingICodedOutputStream()
42 {
43 TestXmlMessage message =
44 TestXmlMessage.CreateBuilder()
45 .SetValid(true)
46 .Build();
47
48 using (TextWriter output = new StringWriter())
csharptestc2d2c1a2011-09-08 20:02:11 -050049 {
csharptest353b0fa2011-09-29 16:33:31 -050050 ICodedOutputStream writer = XmlFormatWriter.CreateInstance(output);
csharptest60fd7732011-09-09 12:18:16 -050051 writer.WriteMessageStart(); //manually begin the message, output is '{'
csharptestc2d2c1a2011-09-08 20:02:11 -050052
53 ICodedOutputStream stream = writer;
csharptest60fd7732011-09-09 12:18:16 -050054 message.WriteTo(stream); //write the message normally
csharptestc2d2c1a2011-09-08 20:02:11 -050055
csharptest60fd7732011-09-09 12:18:16 -050056 writer.WriteMessageEnd(); //manually write the end message '}'
csharptestc2d2c1a2011-09-08 20:02:11 -050057 Assert.AreEqual(@"<root><valid>true</valid></root>", output.ToString());
58 }
59 }
60
61 [Test]
62 public void Example_ReadXmlUsingICodedInputStream()
63 {
64 TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
csharptest60fd7732011-09-09 12:18:16 -050065 ICodedInputStream reader = XmlFormatReader.CreateInstance(@"<root><valid>true</valid></root>");
csharptestc2d2c1a2011-09-08 20:02:11 -050066
csharptest60fd7732011-09-09 12:18:16 -050067 reader.ReadMessageStart(); //manually read the begin the message '{'
csharptestc2d2c1a2011-09-08 20:02:11 -050068
csharptest60fd7732011-09-09 12:18:16 -050069 builder.MergeFrom(reader); //read the message normally
csharptestc2d2c1a2011-09-08 20:02:11 -050070
csharptest60fd7732011-09-09 12:18:16 -050071 reader.ReadMessageEnd(); //manually read the end message '}'
csharptestc2d2c1a2011-09-08 20:02:11 -050072 }
73
74 [Test]
csharptestf2925232011-06-11 10:41:57 -050075 public void TestToXmlParseFromXml()
76 {
77 TestAllTypes msg = new TestAllTypes.Builder().SetDefaultBool(true).Build();
78 string xml = msg.ToXml();
79 Assert.AreEqual("<root><default_bool>true</default_bool></root>", xml);
csharptest0f3540e2011-08-05 20:40:14 -050080 TestAllTypes copy = new TestAllTypes.Builder().MergeFromXml(XmlReader.Create(new StringReader(xml))).Build();
csharptestf2925232011-06-11 10:41:57 -050081 Assert.IsTrue(copy.HasDefaultBool && copy.DefaultBool);
82 Assert.AreEqual(msg, copy);
83 }
84
85 [Test]
86 public void TestToXmlParseFromXmlWithRootName()
87 {
88 TestAllTypes msg = new TestAllTypes.Builder().SetDefaultBool(true).Build();
89 string xml = msg.ToXml("message");
90 Assert.AreEqual("<message><default_bool>true</default_bool></message>", xml);
csharptest0f3540e2011-08-05 20:40:14 -050091 TestAllTypes copy = new TestAllTypes.Builder().MergeFromXml("message", XmlReader.Create(new StringReader(xml))).Build();
csharptestf2925232011-06-11 10:41:57 -050092 Assert.IsTrue(copy.HasDefaultBool && copy.DefaultBool);
93 Assert.AreEqual(msg, copy);
94 }
95
96 [Test]
csharptest2b868842011-06-10 14:41:47 -050097 public void TestEmptyMessage()
98 {
99 TestXmlChild message = TestXmlChild.CreateBuilder()
100 .Build();
101
102 StringWriter sw = new StringWriter();
103 XmlTextWriter xw = new XmlTextWriter(sw);
104
105 //When we call message.WriteTo, we are responsible for the root element
106 xw.WriteStartElement("root");
csharptest7fc785c2011-06-10 23:54:53 -0500107 message.WriteTo(XmlFormatWriter.CreateInstance(xw));
csharptest2b868842011-06-10 14:41:47 -0500108 xw.WriteEndElement();
109 xw.Flush();
110
111 string xml = sw.ToString();
csharptest7fc785c2011-06-10 23:54:53 -0500112 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500113 TestXmlChild copy = rdr.Merge(TestXmlChild.CreateBuilder()).Build();
114 Assert.AreEqual(message, copy);
115 }
116 [Test]
117 public void TestRepeatedField()
118 {
119 TestXmlChild message = TestXmlChild.CreateBuilder()
120 .AddOptions(EnumOptions.ONE)
121 .AddOptions(EnumOptions.TWO)
122 .Build();
123
124 //Allow the writer to write the root element
125 StringWriter sw = new StringWriter();
csharptest7fc785c2011-06-10 23:54:53 -0500126 XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500127
128 string xml = sw.ToString();
csharptest7fc785c2011-06-10 23:54:53 -0500129 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500130 TestXmlChild copy = rdr.Merge(TestXmlChild.CreateBuilder()).Build();
131 Assert.AreEqual(message, copy);
132 }
133 [Test]
134 public void TestNestedEmptyMessage()
135 {
136 TestXmlMessage message = TestXmlMessage.CreateBuilder()
137 .SetChild(TestXmlChild.CreateBuilder().Build())
138 .Build();
139
140 StringWriter sw = new StringWriter();
csharptest7fc785c2011-06-10 23:54:53 -0500141 XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500142
143 string xml = sw.ToString();
csharptest7fc785c2011-06-10 23:54:53 -0500144 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500145 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();
146 Assert.AreEqual(message, copy);
147 }
148 [Test]
149 public void TestNestedMessage()
150 {
151 TestXmlMessage message = TestXmlMessage.CreateBuilder()
152 .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.TWO).Build())
153 .Build();
154
155 StringWriter sw = new StringWriter();
csharptest7fc785c2011-06-10 23:54:53 -0500156 XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500157
158 string xml = sw.ToString();
csharptest7fc785c2011-06-10 23:54:53 -0500159 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500160 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();
161 Assert.AreEqual(message, copy);
162 }
163 [Test]
164 public void TestBooleanTypes()
165 {
166 TestXmlMessage message = TestXmlMessage.CreateBuilder()
167 .SetValid(true)
168 .Build();
169
170 StringWriter sw = new StringWriter();
csharptest7fc785c2011-06-10 23:54:53 -0500171 XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500172
173 string xml = sw.ToString();
csharptest7fc785c2011-06-10 23:54:53 -0500174 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500175 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();
176 Assert.AreEqual(message, copy);
177 }
178 [Test]
179 public void TestFullMessage()
180 {
181 TestXmlMessage message = TestXmlMessage.CreateBuilder()
182 .SetValid(true)
183 .SetText("text")
184 .AddTextlines("a")
185 .AddTextlines("b")
186 .AddTextlines("c")
187 .SetNumber(0x1010101010)
188 .AddNumbers(1)
189 .AddNumbers(2)
190 .AddNumbers(3)
191 .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.ONE).SetBinary(ByteString.CopyFrom(new byte[1])))
192 .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.TWO).SetBinary(ByteString.CopyFrom(new byte[2])))
193 .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.THREE).SetBinary(ByteString.CopyFrom(new byte[3])))
194 .Build();
195
196 StringWriter sw = new StringWriter();
csharptest4b75bbe2011-09-29 19:09:32 -0500197 XmlWriter xwtr = XmlWriter.Create(sw, new XmlWriterSettings {Indent = true, IndentChars = " "});
198
199 XmlFormatWriter.CreateInstance(xwtr).WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500200
201 string xml = sw.ToString();
202
csharptest7fc785c2011-06-10 23:54:53 -0500203 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500204 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();
205 Assert.AreEqual(message, copy);
206 }
207 [Test]
208 public void TestFullMessageWithRichTypes()
209 {
210 TestXmlMessage message = TestXmlMessage.CreateBuilder()
211 .SetValid(true)
212 .SetText("text")
213 .AddTextlines("a")
214 .AddTextlines("b")
215 .AddTextlines("c")
216 .SetNumber(0x1010101010)
217 .AddNumbers(1)
218 .AddNumbers(2)
219 .AddNumbers(3)
220 .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.ONE).SetBinary(ByteString.CopyFrom(new byte[1])))
221 .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.TWO).SetBinary(ByteString.CopyFrom(new byte[2])))
222 .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.THREE).SetBinary(ByteString.CopyFrom(new byte[3])))
223 .Build();
224
225 StringWriter sw = new StringWriter();
csharptest4b75bbe2011-09-29 19:09:32 -0500226 XmlWriter xwtr = XmlWriter.Create(sw, new XmlWriterSettings { Indent = true, IndentChars = " " });
227
228 XmlFormatWriter.CreateInstance(xwtr)
csharptest7fc785c2011-06-10 23:54:53 -0500229 .SetOptions(XmlWriterOptions.OutputNestedArrays | XmlWriterOptions.OutputEnumValues)
230 .WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500231
232 string xml = sw.ToString();
233
csharptest7fc785c2011-06-10 23:54:53 -0500234 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500235 rdr.Options = XmlReaderOptions.ReadNestedArrays;
236 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();
237 Assert.AreEqual(message, copy);
238 }
239 [Test]
240 public void TestFullMessageWithUnknownFields()
241 {
242 TestXmlMessage origial = TestXmlMessage.CreateBuilder()
243 .SetValid(true)
244 .SetText("text")
245 .AddTextlines("a")
246 .AddTextlines("b")
247 .AddTextlines("c")
248 .SetNumber(0x1010101010)
249 .AddNumbers(1)
250 .AddNumbers(2)
251 .AddNumbers(3)
252 .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.ONE).SetBinary(ByteString.CopyFrom(new byte[1])))
253 .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.TWO).SetBinary(ByteString.CopyFrom(new byte[2])))
254 .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.THREE).SetBinary(ByteString.CopyFrom(new byte[3])))
255 .Build();
256 TestXmlNoFields message = TestXmlNoFields.CreateBuilder().MergeFrom(origial.ToByteArray()).Build();
257
258 Assert.AreEqual(0, message.AllFields.Count);
259
260 StringWriter sw = new StringWriter();
csharptest7fc785c2011-06-10 23:54:53 -0500261 XmlFormatWriter.CreateInstance(sw)
262 .SetOptions(XmlWriterOptions.OutputNestedArrays | XmlWriterOptions.OutputEnumValues)
263 .WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500264
265 string xml = sw.ToString();
266
267 using (XmlReader x = XmlReader.Create(new StringReader(xml)))
268 {
269 x.MoveToContent();
270 Assert.AreEqual(XmlNodeType.Element, x.NodeType);
271 //should always be empty
272 Assert.IsTrue(x.IsEmptyElement ||
273 (x.Read() && x.NodeType == XmlNodeType.EndElement)
274 );
275 }
276
csharptest7fc785c2011-06-10 23:54:53 -0500277 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500278 rdr.Options = XmlReaderOptions.ReadNestedArrays;
279 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();
280 Assert.AreEqual(TestXmlMessage.DefaultInstance, copy);
281 }
282 [Test]
283 public void TestMessageWithXmlText()
284 {
285 TestXmlMessage message = TestXmlMessage.CreateBuilder()
286 .SetText("<text>").Build();
287
288 StringWriter sw = new StringWriter();
csharptest7fc785c2011-06-10 23:54:53 -0500289 XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500290
291 string xml = sw.ToString();
292
csharptest7fc785c2011-06-10 23:54:53 -0500293 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500294 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();
295 Assert.AreEqual(message, copy);
296 }
297 [Test]
298 public void TestXmlWithWhitespace()
299 {
300 TestXmlMessage message = TestXmlMessage.CreateBuilder()
301 .SetText(" \t <- leading space and trailing -> \r\n\t").Build();
302
303 StringWriter sw = new StringWriter();
csharptest7fc785c2011-06-10 23:54:53 -0500304 XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500305
306 string xml = sw.ToString();
307
csharptest7fc785c2011-06-10 23:54:53 -0500308 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500309 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();
310 Assert.AreEqual(message, copy);
311 }
312 [Test]
313 public void TestXmlWithExtensionText()
314 {
315 TestXmlMessage message = TestXmlMessage.CreateBuilder()
316 .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionText, " extension text value ! ")
317 .Build();
318
319 StringWriter sw = new StringWriter();
csharptest7fc785c2011-06-10 23:54:53 -0500320 XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500321
322 string xml = sw.ToString();
323
324 ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
325 UnitTestXmlSerializerTestProtoFile.RegisterAllExtensions(registry);
326
csharptest7fc785c2011-06-10 23:54:53 -0500327 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500328 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder(), registry).Build();
329 Assert.AreEqual(message, copy);
330 }
331 [Test]
332 public void TestXmlWithExtensionMessage()
333 {
334 TestXmlMessage message = TestXmlMessage.CreateBuilder()
335 .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionMessage,
336 new TestXmlExtension.Builder().SetNumber(42).Build()).Build();
337
338 StringWriter sw = new StringWriter();
csharptest7fc785c2011-06-10 23:54:53 -0500339 XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500340
341 string xml = sw.ToString();
342
343 ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
344 UnitTestXmlSerializerTestProtoFile.RegisterAllExtensions(registry);
345
csharptest7fc785c2011-06-10 23:54:53 -0500346 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500347 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder(), registry).Build();
348 Assert.AreEqual(message, copy);
349 }
350 [Test]
351 public void TestXmlWithExtensionArray()
352 {
353 TestXmlMessage message = TestXmlMessage.CreateBuilder()
354 .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 100)
355 .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 101)
356 .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 102)
357 .Build();
358
359 StringWriter sw = new StringWriter();
csharptest7fc785c2011-06-10 23:54:53 -0500360 XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500361
362 string xml = sw.ToString();
363
364 ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
365 UnitTestXmlSerializerTestProtoFile.RegisterAllExtensions(registry);
366
csharptest7fc785c2011-06-10 23:54:53 -0500367 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500368 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder(), registry).Build();
369 Assert.AreEqual(message, copy);
370 }
371 [Test]
372 public void TestXmlWithExtensionEnum()
373 {
374 TestXmlMessage message = TestXmlMessage.CreateBuilder()
375 .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionEnum, EnumOptions.ONE)
376 .Build();
377
378 StringWriter sw = new StringWriter();
csharptest7fc785c2011-06-10 23:54:53 -0500379 XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);
csharptest2b868842011-06-10 14:41:47 -0500380
381 string xml = sw.ToString();
382
383 ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
384 UnitTestXmlSerializerTestProtoFile.RegisterAllExtensions(registry);
385
csharptest7fc785c2011-06-10 23:54:53 -0500386 XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);
csharptest2b868842011-06-10 14:41:47 -0500387 TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder(), registry).Build();
388 Assert.AreEqual(message, copy);
389 }
csharptestc2d2c1a2011-09-08 20:02:11 -0500390 [Test]
391 public void TestXmlReadEmptyRoot()
392 {
393 TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
csharptest60fd7732011-09-09 12:18:16 -0500394 ICodedInputStream reader = XmlFormatReader.CreateInstance(@"<root/>");
csharptestc2d2c1a2011-09-08 20:02:11 -0500395
csharptest60fd7732011-09-09 12:18:16 -0500396 reader.ReadMessageStart(); //manually read the begin the message '{'
csharptestc2d2c1a2011-09-08 20:02:11 -0500397
csharptest60fd7732011-09-09 12:18:16 -0500398 builder.MergeFrom(reader); //write the message normally
csharptestc2d2c1a2011-09-08 20:02:11 -0500399
csharptest60fd7732011-09-09 12:18:16 -0500400 reader.ReadMessageEnd(); //manually read the end message '}'
401 }
402
403 [Test]
404 public void TestXmlReadEmptyChild()
405 {
406 TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
407 ICodedInputStream reader = XmlFormatReader.CreateInstance(@"<root><text /></root>");
408
409 reader.ReadMessageStart(); //manually read the begin the message '{'
410
411 builder.MergeFrom(reader); //write the message normally
412 Assert.IsTrue(builder.HasText);
413 Assert.AreEqual(String.Empty, builder.Text);
414 }
415
416 [Test]
417 public void TestXmlReadWriteWithoutRoot()
418 {
419 TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
420 TestXmlMessage message = builder.SetText("abc").SetNumber(123).Build();
421
422 string xml;
423 using (StringWriter sw = new StringWriter())
424 {
425 ICodedOutputStream output = XmlFormatWriter.CreateInstance(
426 XmlWriter.Create(sw, new XmlWriterSettings() { ConformanceLevel = ConformanceLevel.Fragment }));
427
428 message.WriteTo(output);
429 output.Flush();
430 xml = sw.ToString();
431 }
432 Assert.AreEqual("<text>abc</text><number>123</number>", xml);
433
434 TestXmlMessage copy;
435 using (XmlReader xr = XmlReader.Create(new StringReader(xml), new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Fragment }))
436 {
437 ICodedInputStream input = XmlFormatReader.CreateInstance(xr);
438 copy = TestXmlMessage.CreateBuilder().MergeFrom(input).Build();
439 }
440
441 Assert.AreEqual(message, copy);
csharptestc2d2c1a2011-09-08 20:02:11 -0500442 }
443
csharptest0f3540e2011-08-05 20:40:14 -0500444 [Test, ExpectedException(typeof(RecursionLimitExceededException))]
csharptest3b70dd72011-06-11 12:22:17 -0500445 public void TestRecursiveLimit()
446 {
447 StringBuilder sb = new StringBuilder(8192);
448 for (int i = 0; i < 80; i++)
449 sb.Append("<child>");
csharptest0f3540e2011-08-05 20:40:14 -0500450 TestXmlRescursive msg = new TestXmlRescursive.Builder().MergeFromXml("child", XmlReader.Create(new StringReader(sb.ToString()))).Build();
csharptest3b70dd72011-06-11 12:22:17 -0500451 }
csharptest2b868842011-06-10 14:41:47 -0500452 }
453}