//--- Class Methods --- private static void Test(string name, XmlRender xmlRender, CaseFolding caseFolding, string doctype, bool format) { string source; string expected; ReadTest(name, out source, out expected); expected = expected.Trim().Replace("\r", ""); string actual; // determine how the document should be written back XmlReaderTestCallback callback; switch (xmlRender) { case XmlRender.Doc: // test writing sgml reader using xml document load callback = (reader, writer) => { var doc = new XmlDocument(); doc.Load(reader); doc.WriteTo(writer); }; break; case XmlRender.DocClone: // test writing sgml reader using xml document load and clone callback = (reader, writer) => { var doc = new XmlDocument(); doc.Load(reader); var clone = doc.Clone(); clone.WriteTo(writer); }; break; case XmlRender.Passthrough: // test writing sgml reader directly to xml writer callback = (reader, writer) => { reader.Read(); while (!reader.EOF) { writer.WriteNode(reader, true); } }; break; default: throw new ArgumentException("unknown value", "xmlRender"); } actual = RunTest(caseFolding, doctype, format, source, callback); Assert.AreEqual(expected, actual); }