Exemplo n.º 1
0
 public virtual void TestIncorrectLength()
 {
     NUnit.Framework.Assert.That(() => {
         MemoryLimitsAwareOutputStream stream = new MemoryLimitsAwareOutputStream();
         stream.Write(new byte[1], 0, -1);
     }
                                 , NUnit.Framework.Throws.InstanceOf <IndexOutOfRangeException>())
     ;
 }
Exemplo n.º 2
0
 public virtual void TestNegativeSize()
 {
     NUnit.Framework.Assert.That(() => {
         byte[] zeroArray = new byte[0];
         MemoryLimitsAwareOutputStream stream = new MemoryLimitsAwareOutputStream();
         stream.SetMaxStreamSize(-100);
         NUnit.Framework.Assert.AreEqual(-100, stream.GetMaxStreamSize());
         stream.Write(zeroArray, 0, zeroArray.Length);
     }
                                 , NUnit.Framework.Throws.InstanceOf <MemoryLimitsAwareException>())
     ;
 }
Exemplo n.º 3
0
 public virtual void TestMaxSize()
 {
     NUnit.Framework.Assert.That(() => {
         byte[] bigArray   = new byte[70];
         byte[] smallArray = new byte[31];
         MemoryLimitsAwareOutputStream stream = new MemoryLimitsAwareOutputStream();
         stream.SetMaxStreamSize(100);
         NUnit.Framework.Assert.AreEqual(100, stream.GetMaxStreamSize());
         stream.Write(bigArray, 0, bigArray.Length);
         NUnit.Framework.Assert.AreEqual(bigArray.Length, stream.Length);
         stream.Write(smallArray, 0, smallArray.Length);
     }
                                 , NUnit.Framework.Throws.InstanceOf <MemoryLimitsAwareException>())
     ;
 }
        /// <summary>
        /// Creates a
        /// <see cref="MemoryLimitsAwareOutputStream"/>
        /// which will be used for decompression of the passed pdf stream.
        /// </summary>
        /// <param name="streamDictionary">the pdf stream which is going to be decompressed.</param>
        /// <returns>
        /// the
        /// <see cref="System.IO.MemoryStream"/>
        /// which will be used for decompression of the passed pdf stream
        /// </returns>
        public virtual MemoryStream EnableMemoryLimitsAwareHandler(PdfDictionary streamDictionary)
        {
            MemoryLimitsAwareOutputStream outputStream             = new MemoryLimitsAwareOutputStream();
            MemoryLimitsAwareHandler      memoryLimitsAwareHandler = null;

            if (null != streamDictionary.GetIndirectReference())
            {
                memoryLimitsAwareHandler = streamDictionary.GetIndirectReference().GetDocument().memoryLimitsAwareHandler;
            }
            else
            {
                // We do not reuse some static instance because one can process pdfs in different threads.
                memoryLimitsAwareHandler = new MemoryLimitsAwareHandler();
            }
            if (null != memoryLimitsAwareHandler && memoryLimitsAwareHandler.considerCurrentPdfStream)
            {
                outputStream.SetMaxStreamSize(memoryLimitsAwareHandler.GetMaxSizeOfSingleDecompressedPdfStream());
            }
            return(outputStream);
        }