public virtual void DefaultMemoryHandler()
        {
            MemoryLimitsAwareHandler handler = new MemoryLimitsAwareHandler();

            NUnit.Framework.Assert.AreEqual(int.MaxValue / 100, handler.GetMaxSizeOfSingleDecompressedPdfStream());
            NUnit.Framework.Assert.AreEqual(int.MaxValue / 20, handler.GetMaxSizeOfDecompressedPdfStreamsSum());
        }
        public virtual void CustomMemoryHandler()
        {
            MemoryLimitsAwareHandler handler = new MemoryLimitsAwareHandler(1000000);

            NUnit.Framework.Assert.AreEqual(100000000, handler.GetMaxSizeOfSingleDecompressedPdfStream());
            NUnit.Framework.Assert.AreEqual(500000000, handler.GetMaxSizeOfDecompressedPdfStreamsSum());
        }
        private static void TestSingleStream(MemoryLimitsAwareHandler handler)
        {
            String expectedExceptionMessage = PdfException.DuringDecompressionSingleStreamOccupiedMoreMemoryThanAllowed;
            int    expectedFailureIndex     = 10;
            String occuredExceptionMessage  = null;
            int    limit = handler.GetMaxSizeOfSingleDecompressedPdfStream();
            long   step  = limit / 10;
            int    i     = 0;

            try {
                handler.BeginDecompressedPdfStreamProcessing();
                for (i = 0; i < 11; i++)
                {
                    handler.ConsiderBytesOccupiedByDecompressedPdfStream(step * (1 + i));
                }
                handler.EndDecompressedPdfStreamProcessing();
            }
            catch (MemoryLimitsAwareException e) {
                occuredExceptionMessage = e.Message;
            }
            NUnit.Framework.Assert.AreEqual(expectedFailureIndex, i);
            NUnit.Framework.Assert.AreEqual(expectedExceptionMessage, occuredExceptionMessage);
        }