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));
 }
Example #3
0
    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;
    }
 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;
 }
 public ProcessManager()
 {
     readerWriterFactory = new ReaderWriterFactory();
     pool = new UserThreadPool(threadCount);
 }