Example #1
0
        public void TestWrite1()
        {
            MemoryStream         stream  = new MemoryStream();
            DocumentOutputStream dstream = new DocumentOutputStream(stream, 25);

            for (int j = 0; j < 25; j++)
            {
                dstream.Write(j);
            }
            try
            {
                dstream.Write(0);
                Assert.Fail("Should have caught IOException");
            }
            catch (IOException)
            {
            }
            byte[] output = stream.ToArray();

            Assert.AreEqual(25, output.Length);
            for (int j = 0; j < 25; j++)
            {
                Assert.AreEqual((byte)j, output[j]);
            }
            stream.Close();
        }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="POIFSWriterEvent"/> class.
 /// </summary>
 /// <param name="stream">the POIFSDocumentWriter, freshly opened</param>
 /// <param name="path">the path of the document</param>
 /// <param name="documentName">the name of the document</param>
 /// <param name="limit">the limit, in bytes, that can be written to the stream</param>
 public POIFSWriterEventArgs(DocumentOutputStream stream, POIFSDocumentPath path, string documentName, int limit)
 {
     this.stream       = stream;
     this.path         = path;
     this.documentName = documentName;
     this.limit        = limit;
 }
Example #3
0
        public void TestWriteFiller()
        {
            MemoryStream         stream  = new MemoryStream();
            DocumentOutputStream dstream = new DocumentOutputStream(stream, 25);

            for (int j = 0; j < 25; j++)
            {
                dstream.Write(j);
            }
            try
            {
                dstream.Write(0);
                Assert.Fail("Should have caught IOException");
            }
            catch (IOException)
            {
            }
            dstream.WriteFiller(100, (byte)0xff);
            byte[] output = stream.ToArray();

            Assert.AreEqual(100, output.Length);
            for (int j = 0; j < 25; j++)
            {
                Assert.AreEqual((byte)j, output[j]);
            }
            for (int j = 25; j < 100; j++)
            {
                Assert.AreEqual((byte)0xff, output[j], j.ToString());
            }
            stream.Close();
        }
Example #4
0
        public void TestWrite3()
        {
            MemoryStream         stream  = new MemoryStream();
            DocumentOutputStream dstream = new DocumentOutputStream(stream, 25);

            byte[] array = new byte[50];

            for (int j = 0; j < 50; j++)
            {
                array[j] = (byte)j;
            }
            dstream.Write(array, 1, 25);
            try
            {
                dstream.Write(array, 0, 1);
                Assert.Fail("Should have caught IOException");
            }
            catch (IOException)
            {
            }
            byte[] output = stream.ToArray();

            Assert.AreEqual(25, output.Length);
            for (int j = 0; j < 25; j++)
            {
                Assert.AreEqual((byte)(j + 1), output[j]);
            }
            stream.Close();
        }
Example #5
0
            public void ProcessPOIFSWriterEvent(POIFSWriterEvent event1)
            {
                try {
                    DocumentOutputStream os = event1.Stream;
                    byte[] buf = new byte[stream.chunkSize];

                    // StreamSize (8 bytes): An unsigned integer that specifies the number of bytes used by data
                    // encrypted within the EncryptedData field, not including the size of the StreamSize field.
                    // Note that the actual size of the \EncryptedPackage stream (1) can be larger than this
                    // value, depending on the block size of the chosen encryption algorithm
                    LittleEndian.PutLong(buf, 0, stream._pos);
                    os.Write(buf, 0, LittleEndian.LONG_SIZE);

                    FileStream fis = stream.fileOut.Create();
                    int        readBytes;
                    while ((readBytes = fis.Read(buf, 0, buf.Length)) != -1)
                    {
                        os.Write(buf, 0, readBytes);
                    }
                    fis.Close();

                    os.Close();

                    stream.fileOut.Delete();
                } catch (IOException e) {
                    throw new EncryptedDocumentException(e);
                }
            }
 /// <summary>
 /// Initializes a new instance of the <see cref="POIFSWriterEvent"/> class.
 /// </summary>
 /// <param name="stream">the POIFSDocumentWriter, freshly opened</param>
 /// <param name="path">the path of the document</param>
 /// <param name="documentName">the name of the document</param>
 /// <param name="limit">the limit, in bytes, that can be written to the stream</param>
 public POIFSWriterEventArgs(DocumentOutputStream stream, POIFSDocumentPath path, string documentName, int limit)
 {
     this.stream = stream;
     this.path = path;
     this.documentName = documentName;
     this.limit = limit;
 }
Example #7
0
        public void TestWrite2()
        {
            MemoryStream         stream  = new MemoryStream();
            DocumentOutputStream dstream = new DocumentOutputStream(stream, 25);

            for (int j = 0; j < 6; j++)
            {
                byte[] array = new byte[4];
                for (int i = 0; i < array.Length; i++)
                {
                    array[i] = (byte)j;
                }
                dstream.Write(array);
            }
            try
            {
                byte[] array = new byte[4];
                for (int i = 0; i < array.Length; i++)
                {
                    array[i] = (byte)7;
                }

                dstream.Write(array);
                Assert.Fail("Should have caught IOException");
            }
            catch (IOException)
            {
            }
            byte[] output = stream.ToArray();

            Assert.AreEqual(24, output.Length);
            for (int j = 0; j < 6; j++)
            {
                for (int k = 0; k < 4; k++)
                {
                    Assert.AreEqual((byte)j,
                                    output[(j * 4) + k], ((j * 4) + k).ToString());
                }
            }
            stream.Close();
        }