private static string RunTest(CaseFolding caseFolding, string doctype, bool format, string source, XmlReaderTestCallback callback) { // initialize sgml reader XmlReader reader = new SgmlReader { CaseFolding = caseFolding, DocType = doctype, InputStream = new StringReader(source), WhitespaceHandling = format ? WhitespaceHandling.None : WhitespaceHandling.All }; if (doctype == "OFX") { ((SgmlReader)reader).Dtd = LoadDtd("OFX", "ofx160.dtd"); } // check if we need to use the LoggingXmlReader if (_debug) { reader = new LoggingXmlReader(reader, Console.Out); } // initialize xml writer var stringWriter = new StringWriter(); var xmlTextWriter = new XmlTextWriter(stringWriter); if (format) { xmlTextWriter.Formatting = Formatting.Indented; } callback(reader, xmlTextWriter); xmlTextWriter.Close(); // reproduce the parsed document var actual = stringWriter.ToString(); // ensure that output can be parsed again try { using (var stringReader = new StringReader(actual)) { var doc = new XmlDocument(); doc.Load(stringReader); } } catch (Exception) { Assert.Fail("unable to parse sgml reader output:\n{0}", actual); } return(actual.Trim().Replace("\r", "")); }
private static string RunTest(CaseFolding caseFolding, string doctype, bool format, string source, XmlReaderTestCallback callback) { // initialize sgml reader XmlReader reader = new SgmlReader { CaseFolding = caseFolding, DocType = doctype, InputStream = new StringReader(source), WhitespaceHandling = format ? WhitespaceHandling.None : WhitespaceHandling.All }; // check if we need to use the LoggingXmlReader if(_debug) { reader = new LoggingXmlReader(reader, Console.Out); } // initialize xml writer var stringWriter = new StringWriter(); var xmlTextWriter = new XmlTextWriter(stringWriter); if(format) { xmlTextWriter.Formatting = Formatting.Indented; } callback(reader, xmlTextWriter); xmlTextWriter.Close(); // reproduce the parsed document var actual = stringWriter.ToString(); // ensure that output can be parsed again try { using(var stringReader = new StringReader(actual)) { var doc = new XmlDocument(); doc.Load(stringReader); } } catch(Exception) { Assert.Fail("unable to parse sgml reader output:\n{0}", actual); } return actual.Trim().Replace("\r", ""); }