⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testsstrecord.java

📁 Office格式转换代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            {                record = new SSTRecord( record_type, record_length, data );            }            else            {                record.processContinueRecord( data );            }        }        assertEquals( strings.length, record.getNumStrings() );        assertEquals( strings.length, record.getNumUniqueStrings() );        assertEquals( strings.length, record.countStrings() );        for ( int k = 0; k < strings.length; k++ )        {            assertEquals( strings[k], record.getString( k ) );        }        record = new SSTRecord();        bstrings[1] = new byte[bstrings[1].length - 1];        for ( int k = 0; k < bstrings.length; k++ )        {            if ( ( bstrings[k].length % 2 ) == 1 )            {                Arrays.fill( bstrings[k], (byte) ( 'a' + k ) );                strings[k] = new String( bstrings[k] );            }            else            {                char[] data = new char[bstrings[k].length / 2];                Arrays.fill( data, (char) ( '\u2122' + k ) );                strings[k] = new String( data );            }            record.addString( strings[k] );        }        content = new byte[record.getRecordSize()];        record.serialize( 0, content );        total_length--;        assertEquals( total_length, content.length );        for ( int index = 0; index != content.length; )        {            short record_type = LittleEndian.getShort( content, index );            index += LittleEndianConsts.SHORT_SIZE;            short record_length = LittleEndian.getShort( content, index );            index += LittleEndianConsts.SHORT_SIZE;            byte[] data = new byte[record_length];            System.arraycopy( content, index, data, 0, record_length );            index += record_length;            if ( record_type == SSTRecord.sid )            {                record = new SSTRecord( record_type, record_length, data );            }            else            {                record.processContinueRecord( data );            }        }        assertEquals( strings.length, record.getNumStrings() );        assertEquals( strings.length, record.getNumUniqueStrings() );        assertEquals( strings.length, record.countStrings() );        for ( int k = 0; k < strings.length; k++ )        {            assertEquals( strings[k], record.getString( k ) );        }    }    /**     * test SSTRecord boundary conditions     *     * @exception IOException     */    public void testSSTRecordBug()            throws IOException    {        // create an SSTRecord and write a certain pattern of strings        // to it ... then serialize it and verify the content        SSTRecord record = new SSTRecord();        // the record will start with two integers, then this string        // ... that will eat up 16 of the 8224 bytes that the record        // can hold        record.addString( "Hello" );        // now we have an additional 8208 bytes, which is an exact        // multiple of 16 bytes        long testvalue = 1000000000000L;        for ( int k = 0; k < 2000; k++ )        {            record.addString( String.valueOf( testvalue++ ) );        }        byte[] content = new byte[record.getRecordSize()];        record.serialize( 0, content );        assertEquals( (byte) 13, content[4 + 8228] );        assertEquals( (byte) 13, content[4 + 8228 * 2] );        assertEquals( (byte) 13, content[4 + 8228 * 3] );    }    /**     * test simple addString     */    public void testSimpleAddString()    {        SSTRecord record = new SSTRecord();        String s1 = "Hello world";        // \u2122 is the encoding of the trademark symbol ...        String s2 = "Hello world\u2122";        assertEquals( 0, record.addString( s1 ) );        assertEquals( s1, record.getString( 0 ) );        assertEquals( 1, record.countStrings() );        assertEquals( 1, record.getNumStrings() );        assertEquals( 1, record.getNumUniqueStrings() );        assertEquals( 0, record.addString( s1 ) );        assertEquals( s1, record.getString( 0 ) );        assertEquals( 1, record.countStrings() );        assertEquals( 2, record.getNumStrings() );        assertEquals( 1, record.getNumUniqueStrings() );        assertEquals( 1, record.addString( s2 ) );        assertEquals( s2, record.getString( 1 ) );        assertEquals( 2, record.countStrings() );        assertEquals( 3, record.getNumStrings() );        assertEquals( 2, record.getNumUniqueStrings() );        Iterator iter = record.getStrings();        while ( iter.hasNext() )        {            UnicodeString ucs = (UnicodeString) iter.next();            if ( ucs.getString().equals( s1 ) )            {                assertEquals( (byte) 0, ucs.getOptionFlags() );            }            else if ( ucs.getString().equals( s2 ) )            {                assertEquals( (byte) 1, ucs.getOptionFlags() );            }            else            {                fail( "cannot match string: " + ucs.getString() );            }        }    }    /**     * test reader constructor     *     * @exception IOException     */    public void testReaderConstructor()            throws IOException    {        byte[] testdata = HexRead.readData( _test_file_path + File.separator + "BigSSTRecord" );        byte[] input = new byte[testdata.length - 4];        System.arraycopy( testdata, 4, input, 0, input.length );        SSTRecord record = new SSTRecord( LittleEndian.getShort( testdata, 0 ),                LittleEndian.getShort( testdata, 2 ),                input );        assertEquals( 1464, record.getNumStrings() );        assertEquals( 688, record.getNumUniqueStrings() );        assertEquals( 492, record.countStrings() );//jmh        assertEquals( 1, record.getDeserializer().getContinuationExpectedChars() );        assertEquals( "Consolidated B-24J Liberator The Dragon & His Tai",                record.getDeserializer().getUnfinishedString() );//        assertEquals( 52, record.getDeserializer().getTotalLength() );//        assertEquals( 3, record.getDeserializer().getStringDataOffset() );        assertTrue( !record.getDeserializer().isWideChar() );    }    /**     * test simple constructor     */    public void testSimpleConstructor()    {        SSTRecord record = new SSTRecord();        assertEquals( 0, record.getNumStrings() );        assertEquals( 0, record.getNumUniqueStrings() );        assertEquals( 0, record.countStrings() );        assertEquals( 0, record.getDeserializer().getContinuationCharsRead() );        assertEquals( "", record.getDeserializer().getUnfinishedString() );//        assertEquals( 0, record.getDeserializer().getTotalLength() );//        assertEquals( 0, record.getDeserializer().getStringDataOffset() );        assertTrue( !record.getDeserializer().isWideChar() );        byte[] output = record.serialize();        byte[] expected =                {                    (byte) record.getSid(), (byte) ( record.getSid() >> 8 ),                    (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0,                    (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0                };        assertEquals( expected.length, output.length );        for ( int k = 0; k < expected.length; k++ )        {            assertEquals( String.valueOf( k ), expected[k], output[k] );        }    }    /**     * main method to run the unit tests     *     * @param ignored_args     */    public static void main( String[] ignored_args )    {        System.out.println( "Testing hssf.record.SSTRecord functionality" );        junit.textui.TestRunner.run( TestSSTRecord.class );    }    /**     * Tests that workbooks with rich text that duplicates a non rich text cell can be read and written.     */    public void testReadWriteDuplicatedRichText1()            throws Exception    {        File file = new File( _test_file_path + File.separator + "duprich1.xls" );        InputStream stream = new FileInputStream( file );        HSSFWorkbook wb = new HSSFWorkbook( stream );        stream.close();        HSSFSheet sheet = wb.getSheetAt( 1 );        assertEquals( "01/05 (Wed) ", sheet.getRow( 0 ).getCell( (short) 8 ).getStringCellValue() );        assertEquals( "01/05 (Wed)", sheet.getRow( 1 ).getCell( (short) 8 ).getStringCellValue() );        file = File.createTempFile( "testout", "xls" );        FileOutputStream outStream = new FileOutputStream( file );        wb.write( outStream );        outStream.close();        file.delete();        // test the second file.        file = new File( _test_file_path + File.separator + "duprich2.xls" );        stream = new FileInputStream( file );        wb = new HSSFWorkbook( stream );        stream.close();        sheet = wb.getSheetAt( 0 );        int row = 0;        assertEquals( "Testing ", sheet.getRow( row++ ).getCell( (short) 0 ).getStringCellValue() );        assertEquals( "rich", sheet.getRow( row++ ).getCell( (short) 0 ).getStringCellValue() );        assertEquals( "text", sheet.getRow( row++ ).getCell( (short) 0 ).getStringCellValue() );        assertEquals( "strings", sheet.getRow( row++ ).getCell( (short) 0 ).getStringCellValue() );        assertEquals( "Testing  ", sheet.getRow( row++ ).getCell( (short) 0 ).getStringCellValue() );        assertEquals( "Testing", sheet.getRow( row++ ).getCell( (short) 0 ).getStringCellValue() );//        file = new File("/tryme.xls");        file = File.createTempFile( "testout", ".xls" );        outStream = new FileOutputStream( file );        wb.write( outStream );        outStream.close();        file.delete();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -