testescheroptrecord.java

来自「EXCEL read and write」· Java 代码 · 共 326 行 · 第 1/2 页

JAVA
326
字号
    		0x45, 0xC1-256, 0x88-256, 0x00, 0x00, 0x00,  // SP @ 26    		0x46, 0xC1-256, 0x90-256, 0x00, 0x00, 0x00,  // SP @ 32    		0x7F, 0x01, 0x01, 0x00, 0x01, 0x00,     		0x80-256, 0x01, 0x00, 0x00, 0x00, 0x00,     		0x81-256, 0x01, 0x02, 0x00, 0x00, 0x08,     		0xBF-256, 0x01,	0x10, 0x00, 0x10, 0x00,     		0xC0-256, 0x01, 0x01, 0x00, 0x00, 0x08,      // SP 10     		0xC1-256, 0x01, 0x00, 0x00, 0x01, 0x00,    		0xC4-256, 0x01, 0x00, 0x00, 0x00, 0x00,     		0xCB-256, 0x01, 0x38, 0x63, 0x00, 0x00,     		0xCD-256, 0x01, 0x00, 0x00,	0x00, 0x00,     		0xCE-256, 0x01, 0x00, 0x00, 0x00, 0x00,      // SP 15    		0xD0-256, 0x01, 0x00, 0x00, 0x00, 0x00,     		0xD1-256, 0x01, 0x00, 0x00, 0x00, 0x00,     		0xD7-256, 0x01, 0x00, 0x00, 0x00, 0x00,     		0xFF-256, 0x01, 0x18, 0x00, 0x18, 0x00,    		0x01, 0x02, 0x02, 0x00, 0x00, 0x08,     		0x3F, 0x02, 0x00, 0x00,	0x02, 0x00,          // SP 21    		    		// Complex data follows    		    		// Complex data for Array #325    		// Array header    		0x22, 0x00, 0x22, 0x00, 0xF0-256, 0xFF-256,     		// Array data    		0x18, 0x00, 0x28, 0x00, 0x04, 0x00, 0x34,     		0x00, 0x04, 0x00, 0x28, 0x00, 0x04, 0x00,    		0x1C, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x04, 0x00, 0x10,     		0x00, 0x00, 0x00, 0x1C, 0x00,    		0x04, 0x00, 0x28, 0x00, 0x10, 0x00, 0x34, 0x00, 0x18, 0x00, 0x3C,     		0x00, 0x24, 0x00, 0x44, 0x00,    		0x30, 0x00, 0x48, 0x00, 0x3C, 0x00, 0x44, 0x00, 0x48, 0x00, 0x3C,     		0x00, 0x54, 0x00, 0x38, 0x00,    		0x60, 0x00, 0x2C, 0x00, 0x70, 0x00, 0x20, 0x00, 0x78, 0x00,     		0x14, 0x00, 0x80-256, 0x00, 0x08, 0x00,    		0x84-256, 0x00, 0x04, 0x00, 0x78, 0x00, 0x04, 0x00, 0x6C, 0x00,     		0x04, 0x00, 0x60, 0x00, 0x04, 0x00,    		0x54, 0x00, 0x08, 0x00, 0x48, 0x00, 0x0C, 0x00, 0x3C, 0x00, 0x0C,     		0x00, 0x30, 0x00, 0x08, 0x00,    		0x3C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x08, 0x00, 0x54, 0x00, 0x00,     		0x00, 0x48, 0x00, 0x00, 0x00,    		0x3C, 0x00, 0x00, 0x00, 0x30, 0x00, 0x04, 0x00, 0x24, 0x00,    		// Complex data for Array #326    		// Array header    		0x45, 0x00, 0x48, 0x00, 0x02, 0x00,     		// Array data    		0x00, 0x40, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00,     		0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256,    		0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00,     		0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256,    		0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00,     		0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256,    		0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00,     		0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256,    		0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00,     		0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256,    		0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00,     		0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256,    		0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00,     		0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256,    		0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00,     		0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256,    		0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x00, 0x80-256    	};    	    	// Create the record        EscherOptRecord r = new EscherOptRecord();        int filled = r.fillFields( data, new DefaultEscherRecordFactory() );                // Check it's the right length        assertEquals(data.length, filled);        assertEquals(data.length, r.getRecordSize());                // Serialise it        byte[] dest = new byte[data.length];        int written = r.serialize(0, dest);                // Check it serialised it back to the same data        assertEquals(data.length, written);        for(int i=0; i<data.length; i++) {        	assertEquals(data[i], dest[i]);        }    }    /**     * Test read/write against an OPT record from a real ppt file.     * In PowerPoint is is legal to have array properties with empty complex part.     * In Glen's original implementation complex part is always 6 bytes which resulted     * in +6 extra bytes when writing back out. As the result the ppt becomes unreadable.     *     * Make sure we write back the original empty complex part.     *     * See Bug 41946 for details.     */    public void test41946() {        String dataStr1 =                "03 08 0B F0 00 03 00 00 81 00 30 65 01 00 82 00 98 B2 00 00 83 00 30 65 01 " +                "00 84 00 98 B2 00 00 85 00 00 00 00 00 87 00 01 00 00 00 88 00 00 00 00 00 " +                "89 00 00 00 00 00 BF 00 00 00 0F 00 0C 01 F4 00 00 10 0D 01 00 00 00 20 0E " +                "01 00 00 00 20 80 01 00 00 00 00 81 01 04 00 00 08 82 01 00 00 01 00 83 01 " +                "00 00 00 08 84 01 00 00 01 00 85 01 00 00 00 20 86 41 00 00 00 00 87 C1 00 " +                "00 00 00 88 01 00 00 00 00 89 01 00 00 00 00 8A 01 00 00 00 00 8B 01 00 00 " +                "00 00 8C 01 00 00 00 00 8D 01 00 00 00 00 8E 01 00 00 00 00 8F 01 00 00 00 " +                "00 90 01 00 00 00 00 91 01 00 00 00 00 92 01 00 00 00 00 93 01 00 00 00 00 " +                "94 01 00 00 00 00 95 01 00 00 00 00 96 01 00 00 00 00 97 C1 00 00 00 00 98 " +                "01 00 00 00 00 99 01 00 00 00 00 9A 01 00 00 00 00 9B 01 00 00 00 00 9C 01 " +                "03 00 00 40 BF 01 0C 00 1E 00 C0 01 01 00 00 08 C1 01 00 00 01 00 C2 01 FF " +                "FF FF 00 C3 01 00 00 00 20 C4 01 00 00 00 00 C5 41 00 00 00 00 C6 C1 00 00 " +                "00 00 C7 01 00 00 00 00 C8 01 00 00 00 00 C9 01 00 00 00 00 CA 01 00 00 00 " +                "00 CB 01 35 25 00 00 CC 01 00 00 08 00 CD 01 00 00 00 00 CE 01 00 00 00 00 " +                "CF C1 00 00 00 00 D7 01 02 00 00 00 FF 01 06 00 0E 00 00 02 00 00 00 00 01 " +                "02 02 00 00 08 02 02 CB CB CB 00 03 02 00 00 00 20 04 02 00 00 01 00 05 02 " +                "38 63 00 00 06 02 38 63 00 00 07 02 00 00 00 00 08 02 00 00 00 00 09 02 00 " +                "00 01 00 0A 02 00 00 00 00 0B 02 00 00 00 00 0C 02 00 00 01 00 0D 02 00 00 " +                "00 00 0E 02 00 00 00 00 0F 02 00 01 00 00 10 02 00 00 00 00 11 02 00 00 00 " +                "00 3F 02 00 00 03 00 80 02 00 00 00 00 81 02 00 00 01 00 82 02 05 00 00 00 " +                "83 02 9C 31 00 00 84 02 00 00 00 00 85 02 F0 F9 06 00 86 02 00 00 00 00 87 " +                "02 F7 00 00 10 88 02 00 00 00 20 BF 02 01 00 0F 00 C0 02 00 00 00 00 C1 02 " +                "00 00 00 00 C2 02 64 00 00 00 C3 02 00 00 00 00 C4 02 00 00 00 00 C5 02 00 " +                "00 00 00 C6 02 00 00 00 00 C7 02 00 00 00 00 C8 02 00 00 00 00 C9 02 00 00 " +                "00 00 CA 02 30 75 00 00 CB 02 D0 12 13 00 CC 02 30 ED EC FF CD 02 40 54 89 " +                "00 CE 02 00 80 00 00 CF 02 00 80 FF FF D0 02 00 00 79 FF D1 02 32 00 00 00 " +                "D2 02 20 4E 00 00 D3 02 50 C3 00 00 D4 02 00 00 00 00 D5 02 10 27 00 00 D6 " +                "02 70 94 00 00 D7 02 B0 3C FF FF D8 02 00 00 00 00 D9 02 10 27 00 00 DA 02 " +                "70 94 00 00 FF 02 16 00 1F 00 04 03 01 00 00 00 41 03 A8 29 01 00 42 03 00 " +                "00 00 00 43 03 03 00 00 00 44 03 7C BE 01 00 45 03 00 00 00 00 7F 03 00 00 " +                "0F 00 84 03 7C BE 01 00 85 03 00 00 00 00 86 03 7C BE 01 00 87 03 00 00 00 " +                "00";        EscherOptRecord r = new EscherOptRecord();        byte[] data = HexRead.readFromString( dataStr1 );        r.fillFields( data, 0, new DefaultEscherRecordFactory() );        assertEquals( (short) 0xF00B, r.getRecordId() );        byte[] data1 = r.serialize();        EscherOptRecord opt2 = new EscherOptRecord();        opt2.fillFields( data1, new DefaultEscherRecordFactory() );        byte[] data2 = opt2.serialize();        assertTrue(Arrays.equals(data1, data2));    }    /**     * Test that EscherOptRecord can properly read/write array properties     * with empty complex part.     */    public void testEmptyArrayProperty() {        EscherOptRecord r = new EscherOptRecord();        EscherArrayProperty p = new EscherArrayProperty((short)(EscherProperties.FILL__SHADECOLORS + 0x8000), new byte[0] );        assertEquals(0, p.getNumberOfElementsInArray());        r.addEscherProperty(p);        byte[] data1 = r.serialize();        EscherOptRecord opt2 = new EscherOptRecord();        opt2.fillFields( data1, new DefaultEscherRecordFactory() );        p = (EscherArrayProperty)opt2.getEscherProperties().get(0);        assertEquals(0, p.getNumberOfElementsInArray());        byte[] data2 = opt2.serialize();        assertTrue(Arrays.equals(data1, data2));    }}

⌨️ 快捷键说明

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