public static void FragmentTest() { string rwTypeStr = "Text"; ReaderWriterFactory.ReaderWriterType rwType = (ReaderWriterFactory.ReaderWriterType) Enum.Parse(typeof(ReaderWriterFactory.ReaderWriterType), rwTypeStr, true); Encoding encoding = Encoding.GetEncoding("utf-8"); int numberOfNestedFragments = 1; MemoryStream ms1 = new MemoryStream(); MemoryStream ms2 = new MemoryStream(); XmlDictionaryWriter writer1 = (XmlDictionaryWriter)ReaderWriterFactory.CreateXmlWriter(rwType, ms1, encoding); XmlDictionaryWriter writer2 = (XmlDictionaryWriter)ReaderWriterFactory.CreateXmlWriter(rwType, ms2, encoding); Assert.True(FragmentHelper.CanFragment(writer1)); Assert.True(FragmentHelper.CanFragment(writer2)); writer1.WriteStartDocument(); writer2.WriteStartDocument(); writer1.WriteStartElement(ReaderWriterConstants.RootElementName); writer2.WriteStartElement(ReaderWriterConstants.RootElementName); SimulateWriteFragment(writer1, true, numberOfNestedFragments); SimulateWriteFragment(writer2, false, numberOfNestedFragments); writer1.WriteEndElement(); writer2.WriteEndElement(); writer1.WriteEndDocument(); writer2.WriteEndDocument(); writer1.Flush(); writer2.Flush(); byte[] doc1 = ms1.ToArray(); byte[] doc2 = ms2.ToArray(); CompareArrays(doc1, 0, doc2, 0, doc1.Length); }
public static void FragmentTest() { string rwTypeStr = "Text"; ReaderWriterFactory.ReaderWriterType rwType = (ReaderWriterFactory.ReaderWriterType) Enum.Parse(typeof(ReaderWriterFactory.ReaderWriterType), rwTypeStr, true); Encoding encoding = Encoding.GetEncoding("utf-8"); MemoryStream ms = new MemoryStream(); XmlDictionaryWriter writer = (XmlDictionaryWriter)ReaderWriterFactory.CreateXmlWriter(rwType, ms, encoding); Assert.False(FragmentHelper.CanFragment(writer)); }
static bool WriteTest(MemoryStream ms, ReaderWriterFactory.ReaderWriterType rwType, Encoding encoding, MyStreamProvider myStreamProvider) { XmlWriter writer = ReaderWriterFactory.CreateXmlWriter(rwType, ms, encoding); XmlDictionaryWriter writeD = writer as XmlDictionaryWriter; writeD.WriteStartElement("Root"); writeD.WriteValue(myStreamProvider); if (rwType != ReaderWriterFactory.ReaderWriterType.MTOM) { // stream should be released right after WriteValue if (myStreamProvider.StreamReleased) { Console.WriteLine("Ok, stream released right after WriteValue"); } else { Console.WriteLine("Error, stream not released after WriteValue"); return(false); } } writer.WriteEndElement(); // stream should be released now for MTOM if (rwType == ReaderWriterFactory.ReaderWriterType.MTOM) { if (myStreamProvider.StreamReleased) { Console.WriteLine("Ok, stream released right after WriteValue"); } else { Console.WriteLine("Error, stream not released after WriteValue"); return(false); } } writer.Flush(); return(true); }
private static bool ReadTest(MemoryStream ms, Encoding encoding, ReaderWriterFactory.ReaderWriterType rwType, byte[] byteArray) { ms.Position = 0; XmlDictionaryReader reader = (XmlDictionaryReader)ReaderWriterFactory.CreateXmlReader(rwType, ms, encoding); reader.ReadToDescendant("Root"); byte[] bytesFromReader = reader.ReadElementContentAsBase64(); if (bytesFromReader.Length != byteArray.Length) { return false; } else { for (int i = 0; i < byteArray.Length; i++) { if (byteArray[i] != bytesFromReader[i]) { return false; } } } return true; }
static bool WriteTest(MemoryStream ms, ReaderWriterFactory.ReaderWriterType rwType, Encoding encoding, MyStreamProvider myStreamProvider) { XmlWriter writer = ReaderWriterFactory.CreateXmlWriter(rwType, ms, encoding); XmlDictionaryWriter writeD = writer as XmlDictionaryWriter; writeD.WriteStartElement("Root"); writeD.WriteValue(myStreamProvider); if (rwType != ReaderWriterFactory.ReaderWriterType.MTOM) { // stream should be released right after WriteValue Assert.True(myStreamProvider.StreamReleased, "Error, stream not released after WriteValue"); } writer.WriteEndElement(); // stream should be released now for MTOM if (rwType == ReaderWriterFactory.ReaderWriterType.MTOM) { Assert.True(myStreamProvider.StreamReleased, "Error, stream not released after WriteEndElement"); } writer.Flush(); return true; }
public ProcessManager() { readerWriterFactory = new ReaderWriterFactory(); pool = new UserThreadPool(threadCount); }