public void AttributesAndSubElements() { string xml = "<msg><name type=\"surname\"><value>Smith</value></name></msg>"; var reader = new FudgeXmlStreamReader(context, xml); var msg = reader.ReadMsg(); Assert.Equal(FudgeMsgFieldType.Instance, msg.GetByName("name").Type); var name = msg.GetMessage("name"); Assert.Equal("surname", name.GetString("type")); Assert.Equal("Smith", name.GetString("value")); }
public void AttributesAndText() { // Value should go into a field with empty name // REVIEW 2009-12-17 t0rx -- Is this a good thing to do, or should it go in a field called "value", or just be ignored? string xml = "<msg><name type=\"surname\">Smith</name></msg>"; var reader = new FudgeXmlStreamReader(context, xml); var msg = reader.ReadMsg(); Assert.Equal(FudgeMsgFieldType.Instance, msg.GetByName("name").Type); var name = msg.GetMessage("name"); Assert.Equal("surname", name.GetString("type")); Assert.Equal("Smith", name.GetString("")); }
public void MultipleMessages() { string inputXml = "<msg><name>Fred</name></msg><msg><name>Bob</name></msg>"; var reader = new FudgeXmlStreamReader(context, inputXml); var sb = new StringBuilder(); var xmlWriter = XmlWriter.Create(sb, new XmlWriterSettings {OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Fragment}); var writer = new FudgeXmlStreamWriter(context, xmlWriter, "msg") { AutoFlushOnMessageEnd = true }; var multiwriter = new FudgeStreamMultiwriter(new DebuggingWriter(), writer); new FudgeStreamPipe(reader, multiwriter).Process(); string outputXml = sb.ToString(); Assert.Equal(inputXml, outputXml); }
public void NestedMessages() { string xml = "<?xml version=\"1.0\" encoding=\"utf-16\"?><msg><name>Fred</name><address><number>17</number><line1>Our House</line1><line2>In the middle of our street</line2><phone>1234</phone><local /></address></msg>"; var reader = new FudgeXmlStreamReader(context, xml); var writer = new FudgeMsgStreamWriter(); new FudgeStreamPipe(reader, writer).Process(); var msg = writer.DequeueMessage(); Assert.Equal("Our House", msg.GetMessage("address").GetString("line1")); // Convert back to XML and see if it matches var sb = new StringBuilder(); var xmlWriter = XmlWriter.Create(sb); var reader2 = new FudgeMsgStreamReader(context, msg); var writer2 = new FudgeXmlStreamWriter(context, xmlWriter, "msg") { AutoFlushOnMessageEnd = true }; new FudgeStreamPipe(reader2, writer2).Process(); var xml2 = sb.ToString(); Assert.Equal(xml, xml2); }
public void LargeMsg() { var stringWriter = new StringWriter(); var xmlWriter = new XmlTextWriter(stringWriter); var streamWriter = new FudgeXmlStreamWriter(context, xmlWriter, "msg"); FudgeMsg inMsg = StandardFudgeMessages.CreateLargeMessage(context); streamWriter.WriteMsg(inMsg); string msgString = stringWriter.GetStringBuilder().ToString(); var msg = new FudgeXmlStreamReader(context, msgString).ReadMsg(); FudgeUtils.AssertAllFieldsMatch(inMsg, msg); }