FileDocCategorySizeDatePackage
TestDocumentBlock.javaAPI DocApache Poi 3.0.14688Mon Jan 01 12:39:44 GMT 2007org.apache.poi.poifs.storage

TestDocumentBlock

public class TestDocumentBlock extends TestCase
Class to test DocumentBlock functionality
author
Marc Johnson

Fields Summary
private static final byte[]
_testdata
Constructors Summary
public TestDocumentBlock(String name)
Constructor TestDocumentBlock

param
name

        _testdata = new byte[ 2000 ];
        for (int j = 0; j < _testdata.length; j++)
        {
            _testdata[ j ] = ( byte ) j;
        }
    
        super(name);
    
Methods Summary
public static voidmain(java.lang.String[] ignored_args)
main method to run the unit tests

param
ignored_args

        System.out
            .println("Testing org.apache.poi.poifs.storage.DocumentBlock");
        junit.textui.TestRunner.run(TestDocumentBlock.class);
    
public voidtestConstructor()
Test the writing DocumentBlock constructor.

exception
IOException

        ByteArrayInputStream input = new ByteArrayInputStream(_testdata);
        int                  index = 0;
        int                  size  = 0;

        while (true)
        {
            byte[] data = new byte[ Math.min(_testdata.length - index, 512) ];

            System.arraycopy(_testdata, index, data, 0, data.length);
            DocumentBlock block = new DocumentBlock(input);

            verifyOutput(block, data);
            size += block.size();
            if (block.partiallyRead())
            {
                break;
            }
            index += 512;
        }
        assertEquals(_testdata.length, size);
    
public voidtestRead()
test static read method

exception
IOException

        DocumentBlock[]      blocks = new DocumentBlock[ 4 ];
        ByteArrayInputStream input  = new ByteArrayInputStream(_testdata);

        for (int j = 0; j < 4; j++)
        {
            blocks[ j ] = new DocumentBlock(input);
        }
        for (int j = 1; j <= 2000; j += 17)
        {
            byte[] buffer = new byte[ j ];
            int    offset = 0;

            for (int k = 0; k < (2000 / j); k++)
            {
                DocumentBlock.read(blocks, buffer, offset);
                for (int n = 0; n < buffer.length; n++)
                {
                    assertEquals("checking byte " + (k * j) + n,
                                 _testdata[ (k * j) + n ], buffer[ n ]);
                }
                offset += j;
            }
        }
    
public voidtestReadingConstructor()
Test 'reading' constructor

exception
IOException

        RawDataBlock input =
            new RawDataBlock(new ByteArrayInputStream(_testdata));

        verifyOutput(new DocumentBlock(input), input.getData());
    
private voidverifyOutput(org.apache.poi.poifs.storage.DocumentBlock block, byte[] input)

        assertEquals(input.length, block.size());
        if (input.length < 512)
        {
            assertTrue(block.partiallyRead());
        }
        else
        {
            assertTrue(!block.partiallyRead());
        }
        ByteArrayOutputStream output = new ByteArrayOutputStream(512);

        block.writeBlocks(output);
        byte[] copy = output.toByteArray();
        int    j    = 0;

        for (; j < input.length; j++)
        {
            assertEquals(input[ j ], copy[ j ]);
        }
        for (; j < 512; j++)
        {
            assertEquals(( byte ) 0xFF, copy[ j ]);
        }