Пример #1
0
        public void TestShortLastBlock()
        {
            String[] files = new String[] { "ShortLastBlock.qwp", "ShortLastBlock.wps" };

            for (int i = 0; i < files.Length; i++)
            {
                // Open the file up
                OPOIFSFileSystem fs = new OPOIFSFileSystem(
                    _samples.OpenResourceAsStream(files[i])
                    );

                // Write it into a temp output array
                MemoryStream baos = new MemoryStream();
                fs.WriteFileSystem(baos);

                // Check sizes
            }
        }
Пример #2
0
        public void TestBATandXBAT()
        {
            byte[]           hugeStream = new byte[8 * 1024 * 1024];
            OPOIFSFileSystem fs         = new OPOIFSFileSystem();

            fs.Root.CreateDocument("BIG", new MemoryStream(hugeStream));

            MemoryStream baos = new MemoryStream();

            fs.WriteFileSystem(baos);
            byte[] fsData = baos.ToArray();


            // Check the header was written properly
            Stream      inp    = new MemoryStream(fsData);
            HeaderBlock header = new HeaderBlock(inp);

            Assert.AreEqual(109 + 21, header.BATCount);
            Assert.AreEqual(1, header.XBATCount);

            ByteBuffer xbatData = ByteBuffer.CreateBuffer(512);

            xbatData.Write(fsData, (1 + header.XBATIndex) * 512, 512);

            xbatData.Position = 0;

            BATBlock xbat = BATBlock.CreateBATBlock(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS, xbatData);

            for (int i = 0; i < 21; i++)
            {
                Assert.IsTrue(xbat.GetValueAt(i) != POIFSConstants.UNUSED_BLOCK);
            }

            for (int i = 21; i < 127; i++)
            {
                Assert.AreEqual(POIFSConstants.UNUSED_BLOCK, xbat.GetValueAt(i));
            }

            Assert.AreEqual(POIFSConstants.END_OF_CHAIN, xbat.GetValueAt(127));

            RawDataBlockList blockList = new RawDataBlockList(inp, POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS);

            Assert.AreEqual(fsData.Length / 512, blockList.BlockCount() + 1);
            new BlockAllocationTableReader(header.BigBlockSize,
                                           header.BATCount,
                                           header.BATArray,
                                           header.XBATCount,
                                           header.XBATIndex,
                                           blockList);
            Assert.AreEqual(fsData.Length / 512, blockList.BlockCount() + 1);

            fs = null;
            fs = new OPOIFSFileSystem(new MemoryStream(fsData));


            DirectoryNode root = fs.Root;

            Assert.AreEqual(1, root.EntryCount);
            DocumentNode big = (DocumentNode)root.GetEntry("BIG");

            Assert.AreEqual(hugeStream.Length, big.Size);
        }